柳州工學院 周彥明 梁偉鄯 李旺昆
本文通過采用STC12C2052AD單片機、DS1320時鐘日歷芯片、MAX7219數碼管顯示驅動芯片,設計了一款硬件電路,連接方式簡潔。軟件采用模塊化方式編程,設計過程全程軟件仿真,成本低、顯示美觀、易于開發和推廣,可應用于數碼LED電子日歷時鐘。本文詳細介紹了電子時鐘的設計方案及實物制作,以期向讀者展示設計方案的可行性和實用性以及為制作者提供相關技術資料支持。
數字鐘是一種利用數字電路來顯示時分秒的計時裝置,與傳統的機械鐘相比,它具有走時準確、顯示直觀、無機械傳動裝置等優點,因而得到廣泛的應用。基于單片機的智能電子時鐘的設計、制造以及開發應用,是符合人們生活水平不斷提高的社會發展需要的。對比傳統功能單一、設計簡單的機械時鐘,基于單片機的智能電子時鐘在設計更加便捷、更具創新性的基礎上,實現了時鐘附屬功能的多樣化和個性化。一方面,基于單片機的智能電子時鐘設計的參數調整方式更為人性化,功能設計靈活性更強,計時更加精確;另一方面,基于單片機的智能電子時鐘的設計,不僅能夠為人們顯示時間(特別是夜間顯示效果更好且顯示界面豐富),還可以設計開發出諸多實用、豐富的使用功能,如多點鬧鐘、顯示溫濕度、顯示農歷等乃至女性生理期設置,滿足人們更多的個性化方面的需求,制造出更多基于單片機的電子計時個性化產品。
根據單片機電子鐘各個功能模塊的需要,設計了電子鐘的總體設計方案,如圖1所示。

圖1 電子鐘總體設計方案圖

圖2 基于MAX7219的電子時鐘原理圖

圖3 電子鐘PCB版圖及正反面實物圖

圖4 MAX7219管腳圖及實物圖
它包含了4個關鍵模塊和4個單片機工作支持功能電路,它們分別為:DS1302日歷時鐘芯片模塊、MAX7219數碼管顯示驅動模塊、獨立按鍵輸入模塊、蜂鳴報警模塊。單片機工作支持電路有復位電路、下載電路、晶振電路和電源電路。這些模塊及電路圍繞著51單片機協同工作構成整個基于單片機的電子時鐘系統。在此基礎上還可以添加一些特殊的功能模塊,如WIFI模塊實現電子鐘自動校時。
本設計的單片機電子時鐘系統的硬件電路設計如圖2所示,其中硬件設計主要包括有:一片型號為STC12C2052AD的單片機芯片、型號為DS1302的日歷時鐘芯片、用于顯示時間日歷信息的8×8 LED數碼管、用于驅動LED數碼管的MAX7219顯示驅動芯片、復位模塊、晶振模塊、三個獨立按鍵輸入模塊、程序下載模塊和電源模塊等。
在圖2中,電子鐘采用的是深圳宏晶公司出品的的STC12C2052單片機,整體電路簡捷實用,單片機通過三線數據總線與DS1302時鐘芯片及MAX7219數碼管驅動芯片進行數據的交換,通過三個獨立按鍵來實現日歷時鐘參數的調整,顯示采用八個1寸高亮單字數碼管交替顯示時間和日歷,所設計的程序是通過串行接口下載到單片機中。
PCB板設計采用雙面電路板設計,雙面布置元器件,正面為八個1寸單字數碼管,反面安裝集成電路元件及電源、電池、按鍵等,整個電子時鐘產品布局合理、美觀大方,PCB板圖設計、實物正反面如圖3所示。
MAX7219芯片是一款采用串入并出的全自動動態掃描顯示驅動芯片,僅通過Din、Dout、CLK三個管腳與單片機進行數據交換,節省了大量的IO口線,其并口可以連接一個具有8位數碼的七段數碼管。其數碼管通過單片機傳送參數給顯示芯片可實現15級的亮度調節,MAX7219芯片能夠實現對數碼管和LED點陣的直接驅動,不需要添加其他的輔助設計,使用方便,廣泛的應用于各種儀表的面板和LED點陣的顯示中。圖4所示為MAX7219芯片的管腳圖和實物圖。
DS1302是DALLAS 公司堆出的涓流充電時鐘芯片, 可以通過I2C總線與單片機通信。DS1302與單片機之間的通信,與單片機連接的三個口線分別是:復位(RET)、I/O 數據線、串行時鐘(SCLK),DS1302 外部引腳和實物如圖5所示。X1和X2管腳接入的是32768Hz的晶體振蕩器,為芯片提供秒信號來源。

