發(fā)光二極管的閃爍顯.ppt
《發(fā)光二極管的閃爍顯.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《發(fā)光二極管的閃爍顯.ppt(35頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
發(fā)光二極管的閃爍顯示 案例功能 定時(shí)器T0做定時(shí)器使用工作在方式0下 控制發(fā)光二極管 使發(fā)光二極管以亮0 5s后熄0 5s再亮再熄如此反復(fù)的形式進(jìn)行閃爍 本案例中fosc 11 0592MHZ 閃爍周期為1s 相關(guān)知識(shí) 1 發(fā)光二極管的工作特性這個(gè)我們?cè)谇懊嬉宰鲞^介紹 這里就不重述了 要求二極管的初始狀態(tài)是熄滅的 2 定時(shí)器T0 T1的基本結(jié)構(gòu) 工作原理3 定時(shí) 計(jì)數(shù)器0和定時(shí) 計(jì)數(shù)器1的應(yīng)用設(shè)計(jì) 2 定時(shí)器T0 T1的基本結(jié)構(gòu) 工作原理 T0 T1的組成結(jié)構(gòu)T0 T1的工作方式T0 T1的控制寄存器計(jì)算初值的裝入 T0 T1的組成結(jié)構(gòu) T0 T1的結(jié)構(gòu)如圖6 1所示 圖中i 0 1 表示T0和T1的參數(shù)標(biāo)記 例如TRi就表示T0的控制位TR0和T1的控制位TR1 Ti為單片機(jī)的外部引腳T0 T1 INTi也為單片機(jī)的外部引腳INT0 INT1 TFi為中斷標(biāo)志位TF0 TF1 C T GATE為特殊功能寄存器TMOD中的兩位 TRi TFi為特殊功能寄存器TCON中的二位 從圖中可以看出 T0 T1主要由計(jì)數(shù)輸入 計(jì)數(shù)器 計(jì)數(shù)溢出管理以及控制邏輯等幾個(gè)部分組成 圖6 1T0 T1的基本結(jié)構(gòu) 定時(shí) 計(jì)數(shù)器的輸入有兩路 由特殊功能寄存器TMOD的C T位來管理 C T 0時(shí) 由振蕩頻率的12分頻后的脈沖進(jìn)行計(jì)數(shù) 定時(shí) 計(jì)數(shù)器工作于定時(shí)模式 實(shí)現(xiàn)的是定時(shí)功能 所以定時(shí)器的實(shí)質(zhì)是對(duì)機(jī)器周期進(jìn)行計(jì)數(shù)的計(jì)數(shù)器 C T 1時(shí) 對(duì)Ti引腳輸入的外部脈沖進(jìn)行計(jì)數(shù) 定時(shí) 計(jì)數(shù)器工作于計(jì)數(shù)模式 實(shí)現(xiàn)計(jì)數(shù)器功能 Ti作計(jì)數(shù)器使用時(shí) 引腳Ti用作外部脈沖輸入引腳 不能作普通的I O端口使用 其它情況下 可作普通的I O端口使用 計(jì)數(shù)溢出管理具有使特殊功能寄存器TCON的TFi位自動(dòng)置1和自動(dòng)清0的功能 當(dāng)計(jì)數(shù)器計(jì)數(shù)滿發(fā)生溢出 即計(jì)到模值 時(shí) 自動(dòng)使TFi位置1 CPU響應(yīng)了對(duì)應(yīng)的定時(shí)中斷并且進(jìn)入到中斷服務(wù)程序中后 TFi位被自動(dòng)清0 TFi位也可以用程序指令清0和置1 控制邏輯由受控開關(guān) 特殊功能寄存器TCON的TRi位 TMOD的GATE位 引腳INTi以及門電路組成 控制C 1時(shí) 受控開關(guān)閉合 計(jì)數(shù)脈沖被送往計(jì)數(shù)器計(jì)數(shù)器對(duì)計(jì)數(shù)脈沖計(jì)數(shù) 計(jì)數(shù)器運(yùn)行 控制C 0時(shí) 控制開關(guān)斷開 計(jì)數(shù)器停止計(jì)數(shù) 從圖中可以看出 控制C GATE INTi TRi所以 GATE 0時(shí) 控制C TRiGATE 1且TRi 1時(shí) 控制C INTi實(shí)際應(yīng)用中 常將GATE設(shè)為0 用TRi控制計(jì)數(shù)器的開啟和停止 當(dāng)需要測量外部脈沖寬度時(shí) 可將GATE設(shè)為1 TRi設(shè)為1 外部脈沖從INTi引腳引入 用外部脈沖控制計(jì)數(shù)器的開啟和停止 T0 T1的工作方式 定時(shí) 計(jì)數(shù)器有4種工作方式 方式0 方式1 方式2 方式3 除方式3外 T0和T1的工作狀態(tài)完全相同 在不同的工作下其計(jì)數(shù)器的構(gòu)成不同 在本案例中我們選用工作方式0 所以只對(duì)進(jìn)行詳細(xì)的介紹 其它的方式在以后的案例中涉及到了我們?cè)僮鼋榻B 方式0 13位的工作方式 定時(shí) 計(jì)數(shù)器的結(jié)構(gòu)與圖6 1所示的基本結(jié)構(gòu)相同 其中的計(jì)數(shù)器為13位的計(jì)數(shù)器 它由Tli的低5位和Thi的8位組成 Tli的高3位無效 定時(shí) 計(jì)數(shù)器工作時(shí) 計(jì)數(shù)脈沖輸入至TLi Thi作加1計(jì)數(shù) 當(dāng)TLi的低5位發(fā)生由11111B變至00000B時(shí) Thi加1 由TLi和Thi組成的13位計(jì)數(shù)器滿后回0時(shí)硬件電路自動(dòng)將TFi置1 T0 T1的控制寄存器 T0 T1的運(yùn)行受控于特殊功能寄存器TCON和TMOD 1 定時(shí)器控制寄存器 TCON 字節(jié)地址 88H 圖6 3TCON中的結(jié)構(gòu)圖 其中 TF1 TR1用于定時(shí) 計(jì)數(shù)器1 TF0 TR0用于定時(shí) 計(jì)數(shù)器0 IE1 IT1用于外部中斷1 IE0 IT0用于外部中斷0 各位的含義如下 TFi位 定時(shí) 計(jì)數(shù)器回0標(biāo)志位 也稱作定時(shí) 計(jì)數(shù)器中斷請(qǐng)求標(biāo)志位 對(duì)應(yīng)的計(jì)數(shù)器計(jì)數(shù)滿回0時(shí) 硬件電路自動(dòng)將TFi位置1 并向CPU提出中斷申請(qǐng) CPU響應(yīng)對(duì)應(yīng)的定時(shí)中斷 并進(jìn)入中斷服務(wù)程序中后 硬件電路自動(dòng)將TFi清0 TRi位 定時(shí) 計(jì)數(shù)器運(yùn)行控制位 它與GATE位 INTi引腳一起組合來控制定時(shí) 計(jì)數(shù)器的開啟和停止 其詳細(xì)的控制關(guān)系請(qǐng)參考 T0 T1的組成結(jié)構(gòu) 中的有關(guān)部分 IEi位 外部中斷請(qǐng)求標(biāo)志 IEi 0外部中斷INTi無中斷請(qǐng)求 IEi 1外部中斷INTi有中斷請(qǐng)求 CPU響應(yīng)了INTi中斷后 硬件電路自動(dòng)將IEi位清0ITi位 外部中斷觸發(fā)方式控制位 ITi 0外部中斷INTi用低電平方式觸發(fā)ITi 1外部中斷INTi用下跳沿方式觸發(fā)單片機(jī)復(fù)位時(shí) TCON的值為00H 這就意味著上電時(shí)T0 T1均被停止 其中TR0和TR1分別用于控制T0和T1的啟動(dòng)和停止 TF0和TF1用于標(biāo)識(shí)T0和T1是否產(chǎn)生溢出中斷請(qǐng)求 2 定時(shí)器方式寄存器TMODTMOD用于控制T0 T1的運(yùn)行模式和工作方式 字節(jié)地址位89H M1 M0位 工作方式選擇控制位 它們的取值組合用來確定定時(shí) 計(jì)數(shù)器的工作方式 M1 M0的取值組合與定時(shí) 計(jì)數(shù)器的工作方式之間的關(guān)系如表所示 GATE位 門控位 與特殊功能寄存器TCON的TRi位以及外部引腳INTi的狀態(tài)組合起來控制定時(shí) 計(jì)數(shù)器Ti開啟和停止 其詳細(xì)的控制方法在 T0與T1的組成結(jié)構(gòu) 中作了介紹 這里不再累述 計(jì)算初值的裝入 計(jì)數(shù)初值的求法 計(jì)數(shù)初值的裝入 計(jì)數(shù)初值的求法 T0 T1開啟時(shí) 它們的計(jì)數(shù)器都是在計(jì)數(shù)初值的基礎(chǔ)上作加1計(jì)數(shù) 當(dāng)計(jì)數(shù)滿回0時(shí) TFi置1 也就是說 當(dāng)計(jì)數(shù)器計(jì)到模值時(shí) TFi被置1 計(jì)數(shù)器發(fā)生溢出 此時(shí) 計(jì)數(shù)次數(shù)N與計(jì)數(shù)器的模值M以及計(jì)數(shù)初值X之間有如下關(guān)系M N X不同計(jì)數(shù)方式下 計(jì)數(shù)器的模值是不同的 各種計(jì)數(shù)方式下的模值如下 對(duì)于模值為M的計(jì)數(shù)器 如果要計(jì)數(shù)N次后發(fā)生計(jì)數(shù)溢出 TFi位置1 則其計(jì)數(shù)初值X應(yīng)為 X M N定時(shí) 計(jì)數(shù)器作計(jì)數(shù)器使用時(shí) 一般是已知計(jì)數(shù)次數(shù)要求計(jì)數(shù)初值 我們可以用上式計(jì)算得出計(jì)數(shù)初值 定時(shí) 計(jì)數(shù)器作定時(shí)器使用時(shí) 一般是已知定時(shí)時(shí)間t 要確定計(jì)數(shù)初值X 由于定時(shí)器的實(shí)質(zhì)是對(duì)機(jī)器周期進(jìn)行計(jì)數(shù) 每隔一個(gè)機(jī)器周期其計(jì)數(shù)值就加1 因此 若要定時(shí)t時(shí)間 則計(jì)數(shù)器的計(jì)數(shù)次數(shù)N為 N t MC fosc t 12式中的MC為機(jī)器周期 fosc為晶振的振蕩頻率 計(jì)數(shù)初值為 X M N M fosc t 12對(duì)于模值為M的計(jì)數(shù)器 其計(jì)數(shù)次數(shù)N的取值范圍為 1 N M 例6 1 設(shè)單片機(jī)的晶振頻率fosc 12MHz 現(xiàn)擬定用T0作1ms定時(shí)器 試求其在方式0下的計(jì)數(shù)初值X 解 定時(shí)器的定時(shí)長為1ms 則定時(shí)器的計(jì)數(shù)次數(shù)N為 N fosc t 12 12 106 1 10 3 12 1000方式0的模值為2000H 所以 計(jì)數(shù)初值X M N 2000H 1000 1C18H 計(jì)數(shù)初值的裝入 不同的工作方式下 定時(shí) 計(jì)數(shù)器的構(gòu)成不同 因此其初值的裝入方法也不完全相同 在方式0下 計(jì)數(shù)器為13位的計(jì)數(shù)器 它由TLi的低5位及THi構(gòu)成 計(jì)數(shù)器的低5位二進(jìn)制數(shù)為TLi中低5二進(jìn)制數(shù) 高8位二進(jìn)制數(shù)為THi中的二進(jìn)制數(shù) 因此 在裝入計(jì)數(shù)初值時(shí)必須將初值的低5位數(shù)裝入TLi的低5位中 將初值的高8位數(shù)裝入THi中 其具體方法是 將計(jì)數(shù)初值轉(zhuǎn)換成13位的二進(jìn)制數(shù) 截取其高8位二進(jìn)制數(shù)并傳送至THi中 截取其低5位二進(jìn)制數(shù) 并在這5位二進(jìn)制數(shù)左端 高位 補(bǔ)上3位任意二進(jìn)制數(shù)后行成一個(gè)字節(jié)的二進(jìn)制數(shù) 再將此二進(jìn)制數(shù)裝入TLi中 實(shí)際應(yīng)用中 一般是高3位補(bǔ)0 例如 假定通過計(jì)算求得計(jì)數(shù)初值為1234H T0采用方式0工作 則把初值1234H轉(zhuǎn)換成13位二進(jìn)制數(shù)為 1001000110100B 截取其高8位二進(jìn)制數(shù)為10010001B 91H 截取其低5位二進(jìn)制數(shù)為10100B 高3位補(bǔ)上0后為00010100B 14H 因此 TH0中應(yīng)裝入91H TL0中應(yīng)裝入14H在方式0下 將計(jì)數(shù)初裝入T0的計(jì)數(shù)器中的程序段為 MOVTL0 14H 計(jì)數(shù)初值的低5位數(shù)裝入TL0中MOVTH0 91H 計(jì)數(shù)初值的高8位數(shù)裝入TH0中 3 定時(shí) 計(jì)數(shù)器0和定時(shí) 計(jì)數(shù)器1的應(yīng)用設(shè)計(jì) 定時(shí) 計(jì)數(shù)器的應(yīng)用設(shè)計(jì)主要是軟件設(shè)計(jì) 包括初始化程序的設(shè)計(jì)和執(zhí)行程序的設(shè)計(jì)兩個(gè)部分 1 初始化程序的設(shè)計(jì) 2 執(zhí)行程序的設(shè)計(jì) 初始化程序的設(shè)計(jì) 初始化程序一般安排在系統(tǒng)復(fù)位后所要執(zhí)行的模塊程序中 有時(shí)為了提高系統(tǒng)的穩(wěn)定性 也可以將初始化程序的一部分代碼安排在系統(tǒng)反復(fù)執(zhí)行的主程序中 初始化程序所要完成的工作是 設(shè)置定時(shí) 計(jì)數(shù)器的運(yùn)行模式 工作方式 計(jì)數(shù)初值 如果執(zhí)行程序被安排在定時(shí)中斷服務(wù)程序中 則在初始化程序中還要包括設(shè)置定時(shí)中斷的優(yōu)先級(jí) 開定時(shí)中斷等 也就是設(shè)特殊功能寄存器TMOD TCON THi TLi以及IE IP的值 在實(shí)際應(yīng)用中 一般對(duì)TCON IE IP三個(gè)特殊功能寄存器采用位操作 只設(shè)置與T0或T1有關(guān)的位的值 以避免改變其它功能部件的工作狀態(tài) 例6 2 某實(shí)際應(yīng)用系統(tǒng)需用定時(shí) 計(jì)數(shù)器T0對(duì)外部輸入脈沖進(jìn)行計(jì)數(shù) 每計(jì)數(shù)滿1000個(gè)脈沖后 系統(tǒng)就進(jìn)入定時(shí)中斷服務(wù)程序處相應(yīng)的處理 現(xiàn)擬定T0采用高優(yōu)先級(jí)中斷 試編寫出對(duì)T0作初始化的子程序INIT T0 分析 依題要求 執(zhí)行程序放在定時(shí)中斷服務(wù)程序中 T0初始化程序中除了要設(shè)置TMOD TCON TH0和TL0的值外 還要開中斷和設(shè)置定時(shí)中斷的優(yōu)先級(jí) T0的計(jì)數(shù)值N為 N 1000 3E8H28 N 213故可采用方式0 方式1進(jìn)行計(jì)數(shù) 現(xiàn)采用方式1計(jì)數(shù) 則計(jì)數(shù)初值X為 X 216 1000 10000H 3E8H FC18H因此初始化程序中TL0應(yīng)裝入初始值18H TH0中應(yīng)裝入初始值FCH T0作計(jì)數(shù)器使用 TMOD應(yīng)設(shè)為 XXX0101B 現(xiàn)取05H 定時(shí)中斷的優(yōu)先級(jí) 所以PT0 1 程序清單 INIT T0 MOVTMOD 05H 設(shè)置T0的工作模式 計(jì)數(shù)模式 方 式1MOVTL0 18H 設(shè)置T0的計(jì)數(shù)初值 1000MOVTH0 0FCHSETBPT0 T0采用高優(yōu)先級(jí)中斷SETBEA 開全局中斷SETBET0 開定時(shí) 計(jì)數(shù)T0中斷SETBTR0 啟動(dòng)定時(shí) 計(jì)數(shù)器T0RET 執(zhí)行程序的設(shè)計(jì) 執(zhí)行程序所要完成的任務(wù)是 定時(shí) 計(jì)數(shù)器中的計(jì)數(shù)器計(jì)數(shù)滿發(fā)生溢出 即定時(shí)器定時(shí)到或者計(jì)數(shù)器計(jì)數(shù)到 時(shí) CPU所要完成的工作 這部分程序無固定的模式 要根據(jù)具體情況來作具體處理 計(jì)數(shù)器計(jì)數(shù)滿發(fā)生溢出時(shí) 硬件電路會(huì)自動(dòng)地將TFi位置1 并向CPU請(qǐng)求中斷 所以執(zhí)行程序可以放在定時(shí)中斷服務(wù)程序中 也可以放在主程序中 通過查詢TFi位值來決定執(zhí)行程序是否被執(zhí)行 不過這種結(jié)構(gòu)將要占用CPU的大量時(shí)間 單片機(jī)的實(shí)時(shí)性將會(huì)下降 在實(shí)際應(yīng)用中盡量少用 將執(zhí)行程序放在定時(shí)中斷服務(wù)程序中 執(zhí)行程序的編寫實(shí)際上就是定時(shí)中斷服務(wù)程序的設(shè)計(jì)的問題 在設(shè)計(jì)中要注意以下幾方面問題 除方式2外 其它工作方式下 定時(shí) 計(jì)數(shù)器都不具備重裝初值的功能 如果定時(shí) 計(jì)數(shù)器在計(jì)數(shù)滿發(fā)生溢出時(shí) 還需計(jì)數(shù) 則在定時(shí)中斷服務(wù)程序中需重裝計(jì)數(shù)初值 在方式2下 定時(shí) 計(jì)數(shù)器常作波特率發(fā)生器 此時(shí)不必編寫定時(shí)中斷服務(wù)程序 初始化程序中也不必開定時(shí)中斷 有關(guān)中斷服務(wù)程序入口地址 000BH是T0的中斷服務(wù)程序的入口地址 001BH是T1的中斷服務(wù)程序的入口地址 當(dāng)T0工作在方式3時(shí) 以TH0作計(jì)數(shù)器的定時(shí)中斷服務(wù)程序的入口地址也是001BH 中斷服務(wù)程序一般不放在上述入口地址開始的存儲(chǔ)空間中而是放在0050H以后的存儲(chǔ)空間中 在上述入口地址處一般放一條無條件轉(zhuǎn)移指令 將程序轉(zhuǎn)移到對(duì)應(yīng)的中斷服務(wù)程序中去 硬件電路 用P1口的8個(gè)引腳分別驅(qū)動(dòng)8個(gè)發(fā)光二極管 二極管的陰極端接P1的各引腳 陽極端通過1K限流電阻接高電平 采用RC復(fù)位電路 內(nèi)部晶振電路 軟件編程 1 編程思路 采用T0定時(shí) 計(jì)數(shù)寄存器 設(shè)置T0的運(yùn)行模式為定時(shí)模式 工作方式為0方式 設(shè)置定時(shí)時(shí)間為5ms 在T0定時(shí)中斷服務(wù)程序調(diào)用100次獲得5s延時(shí)后 將發(fā)光二極管的輸入狀態(tài)取反 2 設(shè)計(jì)過程 1 主程序部分 選取工作方式0 進(jìn)行延時(shí)5ms的初值計(jì)算定時(shí)器 計(jì)數(shù)器的計(jì)數(shù)初值 8192 5000 11 0592 12 3854 0111000000000B將低5位00000B送入TL0 將高8位01110000送入TH0 設(shè)置變量TimCnt 用來統(tǒng)計(jì)T0中斷服務(wù)程序被調(diào)用的次數(shù) 初值為0 設(shè)置T0的運(yùn)行模式為定時(shí)模式 工作方式為0 給TMOD提供的值為00H 開啟全局中斷令EA 1 開T0中斷令ET0 1 啟動(dòng)T0計(jì)數(shù)令TR0 1 2 T0中斷服務(wù)程序 T0在0工作方式下 當(dāng)產(chǎn)生計(jì)數(shù)溢出后 不具備硬件自動(dòng)重載功能 所以給T0重置計(jì)數(shù)初值 即TL0 00H TH0 70H 修改TimCnt變量的值 每調(diào)用一次其值加1 判斷TimCnt的值是否超過100 若是則表示已經(jīng)獲得延時(shí)5s的效果將發(fā)光二極管的輸入狀態(tài)取反 否則返回主程序 T0從初值開始重新計(jì)數(shù) 3 繪制流程框圖 主程序流程 定時(shí)中斷程序 4 編寫源程序代碼 TIMCNTEQU30HORG0000HAJMPMAINORG000BH T0定時(shí)中斷程序的入口地址AJMPTIMER0ORG0030HMAIN MOVTH0 70H 給T0提供計(jì)數(shù)初值MOVTL0 00HSETBET0 允許T0定時(shí)中斷SETBEA 開啟全局中斷SETBTR0 啟動(dòng)T0定時(shí)MAIN1 ORLPCON 1 讓CPU進(jìn)入休眠狀態(tài)SJMPMAIN1 TIMER0 MOVTL0 00H 重置計(jì)數(shù)初值MOVTH0 70HINCTIMCNT 計(jì)數(shù)值加1MOVA TIMCNTADDA 256 100 9CH 100的補(bǔ)碼JNCTM1MOVTIMCNT 0CPLP1TM1 RETIEND 應(yīng)用總結(jié) 1 定時(shí)中斷的一般步驟1 初始化程序設(shè)置之度2 執(zhí)行程序的編寫2 定時(shí) 計(jì)數(shù)和CPU并行工作 既可以降低CPU的功耗 也可以提高CPU的工作效率- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 發(fā)光二極管 閃爍
鏈接地址:http://italysoccerbets.com/p-6438376.html