缐磊 王毓謙
摘 要:本文利用單片機(jī)和DS1302時(shí)鐘芯片設(shè)計(jì)一個(gè)簡易的時(shí)鐘裝置,闡述了該裝置的硬件組成、軟件實(shí)現(xiàn)、程序流程圖及程序說明,并在在Protues仿真軟件中進(jìn)行仿真。仿真結(jié)果表明該電子鐘具有工作可靠、結(jié)構(gòu)簡單的特點(diǎn),有很大的擴(kuò)展空間。
關(guān)鍵詞:DS1302;Protues;單片機(jī);時(shí)鐘
一般情況下,可通過單片機(jī)的定時(shí)器功能模擬一個(gè)簡單的電子時(shí)鐘,但是此種方法不僅時(shí)間誤差大,耗費(fèi)單片機(jī)的內(nèi)部資源,而且不可保存時(shí)間,一旦系統(tǒng)斷電,時(shí)鐘及恢復(fù)到復(fù)位值。本文選用專門的時(shí)鐘芯片DS1302,仿真設(shè)計(jì)結(jié)構(gòu)簡單,調(diào)試方便,成本低,設(shè)計(jì)開發(fā)周期短,有很大的擴(kuò)展空間。
1 時(shí)鐘芯片DS1304簡介
DS1302是美國 DALLAS公司推出的一種高性能、低功耗、帶RAM的低功耗實(shí)時(shí)時(shí)鐘芯片,它可以對年、月、日、周、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),并能夠?qū)γ吭碌奶鞌?shù)和閏年的天數(shù)進(jìn)行自動調(diào)整,時(shí)鐘可以采用24小時(shí)制,也可以采用12小時(shí)制。DS1302功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1uW,在沒有電源供電的情況下,可以工作長達(dá)10年的時(shí)間。
具體各管腳功能如下:X1和X2為晶振接入引腳,接入的晶振為32.768kHz;SCLK為串行時(shí)鐘引腳;I/O為數(shù)據(jù)輸入與輸出引腳;CE為復(fù)位引腳;VCC1和VCC2為點(diǎn)源供電引腳,且VCC1為主電源,VCC2為備份點(diǎn)源,當(dāng)VCC2>VCC1+0.2V時(shí),由VCC2向DS1302供電,否則由VCC1供電。DS1302與單片機(jī)等微處理器接口時(shí),可以采用簡單的同步串行工作方式,僅需要三個(gè)口線與單片機(jī)相連:1)CE管腳、2)I/O管腳、3)串行時(shí)鐘SCLK管腳。
DS1302內(nèi)部有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼,其日歷、時(shí)間寄存器及其控制字如表1所示。
此外DS1302內(nèi)部還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。對于開發(fā)者來說,主要使用DS1302內(nèi)部的這12個(gè)寄存器。如果在開發(fā)系統(tǒng)中,微處理器的RAM空間不夠等也可以使用DS1302內(nèi)部的RAM空間。DS1302內(nèi)部還有31RAM單元,每個(gè)單元為8位。31個(gè)單元對應(yīng)著62個(gè)命令控制字:C0H~FDH,共62個(gè),其中奇數(shù)為讀操作,偶數(shù)為寫操作。當(dāng)然,也可以一次性地讀寫這31個(gè)單元,命令控制字分別為FEH(寫)、FFH(讀),這種方式稱為突發(fā)方式。
2 DS1302的讀寫時(shí)序
對DS1302進(jìn)行讀寫操作時(shí),數(shù)據(jù)總是從最低位開始傳動,通過一個(gè)SCLK時(shí)鐘的下降/上升沿該位數(shù)據(jù)寫入芯片,整個(gè)過程中控制器一直主導(dǎo)著時(shí)序,而時(shí)鐘芯片則處于被動狀態(tài)。
DS1302寫1位邏輯電平值的步驟為:
①控制器拉高RST引腳,引入邏輯控制模式;
②控制器清零時(shí)鐘線SCLK;
③將需要寫入的數(shù)據(jù)置于數(shù)據(jù)線I/O上;
④控制器拉高時(shí)鐘線SCLK,形成一個(gè)時(shí)鐘上升沿,則DS1302讀入I/O引腳上的電平值,從而完成了1位邏輯電平的寫操作;
DS1302讀1位邏輯電平值的步驟為:
①控制器拉高CE引腳,進(jìn)入邏輯控制模式;
②控制器拉高時(shí)鐘線SCLK,此時(shí)DS1302將1位數(shù)據(jù)置于數(shù)據(jù)線I/O上;
③將I/O引腳的電平值讀入控制器內(nèi)部寄存器暫存;
④控制器拉低時(shí)鐘線SCLK,形成一個(gè)時(shí)鐘下降沿,則控制器完成對I/O引腳上的電平值的讀取,從而完成了1位邏輯電平的讀操作。
3 硬件設(shè)計(jì)
實(shí)現(xiàn)DS1302時(shí)鐘功能的主體原件是AT89C51單片機(jī),需在Protues電路窗口中繪制所示的單片機(jī)DS1302時(shí)鐘仿真電路圖。
4 軟件設(shè)計(jì)
系統(tǒng)通過串行讀寫DS1302時(shí)鐘芯片,完成時(shí)鐘信息顯示。采用8位的數(shù)碼管顯示時(shí)間或日期,數(shù)碼管的位選通過譯碼器選擇;時(shí)鐘芯片與單片機(jī)三線相連,對時(shí)鐘操作分讀寫字節(jié)、讀寫命令和初始化等部分實(shí)現(xiàn)。讀者可根據(jù)實(shí)際情況自行編寫代碼,本程序源代碼不詳細(xì)說明。
5 仿真運(yùn)行
在電路圖中選中AT89C51并單擊,打開“Edit Component”對話窗口,在“Program File”欄中,選擇用keil生成的“.HEX”文件,單擊Protues ISIS界面左下角開始按鈕,進(jìn)入程序調(diào)試狀態(tài),結(jié)果如圖4所示。
6 結(jié)語
在本項(xiàng)目中,設(shè)計(jì)了基于DS1302時(shí)鐘芯片的時(shí)鐘,可以看出,該系統(tǒng)結(jié)構(gòu)簡單,成本低,運(yùn)行穩(wěn)定精確。另外可以考慮增加按鍵,即增加按鍵用來調(diào)整時(shí)間和日期,這需要用到DS1302的寫時(shí)序,其操作過程和讀時(shí)序非常類似,可見其具有很大的擴(kuò)展空間。
參考文獻(xiàn)
[1]李偉躍.基于時(shí)鐘芯片DS1302的萬年歷的設(shè)計(jì)[J].科技創(chuàng)新導(dǎo)報(bào),2012(09):20-21.
[2]李芝浩,朱爾隆.基于protues仿真的自動售貨機(jī)的實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2014(16):147
[3]劉春燕,晁勤,袁鐵江,魏麗麗.多功能數(shù)字萬年歷的設(shè)計(jì)[J].自動化應(yīng)用,2013(01):39-41.
[4]李秀麗,雷晨,孫藝玫,徐倩.基于Protues的GPS守時(shí)授時(shí)時(shí)鐘裝置的設(shè)計(jì)與仿真[J].防災(zāi)減災(zāi)學(xué)報(bào),2011,27(01):74-78.
[5]曲立國,黃友銳,唐超禮,徐善永.Protues在電子課程設(shè)計(jì)中的應(yīng)用[J].科技視界,2012(14):96-98.
[6]田清華.單片機(jī)流水燈的Protues仿真[J].科技傳播,2013,5(06):202-203.
作者簡介
缐磊(1998-),男,漢,河南省南陽市臥龍區(qū)人,本科在讀,鄭州大學(xué) 過程裝備與控制工程。
王毓謙(1997-),男,漢,黑龍江省齊齊哈爾市人,本科在讀,鄭州大學(xué) 過程裝備與控制工程。