單片機學習之項目-流水燈定時器_第1頁
單片機學習之項目-流水燈定時器_第2頁
單片機學習之項目-流水燈定時器_第3頁
單片機學習之項目-流水燈定時器_第4頁
單片機學習之項目-流水燈定時器_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、常用延時方法常用延時方法非精確延時非精確延時For(i=0;i100;i+);i=0;while(i-);精確延時精確延時利用庫函數(shù)_nop_ ( ) ; /延時一個機器周期(需要include)利用定時器進行定時定時定時/計數(shù)器計數(shù)器(Timer/Counter,簡稱簡稱T/C) 80C51有有2個個16位定時位定時/計數(shù)器:計數(shù)器:T0、T1 80C52有有3個個16位定時位定時/計數(shù)器:計數(shù)器:T0、T1、T2定時定時/計數(shù)器計數(shù)器(Timer/Counter,簡稱簡稱T/C)定時器:定時器:來一個機器脈沖計數(shù)器的值加來一個機器脈沖計數(shù)器的值加1。當計數(shù)器值溢出。當計數(shù)器值溢出(全全1)

2、時回時回0,定時時,定時時間到,中斷標志間到,中斷標志TF置置1.1個機器周期個機器周期=12*1/振蕩頻率振蕩頻率計數(shù)器:計數(shù)器:在機器周期內(nèi)采樣在機器周期內(nèi)采樣T0(或(或T1)脈沖的下降沿,來一個下降沿計數(shù)器的脈沖的下降沿,來一個下降沿計數(shù)器的值加值加1。當計數(shù)器值溢出。當計數(shù)器值溢出(全全1)時回時回0,中,中斷標志斷標志TF置置LOGO 1 1。定時器知識。定時器知識(1 1)定時器)定時器/ /計數(shù)器的內(nèi)部結(jié)構(gòu)及工作原理計數(shù)器的內(nèi)部結(jié)構(gòu)及工作原理 單片機內(nèi)部設(shè)有單片機內(nèi)部設(shè)有2 2個個1616位的可編程的定時器位的可編程的定時器/ /計數(shù)器。計數(shù)器。簡稱為定時器簡稱為定時器0 0(

3、T0T0)、定時器)、定時器1 1(T1T1)??删幊淌侵钙洌?删幊淌侵钙涔δ埽ㄈ绻ぷ髂J健⒍〞r時間等)均可通過指令來確定功能(如工作模式、定時時間等)均可通過指令來確定或改變?;蚋淖儭?LOGO 單片機定時器單片機定時器/計數(shù)器結(jié)構(gòu)圖計數(shù)器結(jié)構(gòu)圖LOGO 定時器的工作原理:定時器的工作原理: 定時器定時器/ /計數(shù)器是一個加計數(shù)器是一個加“1”1”計數(shù)器,來一個脈沖即計數(shù)器,來一個脈沖即進行加進行加1 1計數(shù),直至計數(shù)器的各位全為計數(shù),直至計數(shù)器的各位全為“1”1”,再來一個脈,再來一個脈沖,計數(shù)器回沖,計數(shù)器回0 0(即溢出),且使(即溢出),且使TF0TF0(定時器(定時器0 0)或)

4、或TF1TF1(定時器(定時器1 1)置)置1 1,表示時間到,計數(shù)值乘以脈沖周期就,表示時間到,計數(shù)值乘以脈沖周期就是定時時間。是定時時間。 輸入的脈沖來源有輸入的脈沖來源有2 2個:一個是單片機晶體振蕩器經(jīng)個:一個是單片機晶體振蕩器經(jīng)1212分頻;另一個是分頻;另一個是T0/T1T0/T1端的外部輸入脈沖。作定時器用端的外部輸入脈沖。作定時器用時,應(yīng)采用晶體振蕩器經(jīng)時,應(yīng)采用晶體振蕩器經(jīng)1212分頻的脈沖。分頻的脈沖。 定時器功能定時器功能兩個寄存器:兩個寄存器:TMOD和和TCON4個計數(shù)寄存器:個計數(shù)寄存器:TH0,TL0;TH1,TL1方式方式1: 定時時間定時時間=(65536-初

5、值)初值)*12/振蕩頻率振蕩頻率 初值初值=65536-定時時間定時時間*振蕩頻率振蕩頻率/12例如定時例如定時1ms:初值初值=65536-1s*12*103Hz/12 =65536-1000 =64536 =0 xFC18TMOD寄存器寄存器GATE C/T M1M0 GATE C/T M1M0控制控制T1控制控制T0M1M0:00:方式:方式001:方式:方式110:方式:方式211:方式:方式3C/T0:定時器:定時器1:計數(shù)器:計數(shù)器GATE:0:軟件控制:軟件控制定時器工作定時器工作1:外部中斷:外部中斷控制定時器控制定時器工作工作不可位尋址不可位尋址LOGO GATEGATE:

