第7章定時(shí)器計(jì)數(shù)器及應(yīng)用_第1頁(yè)
第7章定時(shí)器計(jì)數(shù)器及應(yīng)用_第2頁(yè)
第7章定時(shí)器計(jì)數(shù)器及應(yīng)用_第3頁(yè)
第7章定時(shí)器計(jì)數(shù)器及應(yīng)用_第4頁(yè)
第7章定時(shí)器計(jì)數(shù)器及應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第7 7章章 定時(shí)器定時(shí)器/ /計(jì)數(shù)器及應(yīng)用計(jì)數(shù)器及應(yīng)用內(nèi)容內(nèi)容 定時(shí)定時(shí)/計(jì)數(shù)技術(shù)概述計(jì)數(shù)技術(shù)概述7.180C51單片機(jī)的定時(shí)器單片機(jī)的定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器7.2定時(shí)器定時(shí)器/計(jì)數(shù)器的應(yīng)用計(jì)數(shù)器的應(yīng)用7.37.1 定時(shí)定時(shí)/計(jì)數(shù)技術(shù)概述計(jì)數(shù)技術(shù)概述定時(shí)和計(jì)數(shù)都是利用計(jì)數(shù)器對(duì)脈沖進(jìn)行計(jì)數(shù)。定時(shí)是對(duì)定時(shí)和計(jì)數(shù)都是利用計(jì)數(shù)器對(duì)脈沖進(jìn)行計(jì)數(shù)。定時(shí)是對(duì)周期固定的內(nèi)部機(jī)器周期脈沖進(jìn)行計(jì)數(shù),定時(shí)時(shí)間為脈周期固定的內(nèi)部機(jī)器周期脈沖進(jìn)行計(jì)數(shù),定時(shí)時(shí)間為脈沖周期與脈沖個(gè)數(shù)的乘積。計(jì)數(shù)是對(duì)外界產(chǎn)生的脈沖進(jìn)沖周期與脈沖個(gè)數(shù)的乘積。計(jì)數(shù)是對(duì)外界產(chǎn)生的脈沖進(jìn)行計(jì)數(shù)。計(jì)數(shù)器的計(jì)數(shù)方式可以是加行計(jì)數(shù)。計(jì)數(shù)器的計(jì)數(shù)方式可以

2、是加1 1計(jì)數(shù),也可以是計(jì)數(shù),也可以是減減1 1計(jì)數(shù)。計(jì)數(shù)。在單片機(jī)控制系統(tǒng)中定時(shí)在單片機(jī)控制系統(tǒng)中定時(shí)/ /計(jì)數(shù)的實(shí)現(xiàn)方法有計(jì)數(shù)的實(shí)現(xiàn)方法有3 3種:軟件種:軟件定時(shí)定時(shí)/ /計(jì)數(shù)器、數(shù)字電路定時(shí)計(jì)數(shù)器、數(shù)字電路定時(shí)/ /計(jì)數(shù)器和可編程定時(shí)計(jì)數(shù)器和可編程定時(shí)/ /計(jì)計(jì)數(shù)器。數(shù)器。7.1.1軟件定時(shí)軟件定時(shí)/計(jì)數(shù)器計(jì)數(shù)器軟件定時(shí)是靠執(zhí)行一段循環(huán)程序以實(shí)現(xiàn)時(shí)間延遲。如本書前面軟件定時(shí)是靠執(zhí)行一段循環(huán)程序以實(shí)現(xiàn)時(shí)間延遲。如本書前面常用的常用的void DelayMS(uint xms)延時(shí)子函數(shù):延時(shí)子函數(shù):void DelayMS(uint xms) uint i,j;for(i=0; ixms

3、;i+) for(j=0;j110;j+);7.1.2 數(shù)字電路定時(shí)數(shù)字電路定時(shí)/計(jì)數(shù)計(jì)數(shù)需要計(jì)數(shù)較多或定時(shí)時(shí)間較長(zhǎng),常使用硬件電路完成。硬件定需要計(jì)數(shù)較多或定時(shí)時(shí)間較長(zhǎng),常使用硬件電路完成。硬件定時(shí)時(shí)/計(jì)數(shù)的特點(diǎn)是定時(shí)計(jì)數(shù)的特點(diǎn)是定時(shí)/計(jì)數(shù)功能全部由硬件電路完成,不占用計(jì)數(shù)功能全部由硬件電路完成,不占用CPU的時(shí)間,但需要通過(guò)改變電路中的元件參數(shù)來(lái)調(diào)節(jié)定時(shí)時(shí)的時(shí)間,但需要通過(guò)改變電路中的元件參數(shù)來(lái)調(diào)節(jié)定時(shí)時(shí)間和計(jì)數(shù)長(zhǎng)度,使用上不夠靈活。間和計(jì)數(shù)長(zhǎng)度,使用上不夠靈活。7.1.3 可編程定時(shí)可編程定時(shí)/計(jì)數(shù)計(jì)數(shù)為了使用方便并增加單片機(jī)的功能,很多單片機(jī)內(nèi)部都集成了為了使用方便并增加單片機(jī)的功能,

4、很多單片機(jī)內(nèi)部都集成了可編程的定時(shí)可編程的定時(shí)/計(jì)數(shù)器。計(jì)數(shù)器。80C51單片機(jī)內(nèi)部就有可編程的定時(shí)單片機(jī)內(nèi)部就有可編程的定時(shí)/計(jì)數(shù)器,其中計(jì)數(shù)器,其中51子系列內(nèi)部有子系列內(nèi)部有2個(gè),個(gè),52子系列內(nèi)部有子系列內(nèi)部有3個(gè)。本章個(gè)。本章只介紹只介紹51子系列內(nèi)部的定時(shí)器子系列內(nèi)部的定時(shí)器/計(jì)數(shù)器。計(jì)數(shù)器。7.2 80C51單片機(jī)的定時(shí)器單片機(jī)的定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器5151子系列單片機(jī)內(nèi)部有兩個(gè)獨(dú)立的子系列單片機(jī)內(nèi)部有兩個(gè)獨(dú)立的1616位可編程定時(shí)位可編程定時(shí)/ /計(jì)計(jì)數(shù)器,分別稱為定時(shí)器數(shù)器,分別稱為定時(shí)器0(0(簡(jiǎn)稱簡(jiǎn)稱T0)T0)和定時(shí)器和定時(shí)器1(1(簡(jiǎn)稱簡(jiǎn)稱T1)T1),它們可以編程選

