版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章定時(shí)器/計(jì)數(shù)器及應(yīng)用內(nèi)容
定時(shí)/計(jì)數(shù)技術(shù)概述7.180C51單片機(jī)的定時(shí)器/計(jì)數(shù)器7.2定時(shí)器/計(jì)數(shù)器的應(yīng)用7.37.1定時(shí)/計(jì)數(shù)技術(shù)概述定時(shí)和計(jì)數(shù)都是利用計(jì)數(shù)器對(duì)脈沖進(jìn)行計(jì)數(shù)。定時(shí)是對(duì)周期固定的內(nèi)部機(jī)器周期脈沖進(jìn)行計(jì)數(shù),定時(shí)時(shí)間為脈沖周期與脈沖個(gè)數(shù)的乘積。計(jì)數(shù)是對(duì)外界產(chǎn)生的脈沖進(jìn)行計(jì)數(shù)。計(jì)數(shù)器的計(jì)數(shù)方式可以是加1計(jì)數(shù),也可以是減1計(jì)數(shù)。在單片機(jī)控制系統(tǒng)中定時(shí)/計(jì)數(shù)的實(shí)現(xiàn)方法有3種:軟件定時(shí)/計(jì)數(shù)器、數(shù)字電路定時(shí)/計(jì)數(shù)器和可編程定時(shí)/計(jì)數(shù)器。7.1.1軟件定時(shí)/計(jì)數(shù)器軟件定時(shí)是靠執(zhí)行一段循環(huán)程序以實(shí)現(xiàn)時(shí)間延遲。如本書(shū)前面常用的voidDelayMS(uintxms)延時(shí)子函數(shù):voidDelayMS(uintxms){ uinti,j; for(i=0;i<xms;i++)for(j=0;j<110;j++);}7.1.2數(shù)字電路定時(shí)/計(jì)數(shù)需要計(jì)數(shù)較多或定時(shí)時(shí)間較長(zhǎng),常使用硬件電路完成。硬件定時(shí)/計(jì)數(shù)的特點(diǎn)是定時(shí)/計(jì)數(shù)功能全部由硬件電路完成,不占用CPU的時(shí)間,但需要通過(guò)改變電路中的元件參數(shù)來(lái)調(diào)節(jié)定時(shí)時(shí)間和計(jì)數(shù)長(zhǎng)度,使用上不夠靈活。7.1.3可編程定時(shí)/計(jì)數(shù)為了使用方便并增加單片機(jī)的功能,很多單片機(jī)內(nèi)部都集成了可編程的定時(shí)/計(jì)數(shù)器。80C51單片機(jī)內(nèi)部就有可編程的定時(shí)/計(jì)數(shù)器,其中51子系列內(nèi)部有2個(gè),52子系列內(nèi)部有3個(gè)。本章只介紹51子系列內(nèi)部的定時(shí)器/計(jì)數(shù)器。7.280C51單片機(jī)的定時(shí)器/計(jì)數(shù)器51子系列單片機(jī)內(nèi)部有兩個(gè)獨(dú)立的16位可編程定時(shí)/計(jì)數(shù)器,分別稱(chēng)為定時(shí)器0(簡(jiǎn)稱(chēng)T0)和定時(shí)器1(簡(jiǎn)稱(chēng)T1),它們可以編程選擇工作于定時(shí)模式或外部事件計(jì)數(shù)模式,此外它們的工作方式、定時(shí)時(shí)間、計(jì)數(shù)值、啟動(dòng)、是否允許中斷等都可以由程序設(shè)定。7.2.1定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)定時(shí)器/計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)框圖如圖7-1所示。圖7-1定時(shí)器/計(jì)數(shù)器0、1的內(nèi)部結(jié)構(gòu)框圖7.2.2定時(shí)器/計(jì)數(shù)器的工作原理定時(shí)器/計(jì)數(shù)器T0、T1的工作原理圖如圖7-2所示。圖7-2定時(shí)器/計(jì)數(shù)器的工作原理圖(a)定時(shí)器/計(jì)數(shù)器0(T0)工作原理圖7.2.2定時(shí)器/計(jì)數(shù)器的工作原理定時(shí)器/計(jì)數(shù)器T0、T1的工作原理圖如圖7-2所示。圖7-2定時(shí)器/計(jì)數(shù)器的工作原理圖(b)定時(shí)器/計(jì)數(shù)器1(T1)工作原理圖1.工作方式寄存器TMOD
TMOD用來(lái)選擇定時(shí)器/計(jì)數(shù)器的工作模式和工作方式,字節(jié)地址為89H,不能進(jìn)行位尋址,低4位用于定時(shí)器/計(jì)數(shù)器T0,高4位用于定時(shí)器/計(jì)數(shù)器T1,其格式如下所示:
8位分為2組,高4位控制T1,低4位控制T0。各位的含義說(shuō)明如下:(1)M1、M0:工作方式選擇位定時(shí)器/計(jì)數(shù)器有四種工作方式,由M1、M0進(jìn)行設(shè)置,如表7-1所示。表7-1定時(shí)器/計(jì)數(shù)器0、1的工作方式選擇M1M0工作方式00方式0,為13位定時(shí)器/計(jì)數(shù)器01方式1,為16位定時(shí)器/計(jì)數(shù)器10方式2,具有自動(dòng)重裝初值的8位定時(shí)器/計(jì)數(shù)器11方式3,僅適用于T0,T0分成兩個(gè)獨(dú)立的8位計(jì)數(shù)器,T1停止計(jì)數(shù)(2):定時(shí)器/計(jì)數(shù)器工作模式選擇位。=0,為定時(shí)器工作模式;=1,為計(jì)數(shù)器工作模式。(3)GATE:門(mén)控位。GATE=0,定時(shí)器/計(jì)數(shù)器0、1的啟動(dòng)計(jì)數(shù)由TCON中的TR0、TR1控制,當(dāng)TR0或TR1為1時(shí),就可以啟動(dòng)定時(shí)器/計(jì)數(shù)器0或1工作。GATE=1,定時(shí)器/計(jì)數(shù)器0、1的啟動(dòng)計(jì)數(shù)由TCON中的TR0、TR1和外部中斷引腳、一起控制。當(dāng)TR0或TR1為1,同時(shí)或也為高電平時(shí),才能啟動(dòng)定時(shí)器/計(jì)數(shù)器0或1工作。例7-1若定時(shí)器T1工作于方式2計(jì)數(shù)模式,定時(shí)器T0工作于方式1定時(shí)模式,GATE=0,要求設(shè)置TMOD。解:根據(jù)TMOD各位的定義,得TMOD=01100001B=61H。2.控制寄存器TCONTCON的字節(jié)地址為88H,可位尋址,位地址為88H~8FH,TCON的格式如下:
低4位與外部中斷有關(guān),已在第6章中介紹,高4位的功能如下:(1)TF1:定時(shí)器/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位。定時(shí)器/計(jì)數(shù)器T1計(jì)數(shù)溢出后,硬件自動(dòng)將TF1置1。使用查詢(xún)方式時(shí),查詢(xún)到TF1=1后,應(yīng)該及時(shí)用軟件方法將TF1清0。使用中斷方式時(shí),CPU響應(yīng)中斷后,進(jìn)入中斷服務(wù)程序后由硬件自動(dòng)將TF1清0。(2)TR1:定時(shí)器/計(jì)數(shù)器T1的運(yùn)行控制位。TR1=1,啟動(dòng)定時(shí)器/計(jì)數(shù)器工作;TR1=0,停止定時(shí)器/計(jì)數(shù)器工作。(3)TF0:定時(shí)器/計(jì)數(shù)器T0的溢出中斷請(qǐng)求標(biāo)志位,其功能與TF1類(lèi)似。(4)TR0:定時(shí)器/計(jì)數(shù)器T0的運(yùn)行控制位,其功能與TR1類(lèi)似。3.定時(shí)器/計(jì)數(shù)器的工作模式選擇定時(shí)器/計(jì)數(shù)器的工作模式選擇由決定,如圖7-3所示
位控制的電子開(kāi)關(guān)S1決定了定時(shí)器/計(jì)數(shù)器的工作模式,電子開(kāi)關(guān)打在上面=0,電子開(kāi)關(guān)打在下面=1。=0時(shí)為定時(shí)器工作模式,以系統(tǒng)晶振頻率12分頻后的信號(hào),即Tcy信號(hào)作為計(jì)數(shù)器基準(zhǔn)信號(hào)。=1時(shí)為計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為P3.4引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加1。4.定時(shí)器/計(jì)數(shù)器的運(yùn)行控制定時(shí)器/計(jì)數(shù)器的運(yùn)行控制如圖7-4所示,電子開(kāi)關(guān)S2閉合時(shí)定時(shí)器/計(jì)數(shù)器啟動(dòng)計(jì)數(shù),S2斷開(kāi)時(shí)定時(shí)器/計(jì)數(shù)器停止計(jì)數(shù)。電子開(kāi)關(guān)S2由門(mén)控位GATE、運(yùn)行控制位及外部中斷輸入引腳共同控制。
當(dāng)門(mén)控位GATE=0時(shí),或門(mén)A輸出為1,定時(shí)器/計(jì)數(shù)器T0啟動(dòng)運(yùn)行受TR0一個(gè)條件控制。當(dāng)門(mén)控位GATE=1時(shí),定時(shí)器/計(jì)數(shù)器T0啟動(dòng)運(yùn)行受TR0和外部中斷0引腳的狀態(tài)兩個(gè)條件控制。此時(shí),定時(shí)器T0的運(yùn)行情況如表7-2所示。表7-2GATE=1時(shí),與門(mén)B輸出與定時(shí)器T0的運(yùn)行情況TR0與門(mén)B輸出定時(shí)器工作情況111啟動(dòng)運(yùn)行010停止運(yùn)行100停止運(yùn)行000停止運(yùn)行7.2.3定時(shí)器/計(jì)數(shù)器的工作方式定時(shí)器/計(jì)數(shù)器的工作方式有4種,由TMOD中的M1M0控制。1.方式0當(dāng)TMOD的M1M0=00時(shí),定時(shí)器/計(jì)數(shù)器工作于方式0,為13位的定時(shí)器/計(jì)數(shù)器方式。由TL0的低5位和TH0的高8位構(gòu)成13位的計(jì)數(shù)器,如圖7-5所示。TL0低5位計(jì)數(shù)溢出則向TH0進(jìn)位,TH0計(jì)數(shù)溢出則置位TCON中的溢出標(biāo)志位TF0。單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器為加法計(jì)數(shù)器,假設(shè)N是計(jì)數(shù)值,x為計(jì)數(shù)初值,n為定時(shí)器/計(jì)數(shù)器的位數(shù),它們之間的關(guān)系如下:N=2n-x如果定時(shí)器/計(jì)數(shù)器工作于定時(shí)器工作模式,晶振頻率為fosc,要求的定時(shí)時(shí)間為T(mén),則機(jī)器周期Tcy為12/fosc,定時(shí)時(shí)間、計(jì)數(shù)初值和機(jī)器周期的關(guān)系如下:T=(2n-x)×Tcy方式0中初值x的設(shè)置范圍:0~8191(0~213-1),TH0、TL0從初值開(kāi)始加法計(jì)數(shù),直至溢出,所以設(shè)置的初值不同,定時(shí)時(shí)間或計(jì)數(shù)值也不同。因此方式0工作時(shí)計(jì)數(shù)值和定時(shí)值分別為:N=213-x=8192-xT=(2n-x)Tcy=(8192-x)Tcy由于為加1計(jì)數(shù)器,當(dāng)x取為8191時(shí),計(jì)數(shù)值最小,為1;當(dāng)x取為0時(shí),計(jì)數(shù)值最大,為8192。因此方式0的計(jì)數(shù)范圍為:1~8192,定時(shí)范圍:(1~8192)Tcy。注意:方式0加法計(jì)數(shù)器TH0溢出后,必須用程序重新對(duì)TH0、TL0設(shè)置初值,否則下一次TH0、TL0將從0開(kāi)始加法計(jì)數(shù)。例7-2已知晶振頻率fosc=12MHz,要求定時(shí)器0產(chǎn)生1ms的定時(shí)時(shí)間,問(wèn)送入TH0和TL0的計(jì)數(shù)初值各為多少?試對(duì)定時(shí)器進(jìn)行初始化編程。解:由于晶振頻率為12MHz,所以機(jī)器周期Tcy=1μs,定時(shí)器0選用方式0時(shí)最大定時(shí)時(shí)間為8192μs,即8.192ms,而題目要求的定時(shí)時(shí)間為1ms,小于8.192ms,所以可以選用方式0。(1)計(jì)算TH0、TL0的計(jì)數(shù)初值T=(2n-x)×Tcy=(213-x)×1μs=1ms=1000μs,所以x=8192-1000=7192=1C18H=0001110000011000B,取其低13位,放入TH0和TL0,則TH0=E0H,TL0=18H。(2)TMOD寄存器初始化根據(jù)題目要求,GATE(TMOD.3)=0,(TMOD.2)=0,M1(TMOD.1)=0,M0(TMOD.0)=0,定時(shí)器/計(jì)數(shù)器1沒(méi)有使用,相應(yīng)的各個(gè)位隨意狀態(tài),均取為0,則(TMOD)=00H。(3)初始化程序voidinit_time0(void){ TMOD=0x00;//設(shè)置T0為定時(shí)器模式,工作在方式0 TH0=0xE0; TL0=0x18; TR0=1;// 啟動(dòng)T0}方式0是13位定時(shí)器/計(jì)數(shù)器,目的是為了兼容早期的MCS-48單片機(jī),計(jì)數(shù)初值有高8位和低5位構(gòu)成,確定初值比較麻煩,所以在實(shí)際應(yīng)用中已應(yīng)用不多。2.方式1當(dāng)TMOD的M1M0=01時(shí),定時(shí)器/計(jì)數(shù)器工作于方式1,工作于16位的定時(shí)器/計(jì)數(shù)器方式。由8位TL0和8位TH0構(gòu)成16位計(jì)數(shù)器,如圖7-6所示。TL0計(jì)數(shù)溢出則向TH0進(jìn)位,TH0計(jì)數(shù)溢出則置位TCON中的溢出標(biāo)志位TF0。方式1和方式0的差別僅在于計(jì)數(shù)器的位數(shù)不同,方式1是16位定時(shí)器/計(jì)數(shù)器,由TH0高8位和TL0低8位構(gòu)成,方式0是13位定時(shí)器/計(jì)數(shù)器。方式1中初值x的設(shè)置范圍:0~65535(0~216-1),TH0、TL0從初值開(kāi)始加法計(jì)數(shù),直至溢出。選擇方式1工作時(shí)計(jì)數(shù)值和定時(shí)值分別為:N=216-x=65536-xT=(216-x)Tcy=(65536-x)Tcy當(dāng)x取為65535時(shí),計(jì)數(shù)值最小,為1;當(dāng)x取為0時(shí),計(jì)數(shù)值最大,為65536。因此方式1的計(jì)數(shù)范圍為:1~65536,定時(shí)范圍:(1~65536)Tcy。注意:方式1加法計(jì)數(shù)器TH0溢出后,必須用程序重新對(duì)TH0、TL0設(shè)置初值,否則下一次TH0、TL0將從0開(kāi)始加法計(jì)數(shù)。例7-3已知晶振頻率fosc=12MHz,要求定時(shí)器0產(chǎn)生10ms的定時(shí)時(shí)間,試對(duì)定時(shí)器進(jìn)行初始化編程。解:由于晶振頻率為12MHz,機(jī)器周期Tcy=1μs,選用方式0時(shí)最大定時(shí)時(shí)間8.192ms,選擇方式1時(shí),最大定時(shí)時(shí)間為65.536ms,要求的定時(shí)時(shí)間為10ms,所以不能選擇方式0,只能選用方式1。(1)計(jì)算TH0、TL0的計(jì)數(shù)初值由于晶振頻率為12MHz,所以機(jī)器周期Tcy=1μs,則定時(shí)時(shí)間為:T=(2n-x)×Tcy=(216-x)×1μs=10ms,所以x=65536-10000=55536=D8F0H即TH0=D8H,TL0=F0H,或者TH0=55536/256,TL0=55536%256(2)TMOD寄存器初始化根據(jù)題目要求,GATE(TMOD.3)=0,(TMOD.2)=0,M1(TMOD.1)=0,M0(TMOD.0)=1,定時(shí)器/計(jì)數(shù)器1沒(méi)有使用,相應(yīng)的各個(gè)位狀態(tài)隨意,均取為0,則(TMOD)=01H。(3)初始化程序voidinit_time0(void){ TMOD=0x01;//設(shè)置T0為定時(shí)器模式,工作在方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1;// 啟動(dòng)T0}3.方式2當(dāng)TMOD的M1M0=10時(shí),定時(shí)器/計(jì)數(shù)器工作于方式2,工作于8位自動(dòng)重裝初值的8位定時(shí)器/計(jì)數(shù)器方式。方式2計(jì)數(shù)器構(gòu)成如圖7-7所示,TL0作為8位計(jì)數(shù)器使用,TH0作為初值寄存器用,TL0計(jì)數(shù)溢出后,將TF0置1,同時(shí)發(fā)出自動(dòng)重裝初值的信號(hào),使三態(tài)門(mén)打開(kāi),將TH0中初值自動(dòng)送入TL0,使TL0從初值開(kāi)始重新計(jì)數(shù)。方式2中初值x的設(shè)置范圍:0~255(0~28-1),TL0從初值開(kāi)始加法計(jì)數(shù),溢出后TH0中初值重新置入TL0。方式2工作時(shí)計(jì)數(shù)值和定時(shí)值分別為:
N=28-x=256-xT=(28-x)Tcy=(256-x)Tcy當(dāng)x取為255時(shí),計(jì)數(shù)值為1;當(dāng)x取為0時(shí),計(jì)數(shù)值為256。因此方式2的計(jì)數(shù)范圍為:1~256,定時(shí)范圍:(1~256)Tcy由于工作方式2有自動(dòng)重新裝載初值的功能,因此特別適用于定時(shí)控制。例7-4已知晶振頻率fosc=12MHz,要求每隔200μs產(chǎn)生一定時(shí)信號(hào),試對(duì)定時(shí)器進(jìn)行初始化。解:選擇定時(shí)器0,工作在方式2。(1)計(jì)算TH0、TL0的計(jì)數(shù)初值由于晶振頻率為12MHz,所以機(jī)器周期Tcy=1μs,則(2n-x)×Tcy=(28-x)×1μs=200μs,所以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í)器/計(jì)數(shù)器1沒(méi)有使用,相應(yīng)的各個(gè)位狀態(tài)隨意,均取為0,則(TMOD)=02H。(3)初始化程序voidinit_time0(void){ TMOD=0x02;//設(shè)置T0為定時(shí)器模式,工作在方式1 TH0=0x38; TL0=0x38; TR0=1;// 啟動(dòng)T0}4.方式3方式3只適用于定時(shí)器/計(jì)數(shù)器T0,當(dāng)TMOD的M1M0=11時(shí),定時(shí)器/計(jì)數(shù)器T0工作于方式3,定時(shí)器/計(jì)數(shù)器T1不能工作在方式3。定時(shí)器/計(jì)數(shù)器T0工作于方式3的工作原理如圖7-8所示。(a)TL0作8位定時(shí)器/計(jì)數(shù)器(b)TH0作8位定時(shí)器圖7-8定時(shí)器/計(jì)數(shù)器T0方式3原理圖方式3時(shí),T0分成兩個(gè)獨(dú)立的8位計(jì)數(shù)器:TL0和TH0,TL0是8位定時(shí)器/計(jì)數(shù)器,TH0是8位定時(shí)器,TL0使用T0的狀態(tài)控制位、GATE、TR0、,當(dāng)TL0計(jì)數(shù)溢出時(shí),由硬件將TF0置1,向CPU發(fā)出中斷請(qǐng)求。TH0固定為定時(shí)器方式,是8位定時(shí)器模式,只能對(duì)機(jī)器周期Tcy進(jìn)行計(jì)數(shù),不能作為計(jì)數(shù)器模式,對(duì)外部脈沖進(jìn)行計(jì)數(shù)。由于TL0已占用了TR0和TF0,因此TH0借用了定時(shí)器/計(jì)數(shù)器T1的TR1和TF1,TH0的啟動(dòng)和停止受TR1控制,TH0定時(shí)時(shí)間到,將TF1置1。定時(shí)器/計(jì)數(shù)器T0工作在方式3時(shí),定時(shí)器/計(jì)數(shù)器T1雖然還可以選擇為方式0、方式1或方式2,但是由于TH0借用了定時(shí)器/計(jì)數(shù)器T1的TR1和TF1,不能產(chǎn)生溢出中斷請(qǐng)求信號(hào),這時(shí)T1就不能用于需要中斷方式的場(chǎng)合,而通常用作串行口的波特率發(fā)生器。定時(shí)器/計(jì)數(shù)器T0工作在方式3時(shí)的計(jì)數(shù)范圍為:1~256,定時(shí)范圍:(1~256)Tcy。7.2.4定時(shí)器/計(jì)數(shù)器對(duì)輸入信號(hào)的要求定時(shí)器/計(jì)數(shù)器的作用是用來(lái)精確地確定某一段時(shí)間間隔(作為定時(shí)器用),或累計(jì)外部輸入的脈沖個(gè)數(shù)(作為計(jì)數(shù)器用)。當(dāng)用做定時(shí)器時(shí),在其輸入端輸入周期固定的脈沖,根據(jù)定時(shí)器/計(jì)數(shù)器中累計(jì)(或事先設(shè)定)的周期固定的脈沖個(gè)數(shù),即可計(jì)算出所定時(shí)間的長(zhǎng)度。當(dāng)80C51內(nèi)部的定時(shí)器/計(jì)數(shù)器被選定為定時(shí)器工作模式時(shí),計(jì)數(shù)輸入信號(hào)是內(nèi)部機(jī)器周期脈沖,每個(gè)機(jī)器周期產(chǎn)生一個(gè)脈沖,計(jì)數(shù)器增1,定時(shí)器/計(jì)數(shù)器的輸入脈沖頻率為時(shí)鐘振蕩頻率的1/12。當(dāng)采用12MHz頻率的晶體時(shí),計(jì)數(shù)速率為1MHz,輸入脈沖的周期間隔為1μs。由于定時(shí)的精度決定于輸入脈沖的周期,因此當(dāng)需要高分辨率的定時(shí),應(yīng)盡量選用頻率較高的晶振(80C51最高為40MHz)。對(duì)輸入信號(hào)的基本要求如圖7-9所示,圖中Tcy為機(jī)器周期。圖7-9對(duì)輸入信號(hào)的基本要求7.3定時(shí)器/計(jì)數(shù)器的應(yīng)用定時(shí)器/計(jì)數(shù)器是單片機(jī)應(yīng)用系統(tǒng)中重要的功能部件,通過(guò)靈活應(yīng)用其不同的工作方式可以減輕CPU的負(fù)擔(dān),簡(jiǎn)化外圍電路,本節(jié)通過(guò)幾個(gè)典型的例子,介紹定時(shí)器的使用方法。例7-5已知晶振頻率fosc=12MHz,編程使P2.0引腳上產(chǎn)生100ms的方波程序。解:分析:方波的周期為100ms,要求高、低電平的持續(xù)時(shí)間各為50ms,采用定時(shí)器定時(shí),中斷工作方式。每50ms時(shí)間到時(shí),在中斷服務(wù)程序中將P2.0引腳電平狀態(tài)取反,即可獲得所需要的波形。晶振頻率fosc=12MHz,Tcy=12/fosc=1μs,選擇定時(shí)器T1的方式1。(1)確定計(jì)算初值(2n-x)×Tcy=(216-x)×1μs=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í)器/計(jì)數(shù)器0沒(méi)有使用,相應(yīng)的各個(gè)位狀態(tài)隨意,均取為0,則(TMOD)=10H。(3)程序如下:#include<reg51.h>#defineuintunsignedintsbitfangbo=P2^0;voidmain(){ TMOD=0x10;//設(shè)置T1為定時(shí)器模式,工作在方式1 TH1=0x3C; TL1=0xB0; EA=1;//開(kāi)總中斷
ET1=1;//允許T1中斷
TR1=1;// 啟動(dòng)T1 while(1); }voidtimer1()interrupt3//定時(shí)器1中斷服務(wù)程序{ TH1=(65536-50000)/256; TL1=(65536-50000)%256; fangbo=~fangbo; }P2.0引腳上輸出的周期位100ms的方波仿真結(jié)果如圖7-10所示。圖7-10P2.0引腳上的100ms方波信號(hào)仿真圖(每小格為10ms)例7-6利用單片機(jī)的定時(shí)器設(shè)計(jì)一個(gè)秒表,使它從0~59s計(jì)數(shù),晶振頻率fosc=12MHz,設(shè)計(jì)秒表的proteμs仿真電路,并編寫(xiě)程序。 解:(1)分析:已知晶振頻率fosc=12MHz,Tcy=1μs,選定時(shí)器T0或定時(shí)器T1均可,但是應(yīng)該選擇方式0、1、2或3中的哪一種呢?
各種方式的定時(shí)時(shí)間計(jì)算公式為(2n-x)×Tcy,當(dāng)計(jì)數(shù)初值x為0時(shí),各種方式最長(zhǎng)的定時(shí)時(shí)間如下:方式0:213×Tcy=8192μs=8.192ms;方式1:216×Tcy=65536μs=65.536ms,方式2:28×Tcy=256μs,方式3:28×Tcy=256μs。方式1是定時(shí)時(shí)間最長(zhǎng)的一種方式,它的最長(zhǎng)定時(shí)時(shí)間為65.536ms,也達(dá)不到1s。因此要達(dá)到1s的延時(shí),只能采用多次中斷的方式。選擇定時(shí)器T0,方式1,設(shè)定T0的定時(shí)時(shí)間為50ms,每隔50ms中斷1次,中斷20次即為1s。(2)確定計(jì)算初值(2n-x)×Tcy=(216-x)×1μs=50ms,x=65536-50000=15536=3CB0H即TH0=3CH,TL0=B0H(3)TMOD寄存器初始化GATE(TMOD.3)=0,(TMOD.2)=0,M1(TMOD.1)=0,M0(TMOD.0)=1,定時(shí)器/計(jì)數(shù)器1沒(méi)有使用,相應(yīng)的各個(gè)位隨意狀態(tài),均取為0,則(TMOD)=01H。(4)Proteus仿真電路設(shè)計(jì)秒表的Proteus電路如圖7-11所示,采用兩位共陰極數(shù)碼管顯示秒數(shù),數(shù)碼管段選由P1口控制,十位數(shù)碼管的位選由P2.0控制,個(gè)位數(shù)碼管的位選由P2.1控制。(5)程序設(shè)計(jì)如下:#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharuchartemp,aa,shi,ge;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰極數(shù)碼管碼表voiddisplay(ucharshi,ucharge);//顯示子程序voiddelay(uintz);//延時(shí)子程序voidinit();//定時(shí)器初始化子程序voidmain(){ init();//初始化子程序 while(1) { if(aa==20) { aa=0; temp++; if(temp==59) { temp=0; } shi=temp/10; ge=temp%10;
display(shi,ge); }}voiddelay(uintz)//延時(shí)子程序{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddisplay(ucharshi,ucharge)//顯示子程序{
P2=0xfe;//送入十位數(shù)碼管位選信號(hào),顯示數(shù)字
P1=table[shi];//送入十位數(shù)碼管的段選信號(hào) delay(5); P2=0xfd;//送入個(gè)位數(shù)碼管位選信號(hào),顯示數(shù)字 P1=table[ge];//送入個(gè)位數(shù)碼管的段選信號(hào) delay(5);}voidinit()//定時(shí)器初始化程序{ temp=0; TMOD=0x01;//設(shè)置T0為定時(shí)器模式,工作在方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256;
EA=1;//開(kāi)總中斷 ET0=1;//允許T0中斷 TR0=1;// 啟動(dòng)T0}voidtimer0()interrupt1//定時(shí)器T0中斷服務(wù)子程序{ TH0=(65536-50000)/256;//重新設(shè)置定時(shí)器初值 TL0=(65536-50000)%256; aa++; //中斷次數(shù)加1}例7-7利用單片機(jī)的定時(shí)器設(shè)計(jì)交通信號(hào)燈控制電路,用Proteus仿真軟件驗(yàn)證。解:(1)分析:交通燈有四個(gè)方向,南北向是同樣的工作模式,東西向是同樣的工作模式,只要將交通燈的工作模式列出來(lái),采用定時(shí)器實(shí)現(xiàn)定時(shí)控制,當(dāng)定時(shí)時(shí)間到的時(shí)候,進(jìn)行模式切換,就可以實(shí)現(xiàn)交通燈的控制。設(shè)交通燈有如下四種工作模式(為了便于演示,切換時(shí)間較短):①東西向綠燈與南北向紅燈亮5s;②東西向綠燈滅,黃燈閃爍5次;③東西向紅燈與南北向綠燈亮5s;④南北向綠燈滅,黃燈閃爍5次;定時(shí)器的四種定時(shí)方式中方式1是定時(shí)時(shí)間最長(zhǎng)的一種方式,但它的最長(zhǎng)定時(shí)時(shí)間也只為65.536ms,無(wú)法達(dá)到5s的延時(shí),所以本題仍然采用定時(shí)器延時(shí)50ms的方法,在定時(shí)器的中斷程序中采用軟件計(jì)數(shù)的方法來(lái)加長(zhǎng)延時(shí)時(shí)間。(2)Proteus仿真電路設(shè)計(jì)交通燈的Proteus仿真電路如圖7-12所示,將交通燈通過(guò)反相器7405接在P0口上,P0口通過(guò)上拉電阻接+5V。#include<reg52.h>#defineuintunsignedint#defineucharunsignedcha
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年度八年級(jí)物理上冊(cè)2.2聲音的特性練習(xí)新版新人教版
- 2024-2025學(xué)年四年級(jí)語(yǔ)文下冊(cè)第四組12小英雄雨來(lái)教案新人教版
- 社團(tuán)下半年工作計(jì)劃
- 監(jiān)理員年度工作總結(jié)
- 小學(xué)音樂(lè)教學(xué)工作計(jì)劃
- 設(shè)立公司辦事處協(xié)議書(shū)范本
- 既有住宅加裝電梯維護(hù)保養(yǎng)合同范本
- 蘇科版數(shù)學(xué)九年級(jí)上冊(cè)2.1《圓》聽(tīng)評(píng)課記錄
- 中華書(shū)局版歷史七年級(jí)上冊(cè)第7課《商鞅變法與都江堰的修建》聽(tīng)課評(píng)課記錄
- 湘教版數(shù)學(xué)九年級(jí)上冊(cè)1.3《 反比例函數(shù)的應(yīng)用》聽(tīng)評(píng)課記錄
- 福建省泉州市晉江市2024-2025學(xué)年七年級(jí)上學(xué)期期末生物學(xué)試題(含答案)
- 醫(yī)美注射類(lèi)知識(shí)培訓(xùn)課件
- 2025年春新人教版物理八年級(jí)下冊(cè)課件 第十章 浮力 第4節(jié) 跨學(xué)科實(shí)踐:制作微型密度計(jì)
- 2025年廣電網(wǎng)絡(luò)公司工作計(jì)劃(3篇)
- 貨運(yùn)車(chē)輛駕駛員服務(wù)標(biāo)準(zhǔn)化培訓(xùn)考核試卷
- 銀行行長(zhǎng)2024年個(gè)人年終總結(jié)
- 財(cái)務(wù)BP經(jīng)營(yíng)分析報(bào)告
- 三年級(jí)上冊(cè)體育課教案
- 2024高考物理二輪復(fù)習(xí)電學(xué)實(shí)驗(yàn)專(zhuān)項(xiàng)訓(xùn)練含解析
- 暴發(fā)性心肌炎的診斷與治療
- 2024年全國(guó)統(tǒng)一高考英語(yǔ)試卷(新課標(biāo)Ⅰ卷)含答案
評(píng)論
0/150
提交評(píng)論