6、門控位,控制計數(shù)器的啟動:門控位,控制計數(shù)器的啟動/ /停止操作方式。停止操作方式。當當GATE=0GATE=0時,外部中斷信號不參與控制,計數(shù)器只有時,外部中斷信號不參與控制,計數(shù)器只有TR0TR0和和TR1TR1位軟件控制啟動和停止。位軟件控制啟動和停止。TR1TR1、TR0TR0為為1 1時,計數(shù)器時,計數(shù)器啟動開始工作;為啟動開始工作;為0 0時,計數(shù)器停止工作。時,計數(shù)器停止工作。當當GATE=1GATE=1時,計數(shù)器的啟動要由外部中斷信號和時,計數(shù)器的啟動要由外部中斷信號和TR0TR0、和、和TR1TR1共同控制。只有當外部中斷引腳為高電平,共同控制。只有當外部中斷引腳為高電平,T

7、R0/TR1TR0/TR1置置1 1時才能啟動計數(shù)器工作。時才能啟動計數(shù)器工作。LOGO :功能選擇位。當:功能選擇位。當=0=0時選擇定時功能,計數(shù)脈沖由時選擇定時功能,計數(shù)脈沖由內(nèi)部提供,計數(shù)周期等于機器周期。當內(nèi)部提供,計數(shù)周期等于機器周期。當=1=1時選擇為計數(shù)時選擇為計數(shù)功能,計數(shù)脈沖為外部引腳功能,計數(shù)脈沖為外部引腳T0T0、T1T1引入的外部脈沖信號。引入的外部脈沖信號。 TC /LOGO M1M1和和M0M0:T0T0和和T1T1工作方式控制位。定時工作方式控制位。定時/ /計數(shù)器的工作方計數(shù)器的工作方式有式有M1M0M1M0兩位狀態(tài)決定,這兩位有四種編碼方式,對應(yīng)兩位狀態(tài)決定

8、,這兩位有四種編碼方式,對應(yīng)于四種工作方式。四種方式定義如表所示:于四種工作方式。四種方式定義如表所示:M1M0方式說明00方式0TL的低5位和TH的8位構(gòu)成13位計數(shù)器01方式1TL的8位和TH的8位構(gòu)成16位的計數(shù)器10方式2具有自動重裝功能的8位計數(shù)器11方式3T0分成兩個獨立的計數(shù)器,T1可工作在方式0方式2TCONTF1 TR1 TF0 TR0IE1IP1 IE0 IP0可位尋址,可位尋址,也可字節(jié)尋址也可字節(jié)尋址M1M000:方式:方式0,13位計數(shù)寄存器位計數(shù)寄存器01:方式:方式1 ,16位計數(shù)寄存器,用于定時位計數(shù)寄存器,用于定時和計數(shù)和計數(shù)10:方式:方式2 ,自動重裝載,

9、自動重裝載8位計數(shù)寄存器位計數(shù)寄存器,用于波特率發(fā)生器,用于波特率發(fā)生器11:方式:方式3,2個個8位計數(shù)寄存器位計數(shù)寄存器定時器使用步驟定時器使用步驟1.設(shè)置設(shè)置TMOD,使之工作在需求狀態(tài);,使之工作在需求狀態(tài);TMOD=0 x01; 或TMOD=0 x10;2.設(shè)置計數(shù)寄存器初值,精確設(shè)定好定時時間;設(shè)置計數(shù)寄存器初值,精確設(shè)定好定時時間;TH0=0 xff; TL0=0 x00; 或TH1=0 xff; TL1=0 x00;3.設(shè)置設(shè)置TCON,打開,打開TR使定時器工作;使定時器工作;TR0=1; 或TR1=1;4.檢測定時器溢出檢測定時器溢出(TF=1),溢出時:復位,溢出時:復位

10、TF,計數(shù)寄存器賦初值,定時到觸發(fā)的動作。計數(shù)寄存器賦初值,定時到觸發(fā)的動作。 if(1=TF0) TH0=0 xff; TL0=0 x00; TF0=0; P1_0=P1_0; 或或if(1=TF1) TH1=0 xfc; TL1=0 x18; TF1=0; P1_0=P1_0; 定時定時1ms 初值初值=65536-1000=0 xFC18#includesbit P1_0=P10;void main()TMOD=0 x01; TH0=0 xfc; TL0=0 x18; TR0=1; /此位可位操作此位可位操作 while(1) if(1=TF0) TH0=0 xfc; TL0=0 x18