5、擇工作于定時(shí)模式或外部事件計(jì)數(shù)模它們可以編程選擇工作于定時(shí)模式或外部事件計(jì)數(shù)模式,此外它們的工作方式、定時(shí)時(shí)間、計(jì)數(shù)值、啟動(dòng)、式,此外它們的工作方式、定時(shí)時(shí)間、計(jì)數(shù)值、啟動(dòng)、是否允許中斷等都可以由程序設(shè)定。是否允許中斷等都可以由程序設(shè)定。7.2.1 定時(shí)器定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu)定時(shí)器定時(shí)器/計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)框圖如圖計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)框圖如圖7-1所示。所示。圖圖7-1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0、1的內(nèi)部結(jié)構(gòu)框圖的內(nèi)部結(jié)構(gòu)框圖7.2.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的工作原理計(jì)數(shù)器的工作原理定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0、T1的工作原理圖如圖的工作原理圖如圖7-2所示。所示。圖圖7-2 定時(shí)

6、器定時(shí)器/計(jì)數(shù)器的工作原理圖計(jì)數(shù)器的工作原理圖 (a) 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0(T0)工作原理圖工作原理圖7.2.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的工作原理計(jì)數(shù)器的工作原理定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0、T1的工作原理圖如圖的工作原理圖如圖7-2所示。所示。圖圖7-2 定時(shí)器定時(shí)器/計(jì)數(shù)器的工作原理圖計(jì)數(shù)器的工作原理圖 (b) 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器1(T1)工作原理圖工作原理圖1.工作方式寄存器工作方式寄存器TMOD TMOD用來(lái)選擇定時(shí)器用來(lái)選擇定時(shí)器/計(jì)數(shù)器的工作模式和工作方式,字計(jì)數(shù)器的工作模式和工作方式,字節(jié)地址為節(jié)地址為89H,不能進(jìn)行位尋址,低,不能進(jìn)行位尋址,低4位用于定時(shí)器

7、位用于定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0,高,高4位用于定時(shí)器位用于定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1,其格式如下所示:,其格式如下所示: 8位分為位分為2組,高組,高4位控制位控制T1,低,低4位控制位控制T0。各位的含義說(shuō)明如下:。各位的含義說(shuō)明如下:(1) M1、M0:工作方式選擇位:工作方式選擇位定時(shí)器定時(shí)器/計(jì)數(shù)器有四種工作方式,由計(jì)數(shù)器有四種工作方式,由M1、M0進(jìn)行設(shè)置,如表進(jìn)行設(shè)置,如表7-1所示。所示。表表7-1定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0、1的工作方式選擇的工作方式選擇M1M0工作方式工作方式00方式方式0,為,為13位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器01方式方式1,為,為16位定時(shí)器位定時(shí)器/計(jì)

8、數(shù)器計(jì)數(shù)器10方式方式2,具有自動(dòng)重裝初值的,具有自動(dòng)重裝初值的8位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器11方式方式3,僅適用于,僅適用于T0,T0分成兩個(gè)獨(dú)立的分成兩個(gè)獨(dú)立的8位計(jì)數(shù)器,位計(jì)數(shù)器,T1停止計(jì)數(shù)停止計(jì)數(shù)(2) :定時(shí)器:定時(shí)器/計(jì)數(shù)器工作模式選擇位。計(jì)數(shù)器工作模式選擇位。 0,為定時(shí)器工作模,為定時(shí)器工作模式;式; 1,為計(jì)數(shù)器工作模式。,為計(jì)數(shù)器工作模式。(3) GATE:門控位。:門控位。GATE=0,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0、1的啟動(dòng)計(jì)數(shù)由的啟動(dòng)計(jì)數(shù)由TCON中的中的TR0、TR1控制,當(dāng)控制,當(dāng)TR0或或TR1為為1時(shí),就可以啟動(dòng)定時(shí)器時(shí),就可以啟動(dòng)定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0

9、或或1工作。工作。GATE=1,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0、1的啟動(dòng)計(jì)數(shù)由的啟動(dòng)計(jì)數(shù)由TCON中的中的TR0、TR1和外部中斷引腳和外部中斷引腳 、 一起控制。當(dāng)一起控制。當(dāng)TR0或或TR1為為1,同時(shí),同時(shí) 或或 也為高電也為高電平時(shí),才能啟動(dòng)定時(shí)器平時(shí),才能啟動(dòng)定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0或或1工作。工作。C/TC/TC/TC/T例例7-1 若定時(shí)器若定時(shí)器T0工作于方式工作于方式2計(jì)數(shù)模式,定時(shí)器計(jì)數(shù)模式,定時(shí)器T1工作于方式工作于方式1定定時(shí)模式,時(shí)模式,GATE=0,要求設(shè)置,要求設(shè)置TMOD。解:根據(jù)解:根據(jù)TMOD各位的定義,得各位的定義,得TMOD=01100001B=61H。2

10、控制寄存器控制寄存器TCONTCON的字節(jié)地址為的字節(jié)地址為88H,可位尋址,位地址為,可位尋址,位地址為88H8FH,TCON的格式如下:的格式如下: 低低4位與外部中斷有關(guān),已在第位與外部中斷有關(guān),已在第6章中介紹,高章中介紹,高4位的功能如下:位的功能如下:(1) TF1:定時(shí)器:定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位。溢出中斷請(qǐng)求標(biāo)志位。定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1計(jì)數(shù)溢出后,硬件自動(dòng)將計(jì)數(shù)溢出后,硬件自動(dòng)將TF1置置1。使用查詢方式。使用查詢方式時(shí),查詢到時(shí),查詢到TF1=1后,應(yīng)該及時(shí)用軟件方法將后,應(yīng)該及時(shí)用軟件方法將TF1清清0。使用中斷方。使用中斷方式時(shí),式時(shí),CPU響

