發(fā)光二極管的閃爍顯示_第1頁
發(fā)光二極管的閃爍顯示_第2頁
發(fā)光二極管的閃爍顯示_第3頁
發(fā)光二極管的閃爍顯示_第4頁
發(fā)光二極管的閃爍顯示_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、發(fā)光二極管的閃爍顯示相關(guān)知識 1、發(fā)光二極管的工作特性這個我們在前面以做過介紹,這里就不重述了,要求二極管的初始狀態(tài)是熄滅的。2、定時器T0、T1的根本構(gòu)造,工作原理3、定時/計數(shù)器0和定時/計數(shù)器1的應用設(shè)計2、定時器T0、T1的根本構(gòu)造,工作原理T0、T1的組成構(gòu)造T0/T1的工作方式T0、T1的控制存放器計算初值的裝入T0、T1的組成構(gòu)造 T0、T1的構(gòu)造如圖6-1所示,圖中i=0、1,表示T0和T1的參數(shù)標記.例如TRi就表示T0的控制位TR0和T1的控制位TR1;Ti為單片機的外部引腳T0/T1;INTi也為單片機的外部引腳INT0/INT1;TFi為中斷標志位TF0/TF1,C/T

2、、GATE為特殊功能存放器TMOD中的兩位,TRi、TFi為特殊功能存放器TCON中的二位。從圖中可以看出,T0、T1主要由計數(shù)輸入、計數(shù)器、計數(shù)溢出管理以及控制邏輯等幾個局部組成。圖6-1 T0、T1的根本構(gòu)造 定時/計數(shù)器的輸入有兩路,由特殊功能存放器TMOD的C/T位來管理。C/T=0時,由振蕩頻率的12分頻后的脈沖進展計數(shù),定時/計數(shù)器工作于定時形式,實現(xiàn)的是定時功能,所以定時器的本質(zhì)是對機器周期進展計數(shù)的計數(shù)器;C/T=1時,對Ti引腳輸入的外部脈沖進展計數(shù),定時/計數(shù)器工作于計數(shù)形式,實現(xiàn)計數(shù)器功能。Ti作計數(shù)器使用時,引腳Ti用作外部脈沖輸入引腳,不能作普通的I/O端口使用。其它

3、情況下,可作普通的I/O端口使用。 計數(shù)溢出管理具有使特殊功能存放器TCON的TFi位自動置1和自動清0的功能。當計數(shù)器計數(shù)滿發(fā)生溢出即計到模值時,自動使TFi位置1,CPU響應了對應的定時中斷并且進入到中斷效勞程序中后,TFi位被自動清0。TFi位也可以用程序指令清0和置1。 控制邏輯由受控開關(guān)、特殊功能存放器TCON的TRi位、TMOD的GATE位、引腳INTi以及門電路組成??刂艭=1時,受控開關(guān)閉合,計數(shù)脈沖被送往計數(shù)器計數(shù)器對計數(shù)脈沖計數(shù)計數(shù)器運行,控制C=0時,控制開關(guān)斷開,計數(shù)器停頓計數(shù)。 從圖中可以看出: 控制C=GATEINTiTRi 所以,GATE=0時,控制C=TRiGA

4、TE=1且TRi=1時,控制C=INTi 實際應用中,常將GATE設(shè)為0,用TRi控制計數(shù)器的開啟和停頓。 當需要測量外部脈沖寬度時,可將GATE設(shè)為1,TRi設(shè)為1,外部脈沖從INTi引腳引入,用外部脈沖控制計數(shù)器的開啟和停頓。 T0/T1的工作方式定時/計數(shù)器有4種工作方式:方式0、方式1、方式2、方式3。除方式3外,T0和T1的工作狀態(tài)完全一樣,在不同的工作下其計數(shù)器的構(gòu)成不同。在本案例中我們選用工作方式0,所以只對進展詳細的介紹,其它的方式在以后的案例中涉及到了我們再做介紹。方式0:13位的工作方式,定時/計數(shù)器的構(gòu)造與圖6-1所示的根本構(gòu)造一樣,其中的計數(shù)器為13位的計數(shù)器,它由Tl

