51微控制器DS1302實時時鐘驅動程式

2021-07-08 17:19:27 字數 1793 閱讀 7839

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.可通過簡單序列介面與微控制器進行通訊。與微...