本文介紹的用單片機(jī)AT89C2051制作的計(jì)時(shí)器,采用倒計(jì)時(shí)方式,剩余時(shí)間一目了然。時(shí)間到了還會發(fā)出報(bào)警聲。
一、硬件電路工作原理
電路見附圖,由單片機(jī)電路和數(shù)碼顯示電路等組成。使用復(fù)位和開始兩個(gè)按鈕,用三位數(shù)碼管分別顯示分和秒。
AT89C205l、TX、R1、C1等組成單片機(jī)電路。數(shù)碼管DS1~DS3、VT1~VT3、R3~R12等組成數(shù)碼顯示電路。本機(jī)采用動態(tài)顯示方式,使用共陽數(shù)碼管,P3.3~P3.5口作數(shù)碼管的位碼輸出,通過三極管驅(qū)動數(shù)碼管。P1.0~P1.6口作段碼輸出,用以驅(qū)動數(shù)碼管的各字段。BL是自帶振蕩器的訊響器。當(dāng)P3.0輸出低電平時(shí),BL發(fā)出報(bào)警聲。
二、軟件設(shè)計(jì)
程序用C語言編寫,由主程序、定時(shí)器T0中斷服務(wù)程序、定時(shí)器T1中斷服務(wù)程序、延時(shí)子程序等模塊組成。主程序主要完成程序的初始化和對開始按鍵S1的檢測。
TO中斷服務(wù)程序由動態(tài)掃描顯示等部分組成。T0的中斷時(shí)間設(shè)置為5ms。采用三位顯示,T0每中斷一次顯示一位,3次中斷,即15ms,刷新一次數(shù)據(jù)。程序中用到三個(gè)數(shù)組:DisoTab[l0]用來存放字形碼;BitTab[3]存放位驅(qū)動碼;DispBuf[3]存放待顯示的數(shù),其中DispBuf[0]存放分鐘數(shù),DispBuf[1]、DispBuf[2]分別存放秒的十位和個(gè)位。T1中斷服務(wù)程序用作時(shí)間計(jì)數(shù)。中斷時(shí)間設(shè)置為50ms。為了獲得1秒鐘的時(shí)間。使用了變量n,T1每中斷一次n加l。當(dāng)n=20時(shí)即得到1秒的時(shí)間。程序中s作秒計(jì)數(shù),m作分計(jì)數(shù),它們的初始值為s=0。m=5。當(dāng)n計(jì)滿20時(shí)s減l(當(dāng)s為0時(shí)結(jié)果取59):當(dāng)s計(jì)滿60個(gè)數(shù)時(shí)m減1:m、s均為0說明5分鐘的定時(shí)時(shí)間到。BL發(fā)出1秒鐘報(bào)警聲。
在計(jì)時(shí)過程中。如果要提前結(jié)束計(jì)時(shí),只需按一下復(fù)位鍵S2,這時(shí)數(shù)碼顯示5:00;當(dāng)按開始鍵S1后。倒計(jì)時(shí)開始。
三、元器件選擇與安裝
DS1~DS3選共陽LED數(shù)碼管,BL選用內(nèi)部帶振蕩器的訊響器。其余元器件的參數(shù)見附圖。
先將C語言源程序用KEILC51編譯成目標(biāo)文件。即HEX文件。再用編程器將HEX文件寫入AT89C205l中。安裝時(shí),將表示分的數(shù)碼管DSI和表示秒的數(shù)碼管DS2、DS3分開一定的距離。
-
單片機(jī)
+關(guān)注
關(guān)注
6040文章
44592瀏覽量
636868 -
AT89C2051
+關(guān)注
關(guān)注
7文章
170瀏覽量
66365 -
計(jì)時(shí)器
+關(guān)注
關(guān)注
1文章
426瀏覽量
32774
發(fā)布評論請先 登錄
相關(guān)推薦
評論