5、i的低5位和Thi的8位組成,Tli的高3位無效。 定時/計數(shù)器工作時,計數(shù)脈沖輸入至TLi,Thi作加1計數(shù),當TLi的低5位發(fā)生由11111B變至00000B時,Thi加1。由TLi和Thi組成的13位計數(shù)器滿后回0時硬件電路自動將TFi置1。 T0、T1的控制存放器T0、T1的運行受控于特殊功能存放器TCON和TMOD1定時器控制存放器TCON 字節(jié)地址:88HTCON TF1 TR1 TF0 TR0 IE1 IT1 IE0IT0位地址 8F 8E 8D 8C 8B 8A 89 88圖6-3 TCON中的構(gòu)造圖 其中,TF1、TR1用于定時/計數(shù)器1,TF0、TR0用于定時/計數(shù)器0,I

6、E1、IT1用于外部中斷1,IE0、IT0用于外部中斷0。 各位的含義如下:TFi位:定時/計數(shù)器回0標志位,也稱作定時/計數(shù)器中斷懇求標志位。對應的計數(shù)器計數(shù)滿回0時,硬件電路自動將TFi位置1,并向CPU提出中斷申請,CPU響應對應的定時中斷,并進入中斷效勞程序中后,硬件電路自動將TFi清0。TRi位:定時/計數(shù)器運行控制位。它與GATE位、INTi引腳一起組合來控制定時/計數(shù)器的開啟和停頓。其詳細的控制關(guān)系請參考“T0、T1的組成構(gòu)造中的有關(guān)局部。IEi位:外部中斷懇求標志。IEi=0 外部中斷INTi無中斷懇求。IEi=1 外部中斷INTi有中斷懇求。 CPU響應了INTi中斷后,硬件

7、電路自動將IEi位清0ITi位:外部中斷觸發(fā)方式控制位。ITi=0 外部中斷INTi用低電平方式觸發(fā)ITi=1 外部中斷INTi用下跳沿方式觸發(fā)單片機復位時,TCON的值為00H,這就意味著上電時T0、T1均被停頓。 其中TR0和TR1分別用于控制T0和T1的啟動和停頓,TF0和TF1用于標識T0和T1是否產(chǎn)生溢出中斷懇求。(2)、定時器方式存放器TMODTMOD用于控制T0、T1的運行形式和工作方式,字節(jié)地址位89HM1、M0位:工作方式選擇控制位。它們的取值組合用來確定定時/計數(shù)器的工作方式。M1、M0的取值組合與定時/計數(shù)器的工作方式之間的關(guān)系如表所示。 M1M0 方式功能說明 00 方

8、式013位計數(shù)方式 01 方式116位計數(shù)方式 10 方式28位自動重載初值方式 11 方式3將T0分成2個8位的定時計數(shù)器(T1無此功能)GATE位:門控位。與特殊功能存放器TCON的TRi位以及外部引腳INTi的狀態(tài)組合起來控制定時/計數(shù)器Ti開啟和停頓,其詳細的控制方法在“T0與T1的組成構(gòu)造中作了介紹,這里不再累述計算初值的裝入計數(shù)初值的求法計數(shù)初值的裝入 計數(shù)初值的求法 T0、T1開啟時,它們的計數(shù)器都是在計數(shù)初值的根底上作加1計數(shù),當計數(shù)滿回0時,TFi置1。也就是說,當計數(shù)器計到模值時,TFi被置1,計數(shù)器發(fā)生溢出。此時,計數(shù)次數(shù)N與計數(shù)器的模值M以及計數(shù)初值X之間有如下關(guān)系M=

9、NX 不同計數(shù)方式下,計數(shù)器的模值是不同的,各種計數(shù)方式下的模值如下:對于模值為M的計數(shù)器,假設(shè)要計數(shù)N次后發(fā)生計數(shù)溢出(TFi位置1),那么其計數(shù)初值X應為:X=MN定時/計數(shù)器作計數(shù)器使用時,一般是計數(shù)次數(shù)要求計數(shù)初值,我們可以用上式計算得出計數(shù)初值。定時/計數(shù)器作定時器使用時,一般是定時時間t,要確定計數(shù)初值X。由于定時器的本質(zhì)是對機器周期進展計數(shù),每隔一個機器周期其計數(shù)值就加1,因此,假設(shè)要定時t時間,那么計數(shù)器的計數(shù)次數(shù)N為:N=t/MC=(fosct)/12 式中的MC為機器周期,fosc為晶振的振蕩頻率。計數(shù)初值為:X=MN=M(fosct)/12對于模值為M的計數(shù)器,其計數(shù)次數(shù)