11、應(yīng)中斷后,進(jìn)入中斷服務(wù)程序后由硬件自動(dòng)將響應(yīng)中斷后,進(jìn)入中斷服務(wù)程序后由硬件自動(dòng)將TF1清清0。(2) TR1:定時(shí)器:定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1的運(yùn)行控制位。的運(yùn)行控制位。TR1=1,啟動(dòng)定時(shí)器,啟動(dòng)定時(shí)器/計(jì)計(jì)數(shù)器工作;數(shù)器工作;TR1=0,停止定時(shí)器,停止定時(shí)器/計(jì)數(shù)器工作。計(jì)數(shù)器工作。(3) TF0:定時(shí)器:定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0的溢出中斷請(qǐng)求標(biāo)志位,其功能與的溢出中斷請(qǐng)求標(biāo)志位,其功能與TF1類類似。似。(4) TR0:定時(shí)器:定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0的運(yùn)行控制位,其功能與的運(yùn)行控制位,其功能與TR1類似。類似。3. 定時(shí)器定時(shí)器/計(jì)數(shù)器的工作模式選擇計(jì)數(shù)器的工作模式選擇定時(shí)器定時(shí)器

12、/計(jì)數(shù)器的工作模式選擇由計(jì)數(shù)器的工作模式選擇由 決定,如圖決定,如圖7-3所示所示 位控制的電子開(kāi)關(guān)位控制的電子開(kāi)關(guān)S1決定了定時(shí)器決定了定時(shí)器/計(jì)數(shù)器的工作模式,電子計(jì)數(shù)器的工作模式,電子開(kāi)關(guān)打在上面開(kāi)關(guān)打在上面 0,電子開(kāi)關(guān)打在下面,電子開(kāi)關(guān)打在下面 1。 0時(shí)為定時(shí)器工作模式,以系統(tǒng)晶振頻率時(shí)為定時(shí)器工作模式,以系統(tǒng)晶振頻率12分頻后的信號(hào),分頻后的信號(hào),即即Tcy信號(hào)作為計(jì)數(shù)器基準(zhǔn)信號(hào)。信號(hào)作為計(jì)數(shù)器基準(zhǔn)信號(hào)。 1時(shí)為計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為時(shí)為計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為P3.4引腳上的外部輸入引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加1

13、。C/TC/TC/TC/TC/T4. 定時(shí)器定時(shí)器/計(jì)數(shù)器的運(yùn)行控制計(jì)數(shù)器的運(yùn)行控制定時(shí)器定時(shí)器/計(jì)數(shù)器的運(yùn)行控制如圖計(jì)數(shù)器的運(yùn)行控制如圖7-4所示,電子開(kāi)關(guān)所示,電子開(kāi)關(guān)S2閉合時(shí)閉合時(shí)定時(shí)器定時(shí)器/計(jì)數(shù)器啟動(dòng)計(jì)數(shù),計(jì)數(shù)器啟動(dòng)計(jì)數(shù),S2斷開(kāi)時(shí)定時(shí)器斷開(kāi)時(shí)定時(shí)器/計(jì)數(shù)器停止計(jì)數(shù)計(jì)數(shù)器停止計(jì)數(shù)。電子開(kāi)關(guān)。電子開(kāi)關(guān)S2由門控位由門控位GATE、運(yùn)行控制位及外部中斷輸、運(yùn)行控制位及外部中斷輸入引腳入引腳 共同控制。共同控制。 INT0當(dāng)門控位當(dāng)門控位GATE=0時(shí),或門時(shí),或門A輸出為輸出為1,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0啟動(dòng)運(yùn)行受啟動(dòng)運(yùn)行受TR0一個(gè)條件控制。當(dāng)門控位一個(gè)條件控制。當(dāng)門控位GA

14、TE=1時(shí),定時(shí)器時(shí),定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0啟動(dòng)運(yùn)行啟動(dòng)運(yùn)行受受TR0和外部中斷和外部中斷0引腳引腳 的狀態(tài)兩個(gè)條件控制。此時(shí),定時(shí)器的狀態(tài)兩個(gè)條件控制。此時(shí),定時(shí)器T0的運(yùn)的運(yùn)行情況如表行情況如表7-2所示。所示。表表7-2 GATE=1時(shí),與門時(shí),與門B輸出與定時(shí)器輸出與定時(shí)器T0的運(yùn)行情況的運(yùn)行情況INT0TR0與門與門B輸出輸出定時(shí)器工作情況定時(shí)器工作情況111啟動(dòng)運(yùn)行啟動(dòng)運(yùn)行010停止運(yùn)行停止運(yùn)行100停止運(yùn)行停止運(yùn)行000停止運(yùn)行停止運(yùn)行7.2.3 定時(shí)器定時(shí)器/計(jì)數(shù)器的工作方式計(jì)數(shù)器的工作方式 定時(shí)器定時(shí)器/計(jì)數(shù)器的工作方式有計(jì)數(shù)器的工作方式有4種,由種,由TMOD中的中的M1

15、M0控制??刂啤?. 方式方式0當(dāng)當(dāng)TMOD的的M1M0=00時(shí),定時(shí)器時(shí),定時(shí)器/計(jì)數(shù)器工作于方式計(jì)數(shù)器工作于方式0,為,為13位位的定時(shí)器的定時(shí)器/計(jì)數(shù)器方式。由計(jì)數(shù)器方式。由TL0的低的低5位和位和TH0的高的高8位構(gòu)成位構(gòu)成13位位的計(jì)數(shù)器,如圖的計(jì)數(shù)器,如圖7-5所示。所示。TL0低低5位計(jì)數(shù)溢出則向位計(jì)數(shù)溢出則向TH0進(jìn)位,進(jìn)位,TH0計(jì)數(shù)溢出則置位計(jì)數(shù)溢出則置位TCON中的溢出標(biāo)志位中的溢出標(biāo)志位TF0。單片機(jī)內(nèi)部的定時(shí)器單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器為加法計(jì)數(shù)器,假設(shè)計(jì)數(shù)器為加法計(jì)數(shù)器,假設(shè)N是計(jì)數(shù)值,是計(jì)數(shù)值,x為計(jì)數(shù)初值,為計(jì)數(shù)初值,n為定時(shí)器為定時(shí)器/計(jì)數(shù)器的位數(shù),它們之間的

