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

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]百度ds1302 寫道DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時時鐘電路,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信

百度ds1302 寫道

DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時時鐘電路,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時提供了對后備電源進(jìn)行涓細(xì)電流充電的能力。
DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)傳送的方法。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時,在Vcc>2.0V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說明。SCLK為時鐘輸入端。 下圖為DS1302的引腳功能圖
.....................................................................................




我在淘寶上花了幾塊錢買了個山寨的1302模塊,湊合著可以用,

但是模塊上的sclk,io,RST這3個腳沒有上拉電阻,自己加上去了,汗!

不加上拉電阻,顯示的時鐘很容易發(fā)生錯誤

好了不多說,貼代碼

本程序只顯示時間,沒有年份和月份...

C代碼

#include"my51.h"

#include"smg.h"

#include"ds1302.h"

voidmain()//ds1302顯示時鐘

{

ds1302_initSet();//初始化

//ds1302_stop();停掉1302,進(jìn)入省電模式

while(1)

{

ds1302_readRTC();_nop_();//讀取時鐘數(shù)據(jù)

displaySMG(ds1302_processTimeData());//處理數(shù)據(jù)并送數(shù)碼管顯示

}

}

C代碼

#ifndef_DS1302_H

#define_DS1302_H

#include"my51.h"

sbitrst=P3^4;//片選總線

sbitsda=P3^5;//數(shù)據(jù)總線

sbitscl=P3^6;//時鐘線

externu8datasmgWela[7];//數(shù)碼管顯示參數(shù)

externu8datatimeData[7];//年,周,月,日,時,分,秒的初值

//voidds1302_setUnCharger()//充電控制,禁止充電

//voidds1302_stop();//暫停ds1302,進(jìn)入超低功耗模式

u8*ds1302_processTimeData();//處理時鐘數(shù)據(jù),送給數(shù)碼管顯示

voidds1302_readRTC();//讀取所有時鐘數(shù)據(jù)的BCD碼

voidds1302_initSet();//設(shè)置初始化數(shù)據(jù)

u8ds1302_readData(u8addr);//從ds1302讀一個字節(jié),讀的時候會先寫地址

voidds1302_writeByte(u8dat);//寫一個字節(jié)

voidds1302_writeData(u8addr,u8dat);//向指定地址寄存器寫數(shù)據(jù)

#endif

C代碼

#include"ds1302.h"

datau8timeData[7]={10,6,4,17,11,20,55};

codeu8writeAddr[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};//寫年周月日時分秒寄存器地址指令

codeu8readAddr[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};//讀的指令地址

voidds1302_writeData(u8addr,u8dat)//向指定地址寄存器寫數(shù)據(jù)

{

rst=0;_nop_();

scl=0;_nop_();

rst=1;_nop_();

ds1302_writeByte(addr);//先寫入地址

ds1302_writeByte(dat);

rst=0;_nop_();//關(guān)閉

sda=1;//釋放

scl=1;

}

voidds1302_writeByte(u8dat)//寫一個字節(jié)

{

u8i=0;

for(i=0;i<8;i++)

{

scl=0;//時鐘線拉低

sda=dat&0x01;//數(shù)據(jù)從最低位開始賦值

dat>>=1;

scl=1;_nop_();//上升沿寫入一位

}

}

u8ds1302_readData(u8addr)//從ds1302讀一個字節(jié),讀的時候會先寫地址

{

u8i,value=0;

rst=0;_nop_();

scl=0;_nop_();

sda=1;_nop_();

rst=1;_nop_();

ds1302_writeByte(addr);//先寫入要讀的地址

_nop_();

sda=1;_nop_();

for(i=0;i<8;i++)

{

value>>=1;

scl=0;_nop_();//下降沿開始后提取有效數(shù)據(jù)

if(sda)//讀數(shù)據(jù)

{

value|=0x80;//高電平手動置位保存數(shù)據(jù),

}//低電平數(shù)據(jù)value最高位默認(rèn)已經(jīng)是0

scl=1;//為下一次讀取數(shù)據(jù)做準(zhǔn)備

}

rst=0;

returnvalue;

}

voidds1302_initSet()//設(shè)置初始化數(shù)據(jù)

{

u8i,j;

for(i=0;i<7;i++)//將初始化數(shù)據(jù)處理成BCD碼

{

j=timeData[i]/10;

timeData[i]=timeData[i]%10;

timeData[i]=timeData[i]+j*16;

}

ds1302_writeData(0x8e,0x00);//清除寫保護(hù)

for(i=0;i<7;i++)

{//將時鐘日歷數(shù)據(jù)經(jīng)過轉(zhuǎn)換后的BCD碼寫到7個時鐘日歷寄存器中

ds1302_writeData(writeAddr[i],timeData[i]);

}

ds1302_writeData(0x90,0x5c);//禁止充電,降低功耗,針對不可充電電池

//ds1302_writeData(0x90,0xa6);//開啟充電,用一個二極管,用4k電阻

ds1302_writeData(0x8e,0x80);//使能寫保護(hù)

}

