日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 技術(shù)學(xué)院 > 技術(shù)前線
[導(dǎo)讀]51單片機(jī)學(xué)習(xí)筆記———13.1DS1302實時時鐘原理部分

DS1302實時時鐘

芯片原理圖:


ds1302原理圖

引腳圖:


ds1302原理圖

需要注意的是,VCC1跟VCC2都外接了電容,只是容量不一樣,同常備用電源VCC2的電容值是VCC1電容值的100倍,這也不難理解,如果斷電,VCC2將能夠提供較長一段時間的電力。

VCC1(主電源)-----------過濾濾波作用

VCC2(備用電源)--------斷電時放電提供電力

X1與X2引腳接上晶振以獲取實時時間


ds1302原理圖

各種不同的引腳有著不一樣的作用,我們在這里只介紹了一些特殊引腳,如有所需,請自行查閱官方數(shù)據(jù)手冊。

DS1302內(nèi)部有8個寄存器,分別掌管著秒,分,時,天,星期,月,年還有一個寫入保護(hù)。

我們將依次介紹,首先看原理圖:


ds1302原理圖


ds1302原理圖

寄存器0:


ds1302原理圖

“Bit7”中的“CH”位表示時鐘開始計時,1表示時鐘停止計時。

“Bit4~Bit6”表示秒的十位

“BIt0~Bit3”表示秒的個位

寄存器1:


ds1302原理圖

“Bit4~Bit6”表示分鐘的十位

“Bit0~Bit3”表示分鐘的個位

寄存器2:


ds1302原理圖

Bit7:

1:代表12小時制,分上午和下午

2:代表24小時制

Bit5:當(dāng)表示為12小時制的時候:

0:表示上午

1:表示下午

Bit4:與BIt5一起用,表示小時的十位

寄存器7:


ds1302原理圖

Bit7:寫保護(hù)位,如果是1,則禁止寫入數(shù)據(jù)。

數(shù)據(jù)在時鐘芯片中存儲形式為”BCD”碼,假如我們要在數(shù)碼管上顯示數(shù)字“59”,那么我們將分別顯示“5”和“9”在不同的數(shù)碼管上,因為數(shù)據(jù)中單片機(jī)內(nèi)部是二進(jìn)制形式,也就是說要么是0要么是1。


ds1302原理圖

我們在計算機(jī)上顯示的數(shù)字其實對應(yīng)的有ASCII碼表值。


ds1302原理圖

時序圖:


ds1302原理圖


ds1302原理圖


ds1302原理圖

上升箭頭指的是DS1302

單字節(jié)寫/讀操作時序圖:

第一個字節(jié):通過寫的方式指明對哪個寄存器進(jìn)行讀寫操作

第二個字節(jié):讀寫的數(shù)據(jù)

寫操作:

單片機(jī)----》數(shù)據(jù)-----》`I/O`口----`DS1302`

1

讀操作:

`DS1302`----》數(shù)據(jù)-----》`I/O`口----單片機(jī)

1

寫操作:

寫操作的時候單片機(jī)向I/O口發(fā)送的數(shù)據(jù)是二進(jìn)制,所以要檢測I/O口的電平狀態(tài),判斷是低還是高

寫操作是在SCLK低電平時單片機(jī)將數(shù)據(jù)放在I/O口上,當(dāng)SCLK上升沿時,DS1302讀取

void DS1302Write(unsigned int reg,unsigned int data)

{

unsigned char detect;

DS1302RST = 1;//只有高電平才能觸發(fā)

for(detect = 0x01;detect!=0;detect<<=1)//寫地址

{

if((detect®)!=0)

{

DS1302DAT = 1;

}

else

{

DS1302DAT = 0;//IO狀態(tài)

}

DS1302CK = 1;

delay();

DS1302CK = 0;

delay();

}

for(detect = 0x01;detect!=0;detect<<1)//寫地址

{

if((detect&data)!=0)

{

DS1302DAT = 1;//IO口狀態(tài)

}

else

{

DS1302DAT = 0;

}

DS1302CK = 1;

dalay();

DS1302CK = 0;

delay();

}

}

讀操作:

讀操作是單片機(jī)對I/O口的狀態(tài)進(jìn)行判斷,是單片機(jī)讀取DS1302發(fā)送到I/O口的二進(jìn)制數(shù)據(jù) 所以要挨個對I/O口的高低進(jìn)行判斷

讀操作是在SCLK高電平時DS1302放數(shù)據(jù)到I/O上,將SCLK置為低電平時,單片機(jī)就可以從I/O口上讀取數(shù)據(jù)

unsigned int DS1302Read(unsigned int addr)//只寫入地址

{

DS1302RST = 1;//打開總開關(guān)

unsigned int detect;

unsigned int dat = 0;

for(detect = 0x01;detect!=0;detect<<=1)//寫地址

{

if((detect&addr)!=0)

{

DS1302DAT = 1;

}

else

{

DS1302DAT = 0;

}

DS1302CK = 1;

delay();

DS1302CK = 0;

delauy();

}

for(detect = 0x01;detect!=0;detect<<=1)

{

if(DS1302DAT!=0)

{

dat|=detect;//

}

DS1302CK = 1;//拉高

delay();

DS1302CK = 0;//拉低完成一位發(fā)送

delay();

}

DS1302RST = 0;//總電平置低完成發(fā)送

return dat;//返回數(shù)據(jù)

}

總結(jié):

單片機(jī)對DS1302的讀寫操作

其實就是單片機(jī)對I/O口狀態(tài)的判斷

然后進(jìn)行第二條總線的拉高和拉低

————————————————

版權(quán)聲明:本文為CSDN博主「Mr.YunLong」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/qq_44486550/article/details/104610124

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