《單片機(jī)原理及應(yīng)用 》課件-第5章_第1頁
《單片機(jī)原理及應(yīng)用 》課件-第5章_第2頁
《單片機(jī)原理及應(yīng)用 》課件-第5章_第3頁
《單片機(jī)原理及應(yīng)用 》課件-第5章_第4頁
《單片機(jī)原理及應(yīng)用 》課件-第5章_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章單片機(jī)的定時器/計數(shù)器5.1定時器/計數(shù)器的基本概念5.2定時器/計數(shù)器的結(jié)構(gòu)及工作原理5.3定時器/計數(shù)器的控制

任務(wù)5-1用T0查詢方式控制P1口8位LED閃爍

任務(wù)5-2用T0查詢方式計數(shù),結(jié)果送P1口顯示本章小結(jié)習(xí)題

定時和計數(shù)是控制系統(tǒng)中的兩個重要功能,是時序電路的基礎(chǔ)。對于時序控制系統(tǒng),經(jīng)常需要定時輸出某些控制信號,或者對某些待測量進(jìn)行定時掃描和監(jiān)測,這便需要實現(xiàn)定時和計數(shù)的功能。

51系列單片機(jī)的硬件上集成了可編程的定時器/計數(shù)器。對于MCS-51子系列單片機(jī),其有兩個定時器/計數(shù)器,即定時器/計數(shù)器0和1,簡稱T0和T1,有4種工作方式可供選擇。對于MCS-52子系列單片機(jī)(如AT89S52),其有3個定時器/計數(shù)器,T0和T1是通用定時器/計數(shù)器,定時器/計數(shù)器2(簡稱T2)集定時、計數(shù)和捕獲三種功能于一體,功能更強(qiáng)。

5.1定時器/計數(shù)器的基本概念

1.計數(shù)計數(shù)一般是指對事件的統(tǒng)計,通常以“1”為單位進(jìn)行累加。生活中常見的計數(shù)應(yīng)用有家用電度表、汽車和摩托車上的里程表等。

2.計數(shù)器的容量

MCS-51單片機(jī)的兩個計數(shù)器分別稱為T0和T1,這兩個計數(shù)器都是由兩個8位的RAM單元組成的,即每個計數(shù)器都是16位的計數(shù)器,最大的計數(shù)容量是216=65536(0~65535),因為在計算機(jī)中往往把0作為起始點,比如P0、P1.0、T0等。

3.定時器

單片機(jī)中的計數(shù)器除了可以計數(shù)用,還可以用做定時器,定時器的用途當(dāng)然很大,如鬧鐘的定時,手機(jī)的定時、開關(guān)機(jī),等等,那么計數(shù)器是如何作為定時器來用的呢?一個鬧鐘,如果我們將它定時在1小時后響鈴,就相當(dāng)于秒針走了3600次,在這里時間就轉(zhuǎn)化成為了秒針走的次數(shù)??梢?計數(shù)的次數(shù)和時間之間的確有關(guān),那么單片機(jī)的定時器/計數(shù)器是怎么回事呢?

定時原理示意圖如圖5-1所示。從圖中我們可以得出這樣的結(jié)論:只要計數(shù)脈沖的間隔相等,那么計數(shù)值就代表了時間的流逝。其實單片機(jī)中的定時器和計數(shù)器是一個東西,只不過計數(shù)器記錄的是外界發(fā)生的事情,而定時器則是由單片機(jī)提供一個非常穩(wěn)定的計數(shù)源,然后把計數(shù)源的計數(shù)次數(shù)轉(zhuǎn)化為定時器的時間,圖中的C/T開關(guān)就是起這個作用的。那么提供給定時器的計數(shù)源又是從哪里來的呢?它是由單片機(jī)的晶振經(jīng)過12分頻后獲得的一個脈沖源。我們知道晶振的頻率是很準(zhǔn)確的,所以這個計數(shù)脈沖的時間間隔當(dāng)然也很準(zhǔn)確。圖5-1定時原理示意圖

