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

下載本文檔

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

文檔簡介

發(fā)光二極管的閃爍顯示,案例功能,定時器T0做定時器使用工作在方式0下,控制發(fā)光二極管,使發(fā)光二極管以亮0.5s后熄0.5s再亮再熄如此反復的形式進行閃爍。本案例中fosc=11.0592MHZ,閃爍周期為1s。,相關(guān)知識,1、發(fā)光二極管的工作特性這個我們在前面以做過介紹,這里就不重述了,要求二極管的初始狀態(tài)是熄滅的。2、定時器T0、T1的基本結(jié)構(gòu),工作原理3、定時/計數(shù)器0和定時/計數(shù)器1的應用設(shè)計,2、定時器T0、T1的基本結(jié)構(gòu),工作原理,T0、T1的組成結(jié)構(gòu)T0/T1的工作方式T0、T1的控制寄存器計算初值的裝入,T0、T1的組成結(jié)構(gòu),T0、T1的結(jié)構(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、GATE為特殊功能寄存器TMOD中的兩位,TRi、TFi為特殊功能寄存器TCON中的二位。從圖中可以看出,T0、T1主要由計數(shù)輸入、計數(shù)器、計數(shù)溢出管理以及控制邏輯等幾個部分組成。,圖6-1T0、T1的基本結(jié)構(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端口使用。其它情況下,可作普通的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=(GATEINTi)TRi所以,GATE=0時,控制C=TRiGATE=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ù)器的結(jié)構(gòu)與圖6-1所示的基本結(jié)構(gòu)相同,其中的計數(shù)器為13位的計數(shù)器,它由Tli的低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和TMOD(1)定時器控制寄存器(TCON)字節(jié)地址:88H,圖6-3TCON中的結(jié)構(gòu)圖,其中,TF1、TR1用于定時/計數(shù)器1,TF0、TR0用于定時/計數(shù)器0,IE1、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的組成結(jié)構(gòu)”中的有關(guān)部分。IEi位:外部中斷請求標志。IEi=0外部中斷INTi無中斷請求。IEi=1外部中斷INTi有中斷請求。,CPU響應了INTi中斷后,硬件電路自動將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é)地址位89H,M1、M0位:工作方式選擇控制位。它們的取值組合用來確定定時/計數(shù)器的工作方式。M1、M0的取值組合與定時/計數(shù)器的工作方式之間的關(guān)系如表所示。,GATE位:門控位。與特殊功能寄存器TCON的TRi位以及外部引腳INTi的狀態(tài)組合起來控制定時/計數(shù)器Ti開啟和停止,其詳細的控制方法在“T0與T1的組成結(jié)構(gòu)”中作了介紹,這里不再累述,計算初值的裝入,計數(shù)初值的求法計數(shù)初值的裝入,計數(shù)初值的求法,T0、T1開啟時,它們的計數(shù)器都是在計數(shù)初值的基礎(chǔ)上作加1計數(shù),當計數(shù)滿回0時,TFi置1。也就是說,當計數(shù)器計到模值時,TFi被置1,計數(shù)器發(fā)生溢出。此時,計數(shù)次數(shù)N與計數(shù)器的模值M以及計數(shù)初值X之間有如下關(guān)系M=NX不同計數(shù)方式下,計數(shù)器的模值是不同的,各種計數(shù)方式下的模值如下:,對于模值為M的計數(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,因此,若要定時t時間,則計數(shù)器的計數(shù)次數(shù)N為:N=t/MC=(fosct)/12式中的MC為機器周期,fosc為晶振的振蕩頻率。計數(shù)初值為:X=MN=M(fosct)/12對于模值為M的計數(shù)器,其計數(shù)次數(shù)N的取值范圍為:1NM,【例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ù)初值時必須將初值的低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ù)為:1001000110100B。截取其高8位二進制數(shù)為10010001B=91H。截取其低5位二進制數(shù)為10100B,高3位補上0后為00010100B=14H。因此,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ù)初值,如果執(zhí)行程序被安排在定時中斷服務程序中,則在初始化程序中還要包括設(shè)置定時中斷的優(yōu)先級、開定時中斷等。也就是設(shè)特殊功能寄存器TMOD、TCON、THi、TLi以及IE、IP的值。在實際應用中,一般對TCON、IE、IP三個特殊功能寄存器采用位操作,只設(shè)置與T0或T1有關(guān)的位的值,以避免改變其它功能部件的工作狀態(tài)。,【例6-2】某實際應用系統(tǒng)需用定時/計數(shù)器T0對外部輸入脈沖進行計數(shù),每計數(shù)滿1000個脈沖后,系統(tǒng)就進入定時中斷服務程序處相應的處理,現(xiàn)擬定T0采用高優(yōu)先級中斷,試編寫出對T0作初始化的子程序INIT_T0?!痉治觥恳李}要求,執(zhí)行程序放在定時中斷服務程序中,T0初始化程序中除了要設(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,#0FCHSETBPT0;T0采用高優(yōu)先級中斷SETBEA;開全局中斷SETBET0;開定時/計數(shù)T0中斷SETBTR0;啟動定時/計數(shù)器T0RET,執(zhí)行程序的設(shè)計,執(zhí)行程序所要完成的任務是,定時/計數(shù)器中的計數(shù)器計數(shù)滿發(fā)生溢出(即定時器定時到或者計數(shù)器計數(shù)到)時,CPU所要完成的工作。這部分程序無固定的模式,要根據(jù)具體情況來作具體處理。計數(shù)器計數(shù)滿發(fā)生溢出時,硬件電路會自動地將TFi位置1,并向CPU請求中斷。所以執(zhí)行程序可以放在定時中斷服務程序中,也可以放在主程序中,通過查詢TFi位值來決定執(zhí)行程序是否被執(zhí)行。不過這種結(jié)構(gòu)將要占用CPU的大量時間,單片機的實時性將會下降,在實際應用中盡量少用。將執(zhí)行程序放在定時中斷服務程序中,執(zhí)行程序的編寫實際上就是定時中斷服務程序的設(shè)計的問題。在設(shè)計中要注意以下幾方面問題:,除方式2外,其它工作方式下,定時/計數(shù)器都不具備重裝初值的功能。如果定時/計數(shù)器在計數(shù)滿發(fā)生溢出時,還需計數(shù),則在定時中斷服務程序中需重裝計數(shù)初值。在方式2下,定時/計數(shù)器常作波特率發(fā)生器,此時不必編寫定時中斷服務程序,初始化程序中也不必開定時中斷。有關(guān)中斷服務程序入口地址。000BH是T0的中斷服務程序的入口地址,001BH是T1的中斷服務程序的入口地址,當T0工作在方式3時,以TH0作計數(shù)器的定時中斷服務程序的入口地址也是001BH。中斷服務程序一般不放在上述入口地址開始的存儲空間中而是放在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ù)初值=8192-5000*11.0592/12=3854=0111000000000B將低5位00000B送入TL0,將高8位01110000送入TH0設(shè)置變量TimCnt,用來統(tǒng)計T0中斷服務程序被調(diào)用的次數(shù),初值為0設(shè)置T0的運行模式為定時模式、工作方式為0,給TMOD提供的值為00H開啟全局中斷令EA=1,開T0中斷令ET0=1,啟動T0計數(shù)令TR0=1,2)T0中斷服務程序T0在0工作方式下,當產(chǎn)生計數(shù)溢出后,不具備硬件自動重載功能,所以給T0重置計數(shù)初值,即TL0=00H,TH0=70H修改TimCnt變量的值,每調(diào)用一次其值加1判斷TimCnt的值是否超過100,若是則表示已經(jīng)獲得延時5s的效果將發(fā)光二極管的輸入狀態(tài)取反,否則返回主程序,T0從初值開始重新計數(shù),3、繪制流程框圖,主程序流程,定時中斷程序,4、編寫源程序代碼,TIMCNTEQU30HORG0000HAJMPMAINORG000BH;T0定時中斷程序的入口地址AJMPTIMER0ORG0030HMAIN:MOVTH0,#70H;給T0提供計數(shù)初值MOV

溫馨提示

  • 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

提交評論