【正文】
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)進入設置狀態(tài),再按下S2鍵可在除了溫度外的項目,如年、月、日、時、分、秒、星期、鬧鐘上停留,此時再按下上調鍵S3即可進行加一操作,按下下調鍵S4即可進行減一的操作。圖313 溫度傳感器模塊 液晶顯示模塊液晶LCD1602的D0D7引腳與STC89C52芯片的P2口相接,而控制引腳RS,R/W。它會影響到晶振的諧振頻率和輸出幅度。字符型液晶顯示模塊LCD1602是單片機應用設計中最常用的信息顯示器件。然后計數(shù)器又開始計數(shù)直到0,如果門周期仍未結束,將重復這一過程。 BIT0~BIT3:未用狀態(tài)位,讀出總為0,不能寫入。AIE+UF 24/12:小時格式位,1表明24小時制,而0表明12小時制。此引腳的兩種模式與DS相似。 MOT(模式選擇):接VCC(+5V)時,芯片在MOTOROLA時序下工作,接GND(地)時,芯片在INTEL時序下工作。對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR)時,P2 口送出高八位地址。圖31 STC89C52管腳圖(1)主電源引腳(2根)VCC(Pin40):電源輸入,接+5V電源GND(Pin20):接地線(2)外接晶振引腳(2根)XTAL0(Pin18):片內振蕩電路的輸入端XTAL1(Pin19):片內振蕩電路的輸出端(3)控制引腳(4根)RST/VPP(Pin9):復位引腳,引腳上出現(xiàn)2個機器周期的高電平將使單片機復位。硬件電路包括單片機最小系統(tǒng)電路、DS12887實時時鐘芯片電路模塊、LCD1602液晶顯示模塊、按鍵模塊、DS18B20溫度傳感器模塊、蜂鳴器報警電路模塊;軟件部分主要通過c程序的編程實現(xiàn)對時鐘芯片進行時間數(shù)據(jù)的讀和寫,然后通過液晶顯示程序將時間顯示出來,通過按鍵操作實現(xiàn)功能的轉換和屏幕的切換。傳統(tǒng)的方式是采用熱電偶或熱電阻,但是由于模擬溫度傳感器輸出為模擬信號,必須經(jīng)過A/D 轉換環(huán)節(jié)獲得數(shù)字信號后才能與單片機等微處理器接口,使得硬件電路結構復雜,制作成本較高。在各個行業(yè)生產(chǎn)及日常生活中,對溫度的測量及控制始終占據(jù)著非常重要的地位。本設計(論文)和資料若有不實之處,本人愿承擔一切相關責任。同時單片機在多功能數(shù)字鐘中的應用已是非常普遍的[1]。通過鍵盤可以進行定時、校時功能。本文給出了一種基于單片機實現(xiàn)帶溫度檢測的電子時鐘的設計方法和實現(xiàn)過程。該器件采用ATMEL搞密度非易失存儲器制造技術制造,與工業(yè)標準的MCS51指令集和輸出管腳相兼容。P2 口是一個具有內部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅動4 個 TTL 邏輯電平。ALE/PROG——當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。 (1)內含一個鋰電池,斷電可以運行十年,并且不會丟失數(shù)據(jù),時間功能正常運行。 (5)可選擇MOTOROLA和INTEL總線時序。計數(shù)器被預置到對應于55℃的一個值。 圖37 DS18B20接寄生電源圖 圖38 DS18B20外接電源圖 液晶顯示屏LCD1602 (一)LCD1602特點說明[12] [13]液晶顯示模塊由于具有低功耗、壽命長、體積小、顯示內容豐富、價格低、接口控制方便等優(yōu)點,因此在各類電子產(chǎn)品中被極廣泛地推廣和應用。定時元件通常采用石英晶體和電容組成的并聯(lián)諧振回路。 圖312 時鐘模塊電路圖 溫度傳感器模塊溫度傳感器DS18B20的接法很簡單。首先對STC89C5DS1288LCD160DS18B20進行初始化,日歷和溫度信息通過LCD1602顯示出來,當當前時間與設定的鬧鐘時間相同后,LCD1602上顯示的時間停止,但,實際上芯片內部的時間仍然在走。 //更新設置的信息 display_calender_and_temp ()。 i=4。 while(i0) i。 b=b1。 wrbyte(0xcc)。 t = t|tplsb。 _nop_()。 _nop_()。 _nop_()。 lcd_pos(line * 0x40)。} DS12887模塊軟件實現(xiàn) DS12887模塊子程序流程圖圖44 DS12887時間顯示流程圖圖45 DS12887時間設置流程圖 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。 //延時200ms flash_time_sign ()。 主程序軟件實現(xiàn)圖41 主程序流程圖void main(){ lcd_init()。圖314 液晶顯示模塊 按鍵模塊74LS21芯片為兩組 4 輸入與門(正邏輯)。 圖310 復位電路圖無論使用哪種類型的單片機,總要涉及到單片機復位電路的設計.而單片機復位電路設計的好壞,直接影響到整個系統(tǒng)工作的可靠性.許多用戶在設計完單片機系統(tǒng),并在實驗室調試成功后,在現(xiàn)場卻出現(xiàn)了“死機”、“程序走飛”等現(xiàn)象,這主要是單片機的復位電路設計不可靠引起的[16]。表37 LCD1602管腳功能表(1)基本操作時序:LCD1602 讀寫操作時序總體上來說是比較簡單的,掌握其有兩種方法:一種是直接看時序圖,另外一種方法是直接記憶和總結讀寫時電平高低和變化。因此,要想獲得所需的分辨力,必須同時知道在給定溫度下計數(shù)器的值和每一度的計數(shù)值。 AIE:定時鬧鐘中斷允許位,AIE為1,允許中斷,否則禁止中斷。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE禁止位無效。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。PO口(Pin39~Pin32):~。 系統(tǒng)軟件描述系統(tǒng)程序實現(xiàn)三部分功能:時鐘部分實現(xiàn)年、月、日、時、分、秒、星期顯示和設置、鬧鐘功能;溫度測量部分實現(xiàn)環(huán)境溫度測量及顯示;鍵盤部分主要為時鐘和鬧鐘設置;功能整體程序流程框圖如圖22所示。 智能溫度傳感器(亦稱數(shù)字溫度傳感器)是上世紀90年代中期問世的。而以DS18B20為代表的新型單線總線數(shù)字式溫度傳感器集溫度測量和A/D轉換于一體,這類傳感器可以直接輸出數(shù)字量,同時與單片機接口電路結構非常簡單,可以廣泛用于距離遠、節(jié)點分布多的場合,具有較強推廣應用價值。本設計的+5V電源采用LM1117電壓轉換元件,將電源適配器轉換得到的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目