假定單片機(jī)的時鐘振蕩器可以產(chǎn)生12MHz的時鐘脈沖信號,經(jīng)12分頻后得到1MHz的脈沖信號,1MHz的信號每個脈沖的持續(xù)時間(1個周期)為1μs。如果定時器0對1MHz的信號進(jìn)行計數(shù),計到65536,將需要65536μs,即65.536ms,此時,定時器計數(shù)達(dá)到最大值,計數(shù)溢出使TFn位置1。如果將定時器的初值設(shè)置為65536-1000=64536,那么單片機(jī)將在計數(shù)1000個1μs脈沖,即1ms時產(chǎn)生溢出。

5.2定時器/計數(shù)器的結(jié)構(gòu)及工作原理

5.2.1定時器/計數(shù)器的結(jié)構(gòu)MCS-51單片機(jī)中的定時器或計數(shù)器是對同一種結(jié)構(gòu)進(jìn)行不同的設(shè)置而形成的,基本結(jié)構(gòu)如圖5-2所示。T0和T1分別是由TH0、TL0和TH1、TL1兩個8位計數(shù)器構(gòu)成的16位計數(shù)器,兩者均為加1計數(shù)器,用于對定時或計數(shù)脈沖進(jìn)行加法計數(shù)。每個定時器/計數(shù)器都可以實現(xiàn)定時和計數(shù)功能。圖5-2MCS-51定時器/計數(shù)器的基本結(jié)構(gòu)

從圖5-2中可以看出,單片機(jī)內(nèi)部與定時器/計數(shù)器有關(guān)的部件如下:

?兩個定時器/計數(shù)器(T0和T1):均為16位計數(shù)器。

?寄存器TCON:控制兩個定時器/計數(shù)器的啟動和停止。

?寄存器TMOD:用來設(shè)置定時器/計數(shù)器的工作方式。

兩個定時器/計數(shù)器在內(nèi)部通過總線與CPU連接,從而可以受CPU的控制并傳送給CPU信號,進(jìn)而申請CPU去執(zhí)行規(guī)定的任務(wù)。

當(dāng)計數(shù)脈沖來自內(nèi)部時鐘脈沖時,定時器/計數(shù)器作定時器使用。

當(dāng)計數(shù)脈沖來自于外部引腳T0/T1上的輸入脈沖時,定時器/計數(shù)脈沖作計數(shù)器使用。如果在第一個機(jī)器周期檢測到T0/T1引腳的脈沖信號為1,第二個機(jī)器周期檢測到T0/T1引腳的脈沖信號為0,即出現(xiàn)從高電平到低電平的跳變時,計數(shù)器加1。由于檢測到一次負(fù)跳變需要兩個機(jī)器周期,所以最高的外部計數(shù)脈沖的頻率不能超過時鐘頻率的1/24,并且要求外部計數(shù)脈沖的高電平和低電平的持續(xù)時間不能小于一個機(jī)器周期。

方式控制寄存器TMOD用于設(shè)置定時器/計數(shù)器的工作方式,控制寄存器TCON用于控制定時器/計數(shù)器的啟動和停止。

5.2.2定時器/計數(shù)器的工作原理

定時器/計數(shù)器作計數(shù)器使用時,通過單片機(jī)外部引腳T0或T1對外部脈沖信號計數(shù),當(dāng)加在T0或T1引腳上的外部脈沖信號出現(xiàn)一個由“1”到“0”的負(fù)跳變時,計數(shù)器加

1,直至計數(shù)器產(chǎn)生溢出。

定時器/計數(shù)器(T0或T1)作定時器使用時,對外接晶振產(chǎn)生的振蕩信號經(jīng)12分頻后,提供給定時器,作為計數(shù)的脈沖輸入,定時器以12分頻后的脈沖周期為基本計數(shù)單位,對輸入的脈沖進(jìn)行計數(shù),直至產(chǎn)生溢出。

5.3定時器/計數(shù)器的控制

由于定時器/計數(shù)器必須在寄存器TCON和TMOD的控制下才能準(zhǔn)確工作,因此必須掌握寄存器TCON和TMOD的控制方法。所謂的“控制”,也就是對兩個寄存器TCON和TMOD的位進(jìn)行設(shè)置。

5.3.1定時器/計數(shù)器的方式控制寄存器TMOD

寄存器TMOD是單片機(jī)的一個特殊功能寄存器,功能是控制定時器/計數(shù)器,即T0、T1的工作方式。它的字節(jié)地址為89H,不可以對它進(jìn)行位操作,只能進(jìn)行字節(jié)操作,即以給寄存器整體賦值的方法設(shè)置初始值,如TMOD=0x01。在上電和復(fù)位時,寄存器TMOD的初始值為00H。表5-1列出了寄存器TMOD的格式。

