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