




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
5單片機定時與計數電子信息工程系董峰任務與知識點(參考教材§5.3,P135)任務定時器實現LED閃爍改變LED燈閃爍速度流水線產品計數交通信號燈的定時控制知識點定時器/計數器的基本結構及工作原理定時器/計數器的初始化定時器/計數器的相關計數器及各種工作方式定時器/計數器的應用5.1定時器與計數器的基本概念1、計數
計數是指對事物數量的統(tǒng)計,通常以“1”為單位進行累加。生活中常見的有家用水電表、汽車里程表等;同時,計數也應用于工業(yè)生產中,如某生產流水線對產品進行計數打包,每計到8個,就產生電信號,驅動機械裝置進行包裝。2、計數器的容量家用水電表走到一定的數量就到頂,再計數就要從零開始。任何計數裝置都是有一定的容量限制的。80C51單片機中有兩個16位計數器,分別稱之為T0和T1,最大的計數量為65536(2的16次方)。3、定時單片機內部有定時與計數裝置,如圖5-1所示,我們稱為定時器與計數器。圖5?1定時器/計數器的定時或計數來源假設單片機內部振蕩頻率是12MHZ,一個內部計數信號的時間間隔將是1μS。
定時器則是由單片機內部振蕩信號經過12分頻后產生一個時間間隔穩(wěn)定的計數信號。計數器記錄的是單片機外部發(fā)生的事件,由單片機的外部電路提供計數信號4、溢出
計數器是有容量限制的,當到了最大容量時就會清零。如何捕捉這種情況呢?我們叫做溢出。一般來說,對溢出是做相關處理工作的,比如:課間休息十分鐘,……,時間到了(溢出),則上課鈴響了(相關處理),就意味著要上課了。5、計數次數的預置(重點)80C51單片機最大計數容量是65536,因此只要計滿這個數值就會產生溢出,但在實際工作中,經常會有少于65536這個數值的要求。如:生產流水線,要求每計數8個,就要進行溢出處理。類似這種情況很多,如何設置任意溢出的計數值呢?
這里就需要預置計數次數:如果要計數100,預先在計數器中放上65436,這樣再來100次脈沖信號,就到了65536最大計數量,意味著可以溢出處理了。65436就稱計數的預置值。6、定時時間的預置(重點)
只要計數裝置計數間隔時間固定,定時時間是可以轉化成計數量來處理的,這里就需要知道每計數一次要花費的時間,這個與單片機晶振頻率相關。假設晶振頻率是12MHZ,一個機器周期(計時脈沖)是1μS,最大定時時間為65.536ms(計滿65536個脈沖)。如果要定時50ms,預先在計數器中放入定時初值65536-50000=15536即可。另外,需要說明
單片機的定時計數裝置一般是需要不斷重復定時計數操作,即這次完成50ms的定時任務,緊接著可能進行第二次50ms的定時操作。而定時計數器一旦產生溢出,其值就會清零,定時時間就會不準確。
為避免這種錯誤,我們應該在溢出發(fā)生后,馬上將定時計數預置初值再次送到定時計數器中,可以保證定時器計數器準確工作。想一想,做一做(1)生產流水線對藥片進行計量,每到60粒即為一瓶,要進行封裝操作,計數器應預置多大的計數預值?(2)假設單片機的晶振頻率是12MHZ,需要定時10ms,定時器應預置定時初值為多少?5.2定時器實現LED燈閃爍【例5-1】用定時器的查詢方式實現LED燈的閃爍(間隔時間為60ms)程序分析:
JBC指令格式:JBCbit,標號
這是一條判斷轉移并清0指令,JBC后面的第1個參數是位變量,第2個參數是一個標號。如果bit位的值等于1,則轉到標號所指的位置去執(zhí)行指令,同時該bit位清0。在這里,是判斷定時溢出標志TF0是否溢出,并做出相應事件處理。XRL指令格式:XRLdirect,#data
這是一條邏輯異或指令,XRL后面的第1個參數是直接地址,第2個參數是一個立即數。將直接地址中的數據和立即數按位異或,結果再存放入直接地址中。在程序中,它起的作用是將P1口數據取反后,去點亮LED燈。開始學習定時器/計數器的知識,了解什么是硬件延時了。目標:5.2.1定時器/計數器的基本結構及工作原理圖5?28051定時器/計數器邏輯結構圖1.基本結構TMOD、TCON是與定時器工作密切相關的兩個控制寄存器。定時器0,定時器1是16位加法計數器
TL0、TL1、TH0、TH1的訪問地址依次為8AH8DH,每個寄存器均可單獨訪問,進行定時/計數初值的設定。TMOD寄存器用于決定定時器/計數器是計數用,還是定時用;TCON寄存器決定定時器/計數器具什么時侯啟動,以及什么時侯停止工作。
都可以設置為定時器或計數器用。它們分別由兩個8位專用寄存器組成。定時器0由TH0和TL0組成,定時器1由TH1和TL1組成。2.工作原理
定時器開始工作后,它是不會占用CPU的操作時間。也就是說,定時器和CPU之間是互不干擾,并行工作的;
只有在定時器溢出時,才可能中斷CPU當前的操作,要求CPU進行相應的溢出處理工作,如【例4-1】中,當溢出發(fā)生時,系統(tǒng)將跳轉到“13NEXT:”處,做定時器重新賦初值、P1口數據取反等工作。比較一下定時器延時程序和軟件延時程序區(qū)別?
軟件延時程序中,CPU在延時上花費了大量的精力,只顧著計算延時、讓彩燈閃爍了,就限制單片機其它功能的發(fā)揮。
定時器定時程序中,CPU只需要設好定時初值,延時計算給定時器去做了,CPU可以多做一些其它工作了。5.2.2定時器/計數器的初始化(重點)
在啟動定時器/計數器工作之前,CPU必須將一些命令(稱為控制字)寫入定時/計數器的相關寄存器中,這個過程稱為定時/計數器的初始化。
初始化一般有四個步驟
步驟一:確定工作方式通過對工作方式寄存器TMOD進行參數設置,表明定時器/計數器0工作在定時模式的工作方式1中。步驟二:預置定時或計數的初值設12M晶振,則機器周期T=1s。因要求每60ms溢出一次,計數值=60ms/1s=60000。在工作方式1時,其最大計數值等于6553665536-60000=5536=15A0H,將15H、0A0H分別預置給TH0、TL0,即完成初值設置。步驟三:是否開啟定時器/計數器中斷
我們可以根據實際需要,決定是否允許定時器/計數器的中斷請求產生和CPU是否允許接受定時器/計數器的中斷請求。由于在本例中使用的是溢出查詢處理方式,未采用溢出中斷處理方式,因此對中斷允許寄存器IE的相關標志位未做設置。
在下一章學習中,我們將學習到定時器/計數器溢出的中斷處理方式。
步驟四:啟動定時器/計數器工作直接由軟件置位啟動定時器/計數器工作。想一想,做一做(1)如何將計數初值由十進制數轉化成十六進制數,并正確賦值給TH0和TL0?(2)我們如何做到讓硬件定時時間變長?5.3對LED燈閃爍速度的控制思考:在例5-1中,LED燈閃的太快了,如何放慢速度呢?下面我們進行試驗?!纠?-2】LED燈0.5秒閃爍速度控制。溢出否?循環(huán)次數10初始化燈亮重置循環(huán)初值10重置時間初值NYNY溢出否?循環(huán)次數10初始化燈亮重置循環(huán)初值10重置時間初值NY程序分析:
在定時溢出時,并不馬上改變P1口狀態(tài)(LED燈亮滅狀態(tài)),而是利用指令“DJNZR7,JP1”
做循環(huán)次數為10的循環(huán)判斷,沒到循環(huán)次數,則繼續(xù)定時,等待溢出;到了循環(huán)10次,將LED燈亮滅狀態(tài)改變,再次設置循環(huán)次數,繼續(xù)定時,等待溢出。在上例中,LED燈閃得太快了,如何放慢它的速度呢?下面我們來進行實驗。放慢速度的方法:目標:學習與定時器工作相關的兩個寄存器寄存器TMOD和TCON。
5.3.1工作方式寄存器TMOD(重要)TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0位地址(無)定時器1定時器0由上表可知,TMOD的低4位為T0的方式字段,高4位為T1的方式字段,它們的含義完全相同。各標志介紹如下:
GATE:門控位。當GATE=0時,控制寄存器TCON中的TR0或TR1置1即可啟動定時器,稱之為軟啟動;當GATE=1時,控制寄存器TCON中的TR0或TR1須先置1,由(P3.2)或(P3.3)引腳為高電平時啟動定時器,稱之為硬啟動。作用:用于控制定時/計數器是否受外部中斷請求信號的影響。
:功能選擇位。=0時,設置為定時器工作模式;=1時,設置為計數器工作模式。表5-1表5-1方式寄存器TMOD表5-2定時/計數器工作方式設置表M1和M0:工作方式控制位。T0或T1的工作方式選擇取決于M1M0設置,其中工作方式0、1、2對T0和T1完全相同,而工作方式3僅為T0所具有,可構成如下表所示的四種工作方式。M1M0工作方式說明00方式013位定時/計數器01方式116位定時計數器10方式2自動重裝8位定時/計數器11方式3T0分成兩個8位定時/計數器,T1停止計數最后需要注意:TMOD寄存器是不能位尋址的,只能用字節(jié)指令設置定時器工作模式和工作方式,高4位定義T1,低4位定義T0。復位時,TMOD所有位均置0。5.3.2控制寄存器TCONTCOND7D6D5D4D3D2D1D0位名稱TF1TR1TF0TR0位地址8FH8EH8DH8CHTF1:T1溢出標志位。當T1計數滿產生溢出時,由硬件自動置TF1=1。在中斷允許時,向CPU發(fā)出T1的中斷請求,進入中斷服務程序后,由硬件自動清0。在中斷屏蔽時,TF1可作溢出查詢測試用,此時必須由軟件清0。TR1:T1運行控制位。當GATE=0時,TR1置1,即可啟動T1;當GATE=1,TR1置1,不能啟動T1,必須等為高電平才能啟動T1。TF0和TR0將作用于T0,其功能及操作情況同TF1和TR1。表5-3控制寄存TCON5.4流水線產品計數和溢出處理
前面介紹了定時/計數器的定時方式,下面通過兩個案例看看定時/計數器的計數方式是如何進行的。首先,讓我們來看看計數信號在計數器內部是如何表示的,如【例5-3】所示;其次,我們還要知道計數溢出是如何得到處理的,如【例5-4】所示。產品計數溢出處理5.4.1流水線產品計數【例5-3】按鍵次數通過LED燈顯示(二進制數)1、任務分析:該指令將定時/計數器1設定為計數模式的工作方式1,定時/計數器0不工作。
圖5?3外部按鍵計數電路原理圖
當程序運行時,只要按下按鈕,按鈕所連的紅燈就會亮一下,表示計數器進行了一次計數,同時計數值會通過上面的八個黃燈以二進制形式輸出。2、工作過程及電路原理圖:3、計數工作必須滿足以下要求:(重點)(1)外部計數脈沖從引腳T0(P3.4)和T1(P3.5)輸入;(2)外部脈沖最高頻率不能超過振蕩頻率的1/24;(3)保證輸入信號高/低電平保持在一個機器周期以上時間,才能被系統(tǒng)檢測到;(4)只有輸入引腳電平發(fā)生1到0的負跳變后,新的計數值才裝入計數器中。4、定時/計數的四種工作方式工作方式0工作方式1工作方式2工作方式3由方式寄存器TMOD
中的M1M0決定,參見表5-1所示工作方式0圖5?4T0方式0時的邏輯電路結構圖設置M1M0=00B,構成13位定時器/計數器。最大計數值為8192。其中,TH0占高8位,TL0占低5位(高3位未用)。當TL0低5位溢出時自動向TH0進位,而TH0溢出時向中斷位TF0進位(硬件自動置位),并申請中斷。
當GATE=0時,TR0直接控制T0的啟動和關閉。TR0=1,接通控制開關,T0從初值開始計數直至溢出。當GATE=1時,與門的輸出由的輸入電平和TR0位的狀態(tài)來確定。若TR0=1,外部信號電平通過引腳控制T0是否工作,當為高電平時,允許計數,否則停止計數。
工作方式1INT0振蕩器÷12TL08位中斷TF0_C/T=0_C/T=1控制T0TR0GATE&≥11TH08位設置M1M0=01B,構成16位定時器/計數器。最大計數值為65536。其中,TH0占高8位,TL0占低8位。當TL0低8位溢出時自動向TH0進位,而TH0溢出時向中斷位TF0進位(硬件自動置位),并申請中斷。
當GATE=0時,TR0直接控制T0的啟動和關閉。TR0=1,接通控制開關,T0從初值開始計數直至溢出。當GATE=1時,與門的輸出由的輸入電平和TR0位的狀態(tài)來確定。操作完全同工作方式0。圖5?5T0方式1時的邏輯電電路結構圖INT0振蕩器÷12TH08位TL08位中斷TF0重新輸入_C/T=0_C/T=1控制T0TR0GATE&≥11工作方式2設置M1M0=10B,構成8位定時器/計數器。最大計數值為256。其中,TL0用來計數。當TL0溢出時自動向中斷位TF0進位(硬件自動置位),并申請中斷。同時,TH0存儲計數初值會自動向TL0中重裝。操作方式同前圖5?6T0方式2時的邏輯電路結構圖工作方式3操作方式同前設置M1M0=11B,T0被分解成兩個獨立的8位計數器TL0和TH0。T1停用。TL0占用T0的所有資源,可用作8位定時/計數器。TH0只能用作定時器使用,溢出時占用定時/計數器T1的控制位TF1。TH0定時器的啟動和關閉占用定時/計數器T1的控制位TR1,僅受TR1置1或清0控制。圖5?7T0方式3時的邏輯電路結構圖想一想,做一做(1)51單片機定時器/計數器四種工作方式的特點及設置方法?5.4.2計數溢出處理【例4-4】計數溢出觸發(fā)蜂鳴器發(fā)聲
在例5-3中,我們學習了定時/計數是如何進行的,但在生產流程中,產品計數到了一定數限要進行包裝的,就涉及計數溢出處理了。通過案例學習計數溢出處理。程序如下:1、任務分析:對定時器T0工作模式和工作方式進行相關設置:計數模式為:工作方式2,對外部連續(xù)脈沖信號進行計數。定時器T0計數初值為9CH,即計數到100就會自動溢出對P3.7端口進行取反,其目的是使連接到該端口的蜂鳴器鳴叫;代碼中可以看到循環(huán)10次,即應該鳴叫5聲2、蜂鳴器的工作原理圖5?8電磁式蜂鳴器實物圖電磁式蜂鳴器的工作電流一般比較大,以致于單片機的I/O口是無法直接驅動的,所以要利用放大電路來驅動,一般使用三極管來放大電流就可以了。
單片機上使用的蜂鳴器一般都是電磁式無源蜂鳴。蜂鳴器根據結構不同分為壓電式蜂鳴器和電磁式蜂鳴器,而兩種蜂鳴器又可再分類為有源蜂鳴器和無源蜂鳴器,這里的源特指振蕩源。有源蜂鳴器直接加電就可以響起,無源蜂鳴器需要我們給它提供振蕩源。理想的振蕩源為一定頻率的方波。(必須在20KHZ以內,否則人耳聽不見)。3、工作過程及電路原理圖圖5?9計數溢出觸發(fā)蜂鳴器電路原理圖
由圖可知,外部脈沖信號頻率為4HZ,每到一個脈沖需要用時0.25秒,我們進行計數100次,需要花費時間25秒,也就是說,定時/計數器0到25秒時間就會產生溢出,系統(tǒng)將進行蜂鳴器發(fā)聲的處理。想一想,做一做(1)在例【5-4】中,我們設置定時器/計數器工作于計數模式,但同樣能起作定時效果,定時器與計數器最重要的區(qū)別是什么?(2)設置定時器T0,使P1.0輸出如圖所示的矩形脈沖。5.5交通燈信號的定時控制復雜的交通燈信號系統(tǒng)要包括交通燈正常顯示、單路放行控制、緊急事件處理、數碼管倒計時等相關控制系統(tǒng)。在這里,我們只介紹交通信號燈的正常定時控制是如何進行設計的。交通燈信號設計交通燈亮滅時序程序設計分析內容包括電路原理圖、及交通燈信號設計方法交通燈信號變化要求及亮滅時序安排延時子程序設計、信號燈點亮控制及參數設計、信號燈時延設計、主程序初始化設計三部分內容講解5.5.1 交通燈信號設計圖5?10十字路口交通燈示意圖1、工作電路原理圖我們用12只發(fā)光二極管模擬交通信號燈。在電路控制時,設計P1各端口相關電位來實現交通燈控制功能。由于相對路口的交通信號是一樣的,故只需要單片機P1口的六個引腳就夠用了。2、交通燈信號設計方法在實際的交通控制中,如果一道為綠燈或黃燈時,另一道必為紅燈。P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0控制碼P1口狀態(tài)說明空空B綠B黃B紅A綠A黃A紅11110011F3HA燈放行,B燈禁止11110101F5HA燈警告,B燈禁止11011110DEHA燈禁止,B燈放行11101110EEHA燈禁止,B燈警告11110110F6H兩燈禁止,兩道禁行表5?3交通燈控制碼與狀態(tài)說明設P1口各引腳輸出高電平時,則相關的連線的“信號燈”熄滅;反之,P1口線各引腳輸出低電平時,則相關的連線的“信號燈”會點亮。形成的相應控制碼和狀態(tài)說明見下表所示。5.5.2 交通燈亮滅時序設計好交通信號表達之后,我們就要考慮交通信號是如何進行亮滅切換的。即:設計交通燈正常情況下的亮滅時序。通過圖示,A、B道(注:A是主道,B是支道)輪流放行。A道放行1分鐘,其中5秒用于警告(A綠燈閃爍3秒,A黃燈亮2秒);B道放行30秒,其中5秒用于警告(B燈警告設置同A燈)。要求主干道綠燈時間應該設置比非主干道的要長一些,同時考慮綠燈要能夠保持一定時間的閃爍,起到提醒作用。圖4?11交通燈亮滅控制設計流程圖5.5.3 程序設計分析1、延時子程序代碼設計從信號燈點亮的時長有55秒、2秒、25秒很多種,較為特殊的是閃爍,亮滅一次為1秒,我們可以知道最小的延時時間應該是0.5秒。為提高時間精確度,我們采用定時器進行延時處理。單片機最長的定時時間為65.536ms,和0.5秒最小延時有很大差距,怎么辦呢?如果我們設置定時50ms,50ms重復10次,就可以獲取0.5秒的延時時間,如下代碼所示。延時時間到了,將F0標志置“1”,讓主程序進行相應處理2、信號燈點亮控制的參數設計信號燈有七種狀態(tài):⑴A、B道禁行(即初始化1秒);⑵A綠燈點亮55秒;⑶
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電力安全常識知識測試題及答案
- 2025年事業(yè)單位招聘考試化工類專業(yè)能力測試試卷答案與解析
- 多語言布局優(yōu)化方法-洞察與解讀
- 2025年事業(yè)單位招聘考試綜合類無領導小組討論面試真題模擬試卷答案詳解
- 2025年事業(yè)單位招聘考試新聞類綜合專業(yè)能力測試試卷真題模擬訓練
- 2025年青海省事業(yè)單位招聘考試綜合類公共基礎知識真題模擬試卷
- 項目預算編制及成本管控工具包
- 恒大足??荚囶}目及答案
- 網上教學安全知識培訓課件
- 2025國考大慶市行政執(zhí)法崗位申論題庫含答案
- (2025)營養(yǎng)指導員考試真題庫(含答案)
- 2025年全國成人高等學校招生考試(高等數學二-專升本)歷年參考題庫含答案詳解(5套)
- 消化內科臨床科室發(fā)展規(guī)劃與實施方案
- Revit參數化族課件
- 民間借貸法律知識講座
- 學堂在線 現代生活美學-插花之道 章節(jié)測試答案
- 供貨周期保證措施
- 基于人工智能的個性化學習路徑研究
- 麻醉氣道痙攣處理
- 學前衛(wèi)生考試試題及答案
- 2025春季學期國開電大??啤兑簤号c氣壓傳動》一平臺在線形考(形考任務+實驗報告)試題及答案
評論
0/150
提交評論