中煤科工集團重慶研究院有限公司 郭洪祥
?
基于單片機C8051F060的時鐘芯片SD2405應用設計
中煤科工集團重慶研究院有限公司 郭洪祥
【摘要】本文介紹了時鐘芯片SD2405的外部結構、內(nèi)部數(shù)據(jù)寄存器定義以及寄存器的讀寫時序,同時給出了與單片機C8051F060硬件連接的設計方案及C語言程序設計。
【關鍵詞】SD2405;C8051F060
隨著電子技術的發(fā)展,越來越多的便攜設備得到了廣泛的應用。時間參數(shù)作為常用參數(shù)成為手持設備必不可少的參數(shù)之一。SD2405是一種具有內(nèi)置晶振、支持IIC串行接口的高精度實時時鐘芯片,單片機可使用該接口通過5位地址尋址來讀寫片內(nèi)32字節(jié)寄存器的數(shù)據(jù)。本文介紹了以單片機C8051F060為核心的SD2405應用設計,并給出了C語言程序。
SD2405內(nèi)置晶振,該芯片可保證時鐘精度為±5ppm(在25℃下),即年誤差小于2.5 分鐘;芯片內(nèi)置時鐘精度調整功能,可以在很寬的范圍內(nèi)校正時鐘的偏差(分辨力3ppm),內(nèi)置的一次性工業(yè)級電池或充電電池可保證在外部掉電情況下時鐘使用壽命為 5~8年時間;內(nèi)部具備電源切換電路,當芯片檢測到主電源VDD掉到電池 電壓以下,芯片會自動轉為由備電電池供電。內(nèi)部實時時鐘數(shù)據(jù)寄存器(00H~06H)是7字節(jié)的存儲器,它分別以BCD碼方式存貯秒、分、時、星期、日、月、年的數(shù)據(jù)。SD2405內(nèi)部結構如圖1所示[1]:
圖1 TOP249Y內(nèi)部結構圖
(1)開始條件
當SCL處于高電平時,SDA由高電平變成低電平時構成一個開始條件,對SD2405AP的所有操作均必須由開始條件開始。
(2)停止條件
當SCL處于高電平時,SDA由低電平變成高電平時構成一個停止條件,此時SD2405AP的所有操作均停止,系統(tǒng)進入待機狀態(tài)。
(3)數(shù)據(jù)/指令傳輸格式
當CPU發(fā)出開始條件與實時時鐘建立連接后,CPU首先通過SDA總線連續(xù)輸出7位器件地址和1位讀/寫指令來喚醒SD2405AP。
(4)器件代碼
高7位BIT7~BIT1稱“器件代碼”,它代表實時時鐘的器件地址,固定為“0110010”;BIT0為讀/寫位,“1”為讀操作,“0”為寫操作。
(5)SD2405AP數(shù)據(jù)傳輸?shù)膶懩J?/p>
先送7位器件地址(0110010),第8位送入寫命令(“0”),第9位是SD2405AP的響應位(ACK),SD2405AP進入寫狀態(tài);接下來一個字節(jié),高3位是傳輸模式(寫狀態(tài)時,傳輸模式定義為”000”),低5位確定SD2405AP的內(nèi)部地址(00H~1FH),第9位是SD2405AP的響應位;開始寫數(shù)據(jù),每寫完1個字節(jié)的數(shù)據(jù)之后,都經(jīng)過1位的響應信號才能寫下1字節(jié)的數(shù)據(jù);如果要結束寫數(shù)據(jù)過程,則在ACK后送出停止命令即可。
(6)從指定的內(nèi)部地址中讀取數(shù)據(jù)
發(fā)出開始命令后再送7位器件地址(0110010),第8位送入讀命令(“1”),第9位是SD2405AP的響應位(ACK),SD2405AP進入讀狀態(tài);開始讀數(shù)據(jù),每讀完1個字節(jié)的數(shù)據(jù)之后,CPU都要送出1位的響應信號(ACK,低電平)才能讀下1字節(jié)的數(shù)據(jù);如果想要結束讀數(shù)據(jù)過程,則CPU要送出1位的響應信號(ACK_,高電平),ACK_后送出停止命令即可。
3.1硬件電路設計
硬件設計采用C8051F060芯片作為上位機,其引腳P2.0、P2.1、P2.1分別與SD2405的中斷引腳、時序引腳、數(shù)據(jù)引腳相連。同時為了保證SD2405的SCL、SDA能產(chǎn)生可靠的高電平,在其引腳上施加了1K上拉電阻。硬件連接圖如圖2所示[2]。
圖2 電路原理圖
3.2軟件設計
由于SD2405內(nèi)部寄存器中的數(shù)值是以BCD碼的形式存放的,因此,在讀取其內(nèi)部寄存器種的數(shù)值后,需經(jīng)過BCD碼轉十進制后才能顯示出來[3]。設置bcd[0]~bcd[7]八個數(shù)組,分別用以存放秒、分、時、星期、日、月、年的數(shù)據(jù),其轉換程序如下:
同樣,當需要進行時間參數(shù)調整時需要將由鍵盤輸入的十進制數(shù)轉化為BCD碼的形式寫進SD2405的相應內(nèi)部寄存器中,其轉換程序如下:
根據(jù)以上設計方法,筆者對實驗電路進行了性能測試。實測結果表明,該電路能夠實現(xiàn)對SD2405時間芯片的內(nèi)部存儲器的數(shù)據(jù)進行正確的讀寫操作,能夠正確的實現(xiàn)將BCD碼和十進制數(shù)字之間的互換,并通過顯示屏將其正確的顯示。
通過以上實驗表明該電路具有良好的可靠性和穩(wěn)定性,體積小、成本低,較好的達到了設計,適用于各種電子設備對時間參數(shù)的顯示,并且該產(chǎn)品已在實際生產(chǎn)中得到了大量的應用。
參考文獻
[1]內(nèi)置晶振.充電電池、IIC串行接口的高精度實時時鐘IC-SD2405AP Ver1.1[EB].http://www.docin.com/p-103714398.html.
[2]張培仁,孫力.基于C語言C8051F系列微控制器原理與應用[M].北京:清華大學出版社,2007.
[3]張迎新,雷文,姚靜波.C8051F系列SOC單片機原理及應用[M].北京:國防工業(yè)出版社,2005.
Application design of clock chip SD2405 based on C8051F060
GUO Hong-xiang
(Chongqing Research Institute of China Coal Technology &Engineering Group Corp,Chongqing 400037 China)
Abstract:This article describes the structure of the clock chip SD2405,the internal data registers and register read and write the definition of timing,and gives the design of the hardware connected with the microcontroller C8051F060 and C language programming
Key words:SD2405;C8051F060