發光二極管的閃爍顯示_第1頁
發光二極管的閃爍顯示_第2頁
發光二極管的閃爍顯示_第3頁
發光二極管的閃爍顯示_第4頁
發光二極管的閃爍顯示_第5頁
已閱讀5頁,還剩30頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

發光二極管的閃爍顯示第1頁,共35頁,2023年,2月20日,星期一案例功能 定時器T0做定時器使用工作在方式0下,控制發光二極管,使發光二極管以亮0.5s后熄0.5s再亮再熄如此反復的形式進行閃爍。本案例中fosc=11.0592MHZ,閃爍周期為1s。第2頁,共35頁,2023年,2月20日,星期一相關知識1、發光二極管的工作特性 這個我們在前面以做過介紹,這里就不重述了,要求二極管的初始狀態是熄滅的。2、定時器T0、T1的基本結構,工作原理3、定時/計數器0和定時/計數器1的應用設計第3頁,共35頁,2023年,2月20日,星期一2、定時器T0、T1的基本結構,工作原理T0、T1的組成結構T0/T1的工作方式T0、T1的控制寄存器計算初值的裝入第4頁,共35頁,2023年,2月20日,星期一T0、T1的組成結構

T0、T1的結構如圖6-1所示,圖中i=0、1,表示T0和T1的參數標記.例如TRi就表示T0的控制位TR0和T1的控制位TR1;Ti為單片機的外部引腳T0/T1;INTi也為單片機的外部引腳INT0/INT1;TFi為中斷標志位TF0/TF1,C/T、GATE為特殊功能寄存器TMOD中的兩位,TRi、TFi為特殊功能寄存器TCON中的二位。從圖中可以看出,T0、T1主要由計數輸入、計數器、計數溢出管理以及控制邏輯等幾個部分組成。第5頁,共35頁,2023年,2月20日,星期一圖6-1T0、T1的基本結構第6頁,共35頁,2023年,2月20日,星期一定時/計數器的輸入有兩路,由特殊功能寄存器TMOD的C/T位來管理。C/T=0時,由振蕩頻率的12分頻后的脈沖進行計數,定時/計數器工作于定時模式,實現的是定時功能,所以定時器的實質是對機器周期進行計數的計數器;C/T=1時,對Ti引腳輸入的外部脈沖進行計數,定時/計數器工作于計數模式,實現計數器功能。Ti作計數器使用時,引腳Ti用作外部脈沖輸入引腳,不能作普通的I/O端口使用。其它情況下,可作普通的I/O端口使用。計數溢出管理具有使特殊功能寄存器TCON的TFi位自動置1和自動清0的功能。當計數器計數滿發生溢出(即計到模值)時,自動使TFi位置1,CPU響應了對應的定時中斷并且進入到中斷服務程序中后,TFi位被自動清0。TFi位也可以用程序指令清0和置1。第7頁,共35頁,2023年,2月20日,星期一控制邏輯由受控開關、特殊功能寄存器TCON的TRi位、TMOD的GATE位、引腳INTi以及門電路組成。控制C=1時,受控開關閉合,計數脈沖被送往計數器計數器對計數脈沖計數(計數器運行),控制C=0時,控制開關斷開,計數器停止計數。從圖中可以看出:控制C=(GATE∨INTi)∧TRi

所以, GATE=0時,控制C=TRi GATE=1且TRi=1時,控制C=INTi