16、關(guān)系如下:計(jì)數(shù)器的位數(shù),它們之間的關(guān)系如下:N=2n-x 如果定時(shí)器如果定時(shí)器/計(jì)數(shù)器工作于定時(shí)器工作模式,晶振頻率為計(jì)數(shù)器工作于定時(shí)器工作模式,晶振頻率為fosc,要求的定時(shí)時(shí)間為要求的定時(shí)時(shí)間為T,則機(jī)器周期,則機(jī)器周期Tcy為為12/fosc,定時(shí)時(shí)間、計(jì),定時(shí)時(shí)間、計(jì)數(shù)初值和機(jī)器周期的關(guān)系如下:數(shù)初值和機(jī)器周期的關(guān)系如下:T(2n-x)Tcy 方式方式0中初值中初值x的設(shè)置范圍:的設(shè)置范圍:08191(0213-1),TH0、TL0從初值從初值開(kāi)始加法計(jì)數(shù),直至溢出,所以設(shè)置的初值不同,定時(shí)時(shí)間或開(kāi)始加法計(jì)數(shù),直至溢出,所以設(shè)置的初值不同,定時(shí)時(shí)間或計(jì)數(shù)值也不同。因此方式計(jì)數(shù)值也不同。

17、因此方式0工作時(shí)計(jì)數(shù)值和定時(shí)值分別為:工作時(shí)計(jì)數(shù)值和定時(shí)值分別為: N= 213-x =8192-x T(2n-x)Tcy= (8192-x )Tcy由于為加由于為加1計(jì)數(shù)器,當(dāng)計(jì)數(shù)器,當(dāng)x取為取為8191時(shí),計(jì)數(shù)值最小,為時(shí),計(jì)數(shù)值最小,為1;當(dāng);當(dāng)x取取為為0時(shí),計(jì)數(shù)值最大,為時(shí),計(jì)數(shù)值最大,為8192。因此方式。因此方式0的計(jì)數(shù)范圍為:的計(jì)數(shù)范圍為:18192,定時(shí)范圍:,定時(shí)范圍:(18192)Tcy。注意:方式注意:方式0加法計(jì)數(shù)器加法計(jì)數(shù)器TH0溢出后,必須用程序重新對(duì)溢出后,必須用程序重新對(duì)TH0、TL0設(shè)置初值,否則下一次設(shè)置初值,否則下一次TH0、TL0將從將從0開(kāi)始加法計(jì)數(shù)

18、。開(kāi)始加法計(jì)數(shù)。 例例7-2 已知晶振頻率已知晶振頻率fosc=12MHz,要求定時(shí)器,要求定時(shí)器0產(chǎn)生產(chǎn)生1ms的定時(shí)的定時(shí)時(shí)間,問(wèn)送入時(shí)間,問(wèn)送入TH0和和TL0的計(jì)數(shù)初值各為多少?試對(duì)定時(shí)器的計(jì)數(shù)初值各為多少?試對(duì)定時(shí)器進(jìn)行初始化編程。進(jìn)行初始化編程。解:由于晶振頻率為解:由于晶振頻率為12MHz,所以機(jī)器周期,所以機(jī)器周期Tcy=1s,定時(shí)器,定時(shí)器0選用方式選用方式0時(shí)最大定時(shí)時(shí)間為時(shí)最大定時(shí)時(shí)間為8192s,即,即8.192ms,而題目要,而題目要求的定時(shí)時(shí)間為求的定時(shí)時(shí)間為1ms,小于,小于8.192ms,所以可以選用方式,所以可以選用方式0。(1) 計(jì)算計(jì)算TH0、TL0的計(jì)數(shù)

19、初值的計(jì)數(shù)初值T=(2n-x)Tcy(213-x)1s =1ms=1000s,所以所以x=8192-1000=7192=1C18H=00011100 00011000B,取其低,取其低13位,放入位,放入TH0和和TL0,則,則TH0=E0H,TL0=18H。(2) TMOD寄存器初始化寄存器初始化根據(jù)題目要求,根據(jù)題目要求,GATE (TMOD.3)=0, (TMOD.2)=0,M1 (TMOD.1)=0,M0 (TMOD.0)=0,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器1沒(méi)有使用,相應(yīng)的各個(gè)位隨意狀態(tài),均取為沒(méi)有使用,相應(yīng)的各個(gè)位隨意狀態(tài),均取為0,則,則(TMOD)=00H。(3) 初始化程序初始

20、化程序void init_time0(void)TMOD=0 x00; /設(shè)置設(shè)置T0為定時(shí)器模式,工作在方式為定時(shí)器模式,工作在方式0TH0=0 xE0;TL0=0 x18; TR0=1; /啟動(dòng)啟動(dòng)T0方式方式0是是13位定時(shí)器位定時(shí)器/計(jì)數(shù)器,目的是為了兼容早期的計(jì)數(shù)器,目的是為了兼容早期的MCS-48單片機(jī),計(jì)數(shù)單片機(jī),計(jì)數(shù)初值有高初值有高8位和低位和低5位構(gòu)成,確定初值比較麻煩,所以在實(shí)際應(yīng)用中已應(yīng)用不位構(gòu)成,確定初值比較麻煩,所以在實(shí)際應(yīng)用中已應(yīng)用不多。多。2. 方式方式1當(dāng)當(dāng)TMOD的的M1M0=01時(shí),定時(shí)器時(shí),定時(shí)器/計(jì)數(shù)器工作于方式計(jì)數(shù)器工作于方式1,工作于,工作于16位的

21、定時(shí)器位的定時(shí)器/計(jì)數(shù)器方式。由計(jì)數(shù)器方式。由8位位TL0和和8位位TH0構(gòu)成構(gòu)成16位計(jì)數(shù)位計(jì)數(shù)器,如圖器,如圖7-6所示。所示。TL0計(jì)數(shù)溢出則向計(jì)數(shù)溢出則向TH0進(jìn)位,進(jìn)位,TH0計(jì)數(shù)溢出計(jì)數(shù)溢出則置位則置位TCON中的溢出標(biāo)志位中的溢出標(biāo)志位TF0。方式方式1和方式和方式0的差別僅在于計(jì)數(shù)器的位數(shù)不同,方式的差別僅在于計(jì)數(shù)器的位數(shù)不同,方式1是是16位定位定時(shí)器時(shí)器/計(jì)數(shù)器,由計(jì)數(shù)器,由TH0高高8位和位和TL0低低8位構(gòu)成,方式位構(gòu)成,方式0是是13位定時(shí)位定時(shí)器器/計(jì)數(shù)器。計(jì)數(shù)器。方式方式1中初值中初值x的設(shè)置范圍:的設(shè)置范圍:065535(0216-1),TH0、TL0從初從初值

