ds1302是低功耗實時時鐘晶元,它可以對年、月、日、周、時、分、秒進行計時,且具有閏年補償等多種功能。主要特點是採用序列資料傳輸,可為掉電保護電源提供可程式設計的充電功能,並且可以關閉充電功能。
1.引腳分析
2.時序分析
(1)寫位元組
第乙個位元組是位址位元組,第二個位元組是資料位元組。rst訊號必須拉高,否則資料的輸入是無效的。換一句話說,rst訊號控制資料|時間訊號輸入的開始和結束。位址位元組和資料位元組的讀取時上公升沿有效,而且是由lsb開始讀入。
(2)讀位元組
讀乙個位元組和寫乙個位元組有明顯的不一樣,先是寫位址位元組,然後再讀資料位元組,寫位址位元組時上公升沿有效,而讀資料位元組時下降沿有效,當然前提是rst訊號必須拉高。寫位址位元組和讀資料位元組同是從最低位(即第0位)開始。
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit io=p3^4; //資料輸入輸出線
sbit rst=p3^5; //復位訊號線
sbit sclk=p3^6; //時鐘訊號線
uchar code write_addr=; //寫的位址
uchar code read_addr=; //讀的位址
//---儲存順序是秒分時日月周年,儲存格式是用bcd碼---//
uchar time[7]=; //初始化的時間為2023年12月12日12:00
1.初始化
void ds1302_init()
write(0x8e,0x80); //開啟寫保護
}
2.寫位元組
void write(uchar addr,uchar dat)
for(j=0;j<8;j++) //寫入8位資料
rst=0; //釋放
_nop_();
}
3.讀位元組
uchar read(uchar addr)
_nop_();
for(i=0;i<8;i++) //讀出8位資料
rst=0; //復位
_nop_();
sclk = 1;
_nop_();
io = 0;
_nop_();
io = 1;
_nop_();
return dat; //返回讀到的資料
}
4.讀時間
void read_time()
注:在主函式裡呼叫ds1302_init()函式進行初始化,然後一直呼叫read_time()即可獲取實時的時間,並顯示出來。 DS1302實時時鐘晶元
ds1302 是 dallas 達拉斯 公司推出的一款涓流充電時鐘晶元,2001 年 dallas 被 maxim 美信 收購,因此我們看到的 ds1302 的資料手冊既有 dallas 的標誌,又有 maxim 的標誌,大家了解即可。ds1302 實時時鐘晶元廣泛應用於 傳真 可攜式儀器等產品領域...
51微控制器複習 DS1302
一 ds1302的主要效能指標 1 ds1302實時時鐘具有能計算2100年之前的秒 分 時 日 日期 星期 月 年的能力,還有閏年調整的能力。2 內部含有31個位元組靜態ram,可提供使用者訪問。3 採用序列資料傳送方式,使得管腳數量最少,簡單spi 3線介面。4 工作電壓範圍寬 2.0 5.5v...
DS1302的使用(by 51微控制器)
最近在準備藍橋杯微控制器組的比賽,在學習這款微控制器時,裡面涉及到ds1302晶元的使用,所以今天就在這裡把學習使用ds1302的過程寫下來,以方便日後查閱。ds1302是由dallas公司推出的涓流充電時鐘晶元,片內含有乙個實時時鐘和31位元組靜態ram.可通過簡單序列介面與微控制器進行通訊。與微...