10、N的取值范圍為:1 N M【例6-1】設(shè)單片機的晶振頻率fosc=12MHz,現(xiàn)擬定用T0作1ms定時器,試求其在方式0下的計數(shù)初值X。【解】定時器的定時長為1ms,那么定時器的計數(shù)次數(shù)N為:N=(fosct)/12=(12106110-3)/12=1000方式0的模值為2000H。 所以,計數(shù)初值X= MN=2000H1000=1C18H計數(shù)初值的裝入不同的工作方式下,定時/計數(shù)器的構(gòu)成不同,因此其初值的裝入方法也不完全一樣。在方式0下,計數(shù)器為13位的計數(shù)器,它由TLi的低5位及THi構(gòu)成,計數(shù)器的低5 位二進制數(shù)為TLi中低5二進制數(shù),高8位二進制數(shù)為THi中的二進制數(shù)。因此,在裝入計數(shù)

11、初值時必須將初值的低5位數(shù)裝入TLi的低5位中,將初值的高8位數(shù)裝入THi中,其詳細方法是:將計數(shù)初值轉(zhuǎn)換成13位的二進制數(shù),截取其高8位二進制數(shù)并傳送至THi中。截取其低5位二進制數(shù),并在這5位二進制數(shù)左端(高位)補上3位任意二進制數(shù)后行成一個字節(jié)的二進制數(shù),再將此二進制數(shù)裝入TLi中。實際應用中,一般是高3位補0。 例如,假定通過計算求得計數(shù)初值為1234H,T0采用方式0工作,那么把初值1234H轉(zhuǎn)換成13位二進制數(shù)為:1 0010 0011 0100B。截取其高8位二進制數(shù)為1 0010 001B=91H。截取其低5位二進制數(shù)為1 0100B,高3位補上0后為0001 0100B=14

12、H。因此,TH0中應裝入91H,TL0中應裝入14H在方式0下,將計數(shù)初裝入T0的計數(shù)器中的程序段為:MOVTL0,#14H;計數(shù)初值的低5位數(shù)裝入TL0中MOVTH0,#91H;計數(shù)初值的高8位數(shù)裝入TH0中3、定時/計數(shù)器0和定時/計數(shù)器1的應用設(shè)計定時/計數(shù)器的應用設(shè)計主要是軟件設(shè)計,包括初始化程序的設(shè)計和執(zhí)行程序的設(shè)計兩個局部。1初始化程序的設(shè)計2執(zhí)行程序的設(shè)計初始化程序的設(shè)計 初始化程序一般安排在系統(tǒng)復位后所要執(zhí)行的模塊程序中,有時為了進步系統(tǒng)的穩(wěn)定性,也可以將初始化程序的一局部代碼安排在系統(tǒng)反復執(zhí)行的主程序中。初始化程序所要完成的工作是,設(shè)置定時/計數(shù)器的運行形式、工作方式、計數(shù)初

13、值,假設(shè)執(zhí)行程序被安排在定時中斷效勞程序中,那么在初始化程序中還要包括設(shè)置定時中斷的優(yōu)先級、開定時中斷等。也就是設(shè)特殊功能存放器TMOD、TCON、THi、TLi以及IE、IP的值。 在實際應用中,一般對TCON、IE、IP三個特殊功能存放器采用位操作,只設(shè)置與T0或T1有關(guān)的位的值,以防止改變其它功能部件的工作狀態(tài)?!纠?-2】某實際應用系統(tǒng)需用定時/計數(shù)器T0對外部輸入脈沖進展計數(shù),每計數(shù)滿1000個脈沖后,系統(tǒng)就進入定時中斷效勞程序處相應的處理,現(xiàn)擬定T0采用高優(yōu)先級中斷,試編寫出對T0作初始化的子程序INIT_T0?!痉治觥恳李}要求,執(zhí)行程序放在定時中斷效勞程序中,T0初始化程序中除了

14、要設(shè)置TMOD、TCON、TH0和TL0的值外,還要開中斷和設(shè)置定時中斷的優(yōu)先級。T0的計數(shù)值N為:N=1000=3E8H28N213故可采用方式0、方式1進展計數(shù),現(xiàn)采用方式1計數(shù),那么計數(shù)初值X為:X=2161000=10000H3E8H=FC18H因此初始化程序中TL0應裝入初始值18H,TH0中應裝入初始值FCH。T0作計數(shù)器使用,TMOD應設(shè)為:XXX0101B,現(xiàn)取05H。定時中斷的優(yōu)先級,所以PT0=1【程序清單】INIT_T0:MOVTMOD,#05H;設(shè)置T0的工作形式:計數(shù)形式、方 ;式1MOVTL0,#18H;設(shè)置T0的計數(shù)初值:1000MOVTH0,#0FCHSETBP