11、; TF0=0; /此位可位操作此位可位操作 P1_0=P1_0; /此位可位操作此位可位操作 定時時間定時時間=(65536-初值)初值)*12/振蕩頻率振蕩頻率65536s#includesbit P1_0=P10;void main()TMOD=0 x01; TH0=0; TL0=0; TR0=1; /此位可位操作此位可位操作 while(1) if(1=TF0) /TH0=0; TL0=0; TF0=0; /此位可位操作此位可位操作 P1_0=P1_0; /此位可位操作此位可位操作 定時定時1s#includesbit P1_0=P10;void main() unsigned int

12、 counter; TMOD=0 x01; TH0=0 xb1; TL0=0 xe0; TR0=1; /此位可位操作此位可位操作 while(1) if(1=TF0) TH0=0 xb1; TL0=0 xe0; TF0=0; counter+; if(50=counter) counter=0; P1_0=P1_0; =50*20ms 20ms 初值初值=45536=0 xB1E0復習復習定時器定時功能的使用定時器定時功能的使用TMOD:選擇T0還是T1TCON:選擇方式1設(shè)置初值放置于TH0,TL0或TH1,TL1中方式方式1: 定時時間定時時間=(65536-初值)初值)*機器周期機器周期

13、 初值初值=65536-定時時間定時時間/機器周期機器周期時間間隔時間間隔0.5s=10*50ms的流水燈;的流水燈;#includevoid main() unsigned int i,j,value,dec; TMOD=0 x01; TH0=0 x3c; TL0=0 xb0; TR0=1; /此位可位操作此位可位操作 while(1) value=254; dec=1; for(i=0;i8;i+) P1=value; for(j=0;j10;j+) /10次次*50ms/次次 while(TF0!=1); TH0=0 x3c; TL0=0 xb0; TF0=0; value=value-

14、dec; dec=dec*2; 50ms 初值初值=15536=0 x3CB0書上程序書上程序操作練習操作練習1請用定時器請用定時器0實現(xiàn):實現(xiàn):時間間隔50ms的流水燈;時間間隔1s的流水燈;操作練習操作練習2請用硬件定時器實現(xiàn):請用硬件定時器實現(xiàn):任選三個任選三個LED燈燈,分別作為紅、黃、綠交分別作為紅、黃、綠交通燈通燈,實現(xiàn)實現(xiàn)綠綠燈亮燈亮1s,然后,然后黃黃燈快閃燈快閃3次,再次,再紅紅燈燈亮亮2s,黃黃燈快閃燈快閃3次,次,綠綠燈亮燈亮1s,#includevoid main() unsigned int i,value,dec; TMOD=0 x01; TH0=0 x3c; TL

15、0=0 xb0; TR0=1; /此位可位操作此位可位操作 while(1) value=254; dec=1; for(i=0;i8;i+) while(TF0!=1); TH0=0 x3c; TL0=0 xb0; TF0=0; P1=value; value=value-dec; dec=dec*2; 時間間隔時間間隔50ms的流水燈;的流水燈;50ms 初值初值=15536=0 x3CB0書上方法書上方法時間間隔時間間隔1s=20*50ms的流水燈;的流水燈;#includevoid main() unsigned int i,j,value,dec; TMOD=0 x01; TH0=0

16、 x3c; TL0=0 xb0; TR0=1; /此位可位操作此位可位操作 while(1) value=254; dec=1; for(i=0;i8;i+) for(j=0;j20;j+) /20次次*50ms/次次 while(TF0!=1); TH0=0 x3c; TL0=0 xb0; TF0=0; P1=value; value=value-dec; dec=dec*2; 50ms 初值初值=15536=0 x3CB0書上方法書上方法時間間隔時間間隔1s的雙向流水燈;的雙向流水燈;#includevoid main() unsigned char i,j,value,dec; TMOD

17、=0 x01; TH0=0 x3c; TL0=0 xb0; TR0=1; /此位可位操作此位可位操作 while(1) value=254; dec=1; for(i=0;i14;i+) for(j=0;j20;j+) /20次次*50ms/次次 while(TF0!=1); TH0=0 x3c; TL0=0 xb0; TF0=0; P1=value; if(i7) value=value-dec; dec=dec*2; else dec=dec/2; value=value+dec; 書上方法書上方法#includevoid main() unsigned int i,value; TMOD

18、=0 x01; TH0=0 x3c; TL0=0 xb0; TR0=1; /此位可位操作此位可位操作 while(1) value=0 x01; for(i=0;i8;i+) while(TF0!=1); TH0=0 x3c; TL0=0 xb0; TF0=0; P1=value; value=value1; 時間間隔時間間隔50ms的流水燈;的流水燈;50ms 初值初值=15536=0 x3CB0方法方法2#includevoid main() unsigned int i,j,value; TMOD=0 x01; TH0=0 x3c; TL0=0 xb0; TR0=1; /此位可位操作此位

