李慧茹
遼寧錦州渤海大學工學院
基于單片機的電子時鐘設計
李慧茹
遼寧錦州渤海大學工學院
電子時鐘是一種能夠廣泛使用的計時工具,它不僅能夠對各種時間信息進行顯示,同時也可以對溫濕度進行顯示。本文所設計的多功能電子時鐘以STC89C52RC單片機為核心,由時鐘模塊、顯示模塊及蜂鳴器模塊組成。其中時鐘模塊使用DS1302實時時鐘芯片實現對時間的實時顯示;顯示模塊采用LCD12864液晶屏對時間參數、溫濕度參數進行顯示。經測試,該系統運行可靠,功耗小,能夠適應日常生活的需求。
基于單片機的多功能電子時鐘因其要求實現的功能及應用范圍的的不同,所以可以在單片機上集成不同的傳感器來滿足它們在教學、科研、日常生活等各個領域的應用。系統功能的設計實現是在軟件與硬件的共同作用下完成的,電路圖的繪制及電路板的焊接是進行軟件編寫的基礎,在確保開發板的正確焊接后使用Keil uVision4進行相關功能代碼的編寫,在代碼運行無誤后我們使用燒錄軟件將程序燒進單片機芯片內進行實物演示,觀察實物是否能夠實現各個模塊對應的功能,通過程序的多次修改完成系統預設功能。
2.1 系統總體設計
系統框圖如圖1所示,系統的功能完成主要是利用溫濕度傳感器完成溫濕度的采集,通過按鍵實現時間參數的修改與鬧鐘的設定,最后完成時間的顯示。將編寫的程序加載到單片機上后,接通電源,單片機STC89C52完成對顯示模塊的初始化,在顯示模塊的初始化完成后對溫濕度傳感器進行初始化,初始化完成后通過DH11T的DATA端口與單片機的P3.1口進行連接完成數據的傳輸。主要實現復位、對時鐘的設置及對鬧鐘的設定功能,當時鐘芯片內存儲的時間到達設定的鬧鐘時間時打開蜂鳴器進行報警。WT588D語音模塊,當時間為整點、半點或是按下語音播報按鍵時,連接在芯片上的喇叭進行播報。

圖1 系統框圖
2.2 單片機最小系統
本次設計的多功能電子時鐘主要是以STC89C52RC作為系統的核心電路,系統主要由數據采集和數據顯示兩大部分。單片機共有內部時鐘與外部時鐘兩種時鐘模式。本次設計的系統通過內部時鐘提供時鐘信號,89C52的XTAL1、XTAL2時鐘引腳分別與時鐘的兩端進行連接。
為了使產生的頻率標稱,將12MHz的晶振與單片機的XTAL1、XTAL2引腳相連,再接上兩個電容值為20pf的電容(晶振的負載電容);實時時鐘芯片DS1302,VCC1 VCC1接3V電子電池,通信時鐘引腳SCLK與P1.3口相連,數據傳輸引腳與P1.4口相連,時鐘芯片的使能端CE與P1.5口相連,時鐘芯片的振蕩源X1、X2與一個頻率為32.768K的晶振相接構成了單片機的時鐘模塊。系統的晶振電路與單片機的連接情況如圖2所示。

圖2 晶振電路圖
2.3 系統復位電路
復位存在上電復位、手動復位這兩種形式。當單片機的復位引腳RST上出現了2us的高電平時(晶振頻率為12Mhz,所以一個機器周期為1us)就完成了復位操作。系統晶振頻率我們使用的是12Mhz,因而單片機的最小周期是1us,由上述理論可知,如果要完成復位操作,那么高電平至少應持續2個最小周期。而在實際操作中由于系統會受到一定的干擾:晶振的穩定性,復位按鍵及相關數值的變化,因而需要保留適當的余量預防系統受到干擾。
2.4 DS1302時鐘模塊
DS1302是一款時鐘芯片且具有閏年補償的功能,其中單片機的P1.3、P1.4、P1.5分別與DS1302的三個引腳SCLK、I/O、CE相連接。在DS1302接了兩個電源,其中VCC2用來保障正常運行,而VCC1則用來預防特殊情況的發生以及在VCC2斷電時保證芯片的持續工作。
在時鐘芯片上有兩個電源引腳,而芯片主要由兩個電源信號中電源值較大的那個進行供電,當VCC2超過(VCC1+0.2)V時,由VCC2保證時鐘芯片的正常工作。當VCC2小于VCC1時,由VCC1保證芯片的持續工作。為了使系統正常工作我們使用+5V電壓為VCC2引腳供電當系統斷電時由VCC1端的3V電子電池供電,保證其時鐘信息準確。時鐘模塊如圖3所示:

圖3 時鐘模塊
時鐘芯片的參數說明如表1所示,除表中所列,DS1302時鐘芯片可自動調整每月天數及閏年的天數。

表1 DS1302參數說明
2.5 時鐘數據處理模塊
2.5.1 數據采集模塊
系統在進行數據讀取時,為了確保數據的讀取需現將RST端置高,通過單片機的P1.4口將地址最低位傳送到DS1302的I/0口上,在檢測到一個上升沿的信號時將所需的時間參數送入DS1302,然后在檢測到一個下降沿的信號時通過DS1302的I/ O口將時間信息傳送到單片機的P1.4口,以此來完成對DS1302時間信息的讀取;同樣的當數據寫進DS1302時在電平的上升沿將地址信息從低到高以此發送到I/O口上,在發送完地址信息后將你需要的初始信息寫入DS1302中。
2.5.2 數據轉換模塊
由于存儲在時鐘芯片內的數據類型為BCD碼形式,因此在液晶屏上顯示時間參數之前需要將數據類型轉換成十進制。本次設計的功能系統,首先將需要讀取的時鐘信息的地址傳送到時鐘芯片DS1302中,之后讀取DS1302時間參數時將時間信息通過DS1302芯片的I/0口傳輸到單片機的P1.4引腳,P1.4口將收到的時間參數通過轉換將BCD碼轉換成十進制在LCD12864上進行顯示。
3.1 程序設計思想
電子時鐘的功能設計是通過各個模塊的子程序的控制完成的,先分別對模塊進行程序的設計、編程與程序的調試,然后將硬件與軟件協同起來,最后在主函數中通過對子程序的調用實現系統功能,這樣有利于程序的修改與調試,同時使得軟件功能的完成更加便利,同時使得書寫的程序能夠更好的適用與其他場合。
3.2 程序設計流程
程序運行后先分別對模塊進行初始化,調用模塊初始化函數進行初始化操作,初始化后調用溫濕度函數對溫濕度參數進行讀取,然后運行DS1302時鐘芯片的程序將時間參數讀出,并將相應的陽歷轉換為農歷日期,然后分別對農歷、陽歷日期進行顯示,最后對時分秒進行顯示。在此過程中不斷運行鍵盤掃描程序,如檢測到按下設置鍵則進入設置界面,并通過鍵盤掃描程序判斷是加鍵還是減鍵按下對時間進行修改,并不斷判斷設置鍵是否再次按下,若按下則光標轉到下一個時間參數上對此時間參數進行相應修改。全部時間參數設置完畢后進行鬧鐘時間的修改,具體操作與修改時間的操作相似,最后判斷是否開啟鬧鐘,若鬧鐘開啟則到達設定時間后調用蜂鳴器報警部分程序,報警過程中檢測是否有按鍵按下,若有任一按鍵按下則鬧鐘停止報警。同時檢測是否按下與語音模塊相關的按鍵,若該按鍵按下,則調用語音模塊程序進行工作,對時間星期等參數進行語音播報。
本文設計的電子時鐘主要采用了STC89C52單片機的最小系統,軟件方面主要用來設計DS1302時間讀寫程序,陽歷轉農歷程序等功能,系統程序的編寫則需借用Keil進行軟件的編寫,程序編寫完成后使用下載線將程序執行后生成的.Hex文件下載到單片機的STC89C2芯片上運行實現系統功能。
[1]陸遙.傳感器技術的研究現狀與發展前景[J].科技信息,2009(19)
[2]冉秦翠,蒲利春,彭厚德,汪海軍.多功能電子時鐘[J].物理實驗,2014,04:36-41
[3]張玲玲.基于51單片機的LCD12864程序設計[J].中小企業管理與科技(中旬刊),2015,05:231-232