現(xiàn)在社會上各行各業(yè)和單片機(jī)相關(guān)的聯(lián)系越來越緊密,單片機(jī)的應(yīng)用在各個行業(yè)得到了廣泛的應(yīng)用。采用單片機(jī)實現(xiàn)數(shù)字鐘的智能化能最大限度地滿足了各種消費者的不同需求,為人們的日常生活提供了比舊式鬧鐘更多更好更實用的方便功能,具有明顯的經(jīng)濟(jì)利益和社會效益,它必將受到消費者的普遍歡迎。我們可以通過單片機(jī)程序設(shè)計,來完成實現(xiàn)諸多的操作功能要求。本文就基于單片機(jī)的智能數(shù)字鐘系統(tǒng)的設(shè)計與研究概況作一一介紹。
摘要:本文主要介紹了智能數(shù)字鐘系統(tǒng)的設(shè)計與研究。本系統(tǒng)主要由AT89C51單片機(jī)控制,考慮到能夠由軟件來完成的任務(wù)就盡可能用軟件來實現(xiàn),以降低硬件成本,簡化硬件結(jié)構(gòu),節(jié)儉占用空間,所以本數(shù)字鬧鐘設(shè)計使用較少的硬件。
關(guān)鍵詞:單片機(jī),數(shù)字鐘系統(tǒng),AT89C51
1工作流程
當(dāng)電源接通時,通過整流濾波穩(wěn)壓電路向各個電路送電,啟動各電路工作。發(fā)光二極管是用來指示當(dāng)前數(shù)碼管顯示的是何種狀態(tài),數(shù)碼管是用來顯示時鐘和鬧鐘的秒、分、時和顯示脈沖周期的個十百千位和鬧鐘狀態(tài)。通過按鍵S1順序切換顯示時鐘和鬧鐘的秒、分、時和切換顯示脈沖周期的個十百千位和鬧鐘狀態(tài),通過按鍵S2改變鬧鐘開關(guān)狀態(tài)和設(shè)置時鐘和鬧鐘的秒、分、時和脈沖周期的個十百千位的數(shù)值。
2硬件設(shè)計與分析
2.1數(shù)碼管顯示電路
本設(shè)計的數(shù)碼顯示電路是由兩個共陽極的數(shù)碼管組成。本設(shè)計的兩個數(shù)碼管的數(shù)據(jù)端a,b,c,d,e,f,g,dp各經(jīng)過一個560的限流電阻與AT89C51芯片P0口的P1.0,P1.1,P1.2,P1.3,P1.4,P1.5,P1.6,P1.7順序?qū)?yīng)連接。數(shù)碼管是采用共陽極的接法,用P2.0,P2.1分別控制兩個數(shù)碼管亮滅,可以方便地用軟件實現(xiàn)動態(tài)掃描顯示的功能。用兩個9012的三極管和兩個1K的電阻做驅(qū)動和限流的作用。由于驅(qū)動和數(shù)據(jù)端都有限流保護(hù)電阻,可以防止因電流過大而擊穿或燒毀三極管、數(shù)碼管和AT89C51芯片。由于數(shù)碼管是采用共陽極的接法,所以AT89C51芯片是用灌電流點亮和控制數(shù)碼管的,對AT89C51芯片來說可以減輕芯片驅(qū)動的負(fù)擔(dān)。
2.2發(fā)光二極管控制電路
8個發(fā)光二極管的正極直接與5V的電源連接,負(fù)極各連接一個560限流電阻與AT89C51芯片P1口的P1.0~P1.7對應(yīng)連接,可以方便地對每一個發(fā)光二極管進(jìn)行亮滅控制。由于是用灌電流驅(qū)動發(fā)光二極管和都帶有限流保護(hù)電阻,所以可以減輕AT89C51芯片的驅(qū)動負(fù)擔(dān)和因電流過大而擊穿或燒毀發(fā)光二極管和AT89C51芯片的現(xiàn)象。每個發(fā)光二極管都可以被單獨或同時電亮,可以指示多種不同的操作狀態(tài)。
2.3按鍵輸入電路
用兩個機(jī)械按鍵一端與AT89C51芯片P2口的P2.2,P2.3連接,一端與地連接。通過按鍵按下和松開可以實現(xiàn)低電平和高電平的輸入,再與軟件對端口置1和延時輸入等抗干擾措施。按鍵輸入可以完成多種不同控制操作,可以改變操作數(shù)和狀態(tài)。
2.4蜂鳴器電路
控制端與AT89C51芯片的P2口的P2.4連接,由一個9012三極管進(jìn)行驅(qū)動。蜂鳴器可以操作或系統(tǒng)運行中,經(jīng)過配合軟件控制可以發(fā)出不同響聲或音樂鈴音,完成定時報警或錯誤操作報警,完成聽覺指示的功能。
3軟件設(shè)計與分析
3.1系統(tǒng)資源分配
。1)定時器:定時器0用作時鐘定時,按方式1工作,每隔50MS溢出中斷一次。定時器1用作脈沖定時,按方式2工作,每隔50uM溢出中斷一次。
。2)片內(nèi)RAM及標(biāo)志位的分配與定義:
0C_RN:R0,R1,R2,R3,R4,R5,R6,R7:寄存器0區(qū)
R0,R1:做指針使用;R3:做長延時DELAY1中使用;R4:用做響鈴次數(shù);R5,R6:做延時2.5MS延時DELAY中使用;R7:做長按鍵延時使用
1C_RN:R3,R4,R5,R6,R7:寄存器1區(qū)
R3,R4:脈沖周期個十位百千位存儲單元;R5,R6:鬧鐘懶人模式LANREN再響延時;R7:做時鐘1秒計數(shù)使用
RAM:20H.0,20H.1,20H.2:20H.0為鬧鐘開關(guān)標(biāo)志,20H.1為響鈴標(biāo)志;20H.2為鬧鐘懶人模式中間標(biāo)志
30H,31H,32H,33H:發(fā)光二極管指示目前數(shù)碼管顯示秒,分,時,鬧鐘狀態(tài);34H,35H,36H,37H:時鐘秒,分,時,鬧鐘狀態(tài)存儲單元;38H,39H,3AH:鬧鐘秒,分,時存儲單元;40H:按鍵中間儲存單元;41H,42H:S1,S2散轉(zhuǎn)處理偏移值儲存單元
3.2軟件流程
(1)主程序:初始化與鍵盤監(jiān)控,還有內(nèi)存自檢。
。2)計時:為定時器0、1中斷服務(wù)子程序,完成刷新計時緩沖區(qū)的功能。
系統(tǒng)計時是采用定時器與軟件循環(huán)相結(jié)合的方法。定時器0每隔50MS溢出中斷一次,則循環(huán)20次延時時間為1S,重復(fù)60次為1分,分再計時60次為1小時,小時計時24次則時間重新回到00:00:00。
系統(tǒng)使用12MHZ的晶振,定時器0工作在方式1,則計算50MS定時初值為:定時時間=(2E16-定時器0初值)*(12/Fosc)。因此,定時器0初值為3CB0H,即TH0=3CH,TL0=0B0H。在計算時還應(yīng)該考慮的兩個問題:第一,定時器溢出產(chǎn)生中斷請求,CPU并不一定立即響應(yīng)中斷,而可能需要一個中斷響應(yīng)時間之后才能響應(yīng)中斷,中斷響應(yīng)時間大約為3~8個機(jī)器周期。所以將初值重設(shè)為3CB7H~3CBFH可以滿足精度要求。第二,時間是按十進(jìn)制遞增,而單片機(jī)只有二進(jìn)制加法指令,因此加法指令計時必須進(jìn)行二-十進(jìn)制轉(zhuǎn)換。
初始化程序入口:置R0和R1指針指向時鐘的秒,R0和R1指針是指向當(dāng)前顯示的單元,F(xiàn)R0存放R0指針的首地址,LR1是存放超出顯示范圍。JPBM_S1和JPBM_S2是存放S1和S2按鍵的散轉(zhuǎn)指令的偏移值。
。3)時鐘設(shè)置和鬧鐘設(shè)置:由鍵盤輸入設(shè)置當(dāng)前時間與定時啟鬧時間。
將R0和R1指針重置指向秒,并初始化程序入口。對S1和S2的散轉(zhuǎn)指令的偏移值一樣,但FR0首地址不一樣,鬧鐘FR0=38H,時鐘FR0=34H。為了能夠達(dá)到期望設(shè)定的時間開始走時,在時鐘設(shè)置中應(yīng)先停止定時器計時。在退出設(shè)置時應(yīng)重新啟動定時器開始計時。
。4)顯示:完成兩位的動態(tài)顯示。
。5)鍵盤掃描:判斷是否有按鍵按下,并做相應(yīng)處理。
動態(tài)顯示是將兩個數(shù)碼管輪流點亮的,這是由于人眼存在視覺暫留效應(yīng),所以只要每位顯示間隔時間足夠短就可以給人同時顯示的感覺,一般是取2.5MS的延時時間。按鍵結(jié)構(gòu)與特點:本設(shè)計是用機(jī)械式的按鍵。在按下或釋放時,由于機(jī)械彈性作用的影響,通常伴隨有一定時間的觸點機(jī)械抖動,然后其觸點才穩(wěn)定下來.抖動時間的長短與開關(guān)的機(jī)械特性有關(guān),一般為5~10ms。
。6)定時比較響鈴:判斷是否啟鬧時間到否,如時間到,則啟動蜂鳴。
結(jié)語
本論文主要論述數(shù)字鬧鐘的軟、硬件設(shè)計的方法。能計時顯示時、分、秒和鬧鐘狀態(tài),能重新設(shè)定時間參數(shù)。有鬧鐘提示和脈沖方波輸出功能。使用匯編語言程序編程實現(xiàn)其設(shè)計的各項功能。本數(shù)字鬧鐘設(shè)計可以使用多種風(fēng)格的程序來實現(xiàn),主要是對按鍵輸入和顯示輸出的處理,本設(shè)計風(fēng)格對按鍵輸入和顯示輸出處理是使用散轉(zhuǎn)的方式處理的,散轉(zhuǎn)方式的處理易于地址化,模塊化,統(tǒng)一化和擴(kuò)展。
參考文獻(xiàn)
[1]陳忠平.基于proteus的51系列單片機(jī)設(shè)計與仿真[M].北京:電子工業(yè)出版社,2012.
[2]陳明熒.8051單片機(jī)課程設(shè)計實訓(xùn)教材[M].北京:清華大學(xué)出版社,2004.
[3]吳金戊.8051單片機(jī)實踐與應(yīng)用[M].北京:清華大學(xué)出版社,2002.
轉(zhuǎn)載請注明來自:http://www.jinnzone.com/dianzijishulw/26818.html