19、可位操作 while(1) value=0 x01; for(i=0;i8;i+) for(j=0;j20;j+) /20次次*50ms/次次 while(TF0!=1); TH0=0 x3c; TL0=0 xb0; TF0=0; P1=value; value=value1; 時間間隔時間間隔1s=20*50ms的流水燈;的流水燈;50ms 初值初值=15536=0 x3CB0方法方法2#includevoid main() unsigned int i,j,value; TMOD=0 x01; TH0=0 x3c; TL0=0 xb0; TR0=1; /此位可位操作此位可位操作 while

20、(1) value=0 x01; for(i=0;i14;i+) for(j=0;j20;j+) while(TF0!=1); TH0=0 x3c; TL0=0 xb0; TF0=0; P1=value; if(i7) value=value1; 時間間隔時間間隔1s的雙向流水燈;的雙向流水燈;50ms 初值初值=15536=0 x3CB0方法方法2#includevoid main() unsigned int value=0 x01; TMOD=0 x01; TH0=0 x3c; TL0=0 xb0; TR0=1; /此位可位操作此位可位操作 while(1) if(1=TF0) TH0=

21、0 x3c; TL0=0 xb0; TF0=0; P1=value; value=value1; if(value=256) value=0 x01; 時間間隔時間間隔50ms的流水燈;的流水燈;50ms 初值初值=15536=0 x3CB0方法方法3#includevoid main() unsigned int counter,value=0 x01; TMOD=0 x01; TH0=0 x3c; TL0=0 xb0; TR0=1; /此位可位操作此位可位操作 while(1) if(1=TF0) TH0=0 x3c; TL0=0 xb0; TF0=0; counter+; if(20=c

22、ounter) counter=0; P1=value; value=value1; if(value=256) value=0 x01; 時間間隔時間間隔1s=20*50ms的流水燈;的流水燈;50ms 初值初值=15536=0 x3CB0方法方法3#includevoid main() unsigned int i=0,value=0 x01; TMOD=0 x01; TH0=0 x3c; TL0=0 xb0; TR0=1; /此位可位操作此位可位操作 while(1) if(1=TF0) TH0=0 x3c; TL0=0 xb0; TF0=0; P1=value; i+; if(i8)

23、value=value1; if(i=15) value=0 x01;i=0; 時間間隔時間間隔50ms的雙向流水燈;的雙向流水燈;50ms 初值初值=15536=0 x3CB0方法方法3時間間隔時間間隔1s=20*50ms的流水燈;的流水燈;#includevoid main() unsigned int counter,x=0; TMOD=0 x01; TH0=0 x3c; TL0=0 xb0; TR0=1; /此位可位操作此位可位操作 while(1) if(1=TF0) TH0=0 x3c; TL0=0 xb0; TF0=0; counter+; if(20=counter) coun

24、ter=0; P1=(1x+); if(x=8) x=0; 50ms 初值初值=15536=0 x3CB0方法方法4操作練習操作練習2請用硬件定時器實現(xiàn):請用硬件定時器實現(xiàn):任選三個任選三個LED燈燈,分別作為紅、黃、綠交分別作為紅、黃、綠交通燈通燈,實現(xiàn)實現(xiàn)綠綠燈亮燈亮1s,然后,然后黃黃燈快閃燈快閃3次,再次,再紅紅燈燈亮亮2s,黃黃燈快閃燈快閃3次,次,綠綠燈亮燈亮1s,#includevoid main() unsigned int i,j,a; TMOD=0 x01; TH0=0 x3c; TL0=0 xb0; while(1) P1=0 xfe; TR0=1; for(j=0;j2

25、0;j+) /綠燈亮綠燈亮20次次*50ms/次次 while(TF0!=1); TH0=0 x3c; TL0=0 xb0; TF0=0; TR0=0; P1=0 xff; for(i=0;i10000;i+); for(a=0;a3;a+) /黃燈閃三次黃燈閃三次 P1=0 xfd; for(i=0;i10000;i+); P1=0 xff; for(i=0;i10000;i+); / P1=0 xfb;TR0=1; for(j=0;j40;j+) /紅燈亮紅燈亮40次次*50ms/次次 while(TF0!=1); TH0=0 x3c; TL0=0 xb0; TF0=0; TR0=0; P1=0 xff; for(i=0;i10000;i+); for(a=0;a3;a+) /黃燈閃三次黃燈閃三次 P1=0 xfd; for(i=0;i10000;i+); P1=0 xff; for(i=0;i10000;i+); 作業(yè)作業(yè)P52 2、3#includevoid main() unsigned int value,dec; value=254; dec=1; TMOD=0 x01; TH0=0 x3c; TL0=0 xb0; TR0=1; /此位可位操作此位可位操作

溫馨提示

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

評論

0/150

提交評論