《基于任務(wù)驅(qū)動的單片機(jī)應(yīng)用教程》課件第7章_第1頁
《基于任務(wù)驅(qū)動的單片機(jī)應(yīng)用教程》課件第7章_第2頁
《基于任務(wù)驅(qū)動的單片機(jī)應(yīng)用教程》課件第7章_第3頁
《基于任務(wù)驅(qū)動的單片機(jī)應(yīng)用教程》課件第7章_第4頁
《基于任務(wù)驅(qū)動的單片機(jī)應(yīng)用教程》課件第7章_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

任務(wù)7音頻報警器的設(shè)計7.1任務(wù)內(nèi)容與分析

7.2任務(wù)實施7.3任務(wù)相關(guān)知識

7.1任務(wù)內(nèi)容與分析

1.任務(wù)內(nèi)容

學(xué)校使用的打鈴器、電視機(jī)的定時關(guān)機(jī)、空調(diào)器的定時開關(guān)等都要用到定時器。任務(wù)7以音頻報警器為例,介紹51單片機(jī)定時器/計數(shù)器的定時與計數(shù)功能的應(yīng)用。

2.任務(wù)分析

報警器(alarm)又稱防盜器,是用于發(fā)生警情、危險、緊急情況下,以聲音、光線、氣壓等形式發(fā)出警報的電子產(chǎn)品的統(tǒng)稱。任務(wù)7以單片機(jī)驅(qū)動蜂鳴器輸出1kHz的音頻信號作為聲音報警信號。圖7-1為音頻報警器示意電路圖,其中P1.7為驅(qū)動蜂鳴器。圖7-1音頻報警器示意電路圖首先,關(guān)鍵是如何實現(xiàn)1kHz音頻信號。從1kHz頻率可以推算出該信號周期是1ms,那么0.5ms為高電平,再0.5ms為低電平,如此重復(fù),就實現(xiàn)了1kHz音頻。接著,關(guān)鍵問題又成了如何實現(xiàn)0.5ms呢。用任務(wù)5中所講的軟件延時實現(xiàn)0.5ms的缺點是浪費CPU資源,且時間不夠精確。任務(wù)7將學(xué)習(xí)51單片機(jī)定時器/計數(shù)器的應(yīng)用,采用定時器/計數(shù)器定時計時,時間精確,CPU同時還可以做其他事情。

7.2任務(wù)實施

下面一起實現(xiàn)1kHz的音頻報警信號吧。這里重點學(xué)習(xí)定時器/計數(shù)器的應(yīng)用。

步驟1:設(shè)計硬件電路,如圖7-2所示。晶振頻率選用12MHz。圖7-2音頻報警器電路圖步驟2:根據(jù)任務(wù)7分析可知,定時時間為0.5ms。在此選用定時器/計數(shù)器T0,采用工作方式1。計算出TMOD的值為01H,計數(shù)初始值為FE0CH(具體計算過程同例7-1)。主程序和中斷服務(wù)子程序流程如圖7-3所示。圖7-3音頻報警器程序流程圖步驟3:根據(jù)流程圖編寫源程序。具體如下:

//******音頻報警器程序*****************

;程序名:流水燈程序ALARM.A

;程序功能:實現(xiàn)1kHz的音頻報警信號。

ORG0000H

AJMPMAIN ;跳轉(zhuǎn)到主程序

ORG000BH ;?T0的中斷入口地址

LJMPDVT0 ;轉(zhuǎn)到中斷處理程序處

ORG0030H

MAIN: MOVTMOD,#01H ;置T0工作于方式1

MOVTH0,#0FEH ;裝入計數(shù)初始值

MOVTL0,#0CH

SETBET0 ;?T0開中斷

SETBEA ;開總中斷允許

SETBTR0 ;啟動定時器T0

SJMP$ ;等待中斷

DVT0: MOVTH0,#0FEH ;重新裝入計數(shù)初始值

MOVTL0,#0CH

CPLP1.7 ;?LED狀態(tài)取反

RETI ;中斷返回

END

7.3任務(wù)相關(guān)知識

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

1.計數(shù)

計數(shù)一般是指對事件的統(tǒng)計,通常以“1”為單位進(jìn)行累加。計數(shù)也廣泛應(yīng)用在工業(yè)生產(chǎn)中,如某飲料生產(chǎn)線上需要對物品進(jìn)行計數(shù),要求每12瓶為一打做一個包裝,每計數(shù)到12就產(chǎn)生一個電信號以帶動某機(jī)械設(shè)備做出相應(yīng)的動作。

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

