宋慧超,王秀清
(內(nèi)蒙古民族大學(xué)物理與電子信息學(xué)院,內(nèi)蒙古 通遼 028043)
基于DS1302的多功能數(shù)字鐘設(shè)計(jì)
宋慧超1,王秀清2
(內(nèi)蒙古民族大學(xué)物理與電子信息學(xué)院,內(nèi)蒙古通遼028043)
提出一種多功能數(shù)字鐘的設(shè)計(jì)方案,以STC89C52單片機(jī)為控制系統(tǒng)的核心,利用DS1302、LCD1602以及DS18B20等芯片顯示時(shí)間、日期、溫度,通過按鍵模塊修正時(shí)間、設(shè)置鬧鐘.系統(tǒng)在proteus下進(jìn)行仿真驗(yàn)證,實(shí)現(xiàn)了所述功能.
單片機(jī);DS18B20;LCD1602;DC1302
圖1 總體框圖Fig.1 Overall block diagram
數(shù)字鐘是一種通過電子電路實(shí)現(xiàn)計(jì)時(shí)功能的鐘表.與傳統(tǒng)的機(jī)械時(shí)鐘相比,數(shù)字鐘觀察時(shí)間更為方便,它不采用機(jī)械驅(qū)動(dòng),壽命也更長(zhǎng),與石英鐘相比,則更具準(zhǔn)確性,其誤差可低至正負(fù)百萬分之5/秒.數(shù)字鐘可以通過集成電路、專用時(shí)鐘芯片及外圍電路或者單片機(jī)來實(shí)現(xiàn)[1-4],其中利用單片機(jī)實(shí)現(xiàn)的多功能數(shù)字鐘以結(jié)構(gòu)簡(jiǎn)單、精度高、體積小、成本低等優(yōu)點(diǎn)受到人們的普遍歡迎,具有很高的實(shí)用性和廣泛的應(yīng)用前景.
多功能數(shù)字鐘具有時(shí)鐘與溫度顯示的功能、調(diào)時(shí)功能、鬧鐘設(shè)定功能等[5].因此數(shù)字鐘的硬件部分應(yīng)包括時(shí)間顯示電路、按鍵電路、鬧鈴指示電路、溫度傳感器電路以及液晶顯示電路,總的系統(tǒng)框圖如圖1所示.
核心控制器選用的是STC公司生產(chǎn)的STC89C52單片機(jī),它是一種增強(qiáng)型的51單片機(jī),具有8K系統(tǒng)內(nèi)可編程Flash存儲(chǔ)器,512字節(jié)RAM及32位I/O口線,指令代碼完全兼容傳統(tǒng)的8051單片機(jī),同時(shí)又具有傳統(tǒng)51單片機(jī)不具備的擴(kuò)展功能.
顯示電路選擇工業(yè)字符型液晶芯片LCD1602,其顯示的內(nèi)容為16*2個(gè)字符,即同時(shí)顯示兩行,每行16個(gè)字符.LCD1602與單片機(jī)連接電路如圖2所示,單片機(jī)P0口接數(shù)據(jù)線D0~D7,由于P0口內(nèi)部沒有上拉電阻,因此需要連接10K上拉排阻以增加單片機(jī)的驅(qū)動(dòng)能力.寄存器選擇端RS、讀寫控制端R/W、使能端E分別接P2.5、P2.6、P2.7引腳.VEE為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度.
按鍵和鬧鐘設(shè)計(jì)電路如圖3所示.鬧鐘模塊通過蜂鳴器實(shí)現(xiàn),當(dāng)P3.7輸出高電平時(shí),三極管截止,蜂鳴器不發(fā)聲;當(dāng)P3.7輸出低電平時(shí),三極管導(dǎo)通,蜂鳴器發(fā)出聲音.按鍵模塊用于調(diào)整時(shí)間,四個(gè)按鍵分別接到單片機(jī)的P3.0、P3.1、P3.2、P3.3,功能分別為設(shè)置鬧鐘、調(diào)整時(shí)間、時(shí)間值加1和時(shí)間值減1.
圖2 LCD1602電路圖Fig.2 LCD1602 circuit diagram
圖3 按鍵和鬧鐘電路圖Fig.3 Buttons and alarm clock circuit diagram
DS18B20是采用單總線的方式進(jìn)行測(cè)溫的數(shù)字溫度傳感器[6],可讀取9~12位的溫度讀數(shù),分辨率較高,并將結(jié)果轉(zhuǎn)化為串行數(shù)字信號(hào)輸出.因此DS18B20數(shù)據(jù)端與單片機(jī)的P1.2直接相連接即可.
圖4 DS1302電路圖Fig.4 DS1302 circuit diagram
時(shí)鐘芯片選擇DS1302,它是一種性能高、功耗低、帶RAM的實(shí)時(shí)時(shí)鐘芯片,可以對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能.DS1302與單片機(jī)之間進(jìn)行的通信僅需要三個(gè)接口,分別為復(fù)位/片選端RST、數(shù)據(jù)傳輸端(雙向)I/O、時(shí)鐘輸入端SCLK.典型連接電路如圖4所示,其中RST、SCLK、I/O引腳分別與單片機(jī)的P1.7、P1.5、P1.6相連接.VCC2連接的5V是工作電壓,VCC1連接的3 V是后備工作電壓.X1和X2是振蕩源,外接32.768kHz晶振.
表1 DS1302時(shí)鐘寄存器Tab.1 DS1302 clock registers
表2 DS1302控制字Tab.2 Control word of DS1302
2.1DS1302內(nèi)部寄存器
在DS1302中有12個(gè)與時(shí)間、日期有關(guān)的寄存器,通過訪問寄存器地址的方式進(jìn)行時(shí)間數(shù)據(jù)讀寫,其中有7個(gè)寄存器(讀時(shí)81h~8Dh,寫時(shí)80h~8Ch)以BCD碼格式存放數(shù)據(jù)[7],輸出前要進(jìn)行碼制轉(zhuǎn)換.各寄存器功能如表1所示.
DS1302的控制字如表2所示,數(shù)據(jù)從控制字開始傳輸,其最高有效位必須置1,否則數(shù)據(jù)不被寫入DS1302.位6是標(biāo)志位,為0時(shí)表示存取日歷時(shí)鐘數(shù)據(jù),為1時(shí)表示存取RAM數(shù)據(jù).第5到1位用于指示操作單元的地址.位0是控制字的最低有效位,為零時(shí)進(jìn)行寫操作,為1時(shí)進(jìn)行讀操作.
控制字輸出的總是從最低位開始,在輸入控制字的下一個(gè)SCLK時(shí)鐘上升沿到來時(shí),數(shù)據(jù)從最低有效位即位0開始依次寫入DS1302,當(dāng)在SCLK脈沖的下降沿到來時(shí),從低位0到高位7依次讀出DS1302的數(shù)據(jù)[8].
2.2系統(tǒng)軟件程序
以下是主函數(shù)main的部份程序代碼,從中可以看出主程序所包含的各功能子函數(shù).
下面對(duì)程序中所使用的頭文件進(jìn)行簡(jiǎn)單說明.
1302.h頭文件給出了1302的驅(qū)動(dòng)程序,主要包含了1302的初始化函數(shù)init1302()和讀寫控制函數(shù)wite1302(uchar addr,dat)與read1302(uchar addr).DS1302是以BCD碼進(jìn)行數(shù)據(jù)的寫入和讀取的,因此讀取的數(shù)據(jù)要先轉(zhuǎn)換成十進(jìn)制,再進(jìn)行函數(shù)返回.
DS18B20的初始化、溫度讀取函數(shù)gettemp(void)、溫度轉(zhuǎn)換函數(shù)wendu()由ds18b20.h頭文件給出,用來實(shí)現(xiàn)寫讀內(nèi)部RAM中9字節(jié)的溫度數(shù)據(jù)、判斷溫度正負(fù)、計(jì)算出溫度的實(shí)際值等功能.
1602.h頭文件中給出了LCD1602的寫命令函數(shù)ml(uchar com)、寫數(shù)據(jù)函數(shù)wsj(uchar date)及初始化函數(shù)init1602(),其中寫命令、寫數(shù)據(jù)函數(shù)是通過液晶數(shù)據(jù)命令選擇端變量lcdrs的高低電平來驅(qū)動(dòng)的.
key.h頭文件主要對(duì)時(shí)間按鍵、鬧鈴按鍵、加減按鍵進(jìn)行設(shè)置,沒有鍵按下時(shí),返回值為0,有鍵按下時(shí),則返回對(duì)應(yīng)按鍵的值,分別為1、2、3、4.beep.h頭文件通過控制I/O口的電平變化產(chǎn)生方波信號(hào),驅(qū)動(dòng)蜂鳴器發(fā)出聲音.
程序的開發(fā)與編譯是在Keil C51下進(jìn)行的,并在Proteus中仿真驗(yàn)證.最終的仿真結(jié)果如圖5所示,可以看出,液晶屏準(zhǔn)確的顯示出了當(dāng)前的日期、時(shí)間與溫度值.
圖5 系統(tǒng)仿真圖Fig.5 System simulation diagram
其中,鬧鐘的設(shè)置主要通過4個(gè)按鍵來實(shí)現(xiàn),當(dāng)按下鬧鐘設(shè)置按鍵時(shí),時(shí)、分、秒位按先后順序閃爍,每按下+鍵,對(duì)應(yīng)閃爍位加1,加滿后歸零,周而復(fù)始.每按下-鍵,閃爍位減1,減至零后則回到最大值再次遞減.最終再次按下鬧鐘設(shè)置按鍵確認(rèn)設(shè)置即可[9].每次啟動(dòng)鬧鐘時(shí),蜂鳴器的報(bào)警次數(shù)設(shè)置為60次,每響一聲,報(bào)警次數(shù)減1,減至0則報(bào)警結(jié)束.
時(shí)間設(shè)置與此類似,按下時(shí)間設(shè)置按鍵,年、月、日、星期、時(shí)、分、秒位按先后順序依次閃爍,按下+/-鍵修改時(shí)間值,再次按下時(shí)間設(shè)置按鍵后設(shè)置完成.
具體仿真結(jié)果如圖6所示,圖(a)表示日期的設(shè)置,按下兩次時(shí)間設(shè)置鍵后,月份值開始閃爍,可通過加減鍵對(duì)其進(jìn)行修改.圖(b)表示的是星期的設(shè)置,程序默認(rèn)的初值為星期一(MON),在這里改為星期三(WES).圖(c)表示時(shí)間的設(shè)置.圖(d)表示設(shè)置完成后,最終的時(shí)間狀態(tài).
圖6 時(shí)間與日期設(shè)置仿真圖Fig.6 Time and date setting simulation diagram
本文通過數(shù)字集成芯片DS1302及STC89C52單片機(jī)完成了多功能數(shù)字鐘的設(shè)計(jì),利用LCD1602液晶屏顯示時(shí)、分、秒、日期和9字節(jié)的溫度數(shù)據(jù),設(shè)置四個(gè)按鍵分別對(duì)時(shí)間、日期進(jìn)行單獨(dú)校正.系統(tǒng)用C語言編程,在keil開發(fā)環(huán)境下編譯并在proteus中仿真成功,很好的體現(xiàn)了單片機(jī)編程靈活,易于擴(kuò)展的特點(diǎn).
[1]鄭三婷,白燕燕,胡曉霞.淺談數(shù)字電子時(shí)鐘的設(shè)計(jì)及應(yīng)用[J].電子制作,2015(5):90-91.
[2]吳廷鑫.基于FPGA的多功能數(shù)字鐘設(shè)計(jì)[J].科技經(jīng)濟(jì)市場(chǎng),2015(5):14-15.
[3]張開碧,王浩,曾勇斌.基于STC89C52單片機(jī)的多功能數(shù)字鐘設(shè)計(jì)[J].科技信息,2010(35):12-13.
[4]任艷焱.淺談數(shù)學(xué)電子鐘的設(shè)計(jì)方法[J].赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版),2013,29(8):43-44.
[5]劉娟花,厲謹(jǐn).基于FPGA的數(shù)字日歷設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2014,37(3):137-140.
[6]洪樹亮,王富強(qiáng),劉軍偉.基于單片機(jī)紅外遙控多功能電子鐘設(shè)計(jì)[J].電子科技,2015,28(5):85-86.
[7]任志敏.基于DS1302和LCD1602的萬年歷系統(tǒng)設(shè)計(jì)[J].電腦開發(fā)與應(yīng)用,2015,28(3):28-30.
[8]郭小芳,佘明輝.基于單片機(jī)的多功能數(shù)字鐘系統(tǒng)設(shè)計(jì)與分析[J].電子技術(shù),2012(6):34-38.
[9]冉秦翠,蒲利春,彭厚德,等.多功能電子時(shí)鐘[J].物理實(shí)驗(yàn),2014,34(7):36-41.
責(zé)任編輯:時(shí) 凌
Design of Multi-function Digital Clock Based on DS1302
SONG Huichao1,WANG Xiuqing2
(College of Physics and Electronic Information,Inner Mongolia University for the Nationalities,Tongliao 028043,China)
This paper presents a design scheme of multi function digital clock.The core of the control system is STC89C52 microcontroller.The time,date and temperature are displayed by DS1302,LCD1602 and DS18B20.Key module can fix the time and set the alarm clock.The system has been simulated and verified in Proteus and implemented all functions.
Single chip microcomputer;DS18B20;LCD1602;DC1302
TP368.1
A
1008-8423(2015)04-0405-04DOI:10.13501/j.cnki.42-1569/n.2015.12.013
2015-09-29.
內(nèi)蒙古自治區(qū)高等學(xué)??茖W(xué)技術(shù)研究項(xiàng)目(NJZY174).
宋慧超(1985-),女,碩士,主要從事信號(hào)與信息處理的研究.