22、開(kāi)始加法計(jì)數(shù),直至溢出。選擇方式值開(kāi)始加法計(jì)數(shù),直至溢出。選擇方式1工作時(shí)計(jì)數(shù)值和定時(shí)值工作時(shí)計(jì)數(shù)值和定時(shí)值分別為:分別為:N= 216-x=65536-x T(216-x) Tcy =(65536-x )Tcy當(dāng)當(dāng)x取為取為65535時(shí),計(jì)數(shù)值最小,為時(shí),計(jì)數(shù)值最小,為1;當(dāng);當(dāng)x取為取為0時(shí),計(jì)數(shù)值最時(shí),計(jì)數(shù)值最大,為大,為65536。因此方式。因此方式1的計(jì)數(shù)范圍為:的計(jì)數(shù)范圍為:165536,定時(shí)范圍:,定時(shí)范圍:(165536)Tcy。注意:方式注意:方式1加法計(jì)數(shù)器加法計(jì)數(shù)器TH0溢出后,必須用程序重新對(duì)溢出后,必須用程序重新對(duì)TH0、TL0設(shè)置初值,否則下一次設(shè)置初值,否則下一次

23、TH0、TL0將從將從0開(kāi)始加法計(jì)數(shù)。開(kāi)始加法計(jì)數(shù)。例例7-3 已知晶振頻率已知晶振頻率fosc=12MHz,要求定時(shí)器,要求定時(shí)器0產(chǎn)生產(chǎn)生10ms的定時(shí)時(shí)間,試對(duì)的定時(shí)時(shí)間,試對(duì)定時(shí)器進(jìn)行初始化編程。定時(shí)器進(jìn)行初始化編程。解:由于晶振頻率為解:由于晶振頻率為12MHz,機(jī)器周期,機(jī)器周期Tcy=1s,選用方式,選用方式0時(shí)最大定時(shí)時(shí)間時(shí)最大定時(shí)時(shí)間8.192ms,選擇方式,選擇方式1時(shí),最大定時(shí)時(shí)間為時(shí),最大定時(shí)時(shí)間為65.536ms,要求的定時(shí)時(shí)間為,要求的定時(shí)時(shí)間為10ms,所以不能選擇方式,所以不能選擇方式0,只能選用方式,只能選用方式1。(1) 計(jì)算計(jì)算TH0、TL0的計(jì)數(shù)初值的計(jì)

24、數(shù)初值由于晶振頻率為由于晶振頻率為12MHz,所以機(jī)器周期,所以機(jī)器周期Tcy=1s,則定時(shí)時(shí)間為:,則定時(shí)時(shí)間為:T=(2n-x)Tcy(216-x)1s =10ms,所以所以x=65536-10000=55536=D8F0H即即TH0=D8H,TL0=F0H,或者,或者TH0=55536/256,TL0=55536%256(2) TMOD寄存器初始化寄存器初始化根據(jù)題目要求,根據(jù)題目要求,GATE (TMOD.3)=0, (TMOD.2)=0,M1 (TMOD.1)=0,M0 (TMOD.0)=1,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器1沒(méi)有使用,相應(yīng)的各個(gè)位狀態(tài)隨意,均取為沒(méi)有使用,相應(yīng)的各個(gè)位狀

25、態(tài)隨意,均取為0,則,則(TMOD)=01H。(3) 初始化程序初始化程序void init_time0(void)TMOD=0 x01; /設(shè)置設(shè)置T0為定時(shí)器模式,工作在方式為定時(shí)器模式,工作在方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256; TR0=1; /啟動(dòng)啟動(dòng)T03. 方式方式2當(dāng)當(dāng)TMOD的的M1M0=10時(shí),定時(shí)器時(shí),定時(shí)器/計(jì)數(shù)器工作于方式計(jì)數(shù)器工作于方式2,工作于,工作于8位自動(dòng)重裝初值的位自動(dòng)重裝初值的8位定時(shí)器位定時(shí)器/計(jì)數(shù)器方式。方式計(jì)數(shù)器方式。方式2計(jì)數(shù)器構(gòu)成計(jì)數(shù)器構(gòu)成如圖如圖7-7所示,所示,TL0作為作為8位計(jì)數(shù)器使

26、用,位計(jì)數(shù)器使用,TH0作為初值寄存器作為初值寄存器用,用,TL0計(jì)數(shù)溢出后,將計(jì)數(shù)溢出后,將TF0置置1,同時(shí)發(fā)出自動(dòng)重裝初值的信,同時(shí)發(fā)出自動(dòng)重裝初值的信號(hào),使三態(tài)門打開(kāi),將號(hào),使三態(tài)門打開(kāi),將TH0中初值自動(dòng)送入中初值自動(dòng)送入TL0,使,使TL0從初值從初值開(kāi)始重新計(jì)數(shù)。開(kāi)始重新計(jì)數(shù)。方式方式2中初值中初值x的設(shè)置范圍:的設(shè)置范圍:0255 (028-1),TL0從初值開(kāi)始加從初值開(kāi)始加法計(jì)數(shù),溢出后法計(jì)數(shù),溢出后TH0中初值重新置入中初值重新置入TL0。方式。方式2工作時(shí)計(jì)數(shù)值工作時(shí)計(jì)數(shù)值和定時(shí)值分別為:和定時(shí)值分別為: N= 28-x=256-x T(28-x )Tcy= (256-

27、x )Tcy當(dāng)當(dāng)x取為取為255時(shí),計(jì)數(shù)值為時(shí),計(jì)數(shù)值為1;當(dāng);當(dāng)x取為取為0時(shí),計(jì)數(shù)值為時(shí),計(jì)數(shù)值為256。因此。因此方式方式2的計(jì)數(shù)范圍為:的計(jì)數(shù)范圍為:1256,定時(shí)范圍:,定時(shí)范圍: (1256)Tcy由于工作方式由于工作方式2有自動(dòng)重新裝載初值的功能,因此特別適用于定有自動(dòng)重新裝載初值的功能,因此特別適用于定時(shí)控制。時(shí)控制。例例7-4 已知晶振頻率已知晶振頻率fosc=12MHz,要求每隔,要求每隔200s產(chǎn)生一定時(shí)信產(chǎn)生一定時(shí)信號(hào),試對(duì)定時(shí)器進(jìn)行初始化。號(hào),試對(duì)定時(shí)器進(jìn)行初始化。解:選擇定時(shí)器解:選擇定時(shí)器0,工作在方式,工作在方式2。(1) 計(jì)算計(jì)算TH0、TL0的計(jì)數(shù)初值的計(jì)數(shù)

