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