本文介紹用單片機制作的定時自控電路實現(xiàn)八路定時控制,非常適合于學(xué)校等單位作為作息控制信號或其他定時控制用,有興趣的朋友不妨一試。
該電路由一片AT89C2051單片機、6位LED數(shù)碼管、6個按鍵、11.0952NHz晶振等組成,并接了1片74HC374擴展了5個輸出口。
一、硬件設(shè)計
電路原理圖見圖1。整個電路由顯示電路、鍵盤電路、輸入輸出接口及CPU組成。
顯示電路由U2、U3、Vl~V7和六位共陽數(shù)碼管組成(二位一組,分別顯示時、分、秒)。其中,U2為BCD-7段譯碼器CD4511,通過單片機U11的P1.4~P1.7,將要顯示的字符BCD碼輸入至U2。經(jīng)U2譯碼后,輸出相應(yīng)的筆段驅(qū)動LED數(shù)碼管。
LED數(shù)碼管顯示采用動態(tài)掃描方式。在某一時刻只有一只數(shù)碼管點亮。點亮的位置信號由U3(74HCl38)輸出。來自單片機U1的3位數(shù)碼管位置編碼信號,通過U3輸出為相應(yīng)的數(shù)碼管驅(qū)動信號,并通過V1~V6放大后,驅(qū)動相應(yīng)的數(shù)碼管。六位數(shù)碼管接至端口JP4上。其中,端口的③一⑧腳接各數(shù)碼管的公共陽極:⑨腳接數(shù)碼管的時、分、秒的分隔點腳;(16)~(10)腳接各數(shù)碼管的段顯示腳(A、B、C、D、E、F、G)。由于U2只能輸出7段筆段碼,因而數(shù)碼管的時、分、秒分隔點是通過V7來驅(qū)動的。當(dāng)需要點亮分隔點時,只要在U1的P1.3輸出高電平即可。
鍵盤電路也采用掃描方式,并巧妙地利用了顯示時的數(shù)碼管驅(qū)動的位置信號。也就是在顯示的同時,判斷按鍵的狀態(tài)。方法是:在顯示某一數(shù)碼管時,判斷Ul的P3.7口的狀態(tài)。如果P3.7為高電平,說明沒有按鍵按下:如果為低電平,則說明相應(yīng)的按鍵按下。這時,通過讀U1的P3口中P3.3-P3.5口的值。就可判斷是哪個鍵按下。然后調(diào)用相應(yīng)的處理程序進行處理。
擴展輸出口利用顯示的間隙,將輸出數(shù)據(jù)通過U4(74HC374)鎖存輸出。既不影響顯示功能,也使輸出信號穩(wěn)定。擴展輸出過程如下:首先在P3口輸出XX110XXX,U3的⑨腳輸出低電平,接著將要輸出的數(shù)據(jù)寫到U1的P1.3~P1.7口,然后在P3口輸出XXlllXXX,U3的⑨腳輸出高電平,這樣,輸出數(shù)據(jù)就被鎖存在U4的00~04中了。
二、軟件設(shè)計
程序主要包括:定時中斷服務(wù)程序、時鐘顯示程序、鍵盤掃描處理程序、八路時控程序,主程序流程見圖2。
定時中斷服務(wù)程序為系統(tǒng)提供標(biāo)準(zhǔn)時鐘。采用TO中斷方式。其流程圖見圖3。待顯示的6位時鐘(時、分、秒各兩位)以壓縮BCD碼形式存放在2lH~23H中,低位在前,高位在后。定時中斷服務(wù)子程序不斷刷新2lH~23H中的內(nèi)容。時鐘顯示子程序驅(qū)動顯示標(biāo)準(zhǔn)時鐘(電子表),時間顯示至秒。
八路時控程序采用循環(huán)調(diào)用方式。調(diào)用過程中,檢測21H~23H的時鐘信息,若與設(shè)定的定時起控時間相符。則輸出至P1口相應(yīng)管腳。
-
AT89C2051
+關(guān)注
關(guān)注
7文章
170瀏覽量
66254 -
定時電路
+關(guān)注
關(guān)注
2文章
41瀏覽量
21572
發(fā)布評論請先 登錄
相關(guān)推薦
評論