【正文】
static unsigned int count = 0。 break。, 2)。 39。amp。 } else { disable_alarm()。 }void int_1() interrupt 2 { EX1=0。 case 5: if (clock_week) { clock_week = 0x7。 }}void decrease_value(BYTE cur_pos) { switch (cur_pos) { case 0: if (clock_year) { clock_year = dec_bcd_value(clock_year)。 case 3: if (clock_hour == 0x23) { clock_hour = 0x0。 clock_second = 0x00。 bcd_to_byte_string (clock_minute_a, amp。 bcd_to_byte_string (clock_month, amp。 0xF0) + 0x10。 39。 39。,39。,39。 sbit key_down = P1^3。 i ++) { lcd_wdat (39。 ep = 1。 ep = 1。 _nop_()。 point_val = (tplsbamp。 unsigned char tpmsb=0。i++。 b=0。 while(dq) 。:39。(1)按下S1鍵,系統(tǒng)進(jìn)入設(shè)置狀態(tài),再按下S2鍵可在除了溫度外的項(xiàng)目,如年、月、日、時(shí)、分、秒、星期、鬧鐘上停留,此時(shí)再按下上調(diào)鍵S3即可進(jìn)行加一操作,按下下調(diào)鍵S4即可進(jìn)行減一的操作。圖313 溫度傳感器模塊 液晶顯示模塊液晶LCD1602的D0D7引腳與STC89C52芯片的P2口相接,而控制引腳RS,R/W。它會(huì)影響到晶振的諧振頻率和輸出幅度。字符型液晶顯示模塊LCD1602是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件。然后計(jì)數(shù)器又開始計(jì)數(shù)直到0,如果門周期仍未結(jié)束,將重復(fù)這一過程。 BIT0~BIT3:未用狀態(tài)位,讀出總為0,不能寫入。AIE+UF 24/12:小時(shí)格式位,1表明24小時(shí)制,而0表明12小時(shí)制。此引腳的兩種模式與DS相似。 MOT(模式選擇):接VCC(+5V)時(shí),芯片在MOTOROLA時(shí)序下工作,接GND(地)時(shí),芯片在INTEL時(shí)序下工作。對(duì)FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。在訪問外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX DPTR)時(shí),P2 口送出高八位地址。圖31 STC89C52管腳圖(1)主電源引腳(2根)VCC(Pin40):電源輸入,接+5V電源GND(Pin20):接地線(2)外接晶振引腳(2根)XTAL0(Pin18):片內(nèi)振蕩電路的輸入端XTAL1(Pin19):片內(nèi)振蕩電路的輸出端(3)控制引腳(4根)RST/VPP(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。硬件電路包括單片機(jī)最小系統(tǒng)電路、DS12887實(shí)時(shí)時(shí)鐘芯片電路模塊、LCD1602液晶顯示模塊、按鍵模塊、DS18B20溫度傳感器模塊、蜂鳴器報(bào)警電路模塊;軟件部分主要通過c程序的編程實(shí)現(xiàn)對(duì)時(shí)鐘芯片進(jìn)行時(shí)間數(shù)據(jù)的讀和寫,然后通過液晶顯示程序?qū)r(shí)間顯示出來,通過按鍵操作實(shí)現(xiàn)功能的轉(zhuǎn)換和屏幕的切換。傳統(tǒng)的方式是采用熱電偶或熱電阻,但是由于模擬溫度傳感器輸出為模擬信號(hào),必須經(jīng)過A/D 轉(zhuǎn)換環(huán)節(jié)獲得數(shù)字信號(hào)后才能與單片機(jī)等微處理器接口,使得硬件電路結(jié)構(gòu)復(fù)雜,制作成本較高。在各個(gè)行業(yè)生產(chǎn)及日常生活中,對(duì)溫度的測量及控制始終占據(jù)著非常重要的地位。本設(shè)計(jì)(論文)和資料若有不實(shí)之處,本人愿承擔(dān)一切相關(guān)責(zé)任。同時(shí)單片機(jī)在多功能數(shù)字鐘中的應(yīng)用已是非常普遍的[1]。通過鍵盤可以進(jìn)行定時(shí)、校時(shí)功能。本文給出了一種基于單片機(jī)實(shí)現(xiàn)帶溫度檢測的電子時(shí)鐘的設(shè)計(jì)方法和實(shí)現(xiàn)過程。該器件采用ATMEL搞密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS51指令集和輸出管腳相兼容。P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè) TTL 邏輯電平。ALE/PROG——當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。 (1)內(nèi)含一個(gè)鋰電池,斷電可以運(yùn)行十年,并且不會(huì)丟失數(shù)據(jù),時(shí)間功能正常運(yùn)行。 (5)可選擇MOTOROLA和INTEL總線時(shí)序。計(jì)數(shù)器被預(yù)置到對(duì)應(yīng)于55℃的一個(gè)值。 圖37 DS18B20接寄生電源圖 圖38 DS18B20外接電源圖 液晶顯示屏LCD1602 (一)LCD1602特點(diǎn)說明[12] [13]液晶顯示模塊由于具有低功耗、壽命長、體積小、顯示內(nèi)容豐富、價(jià)格低、接口控制方便等優(yōu)點(diǎn),因此在各類電子產(chǎn)品中被極廣泛地推廣和應(yīng)用。定時(shí)元件通常采用石英晶體和電容組成的并聯(lián)諧振回路。 圖312 時(shí)鐘模塊電路圖 溫度傳感器模塊溫度傳感器DS18B20的接法很簡單。首先對(duì)STC89C5DS1288LCD160DS18B20進(jìn)行初始化,日歷和溫度信息通過LCD1602顯示出來,當(dāng)當(dāng)前時(shí)間與設(shè)定的鬧鐘時(shí)間相同后,LCD1602上顯示的時(shí)間停止,但,實(shí)際上芯片內(nèi)部的時(shí)間仍然在走。 //更新設(shè)置的信息 display_calender_and_temp ()。 i=4。 while(i0) i。 b=b1。 wrbyte(0xcc)。 t = t|tplsb。 _nop_()。 _nop_()。 _nop_()。 lcd_pos(line * 0x40)。} DS12887模塊軟件實(shí)現(xiàn) DS12887模塊子程序流程圖圖44 DS12887時(shí)間顯示流程圖圖45 DS12887時(shí)間設(shè)置流程圖 DS12887模塊子程序代碼include include include include include include sbit key_tab = P1^0。039。:39。,39。,39。 BYTE enable_play_song = 0。date_time[CENTURY_POS])。week_alarm_temperature[ALARM_HOUR_POS])。 clock_day = 0x21。 case 2: if (clock_day == 0x31) { clock_day = 0x1。 } else { clock_minute_a = inc_bcd_value(clock_minute_a)。 case 4: if (clock_minute) { clock_minute = dec_bcd_value (clock_minute)。 / i = clock_c。 if (k) { enable_alarm()。amp。 break。 case 4: memset (amp。week_alarm_temperature[ALARM_MINUTE_POS], 39。code unsigned char FREQH[]={ 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,}。 for(t1=0。 lcd_write_line(1, week_alarm_temperature)。week_alarm_temperature[WEEK_POS], 39。 case 2: memset (amp。}void initial_irq(){ EA=1。 } k = !k。 enable_play_song = F。 case 6: if (clock_hour_a) { clock_hour_a = dec_bcd_value (clock_hour_a)。 } break。 case 4: if (clock_minute == 0x59) { clock_minute = 0x0。 clock_minute_a = inc_bcd_value (clock_minute)。 clock_a = 0x20。date_time[DAY_POS])。 0xF) == 0) { return ((bcdamp。} 。,39。 BYTE week_alarm_temperature[16] ={39。139。239。 }}void lcd_init(){ lcd_wcmd(0x38)。 _nop_()。 _nop_()。 ep = 0。 return tt。 float point_val = 。 while (i0) i。i++){ j=rdbit()。 while (i0) i。 //延時(shí)200ms flash_time_sign ()。 主程序軟件實(shí)現(xiàn)圖41 主程序流程圖void main(){ lcd_init()。圖314 液晶顯示模塊 按鍵模塊74LS21芯片為兩組 4 輸入與門(正邏輯)。 圖310 復(fù)位電路圖無論使用哪種類型的單片機(jī),總要涉及到單片機(jī)復(fù)位電路的設(shè)計(jì).而單片機(jī)復(fù)位電路設(shè)計(jì)的好壞,直接影響到整個(gè)系統(tǒng)工作的可靠性.許多用戶在設(shè)計(jì)完單片機(jī)系統(tǒng),并在實(shí)驗(yàn)室調(diào)試成功后,在現(xiàn)場卻出現(xiàn)了“死機(jī)”、“程序走飛”等現(xiàn)象,這主要是單片機(jī)的復(fù)位電路設(shè)計(jì)不可靠引起的[16]。表37 LCD1602管腳功能表(1)基本操作時(shí)序:LCD1602 讀寫操作時(shí)序總體上來說是比較簡單的,掌握其有兩種方法:一種是直接看時(shí)序圖,另外一種方法是直接記憶和總結(jié)讀寫時(shí)電平高低和變化。因此,要想獲得所需的分辨力,必須同時(shí)知道在給定溫度下計(jì)數(shù)器的值和每一度的計(jì)數(shù)值。 AIE:定時(shí)鬧鐘中斷允許位,AIE為1,允許中斷,否則禁止中斷。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無效。在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。PO口(Pin39~Pin32):~。 系統(tǒng)軟件描述系統(tǒng)程序?qū)崿F(xiàn)三部分功能:時(shí)鐘部分實(shí)現(xiàn)年、月、日、時(shí)、分、秒、星期顯示和設(shè)置、鬧鐘功能;溫度測量部分實(shí)現(xiàn)環(huán)境溫度測量及顯示;鍵盤部分主要為時(shí)鐘和鬧鐘設(shè)置;功能整體程序流程框圖如圖22所示。 智能溫度傳感器(亦稱數(shù)字溫度傳感器)是上世紀(jì)90年代中期問世的。而以DS18B20為代表的新型單線總線數(shù)字式溫度傳感器集溫度測量和A/D轉(zhuǎn)換于一體,這類傳感器可以直接輸出數(shù)字量,同時(shí)與單片機(jī)接口電路結(jié)構(gòu)非常簡單,可以廣泛用于距離遠(yuǎn)、節(jié)點(diǎn)分布多的場合,具有較強(qiáng)推廣應(yīng)用價(jià)值。本設(shè)計(jì)的+5V電源采用LM1117電壓轉(zhuǎn)換元件,將電源適配器轉(zhuǎn)換得到的12V電壓直接變成5V電壓供系統(tǒng)使用。 You can set year, month and time alarm clock through the four the real time reach to the time clock,the system will warn automatically. The +5V power of the system is supplied by LM1117 voltage conversion device. The 12V voltage get from power adapter was transformed directly into 5V voltage for the system. The download of the process is acplished ?through the PZISP software made by Puzhong technology pany. After testing, the system can plete the scheduled function normally.【key words】electronic clock;MCU;DS12887;DS18B20目