ds1302實時時鐘模組
晶元手冊:datasheet pdf 索引ds1302資料表
時鐘晶元ds1302含有實時時鐘/日曆和31位元組靜態ram。與微控制器之間採用3線同步序列方式進行通訊。
pin引腳說明
x1、x2
晶振接入引腳,晶振頻率為32.768khz
rst復位引腳,高電平啟動輸入輸出,低電平結束輸入輸出
i/o資料輸入輸出引腳
sclk
序列時鐘輸入引腳
gnd接地引腳
vcc1,vcc2
工作電源、備份工作電源
命令位元組如下圖所示:
每個資料傳輸都是由乙個命令位元組發起,msb(bit7)必須是邏輯1。如果它是0,對ds1302的寫入將被禁用。
第6位如果邏輯為0,則指定時鐘/日曆資料;如果邏輯為1,則指定ram資料。
第1位到第五位指定要輸入或輸出的暫存器,lsb(第0位)指定邏輯0時的寫操作或邏輯0時的讀操作(輸出)。
命令位元組總是從lsb開始輸入(第0位)
所有的資料傳輸都是通過驅動rst高輸入來啟動的。
rst輸入有兩個功能:
第二,rst訊號提供了一種終止單位元組或多位元組資料傳輸的方法。
時鐘週期是乙個由下降邊和上公升邊組成的序列。對於資料輸入,資料必須在時鐘上公升沿有效,資料位在時種下沿輸出。(即寫入資料是在時鐘上公升沿,讀出資料在時鐘下降沿)
如果rst輸入低,所有資料傳輸終止,io引腳進入高阻狀態,
上電時,rst必須是邏輯0,知道vcc > 2.0v。同時,當rst被驅動到邏輯1時,sclk必須處於邏輯0。(看下面的輸入輸出的圖,一開始都是rst低,sclk低,然後rst高;然後才是開始資料傳輸)
在八個sclk週期輸入乙個寫命令位元組之後(看上圖i/o那行,首先是8個sclk周輸入寫命令位元組),
在接下來的8個sclk週期的上公升沿上輸入乙個資料位元組(注意看上圖每次位元組輸入都是從上公升沿),
如果資料從位0開始輸入,則忽略額外的sclk週期。
示例:
void ds1302_wbyte(uchar dat)
在輸入乙個讀命令位元組的8個sclk週期之後,在接下來的8個sclk週期的下降邊緣輸出乙個資料位元組。
請注意,要傳輸的第乙個資料位發生在寫入命令位元組的最後一位之後的第乙個下降沿。
額外的sclk週期重傳資料位元組,只要rst保持高,它們就會在不經意間發生。允許連續突出模式的讀能力。此外,io引腳在sclk的每個上公升邊緣上是三列的。資料從第0位開始輸出。
uchar ds1302_rbyte(void)
ds1302_clk=1;
delay4us();
} return temp;
}
void ds1302_w_addr_dat(uchar addr, uchar dat)
void ds1302_r_all(uchar addr)
暫存器位址
示例程式
// 定義結構體
typedef struct
timetype;
// 這邊表示的是暫存器的位址
#define ds1302_second 0x80
#define ds1302_minute 0x82
#define ds1302_hour 0x84
#define ds1302_week 0x8a
#define ds1302_day 0x86
#define ds1302_month 0x88
#define ds1302_year 0x8c
// 0x70=0111 0000, 0x0f=0000 1111
// 從上面暫存器位址圖可知,高四位是存放十位上的數,第四位是存放個位的數
void ds1302_r_all( timetype *time)
void ds1302_init(void)
ds1302的應用問題
define rtc ok1 操作成功 define rtc fail0 操作失敗 define second invalid40 秒值無效 define minute invalid41 分鐘值無效 define hour invalid42 小時值無效 define week invalid43...
C語言程式》DS1302
include include include ds1302.h ds1302 io口定義 define clk pc0 define data pc1 define rst pc6 define ds1302 data ddr out ddrc 1 define ds1302 data set p...
DS1302實時時鐘晶元
ds1302 是 dallas 達拉斯 公司推出的一款涓流充電時鐘晶元,2001 年 dallas 被 maxim 美信 收購,因此我們看到的 ds1302 的資料手冊既有 dallas 的標誌,又有 maxim 的標誌,大家了解即可。ds1302 實時時鐘晶元廣泛應用於 傳真 可攜式儀器等產品領域...