![AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器課件_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/def3ddab-0fa3-4226-91c5-c264b2e4f997/def3ddab-0fa3-4226-91c5-c264b2e4f9971.gif)
![AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器課件_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/def3ddab-0fa3-4226-91c5-c264b2e4f997/def3ddab-0fa3-4226-91c5-c264b2e4f9972.gif)
![AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器課件_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/def3ddab-0fa3-4226-91c5-c264b2e4f997/def3ddab-0fa3-4226-91c5-c264b2e4f9973.gif)
![AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器課件_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/def3ddab-0fa3-4226-91c5-c264b2e4f997/def3ddab-0fa3-4226-91c5-c264b2e4f9974.gif)
![AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器課件_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/26/def3ddab-0fa3-4226-91c5-c264b2e4f997/def3ddab-0fa3-4226-91c5-c264b2e4f9975.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器1 1 第第7章章 AT89S51單片機(jī)的單片機(jī)的 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器2 27.1 定時(shí)器定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu) AT89S51定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)見圖 7-1,定時(shí)器/計(jì)數(shù)器T0由特殊功能寄存器TH0、TL0構(gòu)成,T1由特殊功能寄存器TH1、TL1構(gòu)成。圖圖7-1 定時(shí)器定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)框圖計(jì)數(shù)器結(jié)構(gòu)框圖AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器TMOD用于選擇定時(shí)器/計(jì)數(shù)器T0、T1的工作模式和工作方式。TCON用于控制T0、T1的啟動(dòng)和停止,同時(shí)包含T
2、0、T1狀態(tài)。計(jì)數(shù)器起始計(jì)數(shù)從初值開始。單片機(jī)復(fù)位時(shí)計(jì)數(shù)器初值為0。7.1.1 工作方式控制寄存器工作方式控制寄存器TMOD 圖圖7-2 寄存器寄存器TMOD格式格式AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器4 4(1)GATE門控位門控位GATE=0,是否計(jì)數(shù),由控制位TRx(x = 0,1)來控制。 GATE=1,是否計(jì)數(shù),由外中斷引腳INTx* 上的電平與運(yùn)行控制位TRx共同控制。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器5 5 (2)M1、M0工作方式選擇位工作方式選擇位 M1、M04種編碼,對(duì)應(yīng)于4種工作方式的選擇,見表7-1。表7-1M1、M0工作方式選擇A
3、T89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器6 6 (3)C/T* 計(jì)數(shù)器模式和定時(shí)器模式選擇位C/T*=0,定時(shí)器模式,對(duì)系統(tǒng)時(shí)鐘12分頻的脈沖進(jìn)行計(jì)數(shù)。C/T*=1,計(jì)數(shù)器模式,計(jì)數(shù)器對(duì)外部輸入引腳T0(P3.4)或T1(P3.5)的外部脈沖(負(fù)跳變)計(jì)數(shù)。7.1.2 定時(shí)器定時(shí)器/計(jì)數(shù)器控制寄存器計(jì)數(shù)器控制寄存器TCON TCON控制T0、T1的啟動(dòng)和停止,同時(shí)包含T0、T1狀態(tài)。 圖圖7-3 TCON格式格式AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器7 7這里僅介紹高4位功能。(1)TF1、TF0計(jì)數(shù)溢出標(biāo)志位 當(dāng)計(jì)數(shù)器計(jì)數(shù)溢出時(shí),該位置“1”。使用查詢方式時(shí),此位
4、可供CPU查詢,但應(yīng)注意查詢后,用軟件及時(shí)將該位清“0”。使用中斷方式時(shí),作為中斷請(qǐng)求標(biāo)志位,進(jìn)入中斷服務(wù)程序后由硬件自動(dòng)清“0”。(2)TR1、TR0計(jì)數(shù)運(yùn)行控制位 TR1位(或TR0)=1,啟動(dòng)計(jì)數(shù)器計(jì)數(shù)的必要條件。 TR1位(或TR0)=0,停止計(jì)數(shù)器計(jì)數(shù)。該位可由軟件置“1”或清“0”。7.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的4種工作方式種工作方式 4種工作方式,分別介紹如下。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器8 8圖圖7-5 方式方式1的邏輯結(jié)構(gòu)框圖的邏輯結(jié)構(gòu)框圖方式1和方式0差別僅僅在于計(jì)數(shù)器的位數(shù)不同7.2.2 方式方式1當(dāng)M1、M0=01時(shí),工作于方式1,等效
5、電路邏輯結(jié)構(gòu)見圖7-5。7.2.1 方式方式0AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器9 97.2.3 方式方式2 方式0和方式1最大特點(diǎn)是計(jì)數(shù)溢出后,計(jì)數(shù)器為全0。因此在循環(huán)定時(shí)或循環(huán)計(jì)數(shù)應(yīng)用時(shí)就存在用指令反復(fù)裝入計(jì)數(shù)初值的問題,這會(huì)影響定時(shí)精度,方式2就是為解決此問題而設(shè)置的。 當(dāng)M1、M0=10時(shí),工作方式2,等效邏輯結(jié)構(gòu)見圖7-6(以T1為例,x=1)。 工作方式2為自動(dòng)恢復(fù)初值(初值自動(dòng)裝入)的8位定時(shí)器/計(jì)數(shù)器,TLx(x=0,1)作為常數(shù)緩沖器,當(dāng)TLx計(jì)數(shù)溢出時(shí),在溢出標(biāo)志TFx置“1”的同時(shí),還自動(dòng)將THx中的初值送至TLx,使TLx從初值開始重新計(jì)數(shù)。定時(shí)器/
6、計(jì)數(shù)器方式2工作過程見圖7-7。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器1010圖圖7-67-6 方式2邏輯結(jié)構(gòu)框圖AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器1111圖7-7 方式2工作過程方式2可省去用戶軟件中重裝初值的指令執(zhí)行時(shí)間,簡(jiǎn)化定時(shí)初值的計(jì)算方法,可相當(dāng)精確地定時(shí)。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器12127.2.4 方式方式3 方式3是為增加一個(gè)附加的8位定時(shí)器/計(jì)數(shù)器而設(shè)置的,從而使AT89S51具有3個(gè)定時(shí)器/計(jì)數(shù)器。方式3只適用于T0,T1不能工作在方式3。T1方式3時(shí)相當(dāng)于TR1 = 0,停止計(jì)數(shù)(此時(shí)T1可作為串口波特率產(chǎn)生
7、器)。1工作方式工作方式3下的下的T0 當(dāng)TMOD的低2位為11時(shí),T0被選為方式3,各引腳與T0的邏輯關(guān)系見圖7-8。 T0分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0,TL0使用T0的狀態(tài)控制位C/T* 、GATE、TR0 ,而TH0被固定為一個(gè)8位定時(shí)器(不能作為外部計(jì)數(shù)模式),并使用定時(shí)器T1的狀態(tài)控制位TR1,同時(shí)占用定時(shí)器T1的中斷請(qǐng)求源TF1。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器 圖7-8 T0方式3的邏輯結(jié)構(gòu)框圖AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器14142T0工作在方式工作在方式3時(shí)時(shí)T1的各種工作方式的各種工作方式 一般情況下,當(dāng)T1用作串口波
8、特率發(fā)生器時(shí),T0才工作在方式3。T0方式3時(shí),T1可為方式0、1、2,作為串口波特率發(fā)生器,或不需要中斷的場(chǎng)合。(1)T1工作在方式工作在方式0 (2)T1工作在方式工作在方式1 當(dāng)T1的控制字中M1、M0 = 01時(shí),T1工作在方式1,工作示意見圖7-10。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器1515(3)T1工作在方式工作在方式2 當(dāng)當(dāng)T1控制字中控制字中M1、M0 = 10時(shí),時(shí),T1為方式為方式2,工作示意如,工作示意如圖圖7-11所示。所示。圖7-10 T0方式3時(shí)T1為方式1工作示意圖 圖7-11 T0方式3時(shí)T1為方式2工作示意圖AT89S51單片機(jī)的定時(shí)器計(jì)
9、數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器1616(4)T1設(shè)置在方式3 T0方式3時(shí),再把T1也設(shè)置成方式3,此時(shí)T1停止計(jì)數(shù)。7.3 對(duì)外部輸入的計(jì)數(shù)信號(hào)的要求對(duì)外部輸入的計(jì)數(shù)信號(hào)的要求 計(jì)數(shù)器模式時(shí),計(jì)數(shù)脈沖來自外部輸入引腳T0或T1。當(dāng)輸入信號(hào)產(chǎn)生負(fù)跳變時(shí),計(jì)數(shù)值增1。每個(gè)機(jī)器周期S5P2期間,都對(duì)外部輸入引腳T0或T1進(jìn)行采樣。如在第1個(gè)機(jī)器周期中采得值為1,而在下一個(gè)機(jī)器周期中采得的值為0,則在緊跟著的再下一個(gè)機(jī)器周期S3P1期間,計(jì)數(shù)器加1。由于確認(rèn)一次負(fù)跳變要花2個(gè)機(jī)器周期,即24個(gè)振蕩周期,因此外部輸入的計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率1/24。 AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定
10、時(shí)器計(jì)數(shù)器 如選用6MHz晶體,允許輸入脈沖頻率最高為250kHz。如選用12MHz頻率晶體,則可輸入最高頻率500kHz外部脈沖。對(duì)外輸入信號(hào)占空比沒有限制,但為確保某一給定電平在變化前能被采樣1次,則該該電平至少保持電平至少保持1個(gè)機(jī)器周期個(gè)機(jī)器周期。故對(duì)外部輸入信號(hào)要求見圖7-12,圖中Tcy為機(jī)器周期。圖圖7-12 對(duì)外部計(jì)數(shù)輸入信號(hào)的要求對(duì)外部計(jì)數(shù)輸入信號(hào)的要求AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器18187.4 7.4 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的編程和應(yīng)用計(jì)數(shù)器的編程和應(yīng)用 4種工作方式中,方式0與方式1基本相同,只是計(jì)數(shù)位數(shù)不同。方式0為13位,方式1為16位。由
11、于方式0是為兼容MCS-48而設(shè),計(jì)數(shù)初值計(jì)算復(fù)雜,所以在實(shí)際應(yīng)用中,一般不用方式0,常采用方式1。7.4.1 P1口控制口控制8只只LED每每0.5s閃亮一次閃亮一次 【例7-1】在AT89S51的P1口上接有8只LED,原理電路見圖圖7-137-13。采用T0方式1的定時(shí)中斷方式,使P1口外接的8只LED每0.5s閃亮一次。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器1919圖7-13 方式1定時(shí)中斷控制LED閃亮AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器2020(1)設(shè)置)設(shè)置TMOD寄存器寄存器(2)計(jì)算定時(shí)器)計(jì)算定時(shí)器T0的計(jì)數(shù)初值的計(jì)數(shù)初值(3)設(shè)置)設(shè)置I
12、E寄存器寄存器(4)啟動(dòng)和停止定時(shí)器)啟動(dòng)和停止定時(shí)器T0 AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器2121#includechar i=100;void main ()TMOD=0 x01;/定時(shí)器T0為方式1TH0=0 xee;/設(shè)置定時(shí)器初值TL0=0 x00; P1=0 x00; /P1口8個(gè)LED點(diǎn)亮EA=1;/開總中斷ET0=1;/開定時(shí)器T0中斷TR0=1;/啟動(dòng)定時(shí)器T0while(1);/循環(huán)等待;AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器void timer0() interrupt 1/T0中斷程序TH0=0 xee;/重新賦初值TL0=0 x0
13、0; i-;/循環(huán)次數(shù)減一if(i=0)P1=P1;/P1口按位取反i=100;/重置循環(huán)次數(shù)AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器23237.4.2 計(jì)數(shù)器的應(yīng)用計(jì)數(shù)器的應(yīng)用【例7-2】如圖7-14,T1的采用計(jì)數(shù)模式,方式1中斷,計(jì)數(shù)輸入引腳T1(P3.5)上外接按鈕開關(guān),作為計(jì)數(shù)信號(hào)輸入。按4次按鈕開關(guān)后,P1口的8只LED閃爍不停。(1)設(shè)置TMOD寄存器(2)計(jì)算定時(shí)器T1的計(jì)數(shù)初值(3)設(shè)置IE寄存器(4)啟動(dòng)和停止定時(shí)器T1。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器圖圖7-14 由外部計(jì)數(shù)輸入信號(hào)控制由外部計(jì)數(shù)輸入信號(hào)控制LED的閃爍的閃爍AT89S
14、51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器#include void Delay(unsigned int i)/定義延時(shí)函數(shù)Delay( ),i是形式參數(shù),不能賦初值unsigned int j;for(;i0;i-)/變量i由實(shí)際參數(shù)傳入一個(gè)值/因此i不能賦初值for(j=0;j125;j+);/空函數(shù) AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器2626void main( )/主函數(shù) TMOD=0 x50;/設(shè)置定時(shí)器T1為方式1計(jì)數(shù)TH1=0 xff;/向TH1寫入初值的高8位TL1=0 xfc;/向TL1寫入初值的低8位EA=1; /總中斷允許 ET1=1; /定時(shí)器T
15、1中斷允許 TR1=1; /啟動(dòng)定時(shí)器T1 while(1) ; /無窮循環(huán),等待計(jì)數(shù)中斷 AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器2727void T1_int(void) interrupt 3 /T1中斷函數(shù)for(;)/無限循環(huán) P1=0 xff;/8位LED全滅 Delay(500) ;/延時(shí)500ms P1=0;/8位LED全亮 Delay(500); /延時(shí)500ms AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器28287.4.3 控制控制P1.0產(chǎn)生周期為產(chǎn)生周期為2ms的方波的方波 【例7-3】假設(shè)系統(tǒng)時(shí)鐘為12MHz,設(shè)計(jì)電路并編寫程序?qū)崿F(xiàn)從P1.0
16、引腳上輸出一個(gè)周期為2ms的方波,見圖7-15。 要在P1.0上產(chǎn)生周期為2ms的方波,定時(shí)器應(yīng)產(chǎn)生1ms的定時(shí)中斷,定時(shí)時(shí)間到則在中斷服務(wù)程序中對(duì)P1.0求反。使用定時(shí)器T0,方式1定時(shí)中斷,GATE不起作用。 AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器圖圖7-15 定時(shí)器控制定時(shí)器控制P1.0輸出一個(gè)周期輸出一個(gè)周期2ms方波方波AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器3030圖7-16 定時(shí)器控制P1.0輸出周期2ms的方波的原理電路AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器3131#include /頭文件reg51.hsbit P1_0=P10;
17、/定義特殊功能寄存器P1的位變量P1_0void main(void)/主程序TMOD=0 x01;/設(shè)置T0為方式1TR0=1;/接通T0while(1)/無限循環(huán) TH0=0 xfc;/置T0高8位初值TL0=0 x18;/置T0低8位初值do while(!TF0); /判TF0是否為1,為1則T0溢出,往下/執(zhí)行,否則原地循環(huán)P1_0=!P1_0;/ P1.0狀態(tài)求反TF0=0;/TF0標(biāo)志清零AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器3232仿真時(shí),右鍵單擊虛擬數(shù)字示波器,出現(xiàn)下拉菜單,點(diǎn)擊“Digital oscilloscope”選項(xiàng),就會(huì)在數(shù)字示波器上顯示P1.0引
18、腳輸出周期為2ms方波,如圖7-17所示。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器3333圖7-17 虛擬數(shù)字示波器顯示的2ms的方波波形AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器34347.4.4 利用利用T1控制發(fā)出控制發(fā)出1kHz的音頻信號(hào)的音頻信號(hào) 【例7-4】利用T1的中斷控制P1.7引腳輸出頻率為1kHz方波音頻信號(hào),驅(qū)動(dòng)蜂鳴器發(fā)聲。系統(tǒng)時(shí)鐘為12MHz。方波音頻信號(hào)周期1ms,因此T1的定時(shí)中斷時(shí)間為0.5 ms,進(jìn)入中斷服務(wù)程序后,對(duì)P1.7求反。電路見圖7-18。 先計(jì)算T1初值,系統(tǒng)時(shí)鐘為12MHz,則方波周期為1s。1kHz音頻信號(hào)周期為1ms,
19、要定時(shí)計(jì)數(shù)的脈沖數(shù)為a。則T1初值: TH1=(65 536 a) /256;TL1=(65 536 a) %256AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器3535圖圖7-18 控制蜂鳴器發(fā)出控制蜂鳴器發(fā)出1kHz的音頻信號(hào)的音頻信號(hào)AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器參考程序如下:#include /包含頭文件sbit sound=P17; /將sound位定義為P1.7腳#define f1(a) (65536-a)/256/定義裝入定時(shí)器高8位時(shí)間常數(shù)#define f2(a) (65536-a)%256 /定義裝入定時(shí)器低8位時(shí)間常數(shù)unsigned i
20、nt i = 500; unsigned int j = 0; void main(void)EA=1; /開總中斷. ET1=1; /允許定時(shí)器T1中斷 . TMOD=0 x10; /TMOD=0001 000B,使用T1的方式1定時(shí) TH1=f1(i); /給定時(shí)器T1高8位賦初值. TL1=f2(i); /給定時(shí)器T1低8位賦初值. TR1=1; /啟動(dòng)定時(shí)器T1 while(1) AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器3737 /循環(huán)等待 i=460; while(j2000); j=0; i=360; while(j 2000); j=0; void T1(void)
21、 interrupt 3 using 0 /定時(shí)器T1中斷函數(shù) TR1= 0; /關(guān)閉定時(shí)器T1 sound=sound; /P1.7輸出求反 TH1=f1(i); /定時(shí)器T1的高8位重新賦初值. TL1=f2(i); /定時(shí)器T1的低8位重新賦初值.AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器3838 j+; TR1=1; /啟動(dòng)定時(shí)器T17.4.5 LED數(shù)碼管秒表的制作數(shù)碼管秒表的制作 【例7-5】用2位數(shù)碼管顯示計(jì)時(shí)時(shí)間,最小計(jì)時(shí)單位為“百毫秒”,計(jì)時(shí)范圍0.19.9s。當(dāng)?shù)?次按一下計(jì)時(shí)功能鍵時(shí),秒表開始計(jì)時(shí)并顯示;第2次按一下計(jì)時(shí)功能鍵時(shí),停止計(jì)時(shí),將計(jì)時(shí)的時(shí)間值送到數(shù)
22、碼管顯示;如果計(jì)時(shí)到9.9s,將重新開始從0計(jì)時(shí);第3次按一下計(jì)時(shí)功能鍵,秒表清0。再次按一下計(jì)時(shí)功能鍵,則重復(fù)上述計(jì)時(shí)過程。 本秒表應(yīng)用定時(shí)器模式,計(jì)時(shí)范圍0.19.9s。此外還涉及如何編寫控制LED數(shù)碼管顯示的程序。 本例原理電路見圖7-19。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器3939圖圖7-19 LED數(shù)碼管顯示的秒表原理電路及仿真數(shù)碼管顯示的秒表原理電路及仿真AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器4040參考程序如下:#include /包含51單片機(jī)寄存器定義的頭文件unsigned char code discode1=0 xbf,0 x86,0
23、 xdb,0 xcf,0 xe6,0 xed,0 xfd,0 x87,0 xff,0 xef;/數(shù)碼管顯示09的段碼表, 帶小數(shù)點(diǎn)unsigned char code discode2=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/數(shù)碼管顯示09的段碼表,不帶小數(shù)點(diǎn)unsigned char timer=0;/記錄中斷次數(shù)unsigned char second; /儲(chǔ)存秒unsigned char key=0;/記錄按鍵次數(shù)main()/主函數(shù) TMOD=0 x01;/定時(shí)器T0方式1定時(shí) ET0=1; /允許定時(shí)器
24、T0中斷AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器4141EA=1; /總中斷允許second=0; /設(shè)初始值P0=discode1second/10; /顯示秒位0P2=discode2second%10; /顯示0.1s位0while(1) /循環(huán)if(P3&0 x80)=0 x00)/當(dāng)按鍵被按下時(shí) key+;/按鍵次數(shù)加1switch(key)/根據(jù)按鍵次數(shù)分三種情況case 1: /第一次按下為啟動(dòng)秒表計(jì)時(shí)TH0=0 xee; /向TH0寫入初值的 /高8位AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器4242TL0=0 x00; /向TL0寫入初值的低
25、8位,定時(shí)5msTR0=1; /啟動(dòng)定時(shí)器T0break;case 2: /按下兩次暫定秒表TR0=0; /關(guān)閉定時(shí)器T0break;case 3: /按下3次秒表清0key=0; /按鍵次數(shù)清second=0; /秒表清0P0=discode1second/10; /顯示秒位0 P2=discode2second%10; /顯示0.1s位0break;while(P3&0 x80)=0 x00); /如果按鍵時(shí)間過長(zhǎng)在此循環(huán)AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器4343void int_T0() interrupt 1 using 0 /定時(shí)器T0中斷函數(shù)TR0=0;
26、 /停止計(jì)時(shí),執(zhí)行以下操作(會(huì)帶來計(jì)時(shí)誤差)TH0=0 xee; /向TH0寫入初值的高8位TL0=0 x00; /向TL0寫入初值的低8位,定時(shí)5mstimer+; /記錄中斷次數(shù)if (timer=20) /中斷20次,共計(jì)時(shí)20*5ms=100ms=0.1s timer=0; /中斷次數(shù)清0second+; /加0.1sP0=discode1second/10; /根據(jù)計(jì)時(shí),即時(shí)顯示秒位P2=discode2second%10; /根據(jù)計(jì)時(shí),即時(shí)顯示0.1s位 AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器4444if(second=99) /當(dāng)計(jì)時(shí)到9.9s時(shí)TR0=0;/停止
27、計(jì)時(shí)second=0;/秒數(shù)清0key=2; /按鍵數(shù)置2,當(dāng)再次按下按鍵時(shí),/key+,即key=3,秒表清0復(fù)原 else/計(jì)時(shí)不到9.9s時(shí)TR0=1;/啟動(dòng)定時(shí)器繼續(xù)計(jì)時(shí)AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器45457.4.6 測(cè)量脈沖寬度測(cè)量脈沖寬度門控位門控位GATEx的應(yīng)用的應(yīng)用 介紹門控位GATE應(yīng)用。利用GATE測(cè)量INT1*腳上正脈沖寬度。 【例7-6】門控位GATE1可使T1啟動(dòng)計(jì)數(shù)受INT1*控制,當(dāng)GATE1=1,TR1=1時(shí),只有INT1*引腳輸入高電平時(shí),T1才被允許計(jì)數(shù)。利用該功能,可測(cè)量INT1*腳正脈沖寬度,方法見圖7-20。 原理電路見圖7
28、-21,圖中省略復(fù)位電路和時(shí)鐘電路。利用門控位GATE1來測(cè)量INT1*腳上正脈沖寬度,并在6位數(shù)碼管上以機(jī)器周期數(shù)顯示。對(duì)被測(cè)量脈沖信號(hào)寬度,要求能通過旋轉(zhuǎn)信號(hào)源旋鈕可調(diào)。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器圖圖7-20 利用利用GATE位測(cè)量正脈沖的寬度位測(cè)量正脈沖的寬度AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器4747圖圖7-21 利用利用GATE位測(cè)量位測(cè)量 引腳上正脈沖的寬度的原理電路引腳上正脈沖的寬度的原理電路AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器4848參考程序如下:#include#define uint unsigned int#
29、define uchar unsigned charsbit P3_3=P33;/位變量定義uchar count_high; /定義計(jì)數(shù)變量,用來讀取TH0uchar count_low;/定義計(jì)數(shù)變量,用來讀取TL0uint num;uchar shiwan, wan, qian, bai, shi, ge;uchar flag;uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; /共陰極數(shù)碼管段碼表void delay(uint z)/延時(shí)函數(shù)AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的
30、定時(shí)器計(jì)數(shù)器4949uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void display(uint a,uint b,uint c,uint d,uint e,uint f) /數(shù)碼管顯示函數(shù)P2=0 xfe; P0=tablef;delay(2);P2=0 xfd;P0=tablee;delay(2);P2=0 xfb;P0=tabled;AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器5050delay(2);P2=0 xf7;P0=tablec;delay(2);P2=0 xef;P0=tableb;delay(2);P2=0 xdf;P0=ta
31、blea;delay(2);void read_count() /讀取計(jì)數(shù)寄存器的內(nèi)容AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器5151do count_high=TH1; /讀高字節(jié) count_low=TL1;/讀低字節(jié) while(count_high!=TH1);num=count_high*256+count_low; /*可將兩字節(jié)的機(jī)器周期數(shù)進(jìn)行 顯示處理*/void main( )while(1)flag=0; TMOD=0 x90;/設(shè)置定時(shí)器T1為方式1定時(shí)AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器5252TH1=0;/向定時(shí)器T1寫入計(jì)數(shù)初值 TL
32、1=0;while(P3_3=1); /等待INT1*變低TR1=1;/如果INT1*為低,啟動(dòng)T1(未真正開始計(jì)數(shù))while(P3_3=0); /等待INT1* 變高,變高后T1真正開始計(jì)數(shù)while(P3_3=1); /等待INT1*變低,變低后T1停止計(jì)數(shù)TR1=0;read_count(); /讀計(jì)數(shù)寄存器內(nèi)容的函數(shù)shiwan=num/100000;wan=num%100000/10000;qian=num%10000/1000;bai=num%1000/100;shi=num%100/10;AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器5353ge=num%10;whil
33、e(flag!=100) /減小刷新頻率flag+;display(ge,shi,bai,qian,wan,shiwan); 執(zhí)行上述程序仿真,把INT1*引腳上出現(xiàn)的正脈沖寬度顯示在LED數(shù)碼管顯示器上。晶振頻率為12MHz,如果默認(rèn)信號(hào)源輸出頻率為1kHz的方波,則數(shù)碼管顯示為500。 注意:在仿真時(shí),偶爾顯示501是因?yàn)樾盘?hào)源的問題,若將信號(hào)源換成頻率固定的激勵(lì)源則不會(huì)出現(xiàn)此問題。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器54547.4.7 LCD時(shí)鐘的設(shè)計(jì)時(shí)鐘的設(shè)計(jì) 【例【例7-77-7】使用定時(shí)器實(shí)現(xiàn)一個(gè)使用定時(shí)器實(shí)現(xiàn)一個(gè)LCDLCD顯示時(shí)鐘。采用顯示時(shí)鐘。采用LCD 1
34、602LCD 1602,具體見第具體見第5 5章的紹。章的紹。LCDLCD時(shí)鐘的原理電路時(shí)鐘的原理電路見見圖圖7-227-22。 最小計(jì)時(shí)單位是秒,如何獲得最小計(jì)時(shí)單位是秒,如何獲得1s1s的定時(shí)?可將的定時(shí)?可將T0T0定時(shí)時(shí)定時(shí)時(shí)間定為間定為50ms50ms,采用中斷方式進(jìn)行溢出次數(shù)累計(jì),滿,采用中斷方式進(jìn)行溢出次數(shù)累計(jì),滿2020次,則秒次,則秒計(jì)數(shù)變量計(jì)數(shù)變量secondsecond加加1 1;若秒計(jì)滿;若秒計(jì)滿6060,則分計(jì)數(shù)變量,則分計(jì)數(shù)變量minuteminute加加1 1,同時(shí)將秒計(jì)數(shù)變量同時(shí)將秒計(jì)數(shù)變量secondsecond清清0 0;若分鐘計(jì)滿;若分鐘計(jì)滿6060,則小
35、時(shí)計(jì)數(shù)變,則小時(shí)計(jì)數(shù)變量量hourhour加加1 1;若小時(shí)計(jì)數(shù)變量滿;若小時(shí)計(jì)數(shù)變量滿2424,則將小時(shí)計(jì)數(shù)變量,則將小時(shí)計(jì)數(shù)變量hourhour清清0 0。AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器圖圖7-22 LCD時(shí)鐘的原理電路時(shí)鐘的原理電路AT89S51單片機(jī)的定時(shí)器計(jì)數(shù)器單片機(jī)的定時(shí)器計(jì)數(shù)器5656先將定時(shí)器以及各計(jì)數(shù)變量設(shè)定完畢,然后調(diào)用時(shí)間顯示子程序。秒計(jì)時(shí)由T0中斷服務(wù)子程序來實(shí)現(xiàn)。參考程序如下:#include#include#define uchar unsigned char#define uint unsigned intuchar int_time;/定義中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤炭購(gòu)銷合同擔(dān)保書
- 代購(gòu)合作協(xié)議合同
- 江蘇商品房買賣合同模板
- 合同書電子版
- 安裝合同簡(jiǎn)單版樣本
- 2025年人教A版九年級(jí)歷史下冊(cè)月考試卷含答案
- 2025年外研銜接版九年級(jí)歷史下冊(cè)階段測(cè)試試卷
- 2025年滬教版必修2歷史上冊(cè)月考試卷含答案
- 2025年湘教版九年級(jí)地理下冊(cè)月考試卷
- 客車交通安全培訓(xùn)課件
- 藝術(shù)培訓(xùn)校長(zhǎng)述職報(bào)告
- ICU新進(jìn)人員入科培訓(xùn)-ICU常規(guī)監(jiān)護(hù)與治療課件
- 人教版一年數(shù)學(xué)下冊(cè)全冊(cè)分層作業(yè)設(shè)計(jì)
- 選擇性必修一 期末綜合測(cè)試(二)(解析版)2021-2022學(xué)年人教版(2019)高二數(shù)學(xué)選修一
- 學(xué)校制度改進(jìn)
- 各行業(yè)智能客服占比分析報(bào)告
- 年產(chǎn)30萬噸高鈦渣生產(chǎn)線技改擴(kuò)建項(xiàng)目環(huán)評(píng)報(bào)告公示
- 民謠酒吧項(xiàng)目創(chuàng)業(yè)計(jì)劃書
- 2023年珠海市招考合同制職員筆試參考題庫(kù)(共500題)答案詳解版
- 心電監(jiān)護(hù)考核標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論