蘇 暢 (黑龍江工業(yè)學(xué)院教務(wù)處,黑龍江 雞西 158100)
基于單片機(jī)控制的LCD顯示萬年歷制作
蘇 暢 (黑龍江工業(yè)學(xué)院教務(wù)處,黑龍江 雞西 158100)
利用單片機(jī)控制程序設(shè)計(jì)一個(gè)簡易的LCD萬年歷。單片機(jī)選擇能夠在線編程的AT89S52,不但能在線編程還具有8KB的內(nèi)部程序存儲(chǔ)器和256B的數(shù)據(jù)存儲(chǔ)器,其接口與指令系統(tǒng)完全與51系列單片機(jī)兼容,具有抗干擾能力強(qiáng)、操作簡單等優(yōu)點(diǎn);萬年歷數(shù)據(jù)由最常用的DS1302提供,它是一種高性能、低功耗、帶有片內(nèi)RAM的實(shí)時(shí)萬年歷電路,可以分別對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年調(diào)整功能;溫度傳感器則采用集成式的DS18B20,特點(diǎn)是采用獨(dú)特的一線接口;數(shù)據(jù)掉電存儲(chǔ)電路采用AT24C02,支持I2C總線數(shù)據(jù)傳送協(xié)議I2C。
LCD萬年歷;AT89S52;DS1302;DS18B20;AT24C02
萬年歷電路主要由6大模塊構(gòu)成:單片機(jī)控制電路,溫度傳感器電路、按鍵輸入電路、萬年歷輸出模塊電路、顯示電路、蜂鳴器提示電路。 當(dāng)溫度傳感器接受到外面的信號(hào),送入單片機(jī),單片機(jī)將接受到的信號(hào)輸出,讓它在液晶上顯示。 同時(shí)由單片機(jī)控制芯片讀取DS1302萬年歷芯片數(shù)據(jù)在液晶屏上顯示日期、時(shí)間等信息。當(dāng)秒計(jì)數(shù)計(jì)滿60時(shí)就向分進(jìn)位,分計(jì)數(shù)器計(jì)滿60分后向時(shí)計(jì)數(shù)器進(jìn)位,小時(shí)計(jì)數(shù)器按“24翻1”規(guī)律計(jì)數(shù)。時(shí)、分、秒的計(jì)數(shù)結(jié)果經(jīng)過數(shù)據(jù)處理可直接送顯示器顯示。當(dāng)計(jì)時(shí)發(fā)生誤差的時(shí)候可以用校時(shí)電路進(jìn)行校正。時(shí)計(jì)數(shù)器計(jì)滿24h后自動(dòng)向日計(jì)數(shù)器進(jìn)一,日計(jì)數(shù)器對(duì)大、小月和二月的判斷應(yīng)與當(dāng)月相應(yīng)的日期相一致,當(dāng)日計(jì)數(shù)器計(jì)滿時(shí),向月計(jì)數(shù)器進(jìn)位,月計(jì)數(shù)器計(jì)滿12月向年計(jì)數(shù)器進(jìn)位,當(dāng)年計(jì)數(shù)器計(jì)滿100時(shí)所以計(jì)數(shù)器清零。設(shè)計(jì)采用的是年、月、日和時(shí)、分、秒、星期顯示。系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)框圖
1)單片機(jī) 單片機(jī)選擇能夠在線編程的AT89S52,不但能在線編程還具有8KB的內(nèi)部程序存儲(chǔ)器和256B的數(shù)據(jù)存儲(chǔ)器,其接口與指令系統(tǒng)完全與51系列單片機(jī)兼容,具有抗干擾能力強(qiáng)、操作簡單等優(yōu)點(diǎn)。
2)萬年歷數(shù)據(jù) 萬年歷數(shù)據(jù)由最常用的DS1302提供,它是一種高性能、低功耗、帶有片內(nèi)RAM的實(shí)時(shí)萬年歷電路,可以分別對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年調(diào)整功能,工作電壓為2.5~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31*8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器,具有使用壽命長、精度高和低功耗等特點(diǎn),同時(shí)具有掉電自動(dòng)保存功能[1]。
3)溫度傳感器 采用集成式的DS18B20,特點(diǎn)是采用獨(dú)特的一線接口,電壓范圍為3.0~5.5V ,無需備用電源,測量溫度范圍為-55~125℃,精度為±0.5℃。溫度傳感器可編程的分辨率為9~12位,溫度轉(zhuǎn)換為12位數(shù)字格式[2]。
4)數(shù)據(jù)掉電存儲(chǔ)電路 采用AT24C02,支持I2C總線數(shù)據(jù)傳送協(xié)議I2C,總線協(xié)議規(guī)定任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器。任何從總線接收數(shù)據(jù)的器件為接收器。數(shù)據(jù)傳送是由產(chǎn)生串行時(shí)鐘和所有起始停止信號(hào)的主器件控制的。主器件和從器件都可以作為發(fā)送器或接收器,但由主器件控制傳送數(shù)據(jù)(發(fā)送或接收)的模式,由于A0、A1和A2可以組成000~111八種情況,即通過器件地址輸入端A0、A1和A2可以實(shí)現(xiàn)將最多8個(gè)AT24C02器件連接到總線上,通過進(jìn)行不同的配置進(jìn)行選擇器件。
5)液晶顯示電路 LCD智能型顯示模塊則是一種低功耗、低價(jià)值、低損耗的顯示器件,它不但可以顯示各式各樣的字符、漢子和圖形,同時(shí)具有可編程能力,且與單片機(jī)接口方便,基于以上優(yōu)點(diǎn),LCD智能型顯示模塊獲得了廣泛的應(yīng)用。LCD12864點(diǎn)陣液晶顯示模塊是由128*64個(gè)液晶顯示點(diǎn)組成的一個(gè)128列*64行的陣列。每個(gè)顯示點(diǎn)對(duì)應(yīng)一位二進(jìn)制數(shù),1表示亮,0表示滅。存儲(chǔ)這些點(diǎn)陣信息的RAM稱為顯示數(shù)據(jù)存儲(chǔ)器,要顯示某個(gè)圖形或漢字就是將相應(yīng)的點(diǎn)陣信息寫入到相應(yīng)的存儲(chǔ)單元中。圖形或漢字的點(diǎn)陣信息由自己設(shè)計(jì),問題的關(guān)鍵就是顯示點(diǎn)在液晶屏上的位置(行或列)與其在存儲(chǔ)器中的地址之間的關(guān)系。每個(gè)存儲(chǔ)單元存儲(chǔ)8個(gè)液晶點(diǎn)的顯示信息[3]。
6)按鍵輸入及蜂鳴器提示電路 按鍵輸入采用通用按鍵,利用單片機(jī)輸入輸出接口P1口中的P1.4、P1.5、P1.6、P1.7作為輸入,采集按鍵輸入值做出相應(yīng)的交互變化。蜂鳴器電路也可以利用一個(gè)單片機(jī)的輸出接口,控制蜂鳴器的聲音。
在控制系統(tǒng)硬件電路設(shè)計(jì)中還要注意環(huán)境因素對(duì)系統(tǒng)的干擾情況,系統(tǒng)抗干擾的措施主要有以下幾種:①電源干擾的抑制。直流電源濾波效果不好將引起電源波動(dòng),直接造成對(duì)單片機(jī)不穩(wěn)定的影響,應(yīng)該選用各種參數(shù)較好的電源以及隔離性能較好的設(shè)備來屏蔽電纜、高壓泄放元件等,防止干擾信號(hào)的傳送。②變壓器干擾的抑制。可以使用一些隔離物來對(duì)變壓器產(chǎn)生的干擾進(jìn)行屏蔽,例如使用濾波器,就能防止設(shè)備本身的干擾傳遞給電源等,減少了電磁輻射和能量的消耗。③信號(hào)線之間相互的防干擾措施。在LED的設(shè)計(jì)中,應(yīng)該充分考慮信號(hào)線引入的防干擾,盡可能讓信號(hào)線之間保持一定的距離,從而將干擾的程度降到最低。設(shè)計(jì)硬件電路中主要利用萬年歷芯片DS1302、集成式溫度傳感器DS18B20、E2PROM存儲(chǔ)芯片24C02以及普通按鍵輸入電路,其中,DS1302時(shí)鐘電路如圖2所示,溫度檢測模塊電路圖如圖3所示,按鍵輸入電路如圖4所示,24C02數(shù)據(jù)存儲(chǔ)電路如圖5所示。在進(jìn)行LED時(shí)鐘設(shè)計(jì)的時(shí)候,對(duì)于單片機(jī)的抗干擾措施要做好,才能確保程序的正常運(yùn)行。
圖2 時(shí)鐘電路 圖3 溫度檢測電路
圖4 按鍵輸入電路 圖5 24C02數(shù)據(jù)存儲(chǔ)電路
圖6 系統(tǒng)程序流程圖
系統(tǒng)軟件在51編譯環(huán)境下,使用Keil4編程,主要將程序分為6個(gè)部分,依次為LCD12864各界面顯示、時(shí)間溫度顯示、DS1302萬年歷模塊、DS18B20溫度采集模塊、警報(bào)系統(tǒng)(包括鬧鐘的聲響)、按鍵等來實(shí)現(xiàn)萬年歷功能。系統(tǒng)程序設(shè)計(jì)涉及到多個(gè)子程序,多個(gè)芯片的編程。首先必須對(duì)可編程芯片的控制指令多次調(diào)用。其次,芯片很多都有時(shí)鐘輸入端,需要晶振支持。對(duì)芯片的讀寫都需要在相應(yīng)的觸發(fā)沿到來時(shí)才能進(jìn)行。程序設(shè)計(jì)中LCD12864和DS1302的數(shù)據(jù)讀取及指令寫入函數(shù)均已在各自的頭文件中完成,在主程序中只須引用即可。由于在硬件電路方面上設(shè)計(jì)了時(shí)間調(diào)整按鍵,因此也要有對(duì)應(yīng)的時(shí)間調(diào)整程序。系統(tǒng)程序流程圖如圖6所示。
筆者設(shè)計(jì)了一種基于AT89S51單片機(jī)的萬年歷系統(tǒng),該系統(tǒng)以AT89S51單片機(jī)作為主控核心,與時(shí)鐘芯片DS1302、按鍵、LED顯示等模塊組成硬件系統(tǒng)。在硬件系統(tǒng)中設(shè)有獨(dú)立按鍵和LED顯示器,能顯示豐富的信息,根據(jù)使用者的需要可以隨時(shí)對(duì)時(shí)間進(jìn)行校準(zhǔn)、選擇時(shí)間等。該萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景和教學(xué)實(shí)用前景。
[1]郭世維,鄧飛. 單片機(jī)控制系統(tǒng)的抗干擾措施[J]. 煙臺(tái)職業(yè)學(xué)院學(xué)報(bào),2006,12(2):44-47.
[2] 成都 學(xué)友.AVR單片機(jī)開發(fā)工具的使用(一)[N]. 電子報(bào),2001-04-15.
[3]梁新平. 單片機(jī)控制的邏輯無環(huán)流可逆調(diào)速系統(tǒng)設(shè)計(jì)[A]. Proceedings of 2010 International Conference on Broadcast Technology and Multimedia Communication(Volume 4)[C]. 2010.
[編輯] 洪云飛
TN873.93
A
1673-1409(2013)22-0077-03
2013-05-12
蘇暢(1977-),女,碩士,講師,現(xiàn)主要從事計(jì)算機(jī)硬件方面的教學(xué)與研究工作。