15、T0;T0采用高優(yōu)先級中斷SETBEA;開全局中斷SETBET0;開定時/計數(shù)T0中斷SETBTR0;啟動定時/計數(shù)器T0RET執(zhí)行程序的設(shè)計 執(zhí)行程序所要完成的任務(wù)是,定時/計數(shù)器中的計數(shù)器計數(shù)滿發(fā)生溢出(即定時器定時到或者計數(shù)器計數(shù)到)時,CPU所要完成的工作。這局部程序無固定的形式,要根據(jù)詳細情況來作詳細處理。計數(shù)器計數(shù)滿發(fā)生溢出時,硬件電路會自動地將TFi位置1,并向CPU懇求中斷。所以執(zhí)行程序可以放在定時中斷效勞程序中,也可以放在主程序中,通過查詢TFi位值來決定執(zhí)行程序是否被執(zhí)行。不過這種構(gòu)造將要占用CPU的大量時間,單片機的實時性將會下降,在實際應用中盡量少用。將執(zhí)行程序放在定時

16、中斷效勞程序中,執(zhí)行程序的編寫實際上就是定時中斷效勞程序的設(shè)計的問題。在設(shè)計中要注意以下幾方面問題: 除方式2外,其它工作方式下,定時/計數(shù)器都不具備重裝初值的功能。假設(shè)定時/計數(shù)器在計數(shù)滿發(fā)生溢出時,還需計數(shù),那么在定時中斷效勞程序中需重裝計數(shù)初值。在方式2下,定時/計數(shù)器常作波特率發(fā)生器,此時不必編寫定時中斷效勞程序,初始化程序中也不必開定時中斷。有關(guān)中斷效勞程序入口地址。000BH是T0的中斷效勞程序的入口地址,001BH是T1的中斷效勞程序的入口地址,當T0工作在方式3時,以TH0作計數(shù)器的定時中斷效勞程序的入口地址也是001BH。中斷效勞程序一般不放在上述入口地址開場的存儲空間中而是

17、放在0050H以后的存儲空間中,在上述入口地址處一般放一條無條件轉(zhuǎn)移指令,將程序轉(zhuǎn)移到對應的中斷效勞程序中去。硬件電路 用P1口的8個引腳分別驅(qū)動8個發(fā)光二極管,二極管的陰極端接P1的各引腳,陽極端通過1K限流電阻接高電平,采用RC復位電路,內(nèi)部晶振電路軟件編程 1、編程思路 采用T0定時/計數(shù)存放器設(shè)置T0的運行形式為定時形式,工作方式為0方式設(shè)置定時時間為5ms在T0定時中斷效勞程序調(diào)用100次獲得5s延時后,將發(fā)光二極管的輸入狀態(tài)取反 2、設(shè)計過程 1主程序局部選取工作方式0,進展延時5ms的初值計算 定時器/計數(shù)器的計數(shù)初值將低5位00000B送入TL0,將高8位01110000送入T

18、H0設(shè)置變量TimCnt,用來統(tǒng)計T0中斷效勞程序被調(diào)用的次數(shù),初值為0設(shè)置T0的運行形式為定時形式、工作方式為0,給TMOD提供的值為00H開啟全局中斷令EA=1,開T0中斷令ET0=1,啟動T0計數(shù)令TR0=12T0中斷效勞程序T0在0工作方式下,當產(chǎn)生計數(shù)溢出后,不具備硬件自動重載功能, 所以給T0重置計數(shù)初值,即TL0=00H,TH0=70H修改TimCnt變量的值,每調(diào)用一次其值加1判斷TimCnt的值是否超過100,假設(shè)是那么表示已經(jīng)獲得延時5s的效果將發(fā)光二極管的輸入狀態(tài)取反,否那么返回主程序,T0從初值開場重新計數(shù)3、繪制流程框圖主程序流程 定時中斷程序 4、編寫源程序代碼TIMCNT EQU30HORG0000HAJMPMAINORG000BH ;T0定時中斷程序的入口地址AJMPTIMER0ORG0030HMAIN:MOVTH0,#70H ;給T0提供計數(shù)初值MOVT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論