圖5 DS1320管腳圖及實物圖

圖6 電子鐘程序結構
整個程序框架采用的是模塊化編程的結構,如圖6所示,它由主程序和三個模塊程序組成,具有結構清晰、易于編程閱讀、程序修改維護方便的特點。
如圖7所示為數碼電子時鐘的主程序流程,在單片機上電的時候實現MAX7219的初始化之后,蜂鳴器鳴響一次,在主循環中讀取DS1302的時鐘參數,跟據按鍵設置的模式值交替顯示時間日歷或分別顯示年、月、日、時、分、秒及亮度值以便按鍵調整。

圖7 主程序流程圖
單片機程序中將需要將顯示的時間日歷和數碼管亮度值信息通過該子程序寫入到對應的MAX7219顯示驅動芯片中來實現特定的顯示功能。MAX7219芯片為使用者提供了三線操作接口,通過串行寫入數據的方式即可實現對其控制,寫入的數據不僅包括LED顯示的內容,還有對MAX7219的初始化工作配置,其中串行寫入數據的時序圖如圖8所示。

圖8 MAX7219芯片工作時序圖
在向MAX7219寫入數據之前,LOAD和CLK處于低電平狀態,在DIN給出數據(D15)并將CLK從低電平拉至高電平,在CLK上升沿觸發下使DIN的數據寫入到MAX7219內部寄存器中,此過程實現1bit數據寫入,循環操作16次,寫入16bit的數據之后將LOAD從低拉到高電平,LOAD的上升沿信號觸發了MAX7219內部寄存器接收一個完整的16bit數據。
其中MAX7219芯片的初始化程序為:

在DS1302時鐘芯片與單片機交換數據的過程中,一個CLK周期是一個上升沿,緊跟著一個下降沿。對于數據的寫入,在時鐘CLK的上升沿期間,數據必須正確穩定呈現;在時鐘周期的下降沿,單片機讀取數據位輸出。若 RST(CE)引腳為低電平,所有數據傳輸將中止,I/O 引腳變成高阻狀態,DS1302 讀寫時序如圖9所示。
子程序總共有六個,它們分別是:
(1)向1302當前地址處寫入1Byte數據


圖9 DS1302 讀寫時序圖
(2)從1302的當前地址處讀出1Byte數據

(3)將數據Data寫入1302寄存器add處

(4)讀寄存器add處的值

(5)設置時間

(6)讀取時間

在設定時間日歷時調用設置時間子程序,在主程序主循環中反復調用讀取時間子程序,讀出DS1320芯片中的數據依次存放在time[]數組中供MAX7219顯示調用。

圖10 電子鐘仿真圖
設置了3個按置,接入單片機的P1.0-P1.2腳,分別為設置鍵(時間/日期/亮度數據的設置)、加1和減1鍵(實現數據的加減1操作)它由按鍵掃描子程序uchar scan_key(void)和按鍵處理子程序組成void cl();若鍵值發生了變化先調用讀DS1302芯片數據函數DS1302_ReadTime(UserTime),獲得相關參數,處理完后調用寫DS1302芯生數據函數DS1302_WriteTime(UserTime);將相關參數寫入DS1302芯片中實現時間日歷數據的更替。
利用Proteus 8 Professional軟件設計調試的電子鐘具有方便、快捷、直觀、可視化等諸多優點,調試過程中易于發現和解決問題。電子鐘通過Proteus軟件調試成功后,編譯完成的程序勿需任何改動就可通過實際的硬件電路實現,極大地提高了開發效率。如圖10所示。
結束語:電子鐘這一大眾化的產品設計,既是電子技術、單片機、電子EDA等技術的綜合,又是日歷芯片、顯示芯片、單片機C51編程等軟硬件技能點的應用。程序的調試要注意程序的模塊化結構設計和程序優化,盡可能使用歸范語句使整個程序框架清淅明朗。EDA的設計要留一定的功能接口,給產品足夠的升級擴展空間。在調試過程中,要認真檢查原理圖及PCB圖保證硬件電路的正確性,包括元器件的連接、元件檢驗測試、焊接質量等。而先設計再仿真后制作的工作流程,能極大提高工作效率,具有事半功倍、胸有成竹的效果。當然,也可對現有電子鐘進行擴展,加上溫度傳感器、產品外圍包裝等的動態點綴化設計,使電子產品的個性化設計與定制更能滿足消費者的需求,這也正單片機控制的快速靈活性、高性價比的具體體現。