




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、任務(wù)五 定時控制1 定時控制流水燈任務(wù)單描述2 相關(guān)知識:定時器/計數(shù)器3 定時器應(yīng)用程序設(shè)計點撥 在單片機最小系統(tǒng)的基礎(chǔ)上,添加在單片機最小系統(tǒng)的基礎(chǔ)上,添加8 8個發(fā)光二個發(fā)光二極管極管VD0VD0VD7VD7,與,與P1P1端口的端口的P1.0P1.0P1.7P1.7分別相連。分別相連。要求實現(xiàn):要求實現(xiàn): 1.1.利用定時器利用定時器/ /計數(shù)器計數(shù)器T1T1查詢方式(工作方式查詢方式(工作方式0 0)控制流水燈,每個燈亮、滅時間均為控制流水燈,每個燈亮、滅時間均為1s1s。 2.2.利用定時器利用定時器/ /計數(shù)器計數(shù)器T1T1中斷方式(工作方式中斷方式(工作方式1 1)控制流水燈,
2、每個燈亮、滅時間均為控制流水燈,每個燈亮、滅時間均為1s1s。p10p11p12p13p14p15p16p17p10p11p12p13p14p15p16p17XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR1
3、6P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X112MHzC122pFC222pFC310uFR11kD1LED-YELLOWD2LED-YELLOWD3LED-YELLOWD4LED-YELLOWD5LED-YELLOWD6LED-YELLOWD7LED-YELLOWD8LED-YELLOWR2300R3300R4300R5300R6300R7300R8300R9300計數(shù)電路時間單位脈沖Timer計數(shù)完成信號外部事件定時/計數(shù)器模塊相關(guān)知識:
4、單片機的定時/計數(shù)器 1、 定時/計數(shù)器的實質(zhì)單片機的定時/計數(shù)功能模塊使用同一個電路計數(shù)電路。只是定時/計數(shù)功能模塊“計算個數(shù)”的對象不一樣一個是時間單位的個數(shù),另一個是外部事件的個數(shù)。1個定時/計數(shù)器模塊一次只能工作在一種功能下要么是定時器,要么是計數(shù)器。當(dāng)計數(shù)完成后,模塊向CPU輸出一個計數(shù)完成信號來中斷計數(shù)操作。單片機10 個/s 2、 時間單位脈沖單片機中的時間單位脈沖的周期是:1個機器周期,即12個振蕩周期。如果晶振的頻率是12MHz,則1個機器周期=1s,每1秒鐘Timer所記錄的時間單位脈沖的個數(shù)是:如果Timer從0數(shù)到50000需要的時間可以這樣計算:1s1s= 10 6個
5、= 0.05s50000個單位時間脈沖6 Timer的啟動、設(shè)置和關(guān)閉與特殊功能寄存器中的TCON、TMOD、TL0、TH0等寄存器有關(guān)。 AT89S51單片機中有兩個Timer,分別為Timer 0和Timer 1。有些單片機具有3個Timer,如AT89S52等。 兩個Timer可以工作在定時器模式下,也可以工作在計數(shù)器模式下。定時/計數(shù)器的控制者 1、 Timer寄存器Timer 0和Timer 1各有1個長度為2個字節(jié)的Timer寄存器,每個Timer寄存器由低位字節(jié)TL0或TL1和高位字節(jié)TH0或TH1兩個特殊功能寄存器組成。90H88H80H97H8FH87H定時/計數(shù)器控制寄存器
6、 Timer 0 寄存器低位Timer 0 寄存器高位定時/計數(shù)器模式控制寄存器Timer 1 寄存器低位Timer 1 寄存器高位CPUTCON (88H)TH1TL1TH0TL0INT1(P3.3)INT0(P3.2)中斷T1 (P3.5)定時器 1定時器 0溢出啟動(8DH)(8BH)(8CH)(8AH)啟動內(nèi)部總線溢出 工作方式工作方式70T0 (P3.4)70TMOD (89H)7070 2、 定時/計數(shù)器模式控制寄存器TMOD TMOD是“timer mode”的縮寫,意思是“定時/計數(shù)器模 式”,它在特殊功能寄存器區(qū)的89H上 。 TMOD寄存器由高4位和低4位組成,分別控制Ti
7、mer1和Timer 0。 在高4位或低4位中,M1和M0設(shè)置Timer 1或Timer 0的工作模式 。 3、 定時/計數(shù)器模式控制寄存器TMODGATE 門控位。C/T# Timer定時/計數(shù)器選擇位。M1 Timer方式選擇位1。M0 Timer 方式選擇位0。設(shè)置方法為:M1 M0 方式工作模式0 0 方式0 13位定時/計數(shù)器(THx 8位,TLx 5位)0 1 方式1 16位定時/計數(shù)器1 0 方式2 8位自動重載入定時/計數(shù)器(TLx),溢出時從THx 重載1 1 方式3 Timer 0有此模式,Timer 1沒有 4、 定時/計數(shù)器控制寄存器TCONTCON是“timer co
8、ntrol”的縮寫,即“定時/計數(shù)器控制”的意思。它在特殊功能寄存器區(qū)的88H上。TCON的功能有:顯示Timer溢出與否、啟動/關(guān)閉Timer、外部中斷方式控制、外部中斷標(biāo)志位。TCON的8位中與Timer有直接關(guān)系的只有高4位。 5、 Timer的時鐘源TMOD寄存器中的C/T#位=0,即Timer用作定時器,單片機的時鐘信號就成了Timer的時鐘源,時鐘信號由晶振決定:如晶振為12MHz,則單位時間T (即機器周期)為: 定時器/計數(shù)器工作方式 方式1 1、 方式1下的Timer特點Timer工作在方式1時是一個16位定時/計數(shù)器,計數(shù)初始值的低位和高位分別裝載到Timer寄存器TLx和
9、THx中。Timer通過將TRx置1啟動。當(dāng)TFx=1,表明計數(shù)完成,通過將TRx清0來關(guān)閉Timer。想要重復(fù)Timer的計數(shù)過程,Timer寄存器中必須重新裝載原來的計數(shù)初始值,并將TFx位清0。 2、 方式1的設(shè)置步驟 設(shè)置Timer的工作方式。程序中向定時/計數(shù)器模式控制寄存器TMOD中裝載01H。 往TLx和THx中載入計數(shù)初始值。 啟動Timer。將TRx置1以啟動Timer。 監(jiān)測Timer溢出標(biāo)志TFx。 關(guān)閉Timer。 清溢出標(biāo)志TFx。 重新裝載。0GATE0C/T#0M10M00GATE0C/T#0M11M0Timer 1Timer 0EC78 EC79 EC7ATF0
10、 = 0 TF0 = 0 TF0 = 0FFFFTF0 = 00000TF0 = 1Timer 寄存器(THx TLx) 3、 Timer的計數(shù)時間與計數(shù)初始值Timer寄存器的低位字節(jié)TLx和高位字節(jié)THx中裝載的是Timer的計數(shù)初始值,當(dāng)Timer啟動后,從這個初始值開始每過1個機器周期計數(shù)值增加1,直到計數(shù)到16位的Timer寄存器的最大值FFFFH后溢出為止。 其中MM是THx中的數(shù)值,LL是TLx中的數(shù)值(均為十六進(jìn)制數(shù))。 或:t(定時時間)=(216-初始值)T(機器周期) =(65536-初始值)T。所以 4、 如何選取Timer的計數(shù)初始值例:設(shè)計一個方波信號發(fā)生器,要求從
11、P1.0口輸出頻率f=2kHz的方波,周期3P1.0口輸出高、低電平持續(xù)時間分別為250s。單片機P1.0T=500 sT/2=250 sT/2=250 s例:250即Timer計數(shù)時間,稱之為設(shè)計時間。計數(shù)初始值步驟為: 將設(shè)計時間(以s為單位,且小于65536)除以 。 即用設(shè)計時間除以機器周期。 用65536減去步驟得到的數(shù)。 將步驟中的得數(shù)轉(zhuǎn)換成十六進(jìn)制形式MMLL。如果轉(zhuǎn)換結(jié)果100H,則MM=00。 最后得計數(shù)初始值:THx=MM,TLx=LL。根據(jù)這個步驟,假設(shè)晶振頻率為12MHz,設(shè)計時間250: 250s /1s = 250; 65536 250 = 65286; 65286
12、 = FF06H; THx = FF,TLx = 06。所以Timer寄存器的計數(shù)初始值為 FF06H。s 5、 如何利用Timer進(jìn)行長時間定時Timer的設(shè)計時間t取決于兩個因素:晶振頻率,THx和TLx中裝載的計數(shù)初始值 。硬件一旦完成,意味著晶振頻率確定,Timer的設(shè)計時間就取決于THx和TLx中裝載的計數(shù)初始值。當(dāng)MMLL=0000H時,設(shè)計時間t具有最大值,如果晶振頻率為12MHz,設(shè)計時間的最大值=65536,即65.536ms。這個設(shè)計時間連0.1秒都不到,無法滿足需要長時間定時的場合。解決辦法是多次重新裝載計數(shù)初始值,累計計數(shù)多次的定時值。 5、如何利用Timer進(jìn)行長時間
13、定時(C語言程序)總延時 1s#include Void main() unsigned char i; TMOD=0 x10; /設(shè)置Timer 1工作在方式1下定時模式 for (i=0; i50; i+) /重復(fù)定時計數(shù)器,定時50次 TH1=0 xb1; /往TL1和TH1中載入計數(shù)的初始值B1E0H TL1=0 xe0; /定時20ms TR1=1; /啟動Timer 1 while (!TF1) ; /檢測Timer1溢出標(biāo)志,當(dāng)TF1=1,跳出 TR1=0; /關(guān)閉Timer 1 TF1=0; /將TF1清0 . /這里是所要處理的程序#include Void main() u
14、nsigned char i; TMOD=0 x10; /設(shè)置Timer 1工作在方式1下定時模式 for (i=0; i50; i+) /重復(fù)定時計數(shù)器,定時50次 TH1=(65536-20000)/256; /往TH1中載入計數(shù)初值高8位 TL1=(65536-20000)%256; /往TL1中載入計數(shù)初值低8位定時20ms TR1=1; /啟動Timer 1 while (!TF1) ; /檢測Timer1溢出標(biāo)志,當(dāng)TF1=1,跳出 TR1=0; /關(guān)閉Timer 1 TF1=0; /將TF1清0 事實上,在C中編程時,定時初值我們可在程序中寫下如下公式,讓單片機自己計算并裝入。
15、THx=(216-N/T)/28=(65536-N/T)/256 TLx=(216-N/T)%28=(65536-N/T)%256 方式0 方式0與方式1基本相同,不同的是方式1下Timer寄存器是16位的,而方式0下Timer寄存器是13位的。在載入計數(shù)初始值時,向THx載入高8位,向TLx的低5位上載入5位。 方式0的計數(shù)初值的計算方法如下: 將設(shè)計時間(以s為單位,且小于8192)除以 用8192減去步驟得到的數(shù)。 將步驟中的得數(shù)轉(zhuǎn)換成13位二進(jìn)制數(shù),高位如果 是空的用0補上,依次填入THx的8位和TLx的低5位 中,TLx的高3位用0代替。 最后得計數(shù)初始值。 Timer工作在方式0下
16、產(chǎn)生一個500s的延時,使用的晶振頻率為12MHz。則計數(shù)初始值可以這樣計算: 500s /1s = 500; 8192 500 = 7692; 7692= 11110000 01100B; THx = 1111 0000B,TLx =0000 1100B。轉(zhuǎn)換成十六進(jìn)制數(shù):THx = 0F0H,TLx= 0CH。所以Timer寄存器計數(shù)初始值為F00CH。THxTLxMN3N2N1N0P3P2P1000P0Q3Q2Q1Q0方式0下在C中編程時,定時初值我們可在程序中寫下如下公式,讓單片機自己計算并裝入。 THx=(213-N/T)/25=(8192-N/T)/32 TLx=(213-N/T)
17、%25=(8192-N/T)%32 Timer0工作在方式0下產(chǎn)生一個500s的延時,使用的晶振頻率為12MHz。則計數(shù)初值計算裝入C程序語句可這樣寫:TH0=(8192-500)/32;TL0=(8192-500)%32; 方式2 1、 方式2下的Timer特點Timer工作在方式2下是1個8位的定時/計數(shù)器,當(dāng)計數(shù)至FFH之后就溢出, TFx位就會被硬件置1。自動重新裝載:當(dāng)Timer溢出時,TLx自動從THx中復(fù)制原來保存的計數(shù)初始值。這時只需要把TFx位清0,就可以自動重復(fù)計數(shù)的過程。3FTF0 = 040TF0 = 041TF0 = 0FFTF0 = 000TF0 = 1TLx3F3
18、F3FTF0 = 040TF0 = 0THx方式2下的自動重新裝載計數(shù)初始值Timer 溢出 2、 方式2的設(shè)置步驟 設(shè)置Timer的工作方式。向TMOD裝載20H,以設(shè)置Timer 1工作在方式2。 往THx和TLx中載入相同的計數(shù)初始值。 啟動Timer。將TRX置1以啟動Timer X。 檢測Timer溢出標(biāo)志TFx。 關(guān)閉Timer,將TRX清0。 清溢出標(biāo)志TFx,將溢出標(biāo)志TF1清0。 3、 如何設(shè)置計數(shù)初始值方式2下Timer設(shè)計時間與計數(shù)初始值的計算式為: 如果給定一個設(shè)計時間,計算THx和TLx中的計數(shù)初始值: 將設(shè)計時間(以為單位,且小于256)除以 用256減去步驟得到的
19、數(shù)。 將步驟中的得數(shù)轉(zhuǎn)換成十六進(jìn)制形式TT。 最后得計數(shù)初始值:THx=TLx=TT。方式2下在C中編程時,定時初值我們可在程序中寫下如下公式,讓單片機自己計算并裝入。 THx=28-N/T=256-N/T TLx=28-N/T=256-N/T Timer0工作在方式2下產(chǎn)生一個250s的延時,使用的晶振頻率為12MHz。則計數(shù)初值計算裝入C程序語句可這樣寫:TH0=256-250;TL0=256-250; 方式3 對于AT89S51單片機來說,前面3種工作方式均適用于Timre 0和Timer 1,但方式3只適用于Timer 0,Timer 1不具有方式3。 在方式3下,Timer 0的TL
20、0和TH0變成兩個獨立的8位的Timer寄存器。但不具備自動重新裝載計數(shù)初始值的特性。 以TL0為Timer寄存器的Timer使用TMOD和TCON中原來Timer 0的控制位,設(shè)置的方法與前面相同。而以TH0為Timer寄存器的Timer使用原來Timer 1的溢出標(biāo)志位TF1和啟動/關(guān)閉位TR1,并且不能用作計數(shù)器使用。 計數(shù)器 Timer作計數(shù)器使用時,Timer寄存器THx和TLx的計數(shù)值記錄的是外部事件的個數(shù),例如輸入的脈沖個數(shù)等。 Timer作計數(shù)器使用時,定時/計數(shù)器模式控制寄存器TMOD和定時/計數(shù)器控制寄存器TCON的設(shè)置方法與前面相似。 TMOD中的C/T#位=0,Time
21、r用作定時器;C/T#位=1,Timer用作計數(shù)器。管腳序號I/O口功能名稱描 述14P3.4T0Timer 0的外部事件輸入端口15P3.5T1Timer 1的外部事件輸入端口 1、 Timer作計數(shù)器AT89S51單片機的P3.4口和P3.5口既能作為一般的I/O口使用,也可分別作為Timer 0和Timer1的外部事件輸入口。 2、 計數(shù)器的使用單片機P0.0P0.7P1.0P1.1P3.4(T0)履帶控制線藥丸計數(shù)輸入閥門控制線紅外傳感器閥門裝藥丸生產(chǎn)線 2、 計數(shù)器的使用(裝藥生產(chǎn)線程序設(shè)計思路)開始七段數(shù)碼管顯示清 0設(shè)置 Timer 0 工作模式設(shè)置計數(shù)值 20啟動計數(shù)器CLRM
22、OVMOVMOVMOVSETBAP0,ATMOD, #05HTH0, #0FFHTL0, #0ECHTR0 2、 計數(shù)器的使用(裝藥生產(chǎn)線程序設(shè)計思路)檢查 TF0 位TF0=1TF0=0JNBTF0, CHECK打開閥門SETBP1.0CLRCLRCLRADDDAMOVSETBCALLCLRTR0TF0P1.0A, #01HAP0, AP1.1DELAYP1.1停止計數(shù)器關(guān)閉閥門七段數(shù)碼管顯示增加 1驅(qū)動履帶傳送 4、 外部事件的信號要求 防止紅外傳感器可能輸出的抖動信號使T0口誤動作,紅外傳感器通過一個單穩(wěn)態(tài)多諧振蕩器74121芯片向單片機的T0口輸入脈沖信號。由于T0口是Timer 0的
23、外部事件輸入端口,一般采用硬件的方法來消除抖動。 在計數(shù)器的應(yīng)用中,當(dāng)T0或T1口的電平由高向低跳變時,Timer計數(shù)值增加1。由于單片機“感知”這個電平的跳變需要一定的時間,所以外部事件發(fā)生的最高頻率應(yīng)小于晶振頻率的1/24。 Timer對外部事件信號的占空比沒有什么限制,但為了安全起見,確保某一外部事件的電平信號在跳變之前至少被采樣一次,則該電平至少要保持一個機器周期。 實例點撥 生產(chǎn)線自動打包系統(tǒng)u如圖所示,在一個工業(yè)生產(chǎn)線上,零件通過一個裝有光電傳如圖所示,在一個工業(yè)生產(chǎn)線上,零件通過一個裝有光電傳感器的傳輸帶傳送,每當(dāng)零件通過傳感器時,傳感器向單片感器的傳輸帶傳送,每當(dāng)零件通過傳感器時,傳感器向單片機發(fā)出一機發(fā)出一 個脈沖信
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 叉車租賃帶司機合同范本
- 課題申報書哪里查
- 班級管理 課題立申報書
- 班級建設(shè)課題申報書
- 合同范本 銷售合同
- 周結(jié)算合同范例
- 深圳課題申報書格式
- 音樂課題立項申報書代寫
- 初中少先隊課題申報書
- 合伙協(xié)議果園合同范本
- 2025年高考百日誓師大會校長致辭(二)
- 2025年中國萬寶工程有限公司校園招聘筆試參考題庫附帶答案詳解
- 2025年河南機電職業(yè)學(xué)院單招職業(yè)技能測試題庫及參考答案
- 2025年黑龍江能源職業(yè)學(xué)院單招職業(yè)傾向性測試題庫完整
- 學(xué)校垃圾處理運輸服務(wù)合同
- 成本經(jīng)理試用期轉(zhuǎn)正工作匯報
- 2023年廣西本科對口中職考試中職英語試題
- 廣西2025年01月南寧市良慶區(qū)公開考試招考專職化城市社區(qū)工作者筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 注塑產(chǎn)品生產(chǎn)流程
- 2024年湖南省長沙市中考數(shù)學(xué)試題(含解析)
- 《人力資源管理》全套教學(xué)課件
評論
0/150
提交評論