28、初值由于晶振頻率為由于晶振頻率為12MHz,所以機(jī)器周期,所以機(jī)器周期Tcy=1s,則,則(2n-x)Tcy(28-x)1s =200s,所以,所以x=256-200=56=38H即即TH0=38H,TL0=38H 或者或者TH0=(256-200)/256,TL0=(256-200)%256。(2) TMOD寄存器初始化寄存器初始化GATE (TMOD.3)=0, (TMOD.2)=0,M1 (TMOD.1)=1,M0 (TMOD.0)=0,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器1沒(méi)有使用,相應(yīng)的各個(gè)位狀態(tài)隨沒(méi)有使用,相應(yīng)的各個(gè)位狀態(tài)隨意,均取為意,均取為0,則,則(TMOD)=02H。(3) 初始化

29、程序初始化程序void init_time0(void)TMOD=0 x02; /設(shè)置設(shè)置T0為定時(shí)器模式,工作在方式為定時(shí)器模式,工作在方式1TH0=0 x38;TL0=0 x38; TR0=1; /啟動(dòng)啟動(dòng)T04. 方式方式3方式方式3只適用于定時(shí)器只適用于定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0,當(dāng),當(dāng)TMOD的的M1M0=11時(shí),定時(shí),定時(shí)器時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0工作于方式工作于方式3,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1不能工作在方式不能工作在方式3。定時(shí)器。定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0工作于方式工作于方式3的工作原理如圖的工作原理如圖7-8所示。所示。(a) TL0作作8位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器(b

30、) TH0作作8位定時(shí)器位定時(shí)器圖圖7-8 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0方式方式3原理圖原理圖方式方式3時(shí),時(shí),T0分成兩個(gè)獨(dú)立的分成兩個(gè)獨(dú)立的8位計(jì)數(shù)器:位計(jì)數(shù)器:TL0和和TH0,TL0是是8位定時(shí)器位定時(shí)器/計(jì)數(shù)器,計(jì)數(shù)器,TH0是是8位定時(shí)器,位定時(shí)器,TL0使用使用T0的狀態(tài)控制的狀態(tài)控制位位 、GATE、TR0、 ,當(dāng),當(dāng)TL0計(jì)數(shù)溢出時(shí),由硬件將計(jì)數(shù)溢出時(shí),由硬件將TF0置置1,向向CPU發(fā)出中斷請(qǐng)求。發(fā)出中斷請(qǐng)求。TH0固定為定時(shí)器方式,是固定為定時(shí)器方式,是8位定時(shí)器模位定時(shí)器模式,只能對(duì)機(jī)器周期式,只能對(duì)機(jī)器周期Tcy進(jìn)行計(jì)數(shù),不能作為計(jì)數(shù)器模式,對(duì)外進(jìn)行計(jì)數(shù),不能作為計(jì)

31、數(shù)器模式,對(duì)外部脈沖進(jìn)行計(jì)數(shù)。由于部脈沖進(jìn)行計(jì)數(shù)。由于TL0已占用了已占用了TR0和和TF0,因此,因此TH0借用借用了定時(shí)器了定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1的的TR1和和TF1,TH0的啟動(dòng)和停止受的啟動(dòng)和停止受TR1控控制,制,TH0定時(shí)時(shí)間到,將定時(shí)時(shí)間到,將TF1置置1。定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0工作在方式工作在方式3時(shí),定時(shí)器時(shí),定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1雖然還可以雖然還可以選擇為方式選擇為方式0、方式、方式1或方式或方式2,但是由于,但是由于TH0借用了定時(shí)器借用了定時(shí)器/計(jì)數(shù)計(jì)數(shù)器器T1的的TR1和和TF1,不能產(chǎn)生溢出中斷請(qǐng)求信號(hào),這時(shí),不能產(chǎn)生溢出中斷請(qǐng)求信號(hào),這時(shí)T1就不就不能

32、用于需要中斷方式的場(chǎng)合,而通常用作串行口的波特率發(fā)生能用于需要中斷方式的場(chǎng)合,而通常用作串行口的波特率發(fā)生器。器。 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0工作在方式工作在方式3時(shí)的計(jì)數(shù)范圍為:時(shí)的計(jì)數(shù)范圍為:1256,定時(shí)范,定時(shí)范圍:圍:(1256)Tcy。7.2.4定時(shí)器定時(shí)器/計(jì)數(shù)器對(duì)輸入信號(hào)的要求計(jì)數(shù)器對(duì)輸入信號(hào)的要求定時(shí)器定時(shí)器/計(jì)數(shù)器的作用是用來(lái)精確地確定某一段時(shí)間間隔計(jì)數(shù)器的作用是用來(lái)精確地確定某一段時(shí)間間隔(作為定作為定時(shí)器用時(shí)器用),或累計(jì)外部輸入的脈沖個(gè)數(shù),或累計(jì)外部輸入的脈沖個(gè)數(shù)(作為計(jì)數(shù)器用作為計(jì)數(shù)器用)。當(dāng)用做。當(dāng)用做定時(shí)器時(shí),在其輸入端輸入周期固定的脈沖,根據(jù)定時(shí)器定時(shí)器時(shí)

33、,在其輸入端輸入周期固定的脈沖,根據(jù)定時(shí)器/計(jì)數(shù)計(jì)數(shù)器中累計(jì)器中累計(jì)(或事先設(shè)定或事先設(shè)定)的周期固定的脈沖個(gè)數(shù),即可計(jì)算出所定的周期固定的脈沖個(gè)數(shù),即可計(jì)算出所定時(shí)間的長(zhǎng)度。時(shí)間的長(zhǎng)度。當(dāng)當(dāng)80C51內(nèi)部的定時(shí)器內(nèi)部的定時(shí)器/計(jì)數(shù)器被選定為定時(shí)器工作模式時(shí),計(jì)計(jì)數(shù)器被選定為定時(shí)器工作模式時(shí),計(jì)數(shù)輸入信號(hào)是內(nèi)部機(jī)器周期脈沖,每個(gè)機(jī)器周期產(chǎn)生一個(gè)脈數(shù)輸入信號(hào)是內(nèi)部機(jī)器周期脈沖,每個(gè)機(jī)器周期產(chǎn)生一個(gè)脈沖,計(jì)數(shù)器增沖,計(jì)數(shù)器增1,定時(shí)器,定時(shí)器/計(jì)數(shù)器的輸入脈沖頻率為時(shí)鐘振蕩頻計(jì)數(shù)器的輸入脈沖頻率為時(shí)鐘振蕩頻率的率的1/12。當(dāng)采用。當(dāng)采用12MHz頻率的晶體時(shí),計(jì)數(shù)速率為頻率的晶體時(shí),計(jì)數(shù)速率為1

