基于51單片機秒表的程序設計
1.設計目的:
(1)利用單片機定時(shí)器中斷和定時(shí)器計數方式實(shí)現秒、分定時(shí)。
(2)通過(guò)LED顯示程序的調整,熟悉8155與8051,8155與LED的接口技術(shù),熟悉LED動(dòng)態(tài)顯示的控制過(guò)程。
(3)通過(guò)鍵盤(pán)程序的調整,熟悉8155與矩陣式鍵盤(pán)的接口技術(shù),熟悉鍵盤(pán)掃描原理。
(4)通過(guò)閱讀和調試簡(jiǎn)易秒表整體程序,學(xué)會(huì )如何編制含LED動(dòng)態(tài)顯示、鍵盤(pán)掃描和定時(shí)器中斷等多種功能的綜合程序,初步體會(huì )大型程序的編制和調試技巧。
2. 設計步驟與要求
(1)要求:以8位LED右邊2位顯示秒,左邊6位顯示0,實(shí)現秒表計時(shí)顯示。以4×4矩陣鍵盤(pán)的KE0、KE1、KE2等3鍵分別實(shí)現啟動(dòng)、停止、清零等功能。
(2)方法:用單片機定時(shí)器T0中斷方式,實(shí)現1秒定時(shí);利用單片機定時(shí)器1方式3計數,實(shí)現60秒計數。用動(dòng)態(tài)顯示方式實(shí)現秒表計時(shí)顯示,用鍵盤(pán)掃描方式取得KE0、KE1、KE2的鍵值,用鍵盤(pán)處理程序實(shí)現秒表的啟動(dòng)、停止、清零等功能。
(3)軟件設計:軟件整體設計思路是以鍵盤(pán)掃描和鍵盤(pán)處理作為主程序,LED動(dòng)態(tài)顯示作為子程序。二者間的聯(lián)系是:主程序查詢(xún)有無(wú)按鍵,無(wú)按鍵時(shí),調用二次LED動(dòng)態(tài)顯示子程序(約延時(shí)8ms)后再回到按鍵查詢(xún)狀態(tài),不斷循環(huán);有按鍵時(shí),LED動(dòng)態(tài)顯示子程序作為按鍵防抖延時(shí)被連續調用二次(約延時(shí)16ms),待按鍵處理程序執行完后,再回到按鍵查詢(xún)狀態(tài),同時(shí)兼顧了按鍵掃描取值的準確性和LED動(dòng)態(tài)顯示的穩定性。秒定時(shí)采用定時(shí)器T0中斷方式進(jìn)行,60秒計數由定時(shí)器1采用方式3完成,中斷及計數的開(kāi)啟與關(guān)閉受控于按鍵處理程序。由上述設計思路可設計出軟件流程圖如圖1.1所示。
(5)程序編制:編程時(shí)置KE0鍵為“啟動(dòng)”,置KE1鍵為“停止”,置KE2鍵為“清零”,因按鍵較少,在處理按鍵值時(shí)未采用散轉指令“JMP”,而是采用條件轉移指令“CJNE”,每條指令后緊跟著(zhù)一條無(wú)條件跳轉指令“AJMP”,轉至相應的按鍵處理程序,如不是上述3個(gè)按鍵值則跳回按鍵查詢(xún)狀態(tài)。8位LED顯示的數據由顯示緩沖區30H~37H單元中的數據決定,順序是從左至右,動(dòng)態(tài)顯示時(shí),每位顯示持續時(shí)間為1ms,1ms延時(shí)由軟件實(shí)現,8位顯示約耗時(shí)8ms。主程序、按鍵查詢(xún)子程序采用第0組工作寄存器,顯示子程序采用第1組工作寄存器。1秒定時(shí)采用定時(shí)器T0方式1中斷,每50ms中斷一次,用21H做50 ms計數單元,每20次為一個(gè)循環(huán),計滿(mǎn)20次,60秒計數單元(20H)計數1次。60秒計數采用定時(shí)器T1方式2計數,計數脈沖采用軟件置位、復位P3.5口的方法實(shí)現,用20H單元做60秒計數單元,如定時(shí)器T1溢出,則20H單元被清零,20H單元的數據采用十進(jìn)制計數,該數據被拆成個(gè)位和十位兩個(gè)數據后分別送至顯示緩沖區的30H、31H單元。
按照上述思路可編制源程序如下:
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP CONT
燃氣報警器相關(guān)文章:燃氣報警器原理
評論