錄音機(jī)上的計數(shù)器通常最多只能達(dá)到999,汽車上的里程表位數(shù)是一定的,可見計數(shù)器總有一定的容量。8051單片機(jī)有兩個計數(shù)器,分別稱為T0和T1。這兩個計數(shù)器分別由兩個8位的計數(shù)單元組成,即每個計數(shù)器都是16位的,最大的計數(shù)量是216,即65536。

3.定時

8051單片機(jī)的定時器和計數(shù)器是同一結(jié)構(gòu),只是計數(shù)器記錄的是單片機(jī)外部發(fā)生的事件(由外部電路提供計數(shù)信號),而定時器是由單片機(jī)內(nèi)部提供一個非常穩(wěn)定的計數(shù)信號。如圖7-4所示,由單片機(jī)振蕩信號經(jīng)過12分頻后獲得一個脈沖信號,該信號即為定時器的計數(shù)信號。圖7-48051計數(shù)器的兩個計數(shù)來源

4.溢出與計數(shù)初始值的計算

8051計數(shù)器的容量是16位,最大的計數(shù)值是65536。因此,每次計數(shù)到65536就會產(chǎn)生溢出,一旦產(chǎn)生溢出將使TF0或TF1變?yōu)?,這樣就記錄了溢出事件。一般可以選擇用查詢方式或中斷方式對溢出事件進(jìn)行處理。在實際工作中,經(jīng)常會有少于65?536個計數(shù)值的要求。例如:生產(chǎn)線上對藥片進(jìn)行計量,每到100粒就要動作一次,也就是要求每計數(shù)到100就要產(chǎn)生溢出。要計數(shù)100,則預(yù)先要在計數(shù)器中放進(jìn)65?436(65?536-100=65?436),這樣再來100個脈沖,就達(dá)到了65536溢出。這個預(yù)先在計數(shù)器中放進(jìn)的值,稱為計數(shù)初始值。同理,定時也是一樣。假設(shè)單片機(jī)的晶振是12MHz,那么每個計數(shù)脈沖是1μs,計滿65536個脈沖需時65.536ms。但現(xiàn)在某應(yīng)用只需定時10ms,可以作這樣的處理,10ms即10000μs,計數(shù)10000(10000μs/1μs?=?10000)。計數(shù)之前預(yù)先在計數(shù)器中放進(jìn)55536(65536-10000=55536)。開始計數(shù)后,計滿10000個脈沖到65536,即產(chǎn)生溢出。7.3.2定時器/計數(shù)器的基本結(jié)構(gòu)與工作原理

圖7-5是8051單片機(jī)定時器/計數(shù)器的基本結(jié)構(gòu)。定時器T0和T1分別是由TH0、TL0和TH1、TL1各兩個8位計數(shù)器

構(gòu)成的16位計數(shù)器,這兩個計數(shù)器都是16位的加1計數(shù)器。

T0或T1用作對外部事件計數(shù)的計數(shù)器時,通過外部引腳T0或T1對外部脈沖信號進(jìn)行計數(shù)。當(dāng)T0或T1引腳上出現(xiàn)一個由1到0的負(fù)跳變時,計數(shù)器加1,如此累加直至計數(shù)器產(chǎn)生溢出。

T0或T1用作定時器時,由外接晶振產(chǎn)生的振蕩信號進(jìn)行12分頻后,提供給計數(shù)器作為計數(shù)脈沖輸入,計數(shù)器對輸入脈沖進(jìn)行計數(shù),直至產(chǎn)生溢出。圖7-58051定時/計數(shù)器的基本結(jié)構(gòu)不論T0或T1是工作于定時方式還是計數(shù)方式,它們在對內(nèi)部時鐘或外部事件進(jìn)行計數(shù)時,都不占用CPU時間,直到定時器/計數(shù)器產(chǎn)生溢出。如果滿足條件,CPU才會停下當(dāng)前的操作,去處理“時間到”或者“計數(shù)滿”這樣的事件。因此,定時器/計數(shù)器是與CPU“并行”工作的,不會影響CPU的其他工作。

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

如圖7-5所示,T0和T1有兩個8位控制寄存器TMOD和TCON,分別用來設(shè)置各個定時器/計數(shù)器的工作方式,選擇定時或計數(shù)功能,控制啟動運行及作為運行狀態(tài)的標(biāo)志等。當(dāng)8051系統(tǒng)復(fù)位時,TMOD和TCON所有位都清0。

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

TMOD的格式如表7-1所示,高4位用于對定時器T1的方式控制,低4位用于對定時器T0的方式控制。低4位各位的功能簡述如下:

GATE:門控位。GATE=0時,只要用軟件使TCON中的TR0或TR1為1,就可以啟動定時器/計數(shù)器工作;GATE=1時,不僅要用軟件使TR0或TR1為1,還要求外部中斷引腳或為高電平,這樣才能啟動定時器/計數(shù)器工作。一般應(yīng)用中,可置GATE=0,這樣只要利用指令來置位TR0或TR1,即可控制定時器/計數(shù)器的運行。:模式選擇位。=?0為定時模式,=?1為計數(shù)模式。

M1/M0:工作方式選擇位。通過對M1/M0的設(shè)置,可使定時器/計數(shù)器處于4種工作方式之一,如表7-2所示。

TMOD只能進(jìn)行字節(jié)尋址,所以對T0或T1的工作方式控制只能整字節(jié)(8位)寫入。

(2)定時器/計數(shù)器控制寄存器TCON。TCON格式如表

7-3所示。低4位與外部中斷有關(guān)。高4位為定時器/計數(shù)器的運行控制和溢出標(biāo)志。高4位各位的功能簡述如下:

TF1/TF0:T1/T0溢出標(biāo)志位。當(dāng)T1或T0產(chǎn)生溢出時,由硬件自動置位中斷觸發(fā)器TF1或TF0,并向CPU申請中斷。如果用中斷方式,則CPU在響應(yīng)中斷進(jìn)入中斷服務(wù)程序后,TF1或TF0被硬件自動清0。如果用軟件查詢方式對TF1或TF0進(jìn)行查詢,則在查詢到TF1或TF0為1時,應(yīng)當(dāng)用軟件指令將TF1或TF0清0。

TR1/TR0:T1/T0運行控制位。在GATE=0的情況下,用指令(如SETBTR0、CLRTR0等)對TR1或TR0進(jìn)行置位或清0,即可啟動或關(guān)閉T1或T0的運行。

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

如表7-2所示,定時器/計數(shù)器有4種工作方式,其中方式0、1、2對T0和T1完全相同,但方式3僅為T0所具有。方式0和方式3不常用,在此只講述方式1和方式2。T0和T1除了所使用的寄存器、有關(guān)控制位、標(biāo)志位不同外,其他操作完全相同。為了簡化敘述,下面以定時器/計數(shù)器T0為例進(jìn)行介紹。

1)工作方式1

圖7-6所示為方式1的邏輯結(jié)構(gòu)。方式1的計數(shù)位數(shù)是16位,由TL0低8位和TH0高8位組成了16位加1計數(shù)器。計數(shù)個數(shù)與計數(shù)初值的關(guān)系為:X=216-N??梢?,計數(shù)個數(shù)為1時,初值X為65535,計數(shù)個數(shù)為65536時,初值X為0,并依此類推。圖7-6方式1的邏輯結(jié)構(gòu)當(dāng)定時器/計數(shù)器T0為工作方式1時,在TH0、TL0(組成16位計數(shù)器)計數(shù)到65?536溢出時,由硬件使TF0置1,向CPU發(fā)出中斷申請。若中斷有響應(yīng),則TH0和TL0均清0,所以要在中斷服務(wù)程序中用指令對TH0和TL0重裝初始值,否則計數(shù)將會從0開始,造成計數(shù)量或定時時間不準(zhǔn)。

2)工作方式2

圖7-7所示為方式2的邏輯結(jié)構(gòu)。方式2為自動重裝初值的8位計數(shù)方式。TH0用來存放TL0初次置入的時間常數(shù)。在TL0計數(shù)溢出時,由硬件使TF0置1,向CPU發(fā)出中斷申請,同時存放在TH0的時間常數(shù)自動再裝入TL0,TL0從初值重新進(jìn)行加1計數(shù),周而復(fù)始,直至TR0?=?0才會停止。計數(shù)個數(shù)與計數(shù)初值的關(guān)系為:X=28-N。圖7-7方式2的邏輯結(jié)構(gòu)

【例7-1】分別用定時器/計數(shù)器的中斷方式和查詢方式實現(xiàn)任務(wù)1閃爍燈。設(shè)系統(tǒng)時鐘頻率為12MHz。

解在利用定時器/計數(shù)器進(jìn)行定時或計數(shù)之前,先要通過軟件對其進(jìn)行初始化。初始化工作如下:對TMOD賦值,以確定T0和T1的工作方式。計算初值,并將其寫入TH0、TL0或TH1、TL1。若是中斷方式,則要對中斷允許寄存器IE賦值,開放中斷,使TR0或TR1置位,啟動定時器/計數(shù)器開始定時/計數(shù)。

(1)計算計數(shù)初始值X。由于晶振為12MHz,所以機(jī)器周期為1μs。閃爍燈是50ms閃爍一次,所以定時時間為