34、MHz,輸,輸入脈沖的周期間隔為入脈沖的周期間隔為1s。由于定時(shí)的精度決定于輸入脈沖的。由于定時(shí)的精度決定于輸入脈沖的周期,因此當(dāng)需要高分辨率的定時(shí),應(yīng)盡量選用頻率較高的晶周期,因此當(dāng)需要高分辨率的定時(shí),應(yīng)盡量選用頻率較高的晶振振(80C51最高為最高為40 MHz )。對(duì)輸入信號(hào)的基本要求如圖對(duì)輸入信號(hào)的基本要求如圖7-9所示,圖中所示,圖中Tcy為機(jī)器周期。為機(jī)器周期。圖圖7-9 對(duì)輸入信號(hào)的基本要求對(duì)輸入信號(hào)的基本要求7.3 定時(shí)器定時(shí)器/計(jì)數(shù)器的應(yīng)用計(jì)數(shù)器的應(yīng)用 定時(shí)器定時(shí)器/計(jì)數(shù)器是單片機(jī)應(yīng)用系統(tǒng)中重要的功能部件,通過(guò)靈活計(jì)數(shù)器是單片機(jī)應(yīng)用系統(tǒng)中重要的功能部件,通過(guò)靈活應(yīng)用其不同的工

35、作方式可以減輕應(yīng)用其不同的工作方式可以減輕CPU的負(fù)擔(dān),簡(jiǎn)化外圍電路,的負(fù)擔(dān),簡(jiǎn)化外圍電路,本節(jié)通過(guò)幾個(gè)典型的例子,介紹定時(shí)器的使用方法。本節(jié)通過(guò)幾個(gè)典型的例子,介紹定時(shí)器的使用方法。例例7-5 已知晶振頻率已知晶振頻率fosc=12MHz,編程使,編程使P2.0引腳上產(chǎn)生引腳上產(chǎn)生100ms的方波程序。的方波程序。解:分析:方波的周期為解:分析:方波的周期為100ms,要求高、低電平的持續(xù)時(shí)間各為,要求高、低電平的持續(xù)時(shí)間各為50ms,采,采用定時(shí)器定時(shí),中斷工作方式。每用定時(shí)器定時(shí),中斷工作方式。每50ms時(shí)間到時(shí),在中斷服務(wù)程序中將時(shí)間到時(shí),在中斷服務(wù)程序中將P2.0引腳電平狀態(tài)取反,即

36、可獲得所需要的波形。引腳電平狀態(tài)取反,即可獲得所需要的波形。晶振頻率晶振頻率fosc=12MHz,Tcy12/fosc=1s ,選擇定時(shí)器,選擇定時(shí)器T1的方式的方式1。(1) 確定計(jì)算初值確定計(jì)算初值(2n-x)Tcy(216-x)1s =50ms,x=65536-50000=15536=3CB0H即即TH1=3CH,TL1=B0H 或者或者TH1=(65536-50000)/256,TL1=(65536-50000)%256。(2) TMOD寄存器初始化寄存器初始化GATE (TMOD.7)=0, (TMOD.6)=0,M1 (TMOD.5)=0,M0 (TMOD.4)=1,定時(shí)器,定時(shí)器

37、/計(jì)數(shù)器計(jì)數(shù)器0沒(méi)有使用,相應(yīng)的各個(gè)位狀態(tài)隨沒(méi)有使用,相應(yīng)的各個(gè)位狀態(tài)隨意,均取為意,均取為0,則,則(TMOD)=10H。(3) 程序如下:程序如下:#include#define uint unsigned intsbit fangbo=P20;void main()TMOD=0 x10; /設(shè)置設(shè)置T1為定時(shí)器模式,工作在方式為定時(shí)器模式,工作在方式1TH1=0 x3C;TL1= 0 xB0; EA=1; /開(kāi)總中斷開(kāi)總中斷ET1=1; /允許允許T1中斷中斷TR1=1; /啟動(dòng)啟動(dòng)T1while(1);void timer1( ) interrupt 3 /定時(shí)器定時(shí)器1中斷服務(wù)程序中

38、斷服務(wù)程序TH1=(65536-50000)/256;TL1=(65536-50000)%256;fangbo=fangbo;P2.0引腳上輸出的周期位引腳上輸出的周期位100ms的方波仿真結(jié)果如圖的方波仿真結(jié)果如圖7-10所示。所示。圖圖7-10 P2.0引腳上的引腳上的100ms方波信號(hào)仿真圖方波信號(hào)仿真圖(每小格為每小格為10ms)例例7-6 利用單片機(jī)的定時(shí)器設(shè)計(jì)一個(gè)秒表,使它從利用單片機(jī)的定時(shí)器設(shè)計(jì)一個(gè)秒表,使它從059s計(jì)數(shù),計(jì)數(shù),晶振頻率晶振頻率fosc=12MHz,設(shè)計(jì)秒表的,設(shè)計(jì)秒表的protes仿真電路,并編仿真電路,并編寫程序。寫程序。解:解:(1) 分析:已知晶振頻率分

39、析:已知晶振頻率fosc=12MHz,Tcy=1s,選定,選定時(shí)器時(shí)器T0或定時(shí)器或定時(shí)器T1均可,但是應(yīng)該選擇方式均可,但是應(yīng)該選擇方式0、1、2或或3中中的哪一種呢?的哪一種呢? 各種方式的定時(shí)時(shí)間計(jì)算公式為各種方式的定時(shí)時(shí)間計(jì)算公式為(2n-x)Tcy,當(dāng)計(jì)數(shù)初值,當(dāng)計(jì)數(shù)初值x為為0時(shí),各種方式最長(zhǎng)的定時(shí)時(shí)間如下:時(shí),各種方式最長(zhǎng)的定時(shí)時(shí)間如下: 方式方式0: 213Tcy8192 s8.192 ms;方式;方式1: 216Tcy65536 s65.536ms,方式,方式2: 28Tcy256 s,方式,方式3:28Tcy256 s。 方式方式1是定時(shí)時(shí)間最長(zhǎng)的一種方式,它的最長(zhǎng)定時(shí)時(shí)間