voidds1302_readRTC()//讀取所有時鐘數(shù)據(jù)的BCD碼

{

u8i;

for(i=0;i<7;i++)

{//讀取的時候會把時鐘日歷的7個寄存器中的數(shù)據(jù)全部讀取,并保存到timeData[]

timeData[i]=ds1302_readData(readAddr[i]);

}

}

u8*ds1302_processTimeData()//顯示時鐘,暫時只顯示時間

{

smgWela[5]

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

采用51單片機(jī)最小開發(fā)板,由8位自制獨(dú)立按鍵控制。單片機(jī)芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點(diǎn)陣屏模塊由MAX7219驅(qū)動,MAX7219包含一個自動掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機(jī) MAX7219 寄存器

在嵌入式系統(tǒng)開發(fā)的廣闊領(lǐng)域,51單片機(jī)和STM32無疑是兩種極具代表性的微控制器。對于初學(xué)者而言,選擇學(xué)習(xí)路徑時往往會面臨一個抉擇:是直接跨越51單片機(jī),挑戰(zhàn)更高層次的STM32,還是從51開始,逐步進(jìn)階?本文旨在探討直...

關(guān)鍵字: 51單片機(jī) STM32

在嵌入式系統(tǒng)開發(fā)中,特別是在使用8051系列單片機(jī)(簡稱C51)進(jìn)行編程時,數(shù)據(jù)類型的選擇與定義對程序的性能和可讀性至關(guān)重要。C51語言在標(biāo)準(zhǔn)C語言的基礎(chǔ)上進(jìn)行了擴(kuò)展,以適應(yīng)單片機(jī)特有的硬件結(jié)構(gòu)和操作需求。本文將深入探討...

關(guān)鍵字: C51數(shù)據(jù) 51單片機(jī)

在嵌入式系統(tǒng)領(lǐng)域,51單片機(jī)作為一種經(jīng)典的微控制器,廣泛應(yīng)用于各種自動化控制系統(tǒng)中。其外部引腳作為單片機(jī)與外界交互的接口,承載著數(shù)據(jù)傳輸、控制信號輸出等重要功能。本文將通過對51單片機(jī)外部引腳的案例分析,結(jié)合實(shí)際代碼,深...

關(guān)鍵字: 51單片機(jī) 單片機(jī)

在電子技術(shù)的浩瀚星空中,LED(發(fā)光二極管)以其獨(dú)特的魅力成為了一顆璀璨的明星。而結(jié)合51單片機(jī)這一經(jīng)典的嵌入式開發(fā)平臺,LED的應(yīng)用更是被賦予了無限可能,其中,花樣流水燈便是一個生動而富有創(chuàng)意的實(shí)例。本文將帶您深入探索...

關(guān)鍵字: 51單片機(jī) LED

在現(xiàn)代嵌入式系統(tǒng)設(shè)計中,51單片機(jī)作為一種經(jīng)典的微控制器,憑借其豐富的功能和廣泛的應(yīng)用領(lǐng)域,仍然受到工程師們的青睞。定時器中斷是51單片機(jī)中一個非常實(shí)用的功能,它可以在特定的時間間隔內(nèi)自動觸發(fā)中斷,執(zhí)行預(yù)設(shè)的操作,從而提...

關(guān)鍵字: 51單片機(jī) 定時器

STM32與51單片機(jī)之間有什么差異呢?兩者可以說是一場科技與性能的較量了。在科技飛速發(fā)展的今天,微控制器(MCU)已廣泛應(yīng)用于各類電子設(shè)備和系統(tǒng)中,發(fā)揮著舉足輕重的作用。其中,STM32和51單片機(jī)作為兩種常見的微控制...

關(guān)鍵字: STM32 51單片機(jī) MCU

51單片機(jī)將是下述內(nèi)容的主要介紹對象,通過這篇文章,小編希望大家可以對51單片機(jī)的相關(guān)情況以及信息有所認(rèn)識和了解,詳細(xì)內(nèi)容如下。

關(guān)鍵字: 單片機(jī) 51單片機(jī)

在嵌入式系統(tǒng)開發(fā)中,單片機(jī)是不可或缺的重要組成部分。其中,STM32單片機(jī)和51單片機(jī)是兩種常見的單片機(jī)芯片。本文將對比分析這兩種單片機(jī)的區(qū)別,并探討STM32單片機(jī)的優(yōu)勢。

關(guān)鍵字: stm32單片 51單片機(jī)

51單片機(jī)是指由美國INTEL公司生產(chǎn)的一系列單片機(jī)的總稱,這一系列單片機(jī)包括了許多品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機(jī)都是在8051的基...

關(guān)鍵字: 51單片機(jī) 串行通信
關(guān)閉