50ms。該例選用定時器/計數(shù)器T0,這樣N=50000μs/1μs

=50000,X=216-N=65536-50000=15536=3CB0H,即應(yīng)將3CH送入TH0,B0H送入TL0中。

(2)求方式控制字TMOD。選用工作方式1,M1M0=01,定時模式=0,GATE=0,因選用T0,這樣TMOD高4位可設(shè)置為0000,低4位為0001,即方式控制字TMOD為01H。

(3)中斷方式程序如下:

ORG0000H

AJMPMAIN ;跳轉(zhuǎn)到主程序

ORG000BH ;?T0的中斷入口地址

LJMPDVT0 ;轉(zhuǎn)到中斷處理程序處

ORG0030H

MAIN: MOVTMOD,#01H;置T0工作于方式1

MOVTH0,#03CH;裝入計數(shù)初始值

MOVTL0,#0F0H

SETBET0 ;T0開中斷

SETBEA ;開總中斷允許

SETBTR0 ;啟動定時器T0

SJMP$ ;等待中斷

DVT0: MOVTH0,#03CH ;重新裝入計數(shù)初始值

MOVTL0,#0F0H

CPLP1.0 ;?LED狀態(tài)取反

RETI ;中斷返回

END

(4)查詢方式程序如下:

ORG0000H

AJMPMAIN ;跳轉(zhuǎn)到主程序

ORG0030H

MAIN: MOVTMOD,#01H ;置T0工作于方式1

LOOP: MOVTH0,#03CH ;裝入計數(shù)初始值 MOVTL0,#0F0H

SETBTR0 ;啟動定時器T0

JNBTF0,$ ;?TF0=0,等待

CLRTF0 ;將中斷請求標(biāo)志TF0清0

CPLP1.0 ;?LED狀態(tài)取反

SJMPLOOP

END

【例7-2】利用定時器/計數(shù)器T1,采用工作方式2,使P1.7引腳輸出1ms的方波。設(shè)系統(tǒng)時鐘頻率為6MHz。

解(1)計算計數(shù)初始值X。由于晶振為6MHz,所以機(jī)器周期為2μs。要求輸出1ms的方波,所以定時0.5ms。這樣N=500μs/2μs=250,X=28-N=256-250=6=06H,即應(yīng)將06H送入TH1和TL1中。

(2)求方式控制字TMOD。采用工作方式2,M1/M0=10,定時模式=0,GATE=0,因選用T1,這樣TMOD高4位為0010,低4位可設(shè)置為0000,即方式控制字TMOD為20H。

(3)程序如下(中斷方式):

ORG0000H

AJMPMAIN ;跳轉(zhuǎn)到主程序

ORG001BH ;?T1的中斷入口地址

CPLP1.7 ;?P1.7取反,輸出方波

RETI

;中斷返回

ORG0030H

MAIN: MOVTMOD,#20H;置T1工作于方式2

MOVTH1,#06H ;裝入計數(shù)初始值

MOVTL1,#06H

SETBET1 ;?T0開中斷

SETBEA ;開總中斷允許

SETBTR1 ;啟動定時器T0

SJMP$ ;等待中斷

END

7.3.3定時器/計數(shù)器計數(shù)功能的應(yīng)用—大會發(fā)言限時器

【例7-3】請設(shè)計一個由單片機(jī)控制的大會發(fā)言限時器,限時15min。具體要求是:當(dāng)發(fā)言者開始講話時,主持人手動按下“開始”鍵(無鎖按鈕),15min后由單片機(jī)控制發(fā)出提示信號(提示信號可自行設(shè)定)。假定單片機(jī)晶振頻率選用6MHz,另可提供1Hz穩(wěn)頻脈沖源,請畫出電路原理圖,并用中斷方式完成本題的程序設(shè)計。

解可利用89S51內(nèi)部定時器對片外1s脈沖源計數(shù)900次,從而達(dá)到15min(即900s)定時。用查詢方式等待手動“開始”信號,有信號來,則計數(shù)器開始工作。當(dāng)計數(shù)滿900次時,發(fā)出中斷請求信號,此時讓指示燈亮(由P1.0引腳控制LED燈的亮/滅)。硬件電路如圖7-8所示。圖7-8例7-3硬件電路程序流程如圖7-9所示。圖7-9例7-3程序流程圖源程序如下:

?;**************大會發(fā)言限時器****************

;程序名:SPEAK.A

;程序功能:實現(xiàn)限時指示

ORG0000H

AJMPMAIN ;跳轉(zhuǎn)到主程序

ORG000BH ;?T0的中斷入口地址

AJMPDVT0

ORG0030H

MAIN: CL

溫馨提示

  • 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

提交評論