下面將主要的性能指標作一綜合:
實時時鐘具有能計算2100 年之前的秒分時日日期星期月年的能力還有閏年調整的能力;
31 8 位暫存數據存儲RAM;
串行I/O 口方式使得管腳數量最少;
寬范圍工作電壓2.0 5.5V;
工作電流2.0V 時,小于300nA;
讀/寫時鐘或RAM 數據時有兩種傳送方式單字節傳送和多字節傳送字符組方式;
8 腳DIP 封裝或可選的8 腳SOIC 封裝根據表面裝配;
簡單3 線接口;
與TTL 兼容Vcc=5V;
可選工業級溫度范圍-40 +85;
與DS1202 兼容;
在DS1202 基礎上增加的特性;
對Vcc1 有可選的涓流充電能力;
雙電源管用于主電源和備份電源供應;
備份電源管腳可由電池或大容量電容輸入;
附加的7 字節暫存存儲器;
1 DS1302 的基本組成和工作原理
DS1302 的引腳功能排列及描述如下圖所示.
ds1302引腳圖
管腳描述
X1 X2 32.768KHz 晶振管腳
GND 地
RST 復位腳
I/O 數據輸入/輸出引腳
SCLK 串行時鐘
Vcc1,Vcc2 電源供電管腳
DS1302 串行時鐘芯片8 腳DIP
DS1302S 串行時鐘芯片8 腳SOIC 200mil
DS1302Z 串行時鐘芯片8 腳SOIC 150mil
2. DS1302 內部寄存器
CH: 時鐘停止位 存器2 的第7 位12/24 小時標志
CH=0 振蕩器工作允許 bit7=1,12 小時模式
CH=1 振蕩器停止 bit7=0,24 小時模式
WP: 寫保護位 寄存器2 的第5 位:AM/PM 定義
WP=0 寄存器數據能夠寫入 AP=1 下午模式
WP=1 寄存器數據不能寫入 AP=0 上午模式
TCS: 涓流充電選擇 DS: 二極管選擇位
TCS=1010 使能涓流充電 DS=01 選擇一個二極管
TCS=其它 禁止涓流充電 DS=10 選擇兩個二極管
DS=00 或11, 即使TCS=1010, 充電功能也被禁止
|
RS位 |
電阻 |
典型位 |
|
00 |
沒有 |
沒有 |
|
01 |
R1 |
2KΩ |
|
10 |
R2 |
4KΩ |
|
11 |
R3 |
8KΩ |
時鐘:
DS1302 與微控制器的接口軟件及功能應用舉例
下面首先給出基本的接口軟件然后舉例說明各種功能的應用
1 寫保護寄存器操作
當寫保護寄存器的最高位為0 時允許數據寫入寄存器寫保護寄存器可以通過命令字節8E,8F 來
規定禁止寫入/讀出寫保護位不能在多字節傳送模式下寫入
Write_Enable:
MOV Command,#8Eh ;命令字節為8E
MOV ByteCnt,#1 ;單字節傳送模式
MOV R0,#XmtDat 數據地址覆給R0
MOV XmtDat,#00h 數據內容為0 寫入允許
ACALL Send_Byte 用寫入數據子程序
RET 返回調用本子程序處
當寫保護寄存器的最高位為1 時禁止數據寫入寄存器
Write_Disable:
MOV Command,#8Eh ;命令字節為8E
MOV ByteCnt,#1 ;單字節傳送模式
MOV R0,#XmtDat 數據地址覆給R0
MOV XmtDat,#80h 數據內容為80h 禁止寫入
ACALL Send_Byte 調用寫入數據子程序
RET 返回調用本子程序處
以上程序調用了基本數據發送(Send_Byte)模塊及一些內存單元定義, 其源程序清單在附錄中給出下面
的程序亦使用了這個模塊
2 時鐘停止位操作
當把秒寄存器的第7 位時鐘停止位設置為0 時起動時鐘開始
Osc_Enable:
MOV Command,#80h ; 命令字節為80
MOV ByteCnt,#1 ; 單字節傳送模式
MOV 0,#XmtDat 數據地址覆給R0
MOV XmtDat,#00h 數據內容為0 振蕩器工作允許
ACALL Send_Byte 調用寫入數據子程序
RET 返回調用本子程序處
當把秒寄存器的第7 位時鐘停止位設置為1 時時鐘振蕩器停止HT1380 進入低功耗方式
Osc_Disable:
MOV Command,#80h ;命令字節為80
MOV ByteCnt,#1 ;單字節傳送模式
MOV R0,#XmtDat 數據地址覆給R0
MOV XmtDat,#80h 數據內容為80h 振蕩器停止
ACALL Send_Byte 調用寫入數據子程序
RET 返回調用本子程序處
3. 多字節傳送方式
當命令字節為BE 或BF 時DS1302 工作在多字節傳送模式8 個時鐘/日歷寄存器從寄存器0 地址開
始連續讀寫從0 位開始的數據當命令字節為FE 或FF 時DS1302 工作在多字節RAM 傳送模式31 個
RAM 寄存器從0 地址開始連續讀寫從0 位開始的數據
例如寫入00 年6 月21 日星期三13 時59 分59 秒程序設置如下
Write_Multiplebyte:
MOV Command,#0BEh ;命令字節為BEh
MOV ByteCnt,#8 ;多字節寫入模式此模塊為8 個
MOV R0,#XmtDat 數據地址覆給R0
MOV XmtDat,#59h 秒單元內容為59h
MOV XmtDat+1,#59h 分單元內容為59h
MOV XmtDat+2,#13h 時單元內容為13h
MOV XmtDat+3,#21h 日期單元內容為21h
MOV XmtDat+4,#06h 月單元內容為06h
MOV XmtDat+5,#03h 星期單元內容為03h
MOV XmtDat+6,#0 年單元內容為00h
MOV XmtDat+7,#0 寫保護單元內容為00h
ACALL Send_Byte 調用寫入數據子程序
RET 返回調用本子程序處
讀出寄存器0-7 的內容程序設置如下
Read_Multiplebyte:
MOV Command,#0BFh 命令字節為BFh
MOV ByteCnt,#8 ; 多字節讀出模式此模塊為8 個
MOV R1,#RcvDat 數據地址覆給R1
ACALL Receive_Byte 調用讀出數據子程序
RET 返回調用本子程序處
以上程序調用了基本數據接收(Receive_Byte)模塊及一些內存單元定義, 其源程序清單在附錄中給
出下面的程 序亦使用了這個模塊
4. 單字節傳送方式
例如寫入8 時12 小時模式程序設置如下
Write_Singlebyte:
MOV Command,#84h ; 命令字節為84h
MOV ByteCnt,#1 ; 單字節傳送模式
MOV R0,#XmtDat 數據地址覆給R0
MOV XmtDat,#88h 數據內容為88h
ACALL Send_Byte 調用寫入數據子程序
RET 返回調用本子程序處
上面所列出的程序模塊Write_Enable Write_Disable Osc_Enable Osc_Disable 與單字節寫入模塊Write_Singlebyte 的程序架構完全相同僅只是幾個入口參數不同本文是為了強調功能使用的不同才將其分為不同模塊另外,與涓流充電相關的設定也是單字節操作方式,這里就不再單獨列出,用戶在使用中可靈活簡略.
下面模塊舉例說明如何單字節讀出小時單元的內容.
Read_Singlebyte:
MOV Command,#85h ; 命令字節為85h
MOV ByteCnt,#1 ; 單字節傳送模式
MOV R1,#RcvDat 數據地址覆給R1
ACALL Receive_Byte 調用讀出數據子程序
RET 返回調用本子程序處
DS1302 應用電路原理圖P87LPC764 單片機選取內部振蕩及內部復位電路
附錄數據發送與接收模塊源程序清單
; CPU 工作頻率最大不超過20MHz
;
; P87LPC762/4 主控器發送接受數據程序
; 說明本程序是利用Philips 公司的P87LPC764 單片機任何具有51 內核或其它合適的單片機都可在此
作為主控器的普通I/O 口(如P1.2/P1.3/P1.4)實現總線的功能對總線 上的器件本程序采用DS1302
進行讀寫操作命令字節在Command 傳送字節數在ByteCnt 中所發送的數據在XmtDat 中所接收
的數據在RcvDat 中
;
;P87LPC762/4 主控器總線發送接受數據程序頭文件
;內存數據定義
BitCnt data 30h ; 數據位計數器
ByteCnt data 31h ; 數據字節計數器
Command data 32h ; 命令字節地址
RcvDat DATA 40H ; 接收數據緩沖區
XmtDat DATA 50H ; 發送數據緩沖區
;端口位定義
IO_DATA bit P1.3 ; 數據傳送總線
SCLK bit P1.4 ; 時鐘控制總線
RST bit P1.2 ; 復位總線
;
;發送數據程序
;名稱:Send_Byte
;描述:發送ByteCnt 個字節給被控器DS1302
;命令字節地址在Command 中
;所發送數據的字節數在ByteCnt 中發送的數據在XmtDat 緩沖區中
;
Send_Byte:
CLR RST ;復位引腳為低電平所有數據傳送終止
NOP
CLR SCLK 清時鐘總線
NOP
SETB RST ;復位引腳為高電平邏輯控制有效
NOP
MOV A,Command 準備發送命令字節
MOV BitCnt,#08h 傳送位數為8
S_Byte0:
RRC A 將最低位傳送給進位位C
MOV IO_DATA,C 位傳送至數據總線
NOP
SETB SCLK 時鐘上升沿發送數據有效
NOP
CLR SCLK 清時鐘總線
DJNZ BitCnt,S_Byte0 位傳送未完畢則繼續
NOP
S_Byte1: 準備發送數據
MOV A,@R0 傳送數據過程與傳送命令相同
MOV BitCnt,#08h
S_Byte2:
RRC A
MOV IO_DATA,C
NOP
SETB SCLK
NOP
CLR SCLK
DJNZ BitCnt,S_Byte2
INC R0 發送數據的內存地址加1
DJNZ ByteCnt,S_Byte1 字節傳送未完畢則繼續
NOP
CLR RST 邏輯操作完畢清RST
RET
;接收數據程序;
;名稱:Receive_Byte
;描述:從被控器DS1302 接收ByteCnt 個字節數據
;命令字節地址在Command 中
;所接收數據的字節數在ByteCnt 中接收的數據在RcvDat 緩沖區中
Receive_Byte:
CLR RST ;復位引腳為低電平所有數據傳送終止
NOP
CLR SCLK 清時鐘總線
NOP
SETB RST ;復位引腳為高電平邏輯控制有效
MOV A,Command 準備發送命令字節
MOV BitCnt,#08h 傳送位數為8
R_Byte0:
RRC A 將最低位傳送給進位位C
MOV IO_DATA,C 位傳送至數據總線
NOP
SETB SCLK 時鐘上升沿發送數據有效
NOP
CLR SCLK 清時鐘總線
DJNZ BitCnt,R_Byte0 位傳送未完畢則繼續
NOP
R_Byte1: 準備接收數據
CLR A 清類加器
CLR C 清進位位C
MOV BitCnt,#08h 接收位數為8
R_Byte2:
NOP
MOV C,IO_DATA 數據總線上的數據傳送給C
RRC A 從最低位接收數據
SETB SCLK 時鐘總線置高
NOP
CLR SCLK 時鐘下降沿接收數據有效
DJNZ BitCnt,R_Byte2 位接收未完畢則繼續
MOV @R1,A 接收到的完整數據字節放入接收內存緩沖區
INC R1 接收數據的內存地址加1
DJNZ ByteCnt,R_Byte1 字節接收未完畢則繼續
NOP
CLR RST 邏輯操作完畢清RST
RET
END
直流參數表:
主要電參數表:
交流參數表:
電容配置表:
























粵公網安備 44030402000745號