單片機(jī)時(shí)鐘電路原理圖
下面以一個(gè)實(shí)際的時(shí)鐘電路來說明定時(shí)器的軟件編程方法,時(shí)鐘是最為常見的顯示時(shí)、分、秒為單位的計(jì)時(shí)工具,它是典型的應(yīng)用代表。
時(shí)鐘的最小計(jì)時(shí)單位是秒,但使用單片機(jī)定時(shí)器來進(jìn)行計(jì)時(shí),若使用6.0MHz的晶振,即使按工作方式1工作,最大的計(jì)時(shí)時(shí)間也只能到131ms,所以我們可把每個(gè)定時(shí)時(shí)間取125ms,這樣定時(shí)器溢出8次(125ms╳8=1000ms)就得到最小的計(jì)時(shí)單位秒。而要實(shí)現(xiàn)8次計(jì)數(shù)用軟件方法實(shí)現(xiàn)是輕而易舉的。
電路中使用定時(shí)器1,以工作方式1工作,定時(shí)器進(jìn)行125ms定時(shí)。采用中斷方法進(jìn)行
溢出次數(shù)的累計(jì),當(dāng)計(jì)滿8次即得到1秒的計(jì)時(shí)。
一個(gè)時(shí)鐘的計(jì)時(shí)累加,要實(shí)現(xiàn)分、時(shí)的進(jìn)位,要用到多種進(jìn)制,秒、分、時(shí)中的進(jìn)位是十進(jìn)制,秒向分進(jìn)位和分想時(shí)進(jìn)位卻是六十進(jìn)制,而每天又有十二小時(shí)制或二十四小時(shí)制,它們分別又是十二進(jìn)制和二十四進(jìn)制。從秒到分和從分到小時(shí)可以通過軟件累加和數(shù)值比較方法實(shí)現(xiàn)。
在單片機(jī)的內(nèi)部RAM中,需要設(shè)置顯示緩沖區(qū),顯示的時(shí)、分、秒值是從顯示緩沖區(qū)中取出的,在RAM中設(shè)置四個(gè)單元作為顯示緩沖區(qū),分別是7AH、7BH、7CH。為使電路和原理敘述方便,這里不顯示秒值,秒的進(jìn)位我們通過閃爍分值實(shí)現(xiàn)。這樣一共有四位LED分別顯示時(shí)和分值。同時(shí)時(shí)鐘都需要校準(zhǔn)的。在程序中還需設(shè)置顯示碼表,要顯示的數(shù)值通過查表指令將顯示用的真正碼值送到LED上。電路中用單片機(jī)AT89C2051的P3.4和P3.5兩個(gè)I/O口外接微動(dòng)開關(guān)來實(shí)現(xiàn)時(shí)和分的校正,每按一次小時(shí)或分值加1,連續(xù)按下數(shù)值累計(jì)下去,實(shí)現(xiàn)時(shí)鐘的校準(zhǔn)。
在電路中還設(shè)置了一個(gè)蜂鳴器,用作簡(jiǎn)單報(bào)時(shí)用,如可設(shè)早上7:30分起床,中午1點(diǎn)30分再有起床報(bào)時(shí),每次響時(shí)1分鐘,響1秒,停2秒的方式,而不是連續(xù)響鈴。這個(gè)程序采用12小時(shí)制,為此,要在程序中設(shè)置相應(yīng)的標(biāo)志,以利于主程序識(shí)別。同樣計(jì)時(shí)程序中還會(huì)有幾個(gè)相關(guān)的標(biāo)志,主要是控制程序流的轉(zhuǎn)向。程序中都作了較詳細(xì)的注釋,這里不再贅述(見附錄)。
圖5中,硬件電路還是以低價(jià)的AT89C2051單片機(jī)為微處理單元,這個(gè)芯片兼容C51指令系統(tǒng),在C51上編寫的程序,無需任何修改即可方便地移植到這個(gè)芯片上來。以P1口
作為L(zhǎng)ED的字段位驅(qū)動(dòng)輸出,秒的“進(jìn)位”采用分值閃爍提示,亮0.5秒,熄0.5秒。,P3.1—P3.3用于位驅(qū)動(dòng),使用動(dòng)態(tài)掃描方式顯示,每位LED的顯示時(shí)間10—25ms之間均可,掃描頻率不能太高,否則每位LED顯示的時(shí)間過短,亮度太低,不易于觀看,以肉眼不感覺到LED閃爍為宜。為了直觀,驅(qū)動(dòng)輸出沒有采用集成電路,而是使用了分立元件—三極管,但工作原理卻是一致的。
這個(gè)電路結(jié)構(gòu)決定LED采用共陽極的數(shù)碼管,可以采用LQ5101BS普通的發(fā)光二極管,驅(qū)動(dòng)三極管可采用易得的2SA1015和2SC1815等型號(hào),當(dāng)然也可使用象S9012,S9013,S9014,2N5401,2N5555等小功率三極管,其它器件沒有特殊要求。為便于實(shí)驗(yàn),單片機(jī)AT89C2051可采用DIP20P插座,程序編制好后,調(diào)試無錯(cuò),即可燒寫到AT89C2051中,值得一提的是,AT89C2051是Falsh程序存儲(chǔ)器,程序可反復(fù)擦寫,對(duì)于做實(shí)驗(yàn)是非常方便的。
評(píng)論