實際應用中,常將GATE設為0,用TRi控制計數器的開啟和停止。當需要測量外部脈沖寬度時,可將GATE設為1,TRi設為1,外部脈沖從INTi引腳引入,用外部脈沖控制計數器的開啟和停止。第8頁,共35頁,2023年,2月20日,星期一T0/T1的工作方式 定時/計數器有4種工作方式:方式0、方式1、方式2、方式3。除方式3外,T0和T1的工作狀態完全相同,在不同的工作下其計數器的構成不同。在本案例中我們選用工作方式0,所以只對進行詳細的介紹,其它的方式在以后的案例中涉及到了我們再做介紹。 方式0:13位的工作方式,定時/計數器的結構與圖6-1所示的基本結構相同,其中的計數器為13位的計數器,它由Tli的低5位和Thi的8位組成,Tli的高3位無效。第9頁,共35頁,2023年,2月20日,星期一定時/計數器工作時,計數脈沖輸入至TLi,Thi作加1計數,當TLi的低5位發生由11111B變至00000B時,Thi加1。由TLi和Thi組成的13位計數器滿后回0時硬件電路自動將TFi置1。第10頁,共35頁,2023年,2月20日,星期一T0、T1的控制寄存器

T0、T1的運行受控于特殊功能寄存器TCON和TMOD(1)定時器控制寄存器(TCON)字節地址:88HTCON

TF1

TR1

TF0

TR0

IE1

IT1

IE0IT0位地址

8F

8E

8D

8C

8B

8A

89

88圖6-3TCON中的結構圖其中,TF1、TR1用于定時/計數器1,TF0、TR0用于定時/計數器0,IE1、IT1用于外部中斷1,IE0、IT0用于外部中斷0。第11頁,共35頁,2023年,2月20日,星期一各位的含義如下:TFi位:定時/計數器回0標志位,也稱作定時/計數器中斷請求標志位。對應的計數器計數滿回0時,硬件電路自動將TFi位置1,并向CPU提出中斷申請,CPU響應對應的定時中斷,并進入中斷服務程序中后,硬件電路自動將TFi清0。TRi位:定時/計數器運行控制位。它與GATE位、INTi引腳一起組合來控制定時/計數器的開啟和停止。其詳細的控制關系請參考“T0、T1的組成結構”中的有關部分。IEi位:外部中斷請求標志。IEi=0外部中斷INTi無中斷請求。IEi=1外部中斷INTi有中斷請求。第12頁,共35頁,2023年,2月20日,星期一

CPU響應了INTi中斷后,硬件電路自動將IEi位清0ITi位:外部中斷觸發方式控制位。ITi=0外部中斷INTi用低電平方式觸發ITi=1 外部中斷INTi用下跳沿方式觸發單片機復位時,TCON的值為00H,這就意味著上電時T0、T1均被停止。其中TR0和TR1分別用于控制T0和T1的啟動和停止,TF0和TF1用于標識T0和T1是否產生溢出中斷請求。第13頁,共35頁,2023年,2月20日,星期一(2)、定時器方式寄存器TMODTMOD用于控制T0、T1的運行模式和工作方式,字節地址位89H第14頁,共35頁,2023年,2月20日,星期一M1、M0位:工作方式選擇控制位。它們的取值組合用來確定定時/計數器的工作方式。M1、M0的取值組合與定時/計數器的工作方式之間的關系如表所示。

M1M0方式功能說明

00方式013位計數方式

01方式116位計數方式

10方式28位自動重載初值方式

11方式3將T0分成2個8位的定時計數器(T1無此功能)GATE位:門控位。與特殊功能寄存器TCON的TRi位以及外部引腳INTi的狀態組合起來控制定時/計數器Ti開啟和停止,其詳細的控制方法在“T0與T1的組成結構”中作了介紹,這里不再累述第15頁,共35頁,2023年,2月20日,星期一計算初值的裝入⑴計數初值的求法⑵計數初值的裝入第16頁,共35頁,2023年,2月20日,星期一⑴計數初值的求法

T0、T1開啟時,它們的計數器都是在計數初值的基礎上作加1計數,當計數滿回0時,TFi置1。也就是說,當計數器計到模值時,TFi被置1,計數器發生溢出。此時,計數次數N與計數器的模值M以及計數初值X之間有如下關系M=N+X