TMOD寄存器中的高4位用來控制T1,低4位用來控制T0。下面以低4位控制T0為例來說明各位的具體控制功能。

(1)GATE:門控制位,用來控制定時器/計數(shù)器的啟動模式。GATE=0時,只要使TCON中的TR0或TR1置1”(高電平),就可以啟動定時器/計數(shù)器工作;GATE=1時,除了需將TR0或TR1置“1”外,還需要外部中斷引腳INT0(與TR0對應(yīng))或INT1(與TR1對應(yīng))也為高電平,才能啟動定時器/計數(shù)器工作。

(2)C/T:定時器/計數(shù)器模式選擇位。C/T為0時,定時器/計數(shù)器設(shè)置為定時工作模式;C/T為1時,定時器/計數(shù)器設(shè)置為計數(shù)工作模式。

(3)M1、M0位:定時器/計數(shù)器工作方式設(shè)置位。定時器/計數(shù)器有4種工作方式,由M1、M2進(jìn)行設(shè)置,M1、M0與4種工作方式的對應(yīng)關(guān)系如表5-2所示。

5.3.2定時器/計數(shù)器的控制寄存器TCON

TCON是一個特殊功能寄存器,它的功能是在定時器溢出時設(shè)定標(biāo)志位,并控制定時器的運行、停止和中斷請求。TCON的字節(jié)地址是88H,它有8位,每位均可進(jìn)行位尋址

(如可使用“TR0=1;”將該位置“1”),各位的地址和位符號見表5-3。

TCON的高4位用于控制定時器/計數(shù)器的啟動和中斷申請,低4位與外部中斷有關(guān),其含義在后面介紹。下面僅介紹其高4位的功能:

(1)TF1和TF0:分別是T1和T0的溢出標(biāo)志位。當(dāng)定時器/計數(shù)器工作產(chǎn)生溢出時,硬件自動將TF1或TF0位置“1”,并申請中斷。當(dāng)進(jìn)入中斷服務(wù)程序時,硬件又將自

動清零TF1或TF0。

(2)TR1或TR0:分別是T1和T0的啟動/停止位。在編寫程序時,若將TR1或TR0設(shè)置為“1”,那么相應(yīng)的定時器/計數(shù)器就開始工作:若設(shè)置為“0”,相應(yīng)的定時器/計數(shù)器

就停止工作。

5.3.3定時器/計數(shù)器的4種工作方式

T0、T1的定時/計數(shù)功能由TMOD的C/T位選擇,而工作方式則由TMOD的M1、M0位共同控制。在M1、M0位的控制下,定時器/計數(shù)器可以在4種不同的方式下工作。

T0和T1有4種工作方式,即方式0、方式1、方式2和方式3。T0和T1在方式0、方式1、方式2下工作時,用法完全一致,僅在方式3下工作時有所區(qū)別。各種方式的選擇是通過對TMOD的M1、M2位進(jìn)行編碼來實現(xiàn)的。

1.方式0

當(dāng)M1M0=00時,定時器/計數(shù)器被選定為工作方式0,其邏輯結(jié)構(gòu)(以T1為例)如圖5-3所示。圖5-3T1在方式0下的邏輯結(jié)構(gòu)

方式0實質(zhì)上是對T0或T1的兩個8位計數(shù)器TH1、TL1(TH0、TL0)進(jìn)行計數(shù)操作。其中高位計數(shù)器TH1的8位全部使用,而低位計數(shù)器TL1只用其低5位,從而構(gòu)成

了一個13位的定時器/計數(shù)器。計數(shù)時TL1低5位計數(shù)滿后向TH1進(jìn)位,TH1計數(shù)滿后向TCON中的中斷標(biāo)志位TF1進(jìn)位,由硬件置位TF1,申請中斷。

TMOD中的標(biāo)志位C/T控制的電子開關(guān)決定了定時器/計數(shù)器的工作模式。

當(dāng)C/T為0時,T1為定時器工作模式,此時計數(shù)器的計數(shù)脈沖是單片機(jī)內(nèi)部振蕩器12分頻后的信號,T1對機(jī)器周期計數(shù)。其定時時間由下式進(jìn)行計算:

定時時間=(213-X)×振蕩周期×12

式中,X為T1的初值。

當(dāng)C/T為1時,T1為計數(shù)器工作模式。此時計數(shù)器的計數(shù)脈沖為P3.5引腳上的外部輸入脈沖,當(dāng)P3.5引腳上的輸入脈沖發(fā)生負(fù)跳變時,計數(shù)器加1。

T1或T0能否啟動工作,取決于TR1、TR0、GATE和引腳INT1、INT0的狀態(tài)。

當(dāng)GATE為0時,只要TR1、TR0為1就可以啟動T1、T0工作。

當(dāng)GATE為1時,只有當(dāng)INT1或INT0引腳為高電平,且TR1或TR0置1時,才能啟動T1或T0工作。

2.方式1

在工作方式1中,T1和T0的組成結(jié)構(gòu)與功能完全相同,這里以T1為例進(jìn)行講解。

當(dāng)M1M0=01時,定時器/計數(shù)器被選定為工作方式1,邏輯結(jié)構(gòu)如圖5-4所示。在這種工作方式下,其為16位定時器/計數(shù)器,由TL1的8位和TH1的8位構(gòu)成。當(dāng)計數(shù)溢出

時,置位TCON中的溢出標(biāo)志位TF1,表示有中斷請求,同時16位定時器/計數(shù)器復(fù)位為0。圖5-4T1在方式1下的邏輯結(jié)構(gòu)

3.方式2

在工作方式2中,T1和T0的組成結(jié)構(gòu)與功能也完全相同,這里同樣以T1為例進(jìn)行講解。

當(dāng)M1M0=10時,定時器/計數(shù)器被選定為工作方式2,邏輯結(jié)構(gòu)如圖5-5所示。T1由TL1構(gòu)成的8位計數(shù)器和作為計數(shù)器初值的常數(shù)緩沖器的TH1構(gòu)成。當(dāng)TL1計數(shù)溢出時,置溢出標(biāo)志位TFI為1的同時,還自動將TH1的初值送入TL1,使TL1從初值重新開始計數(shù)。這樣既提高了定時精度,同時應(yīng)用時只需在開始時賦初值1次,簡化了程序的編寫。圖5-5T1在方式2下的邏輯結(jié)構(gòu)

4.方式3

工作方式3的作用比較特殊,只適用于T0。如果把T1置為工作方式3,它會自動處于停止?fàn)顟B(tài)。當(dāng)T0工作在方式3時,被拆成兩個獨立的8位計數(shù)器TL0和TH0,其邏輯結(jié)構(gòu)如圖5-6所示。圖5-6T0在方式3下的邏輯結(jié)構(gòu)

T0工作在方式3時,TL0構(gòu)成8位計數(shù)器,可工作于定時器/計數(shù)器模式,并使用T0的控制位與TF0的中斷源。TH0則只能工作于定時器模式,使用T1中的TR1和TF1的

中斷源。

一般情況下,使用方式0~2即可滿足需要。但在特殊場合,必須要求T0工作于方式3,而T1工作于方式2(需要T1作為串行口波特率發(fā)生器,將在后文介紹)。所以,方式3適合

于單片機(jī)需要1個獨立的定時器/計數(shù)器、1個定時器和1個串行口波特率發(fā)生器的情況。

5.3.4定時器/計數(shù)器中定時/計數(shù)初值的計算

在MCS51內(nèi)核單片機(jī)中,T1和T0都是增量計數(shù)器,因此不能直接將要計數(shù)的值作為初值放入寄存器中,而是將計數(shù)的最大值減去實際要計數(shù)的值的差存入寄存器中。

若作定時器使用,設(shè)定時間為Δt,時鐘頻率為fosc,定時器/計數(shù)器內(nèi)部的計數(shù)器位數(shù)為n,則

若作計數(shù)器使用,設(shè)計數(shù)值為C,定時器/計數(shù)器內(nèi)部的計數(shù)器位數(shù)為n,則

計數(shù)初值=2n-C

當(dāng)定時器/計數(shù)器工作在除方式2以外的其他方式下,且采用中斷編程方式時,在中斷服務(wù)程序中必須重置內(nèi)部計數(shù)器初值,以保證定時/計數(shù)值不變。

任務(wù)5-1用T0查詢方式控制P1口8位LED閃爍

