【正文】
,溫度寄存器的值將加1,計數(shù)器1的預(yù)置將重新被裝入,計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計數(shù),如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。本產(chǎn)品按鍵較少可實(shí)驗(yàn)RS觸發(fā)器來克服抖動,如下圖所示: RS觸發(fā)器按鍵消抖電路圖:在本設(shè)計中,蜂鳴器連接關(guān)系如圖所示單片機(jī)T1腳輸出接Q1基極,通過控制Q1導(dǎo)通或截止來控制蜂鳴器上是否有電流,從而發(fā)出聲音。數(shù)據(jù)應(yīng)該串行輸入在脈沖信號(SCLK)的上升沿。電子萬年歷中DS1302電路使用專用的晶振,經(jīng)測試制作的電子萬年歷,一個小時快了1s左右,誤差較大,實(shí)驗(yàn)設(shè)計中可換用標(biāo)準(zhǔn)晶振或用軟件進(jìn)行修正。uchar miao,fen,shi,nian,yue,ri,week,wendu_shi,wendu_ge,wendu_shu,variate,alarm_shi,alarm_fen,alarm_miao。sbit ACC7=ACC^7。 ds18b20_delay(14)。i0。 ds18b20_init()。 //拉高sclk ACC=1。 }uchar ds1302_read(uchar add){ uchar temp。 ds1302_write(0x88,0x12)。 delay(5)。 lcd_write_(0x0c)。 lcd_write_(0x80+add)。 //dat**10 wendu_shi=temp/100。)。W39。U39。 lcd_write_date(39。 break。 break。 switch(count) { case 1: miao。 if(yue1) yue=12。jt。 //讀取鬧鐘開關(guān)值,為0關(guān),為1開 delay(200)。O39。N39。 count==0 amp。 ds1302_write(0x8e,0x80)。 case 3:do { lcd_write_(0x80+0x40+1)。 ds1302_write(0x8a,key_bcd(week))。 break。 ds1302_write(0x8e,0x80)。 key_up_down()。 write_time2(3,fen)。 if(flag_up || flag_down) { flag_up=0。 //寫允許 ds1302_write(0x80,key_bcd(miao)|0x80)。 lcd_write_date(39。 lcd_write_date(0x3a)。 //分 delay(200)。 for(i=0。 case 5: ri。 break。 if(fen59) fen=0。)。 break。 lcd_write_date(39。E39。M39。=0x0f)。 delay(2)。 delay(5)。 //E端時序 delay1()。 //寫允許 ds1302_write(0x80,0x58)。 write_byte(add)。k0。 ds18b20_init()。 ds18b20_delay(1)。 ds18b20_delay(8)。 //選擇按鍵sbit up = P2^5。導(dǎo)師的指導(dǎo)將使我終生受益。調(diào)整順序依次為:秒、分、時、星期、日期、月份、年。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位的脈沖信號)——發(fā)ROM的功能命令——發(fā)存儲操作命令——處理此次數(shù)據(jù)。SET鍵:按下SET鍵進(jìn)入時間校準(zhǔn)狀態(tài),按一下進(jìn)入秒調(diào)整,兩下分調(diào)整,依此類推可進(jìn)行各年月日,時分秒以及星期的校準(zhǔn);UP鍵:當(dāng)SET鍵按下時,UP進(jìn)行SET選定項(xiàng)(如:小時)的加操作;DOWN鍵:當(dāng)SET鍵按下時,DOWN進(jìn)行SET選定項(xiàng)(如:小時)的減操作;SET1鍵:當(dāng)SET鍵按下時,此鍵功能為設(shè)置鬧鐘時間和開關(guān)鬧鐘功能。(2)DS18B20工作原理:DS18B20的讀、寫時序與之測溫原理和以前的DS1820相同,只不過是得到的溫度的數(shù)值的位數(shù)因?yàn)榉直嫘什煌槐M同的,而且溫度轉(zhuǎn)換時候的延遲時間由2s減少到750ms。位5到位1指示的是操作單元地址。VCC2在采用雙電源提供電能系統(tǒng)中就是充當(dāng)主電源來運(yùn)用,其在這一種運(yùn)用地方式中VCC1就連接到備份地電源,以致于在沒有主電源地情況之下能確保保存時間信息以及數(shù)據(jù)。DS1302芯片是一種具有高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計數(shù),而且精度高,位的RAM作為數(shù)據(jù)暫存區(qū),~,;綜合考慮制作難度及精度,故采用方案二。這期中的技術(shù)特征包括:功能特性、控制特性以及電氣特性等等。國內(nèi)企業(yè)為了獲得更大的投資收益,在生產(chǎn)規(guī)模和產(chǎn)品質(zhì)量上不斷提升,開發(fā)單片機(jī)呈必然趨勢。采用STC89C52RC單片機(jī)的萬年歷系統(tǒng)可以很好的改善傳統(tǒng)采用模擬電路引起的計時不準(zhǔn)確,不可靠,一致性差等問題。s life.This design is one based on STC89C52RC singlechip microputer calendar display system, it can demonstrate years, the month, the date of the Gregorian calendar, and hour, minute, second, temperature, week and so on. Moreover it has also provided the lunar calendar information, adjustable time pattern, temperature sample, alarm system, individual quarterbell and so on. The system clock calendar DS1302 with high performance, low power consumption and simple interface features Circuit enable the system to streamline programming convenience, but also highly functional. The problems of inaccurate, unreliable, and the uniform inferior can be e up when you use the analogous circuit. However, it can be improved when you use the clock system based on STC89C52RC singlechip microputer. The system time accurate, low cost and can be widely applied to the life, study and work in any field, and has played an important role. Key words:The Electronic Calendar Clock, Singlechip Microputer, The Time Calendar Clock, Temperature Chip目錄ABSTRACT 31 緒論 8 8 9 9 本設(shè)計進(jìn)行的主要工作 10 102單片機(jī)的簡介 11 113 方案設(shè)計與論證 13 13 電源模塊設(shè)計與論證 14 按鍵控制模塊設(shè)計與論證 14 時鐘模塊設(shè)計與論證 15 溫度采集模塊的設(shè)計與論證 15 顯示模塊設(shè)計與論證 154 系統(tǒng)的硬件設(shè)計 17 主控芯片STC89C52RC與復(fù)位電路和時鐘振蕩電路 17 STC89C52RC的概述 17 19 時鐘芯片DS1302接口設(shè)計和性能分析 20 DS1302性能簡介 20 DS1302接口電路設(shè)計 21 溫度芯片DS18B20接口設(shè)計和性能分析 25 DS18B20的性能介紹 25 DS18B20的接口電路設(shè)計 26 鬧鐘模塊系統(tǒng)設(shè)計于性能分析 26 AT24C02器件分析 27 接口電路的設(shè)計 28 LCD顯示模塊 28 LCM1602的特性及使用說明 28 LCM1602與STC89C52RC單片機(jī)的接口電路 30 按鍵模塊設(shè)計 31 325 軟件設(shè)計 34 軟件總體部分的設(shè)計 34 LCD驅(qū)動及液晶顯示 36 按鍵識別及處理 36 溫度數(shù)據(jù)采集 36 時間數(shù)據(jù)采集 38 鬧鐘程序 406 系統(tǒng)的測試 42總 結(jié) 45致 謝 46參考文獻(xiàn) 47附 錄 48 1 緒論伴隨著單片機(jī)和電子技術(shù)的快速發(fā)展,人類不斷研究,不斷創(chuàng)新紀(jì)錄。用LCD數(shù)碼管動態(tài)顯示,LCD數(shù)碼管價格適中,對于顯示數(shù)字合適,且采用動態(tài)掃描法與單片機(jī)連接時,占用單片機(jī)接口線少。就可以軟件控制來實(shí)現(xiàn),且能夠?qū)崿F(xiàn)智能化和模塊化。4路PWM和8路的高速的10位A、D轉(zhuǎn)換,針對電機(jī)/強(qiáng)干的擾控制場合。表1為DS1302的控制字,此控制字的位7必須置1,若為0則不能對DS1302進(jìn)行讀寫數(shù)據(jù)。 DS1302讀/寫時序圖(4)DS1302的寄存器DS1302的寄存器有12,其中的7個寄存器可以和日歷以及時鐘有關(guān)聯(lián),存放的形式就是以數(shù)據(jù)位為BCD碼的形式,它的時間和日歷的寄存器以及其控制字可以見表2。 DS18B20的接口電路設(shè)計,該系統(tǒng)中采用數(shù)字式溫度傳感器DS18B20,具有測量精度高,電路連接簡單特點(diǎn),此類傳感器僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,VCC接電源,GND接地。當(dāng)前的時間值等于設(shè)定的鬧鈴時間值的時候,蜂鳴器會發(fā)出聲音報警。不管是發(fā)生‘讀’周期還是‘寫’周期,也不管是傳送的方式是單個字節(jié)的傳送或是多字節(jié)的傳送,開始時候的8位指定的四十個字節(jié)中的那一個將被其訪問。(2)鬧鈴設(shè)定的響鈴測試:測試地點(diǎn)五號樓613,2013年5月10號:表6鬧鈴設(shè)定的響鈴測試比較表時間本產(chǎn)品時間設(shè)置鬧鈴時間14點(diǎn)20分鬧鈴開始響鈴時間14點(diǎn)20分1秒(3)溫度的測試:測試地點(diǎn)五號樓613,2013年5月10號:表7 間隔5分鐘同一地點(diǎn)溫度采集比較時間實(shí)際測量本產(chǎn)品測量14點(diǎn)℃℃14點(diǎn)5分℃℃通過比較本產(chǎn)品采集的溫度和溫度計采集的溫度,兩者之間溫度值相差不大,因此本產(chǎn)品可以完成溫度采集的要求。uchar flag=1,count=0,flag_up=0,flag_down=0,flag_alarm=0,alarm_on,alarm_count=0,done=0。//延時void delay(uchar x){ uchar y,z。 x=DQ。i) { value=1。 //初始化 write_onechar(0xcc)。 } }uchar read_byte() { uchar k。 ds1302_rst=0。 ds1302_write(0x8a,0x02)。}void lcd_write_date(uchar date) //數(shù)據(jù)寫入lcd單元中 { lcd1602_rw=0。 lcd_write_(0x06)。 lcd_write_date(0x30+shi)。 //取十位 temp除不用定義類型 wendu_ge =((uint)temp)%100/10。 lcd_write_date(39。)。)。A39。 } }/***********************按鍵處理***************************/uchar key_bcd(uchar key_decimal) //轉(zhuǎn)成ds1302所需的BCD碼 { uchar temp。 case 4: week++。 if(miao==255) miao=59。 break。j++)。 }void alarm_huan() //按下鬧鐘鍵后,切換界面{ uchar num。)。)。amp。 write_time2(6,miao)。 key_up_down()。 ds1302_write(0x8e,0x80)。 case 6:do { lcd_write_(0x80+6)。 ds1302_write(0x86,key_bcd(ri))。 case 4: do { lcd_write_(0x80+0x0e)。 ds1302_write(0x8e,0x80)。 key_up_