以AT89S52單片機(jī)為控制核心,通過實(shí)時(shí)時(shí)鐘芯片DS1307和數(shù)字溫度傳感器DS18B20構(gòu)成了一個(gè)多功能的數(shù)字時(shí)鐘系統(tǒng)。詳細(xì)介紹了整個(gè)系統(tǒng)的硬件組成結(jié)構(gòu)、工作原理和系統(tǒng)的軟件程序設(shè)計(jì)。系統(tǒng)采用液晶LCD1602作為顯示器,具有實(shí)時(shí)時(shí)間與日歷顯示、環(huán)境溫度顯示、按鍵調(diào)時(shí)、鬧鈴定時(shí)等功能。軟件程序采用均采用C語言編寫,便于移植與升級(jí)。
0 引言
目前家用的數(shù)字電子鐘,多數(shù)只能顯示小時(shí)、分鐘等信息,功能單一,而且大都采用LED數(shù)碼管作為顯示器件,功耗大,不能令消費(fèi)者滿意。為此,筆者開發(fā)了一款多功的數(shù)字式電子鐘,它可以顯示年、月、日、小時(shí)、分鐘等時(shí)間信息,同時(shí)可以顯示環(huán)境的溫度信息。還具有按鍵調(diào)時(shí)、設(shè)定鬧鈴等功能。時(shí)鐘采用LCD作為顯示器,界面友好,功耗低。
1 系統(tǒng)的硬件構(gòu)成
系統(tǒng)以AT89S52單片機(jī)作為核心控制器件,外圍主要有實(shí)時(shí)時(shí)鐘芯片DS1307、溫度傳感器DS18B20等,均為串行通信器件,使得系統(tǒng)線路簡單可靠性高。系統(tǒng)結(jié)構(gòu)框圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
1.1 單片機(jī)主控模塊
系統(tǒng)采用AT89S52單片機(jī)作為控制核心。AT89S52單片機(jī)與MCS_51系列單片機(jī)產(chǎn)品兼容,采用了Flash存儲(chǔ)器結(jié)構(gòu),可以在線下載程序,易于日后的升級(jí)。它主要負(fù)責(zé)各個(gè)模塊的初始化工作;設(shè)置定時(shí)器、寄存器的初值;讀取并處理時(shí)間、溫度等信息;處理按鍵響應(yīng);控制液晶實(shí)時(shí)顯示等。
硬件電路連接如圖2所示。系統(tǒng)采用12M晶振;P0_Up為P0口上拉電阻,P0口為單片機(jī)與液晶顯示器通信的數(shù)據(jù)端口;C_reset和R_reset組成系統(tǒng)上電復(fù)位電路;P1.0~P1.2為液晶顯示器的控制信號(hào)端口;P1.3和P1.4為單片機(jī)與時(shí)鐘芯片DS1307通信的端口; P1.5為鬧鈴的控制端口;P1.6為單片機(jī)與溫度傳感器DS18B20的通信端口;P2.4~P2.7為按鍵模塊的接口。
圖2 單片機(jī)主控電路
1.2 實(shí)時(shí)時(shí)鐘日歷模塊
系統(tǒng)采用DS1307實(shí)時(shí)時(shí)鐘芯片。它是一款 總線接口的時(shí)鐘日歷芯片,片內(nèi)含有8個(gè)特殊功能寄存器和56bit的SRAM,是一種低功耗的實(shí)時(shí)時(shí)鐘芯片。
它的主要技術(shù)性能指標(biāo):具有秒、分、時(shí)、日、星期、月、年的計(jì)數(shù)功能,并且具有12小時(shí)制和24小時(shí)制的計(jì)數(shù)模式,可自動(dòng)調(diào)整每月的天數(shù),具有閏年調(diào)整的功能,具有自動(dòng)掉電保護(hù)和上電復(fù)位的功能。同時(shí)它獨(dú)立于CPU工作,不受CPU主晶振及其電容的影響,而且計(jì)時(shí)準(zhǔn)確,月累計(jì)誤差小于10秒。
電路連接如圖3。CRY2為32.768kHz的晶振,為時(shí)鐘芯片提供計(jì)時(shí)脈沖;Vbat為DS1307的備用電源,以便在沒有主電源的情況下能夠保存時(shí)間信息和一些重要的數(shù)據(jù);兩個(gè)電阻為 總線的上拉電阻。
圖3 實(shí)時(shí)時(shí)鐘日歷電路
1.3 溫度傳感器模塊
系統(tǒng)采用DS18B20作為溫度傳感器。它是美國DSLLAS公司推出的單總線數(shù)字溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、易匹配處理器等優(yōu)點(diǎn)。處理器與DS18B20通信只需要一根數(shù)據(jù)線即可,同時(shí)該數(shù)據(jù)線還可以向掛接的DS18B20供電。它可以直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)處理,與模擬溫度傳感器相比,DS18B20省去了信號(hào)調(diào)理、A/D轉(zhuǎn)換等前向通道處理電路,從而使得系統(tǒng)線路簡單,成本低廉。
它的主要技術(shù)性能指標(biāo):
(1) 電壓范圍:+3.0~+5.5V(可用數(shù)據(jù)線供電)
(2) 測溫范圍:-55℃~+125℃
(3) 通過編程可實(shí)現(xiàn)9~12位的數(shù)字讀數(shù)方式,測溫分辨率可達(dá)0.0625℃
(4) 可自設(shè)定非易失性的報(bào)警上下限值。
電路連接如圖4所示。其中DQ為數(shù)據(jù)輸入/輸出端口,R_Up 為數(shù)據(jù)線的上拉電阻,確保數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
1.4 鬧鈴模塊
系統(tǒng)采用蜂鳴器作為鬧鈴輸出。
電路連接如圖5所示。電路中采用PNP管9012來控制蜂鳴器的開關(guān),由圖可以看出當(dāng)Bell引腳為高電平時(shí),PNP管截止,蜂鳴器不工作;當(dāng)Bell引腳為低電平時(shí),PNP管導(dǎo)通,蜂鳴器工作。其中R_Bell為限流電阻。
1.5 鍵盤模塊
鍵盤模塊設(shè)置了四個(gè)按鍵:Menu_A、Menu_B、Up、Reset。其中用Menu_A來控制菜單的主模式;用Menu_B來控制菜單的副模式;Up鍵用來修改時(shí)間信息;Reset鍵返回。
電路連接如圖6所示。四個(gè)上拉電阻可以保證在沒有按鍵輸入時(shí),進(jìn)入單片機(jī)四個(gè)I/O口的按鍵狀態(tài)均為高電平,防止干擾產(chǎn)生;當(dāng)有按鍵按下時(shí),相應(yīng)的口線被拉低。軟件上采用查詢的方式,用定時(shí)器定時(shí)對(duì)按鍵狀態(tài)進(jìn)行掃描,確保系統(tǒng)的實(shí)時(shí)性。
1.6 液晶顯示模塊
系統(tǒng)中采用LCD1602作為顯示器件輸出信息。與傳統(tǒng)的LED數(shù)碼管顯示器件相比,液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等優(yōu)點(diǎn),而且不需要外加驅(qū)動(dòng)電路,現(xiàn)在液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的顯示器件了。LCD1602可以顯示2行16個(gè)字符,具有8位數(shù)據(jù)總線D0-D7,和RS、R/W、E三個(gè)控制端口,工作電壓為5V,并且?guī)в凶址麑?duì)比度調(diào)節(jié)和背光設(shè)置。
管腳功能簡介:
VL:LCD對(duì)比度調(diào)節(jié)端,電壓調(diào)節(jié)范圍為0-5V。接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,可以用一個(gè)5K的電位器來調(diào)整對(duì)比度;
RS:數(shù)據(jù)或者指令選擇端。處理器寫入指令時(shí),RS為低電平,寫入數(shù)據(jù)時(shí),RS為高電平
R/W:讀寫控制端。R/W為高電平時(shí),讀取數(shù)據(jù);R/W為低電平時(shí),寫入數(shù)據(jù)
E:LCD模塊使能信號(hào)控制端。寫數(shù)據(jù)時(shí),需要下降沿觸發(fā)模塊
D0-D7:8位數(shù)據(jù)總線,三態(tài)雙向
BLA: LED背光正極。需要背光時(shí),BLA串接一個(gè)限流電阻接VCC
BLK: LED背光負(fù)極
2 系統(tǒng)的軟件設(shè)計(jì)
系統(tǒng)的軟件設(shè)計(jì)可以分為幾個(gè)部分,首先是各個(gè)模塊的底層驅(qū)動(dòng)程序編寫,而后是系統(tǒng)聯(lián)機(jī)調(diào)試,編寫上層系統(tǒng)程序。建議在編寫和調(diào)試一個(gè)大的項(xiàng)目軟件程序時(shí),先編寫各個(gè)子模塊的驅(qū)動(dòng)程序,保證每個(gè)模塊都可以正常工作,做好備份工作,之后再來編寫整機(jī)程序。本系統(tǒng)軟件程序主要包括:液晶LCD1602的底層驅(qū)動(dòng)模塊、時(shí)鐘芯片DS1307的底層驅(qū)動(dòng)模塊、傳感器DS18B20的底層驅(qū)動(dòng)模塊、定時(shí)器0定時(shí)檢查系統(tǒng)變量模塊、定時(shí)器1按鍵掃描模塊等。鑒于篇幅,這里不作一一介紹了。系統(tǒng)的軟件流程圖如圖8。
幾點(diǎn)說明:
1 DS1307 是基于 總線接口的時(shí)鐘芯片,軟件上完全與 總線完全兼容。
2 DS18B20 是One-wire總線接口的芯片,軟件上對(duì)時(shí)序的要求特別高。
3 鍵盤處理模塊,可以設(shè)定成邊沿觸發(fā)或者電平觸發(fā)方式。
整個(gè)系統(tǒng)的軟件設(shè)計(jì)均采用C語言開發(fā),因此這些器件的底層程序均可以移植到其它系統(tǒng)中,這就是采用C語言開發(fā)的最大的優(yōu)點(diǎn)。
3 總結(jié)
系統(tǒng)經(jīng)組裝、調(diào)試后,可以穩(wěn)定運(yùn)行,目前正在筆者寢室作為時(shí)鐘日歷。采用串行器件具有線路簡單、體積小、價(jià)格低等優(yōu)點(diǎn)。同時(shí)該系統(tǒng)稍加改造,就可以作為工業(yè)實(shí)時(shí)采集中的一個(gè)模塊。系統(tǒng)軟件設(shè)計(jì)均采用C語言編寫,具有模塊化的思想,可以方便的移植到其它的系統(tǒng)中。采用AT89S52單片機(jī),方便系統(tǒng)升級(jí)。
評(píng)論