40、為是定時(shí)時(shí)間最長(zhǎng)的一種方式,它的最長(zhǎng)定時(shí)時(shí)間為65.536ms,也達(dá)不到,也達(dá)不到1s。因此要達(dá)到。因此要達(dá)到1s的延時(shí),只能采用多次中的延時(shí),只能采用多次中斷的方式。選擇定時(shí)器斷的方式。選擇定時(shí)器T0,方式,方式1,設(shè)定,設(shè)定T0的定時(shí)時(shí)間為的定時(shí)時(shí)間為50ms,每隔每隔50ms中斷中斷1次,中斷次,中斷20次即為次即為1s。(2) 確定計(jì)算初值確定計(jì)算初值(2n-x)Tcy(216-x)1s =50ms,x=65536-50000=15536=3CB0H即即TH0=3CH,TL0=B0H (3) TMOD寄存器初始化寄存器初始化GATE (TMOD.3)=0, (TMOD.2)=0,M1

41、(TMOD.1)=0,M0 (TMOD.0)=1,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器1沒(méi)有使用,相應(yīng)的各個(gè)位隨意狀沒(méi)有使用,相應(yīng)的各個(gè)位隨意狀態(tài),均取為態(tài),均取為0,則,則(TMOD)=01 H。(4) Proteus仿真電路設(shè)計(jì)仿真電路設(shè)計(jì)秒表的秒表的Proteus電路如圖電路如圖7-11所示,采用兩位共陰極數(shù)碼管顯示秒所示,采用兩位共陰極數(shù)碼管顯示秒數(shù),數(shù)碼管段選由數(shù),數(shù)碼管段選由P1口控制,十位數(shù)碼管的位選由口控制,十位數(shù)碼管的位選由P2.0控制,個(gè)控制,個(gè)位數(shù)碼管的位選由位數(shù)碼管的位選由P2.1控制??刂?。(5) 程序設(shè)計(jì)如下:程序設(shè)計(jì)如下:#include#define uint unsi

42、gned int#define uchar unsigned charuchar temp,aa,shi,ge;uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /共陰極數(shù)碼管碼表共陰極數(shù)碼管碼表 void display(uchar shi,uchar ge); /顯示子程序顯示子程序void delay(uint z); /延時(shí)子程序延時(shí)子程序void init(); /定時(shí)器初始化子程序定時(shí)器初始化子程序void main()init();/初始化子程序初始化子程序while(1)i

43、f(aa=20) aa=0;temp+;if(temp=59) temp=0; shi=temp/10;ge=temp%10;display(shi,ge);void delay(uint z)/延時(shí)子程序延時(shí)子程序uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void display(uchar shi,uchar ge)/顯示子程序顯示子程序 P2=0 xfe; /送入十位數(shù)碼管位選信號(hào),顯示數(shù)字送入十位數(shù)碼管位選信號(hào),顯示數(shù)字 P1=tableshi; /送入十位數(shù)碼管的段選信號(hào)送入十位數(shù)碼管的段選信號(hào)delay(5);P2=0 xfd; /送入個(gè)位數(shù)碼

44、管位選信號(hào),顯示數(shù)字送入個(gè)位數(shù)碼管位選信號(hào),顯示數(shù)字P1=tablege; /送入個(gè)位數(shù)碼管的段選信號(hào)送入個(gè)位數(shù)碼管的段選信號(hào)delay(5);void init()/定時(shí)器初始化程序定時(shí)器初始化程序temp=0;TMOD=0 x01; /設(shè)置設(shè)置T0為定時(shí)器模式,工作在方式為定時(shí)器模式,工作在方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256; EA=1; /開(kāi)總中斷開(kāi)總中斷ET0=1; /允許允許T0中斷中斷TR0=1; /啟動(dòng)啟動(dòng)T0void timer0() interrupt 1/定時(shí)器定時(shí)器T0中斷服務(wù)子程序中斷服務(wù)子程序TH0=(6553

45、6-50000)/256;/重新設(shè)置定時(shí)器初值重新設(shè)置定時(shí)器初值TL0=(65536-50000)%256;aa+;/中斷次數(shù)加中斷次數(shù)加1例例7-7 利用單片機(jī)的定時(shí)器設(shè)計(jì)交通信號(hào)燈控制電路,用利用單片機(jī)的定時(shí)器設(shè)計(jì)交通信號(hào)燈控制電路,用Proteus仿真軟件驗(yàn)證。仿真軟件驗(yàn)證。解:解:(1) 分析:交通燈有四個(gè)方向,南北向是同樣的工作模式,東分析:交通燈有四個(gè)方向,南北向是同樣的工作模式,東西向是同樣的工作模式,只要將交通燈的工作模式列出來(lái),西向是同樣的工作模式,只要將交通燈的工作模式列出來(lái),采用定時(shí)器實(shí)現(xiàn)定時(shí)控制,當(dāng)定時(shí)時(shí)間到的時(shí)候,進(jìn)行模式采用定時(shí)器實(shí)現(xiàn)定時(shí)控制,當(dāng)定時(shí)時(shí)間到的時(shí)候,進(jìn)行模式切換,就可以實(shí)現(xiàn)交通燈的控制。設(shè)交通燈有如下四種工作切換,就可以實(shí)現(xiàn)交通燈的控制。設(shè)交通燈有如下四種工作模式模式(為了便于演示,切換時(shí)間較短為了便于演示,切換時(shí)間較短): 東西向綠燈與南北向紅燈亮東西向綠燈與南北向紅燈亮5s; 東西向綠燈滅,黃燈閃爍東西向綠燈滅,黃燈閃爍5次;次; 東西向紅燈與南北向綠燈亮東西向紅燈與南北向綠燈亮5s; 南北向綠燈滅,黃燈閃爍南北向綠燈滅,黃燈閃爍5次;次;定時(shí)器的四種定時(shí)方式中方式定時(shí)器的四種定時(shí)方式中方式1是定時(shí)時(shí)間最長(zhǎng)的一種方式,但它是定時(shí)時(shí)間最長(zhǎng)的一種方式,但它的最長(zhǎng)定時(shí)時(shí)間也只為的最長(zhǎng)定時(shí)時(shí)間也只為65.536

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論