不同計數方式下,計數器的模值是不同的,各種計數方式下的模值如下:第17頁,共35頁,2023年,2月20日,星期一對于模值為M的計數器,如果要計數N次后發生計數溢出(TFi位置1),則其計數初值X應為:X=M-N定時/計數器作計數器使用時,一般是已知計數次數要求計數初值,我們可以用上式計算得出計數初值。定時/計數器作定時器使用時,一般是已知定時時間t,要確定計數初值X。由于定時器的實質是對機器周期進行計數,每隔一個機器周期其計數值就加1,因此,若要定時t時間,則計數器的計數次數N為:N=t/MC=(fosc×t)/12式中的MC為機器周期,fosc為晶振的振蕩頻率。計數初值為:X=M-N=M-(fosc×t)/12對于模值為M的計數器,其計數次數N的取值范圍為:1≤N≤M第18頁,共35頁,2023年,2月20日,星期一【例6-1】設單片機的晶振頻率fosc=12MHz,現擬定用T0作1ms定時器,試求其在方式0下的計數初值X。【解】定時器的定時長為1ms,則定時器的計數次數N為:N=(fosc×t)/12=(12×106×1×10-3)/12=1000方式0的模值為2000H。所以,計數初值X=M-N=2000H-1000=1C18H第19頁,共35頁,2023年,2月20日,星期一⑵計數初值的裝入 不同的工作方式下,定時/計數器的構成不同,因此其初值的裝入方法也不完全相同。在方式0下,計數器為13位的計數器,它由TLi的低5位及THi構成,計數器的低5位二進制數為TLi中低5二進制數,高8位二進制數為THi中的二進制數。因此,在裝入計數初值時必須將初值的低5位數裝入TLi的低5位中,將初值的高8位數裝入THi中,其具體方法是:將計數初值轉換成13位的二進制數,截取其高8位二進制數并傳送至THi中。截取其低5位二進制數,并在這5位二進制數左端(高位)補上3位任意二進制數后行成一個字節的二進制數,再將此二進制數裝入TLi中。實際應用中,一般是高3位補0。第20頁,共35頁,2023年,2月20日,星期一例如,假定通過計算求得計數初值為1234H,T0采用方式0工作,則把初值1234H轉換成13位二進制數為:1001000110100B。截取其高8位二進制數為10010001B=91H。截取其低5位二進制數為10100B,高3位補上0后為00010100B=14H。因此,TH0中應裝入91H,TL0中應裝入14H在方式0下,將計數初裝入T0的計數器中的程序段為:MOV TL0,#14H ;計數初值的低5位數裝入TL0中MOV TH0,#91H ;計數初值的高8位數裝入TH0中第21頁,共35頁,2023年,2月20日,星期一3、定時/計數器0和定時/計數器1的應用設計定時/計數器的應用設計主要是軟件設計,包括初始化程序的設計和執行程序的設計兩個部分。1)初始化程序的設計2)執行程序的設計第22頁,共35頁,2023年,2月20日,星期一初始化程序的設計初始化程序一般安排在系統復位后所要執行的模塊程序中,有時為了提高系統的穩定性,也可以將初始化程序的一部分代碼安排在系統反復執行的主程序中。初始化程序所要完成的工作是,設置定時/計數器的運行模式、工作方式、計數初值,如果執行程序被安排在定時中斷服務程序中,則在初始化程序中還要包括設置定時中斷的優先級、開定時中斷等。也就是設特殊功能寄存器TMOD、TCON、THi、TLi以及IE、IP的值。在實際應用中,一般對TCON、IE、IP三個特殊功能寄存器采用位操作,只設置與T0或T1有關的位的值,以避免改變其它功能部件的工作狀態。第23頁,共35頁,2023年,2月20日,星期一【例6-2】某實際應用系統需用定時/計數器T0對外部輸入脈沖進行計數,每計數滿1000個脈沖后,系統就進入定時中斷服務程序處相應的處理,現擬定T0采用高優先級中斷,試編寫出對T0作初始化的子程序INIT_T0。【分析】依題要求,執行程序放在定時中斷服務程序中,T0初始化程序中除了要設置TMOD、TCON、TH0和TL0的值外,還要開中斷和設置定時中斷的優先級。T0的計數值N為:N=1000=3E8H28<N<213故可采用方式0、方式1進行計數,現采用方式1計數,則計數初值X為:X=216-1000=10000H-3E8H=FC18H因此初始化程序中TL0應裝入初始值18H,TH0中應裝入初始值FCH。T0作計數器使用,TMOD應設為:XXX0101B,現取05H。定時中斷的優先級,所以PT0=1第24頁,共35頁,2023年,2月20日,星期一【程序清單】INIT_T0: MOV TMOD,#05H ;設置T0的工作模式:計數模式、方 ;式1 MOV TL0,#18H ;設置T0的計數初值:1000 MOV TH0,#0FCH SETB PT0 ;T0采用高優先級中斷