任務(wù)目的要求T0工作在方式1,LED的閃爍周期為100ms,即亮50ms,熄滅50ms。電路原理圖如圖5-7所示。任務(wù)準(zhǔn)備設(shè)備及軟件:萬用表、計算機(jī)、KeilμVision4軟件、Proteus軟件。圖5-7T0查詢方式控制8位LED閃爍的電路原理圖

任務(wù)實施

1.實現(xiàn)方法

1)T0工作方式的設(shè)置

用如下指令對T0的工作方式進(jìn)行設(shè)置:

2)T0初值的設(shè)定

因為單片機(jī)的晶振頻率為12MHz,經(jīng)12分頻后送到T0的脈沖頻率為1MHz,周期T=1μs。即每個脈沖計時1μs。計時50ms(即50000μs),則需要計的脈沖數(shù)為50000/1=

50000(次)。定時器的初值應(yīng)設(shè)置為65536-50000=15536。這個數(shù)需要用T0的高8位寄存器(TH0)和低8位寄存器(

TL0)分別存儲,設(shè)置方法如下:

3)查詢方式的實現(xiàn)

T0開始工作后,可通過編程讓單片機(jī)不斷查詢溢出標(biāo)志位TF0是否為“1”,若為“1”,則表示計時時間到;否則等待。

2.程序設(shè)計

先建立一個文件夾,然后建立“TIMER”工程項目,最后建立源程序文件“TIMER.C”。

輸入如下源程序:

3.用Proteus軟件仿真

經(jīng)Keil軟件編譯通過后,可利用Proteus軟件進(jìn)行仿真。在ProteusISIS編輯環(huán)境中繪制仿真電路圖,將編譯好的“TIMER.hex”文件載入AT89C51。啟動仿真,即可看到P1口外接的8位LED開始閃爍。

任務(wù)5-2用T0查詢方式計數(shù),結(jié)果送P1口顯示

任務(wù)目的要求使用T0的查詢方法統(tǒng)計按鍵次數(shù),并將結(jié)果送P1口8位LED顯示。要求計數(shù)從0開始,計滿100后清0。電路原理圖如圖5-8所示。任務(wù)準(zhǔn)備設(shè)備及軟件:萬用表、計算機(jī)、KeilμVision4軟件、Proteus軟件。

任務(wù)實施

1.實現(xiàn)方法

用如下指令對T0的工作方式進(jìn)行設(shè)置:

TMOD=0x06;//TMOD=00000110B,使用T0的方式2

因為T0在方式2工作時,TH0和TL0僅需賦值一次初值。在TL0計滿后,即置位TF0,同時TH0中的初值自動再裝入TL0,然后重新開始計數(shù)。所以T0工作在方式2且

計數(shù)最大值為100時的初值設(shè)置如下:

TH0=256100;//T0的高8位賦初值

TL0=256100;//T0的高8位賦初值

2.程序設(shè)計

先建立一個文件夾,然后建立“COUNTER”工程項目,最后建立源程序文件“COUNTER.C”。

3.用Proteus軟件仿真

經(jīng)Keil軟件編譯通過后,可利用Proteus軟件進(jìn)行仿真。在ProteusISIS編輯環(huán)境中繪制仿真電路圖,將編譯好的“

COUNTER.hex”文件載入AT89C51。啟動仿真,即可看到

P1口外接的8位LED顯示按鍵按下的次數(shù)。

本章小結(jié)

在單片機(jī)項目開發(fā)中經(jīng)常用到定時器/計數(shù)器,因此,掌握定時器/計數(shù)器的使用方法非常必要。本章介紹了定時器/計數(shù)器的簡單應(yīng)用技術(shù)。在實際項目開發(fā)中通常需要根據(jù)具體的項目要求靈活使用定時器/計數(shù)器,更詳細(xì)的資料可查閱芯片的數(shù)據(jù)手冊。

習(xí)題

一、填空題1.單片機(jī)AT89C51片內(nèi)有兩個()位的定時器/計數(shù)器,即T0和T1。2.T0或T1用做作定時器時,對外接晶振產(chǎn)生的振蕩信號經(jīng)()分頻后,提供給計數(shù)器,作為計數(shù)的脈沖輸入。3.單片機(jī)AT89C51外接12MHz晶振,定時器的最大溢出時間是

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論