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