SETB EA ;開全局中斷

SETB ET0 ;開定時/計數T0中斷

SETB TR0 ;啟動定時/計數器T0 RET第25頁,共35頁,2023年,2月20日,星期一執行程序的設計執行程序所要完成的任務是,定時/計數器中的計數器計數滿發生溢出(即定時器定時到或者計數器計數到)時,CPU所要完成的工作。這部分程序無固定的模式,要根據具體情況來作具體處理。計數器計數滿發生溢出時,硬件電路會自動地將TFi位置1,并向CPU請求中斷。所以執行程序可以放在定時中斷服務程序中,也可以放在主程序中,通過查詢TFi位值來決定執行程序是否被執行。不過這種結構將要占用CPU的大量時間,單片機的實時性將會下降,在實際應用中盡量少用。將執行程序放在定時中斷服務程序中,執行程序的編寫實際上就是定時中斷服務程序的設計的問題。在設計中要注意以下幾方面問題:第26頁,共35頁,2023年,2月20日,星期一①除方式2外,其它工作方式下,定時/計數器都不具備重裝初值的功能。如果定時/計數器在計數滿發生溢出時,還需計數,則在定時中斷服務程序中需重裝計數初值。②在方式2下,定時/計數器常作波特率發生器,此時不必編寫定時中斷服務程序,初始化程序中也不必開定時中斷。③有關中斷服務程序入口地址。000BH是T0的中斷服務程序的入口地址,001BH是T1的中斷服務程序的入口地址,當T0工作在方式3時,以TH0作計數器的定時中斷服務程序的入口地址也是001BH。中斷服務程序一般不放在上述入口地址開始的存儲空間中而是放在0050H以后的存儲空間中,在上述入口地址處一般放一條無條件轉移指令,將程序轉移到對應的中斷服務程序中去。第27頁,共35頁,2023年,2月20日,星期一硬件電路用P1口的8個引腳分別驅動8個發光二極管,二極管的陰極端接P1的各引腳,陽極端通過1K限流電阻接高電平,采用RC復位電路,內部晶振電路第28頁,共35頁,2023年,2月20日,星期一軟件編程1、編程思路①采用T0定時/計數寄存器②設置T0的運行模式為定時模式,工作方式為0方式③設置定時時間為5ms④在T0定時中斷服務程序調用100次獲得5s延時后,將發光二極管的輸入狀態取反第29頁,共35頁,2023年,2月20日,星期一

2、設計過程1)主程序部分①選取工作方式0,進行延時5ms的初值計算定時器/計數器的計數初值=8192-5000*11.0592/12=3854=0111000000000B將低5位00000B送入TL0,將高8位01110000送入TH0②設置變量TimCnt,用來統計T0中斷服務程序被調用的次數,初值為0③設置T0的運行模式為定時模式、工作方式為0,給TMOD提供的值為00H④開啟全局中斷令EA=1,開T0中斷令ET0=1,啟動T0計數令TR0=1第30頁,共35頁,2023年,2月20日,星期一2)T0中斷服務程序①T0在0工作方式下,當產生計數溢出后,不具備硬件自動重載功能,所以給T0重置計數初值,即TL0=00H,TH0=70H②修改TimCnt變量的值,每調用一次其值加1③判斷Tim

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論