導航:首頁 > 編程知識 > ds1032晶元如何編程

ds1032晶元如何編程

發布時間:2023-01-19 05:27:35

① 時鍾晶元DS1302調整時間的思路是怎麼樣的最好能給一個調整時間的程序,謝謝

我級別太低不能穿電路圖!!

#ifndef _1602_yejing_
#define _1602_yejing_
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P3^4;
sbit lcdrs=P3^5;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_lcd(uchar x,char *cha)
{ uchar length,i=0;
write_com(x);
for(length=0;cha[length]!=0;length++);
for(i=0;i<length;i++)
{
write_data(cha[i]);
delay(5);
}
}
void write_bcd(uchar cha)
{
uchar ch1,ch2;
ch1=(cha&0x0f)+'0';
ch2=((cha>>4)&0x0f)+'0';
write_data(ch2);
write_data(ch1);
}
void write_fd(float t)//顯示float型函數
{ uchar s1,s2,s3,s4;
uint tt;
tt=t*100;
s1=tt/1000;s1+=0x30;
s2=tt%1000/100;s2+=0x30;
s3=tt%1000%100/10;s3+=0x30;
s4=tt%10;s4+=0x30;
write_data(s1);
write_data(s2);
write_data(46);
write_data(s3);
write_data(s4);
}
void init()
{
lcden=0;
write_com(0x38);//設置16*2顯示
write_com(0x0c);//設置開顯示,不顯示游標
write_com(0x06);//寫一個字元後地址指針加
write_com(0x01);//顯示清0,數據指針清0
}
#endif
/**************************************************************************

THE REAL TIMER DS1302 DRIVER LIB

COPYRIGHT (c) 2010 BY ZYK.
-- ALL RIGHTS RESERVED --

File Name: DS1302.h
Author: ZHANG YUAN KE
Created: 2010/06/21
Modified: NO
Revision: 1.0

***************************************************************************/
#ifndef _DS1302_2010_06_21_
#define _DS1302_2010_06_21_
sbit SCLK = P1^6; //實時時鍾時鍾線引腳
sbit DIO = P1^7; //實時時鍾數據線引腳
sbit CE = P1^5; //實時時鍾復位線引腳
sbit ACC0 = ACC^0;
sbit ACC7 = ACC^7;
char sec,min,hour,day,mon,week,year;
char *tab[7]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat",};
void write_1302(uchar add,uchar dat)
{
uchar i;
ACC=add;
CE=0;
SCLK=0;
CE=1;
for(i=0;i<8;i++)
{
DIO=ACC0;
SCLK=1;
SCLK=0;
ACC>>=1;
}
ACC=dat;
for(i=0;i<8;i++)
{
DIO=ACC0;
SCLK=1;
SCLK=0;
ACC>>=1;
}

CE=0;
}
uchar read_1302(uchar add)
{
uchar i;
ACC=add;
CE=0;
SCLK=0;
CE=1;
for(i=8;i>0;i--) // 為什麼不能for(i=0;i<8;i++) 又為什麼用我寫的函數不能改時間!!!!!!!!!!!!
{
DIO=ACC0;
SCLK=1;
ACC>>=1;
SCLK=0;

}

for(i=8;i>0;i--)
{ ACC>>=1;
ACC7=DIO;
SCLK=1;
SCLK=0;

}

return(ACC);
CE=0;
}
void inputbyte(uchar d) //實時時鍾寫入一位元組(內部函數)
{
uchar i;
ACC=d;
for(i=8;i>0;i--)
{
DIO=ACC0; //相當於匯編中的 RRC
SCLK=1;
SCLK=0;
ACC>>=1;
}
}

uchar outputbyte() //實時時鍾讀取一位元組(內部函數)
{
uchar i;
for(i=8; i>0; i--)
{
ACC=ACC>>1; //相當於匯編中的 RRC
ACC7=DIO;
SCLK=1;
SCLK=0;
}
return(ACC);
}

void write_1302(uchar add,uchar dat) //ucAddr: DS1302地址, ucData: 要寫的數據
{
CE=0;
SCLK=0;
CE=1;
inputbyte(add); // 地址,命令
inputbyte(dat); // 寫1Byte數據
CE=0;
}

uchar read_1302(uchar add) //讀取DS1302某地址的數據
{
uchar dat;
CE=0;
SCLK=0;
CE=1;
inputbyte(add); // 地址,命令
dat=outputbyte(); // 讀1Byte數據
CE=0;
return(dat);
}

void setprotect(bit flag)
{
if(flag)
write_1302(0x8e,0x80);
else
write_1302(0x8e,0x00);
}
void gettime_1302()
{
sec=read_1302(0x81);
min=read_1302(0x83);
hour=read_1302(0x85);
day=read_1302(0x87);
mon=read_1302(0x89);
week=read_1302(0x8b);
year=read_1302(0x8d);

}
void stop_time(bit flag) // 是否將時鍾停止
{
unsigned char dat;
dat=read_1302(0x81);
setprotect(0);
if(flag)
write_1302(0x80, dat|0x80);
else
write_1302(0x80, dat&0x7F);
}

void init_1302()
{
uchar second=read_1302(0x81);

if(second&0x80)
write_1302(0x80,0);

}

/********************************************************************************
void BurstWrite1302(unsigned char *pWClock) //往DS1302寫入時鍾數據(多位元組方式)
{
unsigned char i;
Write1302(0x8e,0x00); // 控制命令,WP=0,寫操作?
DS1302_RST = 0;
DS1302_CLK = 0;
DS1302_RST = 1;
DS1302InputByte(0xbe); // 0xbe:時鍾多位元組寫命令
for (i = 8; i>0; i--) //8Byte = 7Byte 時鍾數據 + 1Byte 控制
{
DS1302InputByte(*pWClock); // 寫1Byte數據
pWClock++;
}
DS1302_CLK = 1;
DS1302_RST = 0;
}

void BurstRead1302(unsigned char *pRClock) //讀取DS1302時鍾數據(時鍾多位元組方式)
{
unsigned char i;
DS1302_RST = 0;
DS1302_CLK = 0;
DS1302_RST = 1;
DS1302InputByte(0xbf); // 0xbf:時鍾多位元組讀命令
for (i=8; i>0; i--)
{
*pRClock = DS1302OutputByte(); // 讀1Byte數據
pRClock++;
}
DS1302_CLK = 1;
DS1302_RST = 0;
}

********************************************************************************/
#endif
#include "1602.h"
#include "DS1302.h"
sbit set=P3^2;
sbit jia1=P3^0;
sbit jian1=P3^1;
uchar slect=0;

uchar bcdtoasc(uchar cha)
{
return ((cha/16)*10+(cha%16));
}
uchar asctobcd(uchar cha)
{
return ((cha/10)*16+(cha%10));
}
void disp_week()
{ switch(week)
{

case 1:{write_lcd(0xcd,tab[0]); break;}
case 2:{write_lcd(0xcd,tab[1]); break;}
case 3:{write_lcd(0xcd,tab[2]); break;}
case 4:{write_lcd(0xcd,tab[3]); break;}
case 5:{write_lcd(0xcd,tab[4]); break;}
case 6:{write_lcd(0xcd,tab[5]); break;}
case 7:{write_lcd(0xcd,tab[6]); break;}

}
}
void disp_time()
{
write_com(0x87);
write_bcd(year);
write_com(0x8a);
write_bcd(mon);
write_com(0x8d);
write_bcd(day);
write_com(0xc5);
write_bcd(hour);
write_com(0xc8);
write_bcd(min);
write_com(0xcb);
write_bcd(sec);
disp_week();
}

void keyscan()
{
set=1;
jia1=1;
jian1=1;

stop_time(1);

if(set==0)
{delay(10);
if(set==0)
{
delay(200);
slect++;
}
if(slect==8)
{slect=0; stop_time(0);write_com(0x0c);}
}

if(slect)
{

switch(slect)

{ case 1:{
write_com(0xcb);
write_com(0x0d);
if(jia1==0)
{delay(10);
if(jia1==0)
{
delay(200);
sec=read_1302(0x81);
sec=sec&0x7f;
sec=bcdtoasc(sec);
sec+=1;
if(sec==60)
sec=0;

sec=asctobcd(sec);
write_1302(0x80,sec);
write_com(0x0c);
write_bcd(sec);

}
}
if(jian1==0)
{
delay(10);
if(jian1==0)
{ delay(200);

sec=read_1302(0x81);
sec=sec&0x7f;
sec=bcdtoasc(sec);
sec-=1;
if(sec<0)sec=59;
sec=asctobcd(sec);
write_1302(0x80,sec);
write_com(0x0c);
write_bcd(sec);

}

}
break;
}

case 2:{write_com(0xc8);
write_com(0x0d);
if(jia1==0)
{delay(10);
if(jia1==0)
{
delay(200);
min=read_1302(0x83);
min=bcdtoasc(min);
min+=1;
if(min==60)
min=0;

min=asctobcd(min);
write_1302(0x82,min);
write_com(0x0c);
write_bcd(min);

}
}
if(jian1==0)
{
delay(10);
if(jian1==0)
{ delay(200);

min=read_1302(0x83);
min=bcdtoasc(min);
min-=1;
if(min<0)min=59;
min=asctobcd(min);
write_1302(0x82,min);
write_com(0x0c);
write_bcd(min);

}

}

break;}
case 3:{write_com(0xc5);
write_com(0x0d);
if(jia1==0)
{delay(10);
if(jia1==0)
{
delay(200);
hour=read_1302(0x85);
hour=bcdtoasc(hour);
hour+=1;
if(hour==24)
hour=0;

hour=asctobcd(hour);
write_1302(0x84,hour);
write_com(0x0c);
write_bcd(hour);

}
}
if(jian1==0)
{
delay(10);
if(jian1==0)
{ delay(200);

hour=read_1302(0x85);
hour=bcdtoasc(hour);
hour-=1;
if(hour<0)hour=23;
hour=asctobcd(hour);
write_1302(0x84,hour);
write_com(0x0c);
write_bcd(hour);

}

}
break;}
case 4:{write_com(0x8d);
write_com(0x0d);
if(jia1==0)
{delay(10);
if(jia1==0)
{
delay(200);
mon=read_1302(0x89);
year=read_1302(0x8d);
day=read_1302(0x87);
day=bcdtoasc(day);
day+=1;
year=bcdtoasc(year);
if(year%4==0)
{
if(mon==2)
{if(day==29)day=1;}
else if(day==30)day=1;
}
else{ switch(mon)
{case 1:{if(day==32)day=1;break;}
case 2:{if(day==30)day=1;break;}
case 3:{if(day==32)day=1;break;}
case 4:{if(day==31)day=1;break;}
case 5:{if(day==32)day=1;break;}
case 6:{if(day==31)day=1;break;}
case 7:{if(day==32)day=1;break;}
case 8:{if(day==32)day=1;break;}
case 9:{if(day==31)day=1;break;}
case 0x10:{if(day==32)day=1;break;}
case 0x11:{if(day==31)day=1;break;}
case 0x12:{if(day==32)day=1;break;}

}
if(mon==1|mon==3|mon==5|mon==7|mon==8|mon==0x10|mon==0x12)
if(day==32)day=0; */
if(mon==4|mon==6|mon==9|mon==0x11)
{if(day==31)day=1;}
else if(day==32)day=1;

}

day=asctobcd(day);
write_1302(0x86,day);
write_com(0x0c);
write_bcd(day);

}
}
if(jian1==0)
{
delay(10);
if(jian1==0)
{ delay(200);

day=read_1302(0x87);
day=bcdtoasc(day);

day-=1;
if(day<1)
{ mon=read_1302(0x89);
year=read_1302(0x8d);
switch(mon)
{ case 0x01: {day=31; break;}
case 0x02: {day=29; break;}
case 3: {day=31; break;}
case 4: {day=30; break;}
case 5: {day=31; break;}
case 6: {day=30; break;}
case 7: {day=31; break;}
case 8: {day=31; break;}
case 9: {day=30; break;}
case 0x10: {day=31; break;}
case 0x11: {day=30; break;}
case 0x12: {day=31; break;}
}
year=bcdtoasc(year);
if(year%4==0)if(mon==2)day=28;
}
day=asctobcd(day);
write_1302(0x86,day);
write_com(0x0c);
write_bcd(day);

}

}
break;}
case 5:{write_com(0x8a);
write_com(0x0d);
if(jia1==0)
{delay(10);
if(jia1==0)
{
delay(200);
mon=read_1302(0x89);
mon=bcdtoasc(mon);
mon+=1;
if(mon==13)
mon=1;

mon=asctobcd(mon);
write_1302(0x88,mon);
write_com(0x0c);
write_bcd(mon);

}
}
if(jian1==0)
{
delay(10);
if(jian1==0)
{ delay(200);

mon=read_1302(0x89);
mon=bcdtoasc(mon);
mon-=1;
if(mon<1)mon=12;
mon=asctobcd(mon);
write_1302(0x88,mon);
write_com(0x0c);
write_bcd(mon);

}

}
break;}
case 6:{write_com(0x87);
write_com(0x0d);
if(jia1==0)
{delay(10);
if(jia1==0)
{
delay(200);
year=read_1302(0x8d);
year=bcdtoasc(year);
year+=1;
if(year==100)
year=0;

year=asctobcd(year);
write_1302(0x8c,year);
write_com(0x0c);
write_bcd(year);

}
}
if(jian1==0)
{
delay(10);
if(jian1==0)
{ delay(200);

year=read_1302(0x8d);
year=bcdtoasc(year);
year-=1;
if(year<0)year=99;
year=asctobcd(year);
write_1302(0x8c,year);
write_com(0x0c);
write_bcd(year);

}

}
break;}
case 7:{write_com(0xcd);
write_com(0x0d);
if(jia1==0)
{delay(10);
if(jia1==0)
{
delay(200);
week=read_1302(0x8b);
week=bcdtoasc(week);
week+=1;
if(week==8)
week=1;

week=asctobcd(week);
write_1302(0x8a,week);
write_com(0x0c);
disp_week();
/* switch(week)
{

case 1:{write_lcd(0xcd,tab[0]); break;}
case 2:{write_lcd(0xcd,tab[1]); break;}
case 3:{write_lcd(0xcd,tab[2]); break;}
case 4:{write_lcd(0xcd,tab[3]); break;}
case 5:{write_lcd(0xcd,tab[4]); break;}
case 6:{write_lcd(0xcd,tab[5]); break;}
case 7:{write_lcd(0xcd,tab[6]); break;}

} */
}
}
if(jian1==0)
{
delay(10);
if(jian1==0)
{ delay(200);

week=read_1302(0x8b);
week=bcdtoasc(week);
week-=1;
if(week<1)week=7;
week=asctobcd(week);
write_1302(0x8a,week);
write_com(0x0c);
disp_week();
/* switch(week)
{

case 1:{write_lcd(0xcd,tab[0]); break;}
case 2:{write_lcd(0xcd,tab[1]); break;}
case 3:{write_lcd(0xcd,tab[2]); break;}
case 4:{write_lcd(0xcd,tab[3]); break;}
case 5:{write_lcd(0xcd,tab[4]); break;}
case 6:{write_lcd(0xcd,tab[5]); break;}
case 7:{write_lcd(0xcd,tab[6]); break;}

} */

}

}
break; }

}

}

}

main()
{
init();
init_1302();

write_lcd(0x80,"DATE:20 - -");
write_lcd(0x80+0x40,"TIME: : :");

while(1)
{
gettime_1302();
set=1;
if(set==0)
{delay(10);
if(set==0){delay(200);slect++;}
}
while(slect)
keyscan();
disp_time();
delay(30);
}
}

② ds1302時鍾晶元怎麼連單片機

ds1302時鍾晶元採用I2C匯流排和單片機連接,如果 單 片機沒有I2C匯流排介面,可以用普通IO口模擬

③ 請問,單片機學習板這個DS1032晶元為什麼會燒掉

「做而論道」講的很有道理,同意他的觀點。一種可能的原因就是I/O沖突,具體地說就是:DS1302受到燒錄程序的時序干擾,開始向外輸出數據,而單片機或編程時序也向外輸出數據。這樣,如果DS1302輸出1,而單片機或編程時序輸出0,一高(5V)一低(0V),出現短路!那麼,就會有很大的電流從DS1302輸出,導致1302嚴重發熱而燒毀。
另外,復位腳是低電平有效,高電平時DS1302正常工作;所以J10跳線連接上時,DS1302就開始工作了。

④ ds1302時鍾晶元。。。誰給我看下這個程序液晶可以顯示,但是時鍾不會走顯示的也不是我初始化的時間。

1、存儲和讀取的時間的內容應為BCD碼。write_1302(0x8c,0x11);maioh=(miao&0x7f)>>4;……
2、建議上電後,ce=0;clk=0;延時一會兒再操作1302。或者多寫兩次撤銷防寫命令。
write_1302(0x8e,0x10);筆誤,應該是 write_1302(0x8e,0x80);
3、建議讀寫1302的clk速率降低,如datasheet,2MHz最大。
4、建議首次改寫時間時,將秒值最高位置為1,時間設置完畢後,清秒值最高位。
5、建議,刷新LCD速率在100mS~500mS。沒有必要不停地讀1302,寫1602。
6、檢查硬體連接,及起振晶體。或更換一片1302再看看。
最後調試成功,請告知原因。謝謝!

⑤ DS1302晶元如何進行12/24 制顯示時間轉換的編程(C語言)

修改DS1302晶元的(85h、84h)寄存的BIT7進行12/24小時模式切換,BIT7=1是12小時模式,BIT7=0是24小時模式。

⑥ 時鍾晶元DS1302功能及具體介紹

摘 要:介紹美國DALLAS公司推出的具有涓細電流充電能力的低功耗實時時鍾電路DS1302的結構、工作原理及其在實時顯示時間中的應用。它可以對年、月、日、周日、時、分、秒進行計時,且具有閏年補償等多種功能。給出DS1302在讀寫中的C51程序及流程圖,以及在調試過程中的注意事項。
關鍵詞:時鍾電路;實時時鍾;單片機;應用

1 引言
現在流行的串列時鍾電路很多,如DS1302、 DS1307、PCF8485等。這些電路的介面簡單、價格低廉、使用方便,被廣泛地採用。本文介紹的實時時鍾電路DS1302是DALLAS公司的一種具有涓細電流充電能力的電路,主要特點是採用串列數據傳輸,可為掉電保護電源提供可編程的充電功能,並且可以關閉充電功能。採用普通32.768kHz晶振。

2 DS1302的結構及工作原理
DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鍾電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。採用三線介面與CPU進行同步通信,並可採用突發方式一次傳送多個位元組的時鍾信號或RAM數據。DS1302內部有一個31×8的用於臨時性存放數據的RAM寄存器。DS1302是DS1202的升級產品,與DS1202兼容,但增加了主電源/後背電源雙電源引腳,同時提供了對後背電源進行涓細電流充電的能力。
2.1 引腳功能及結構
圖1示出DS1302的引腳排列,其中Vcc1為後備電源,VCC2為主電源。在主電源關閉的情況下,也能保持時鍾的連續運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大於Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小於Vcc1時,DS1302由Vcc1供電。X1和X2是振盪源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數據傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單位元組或多位元組數據的傳送手段。當RST為高電平時,所有的數據傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數據傳送,I/O引腳變為高阻態。上電運行時,在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串列數據輸入輸出端(雙向),後面有詳細說明。SCLK始終是輸入端。

2.2 DS1302的控制位元組
DS1302 的控制字如圖2所示。控制位元組的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入DS1302中,位6如果為0,則表示存取日歷時鍾數據,為1表示存取RAM數據;位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制位元組總是從最低位開始輸出。

2.3 數據輸入輸出(I/O)
在控制指令字輸入後的下一個SCLK時鍾的上升沿時,數據被寫入DS1302,數據輸入從低位即位0開始。同樣,在緊跟8位的控制指令字後的下一個SCLK脈沖的下降沿讀出DS1302的數據,讀出數據時從低位0位到高位7。
2.4 DS1302的寄存器
DS1302有12個寄存器,其中有7個寄存器與日歷、時鍾相關,存放的數據位為BCD碼形式,其日歷、時間寄存器及其控制字見表1。

此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鍾突發寄存器及與RAM相關的寄存器等。時鍾突發寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內容。 DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態為一個8位的位元組,其命令控制字為C0H~FDH,其中奇數為讀操作,偶數為寫操作;另一類為突發方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個位元組,命令控制字為FEH(寫)、FFH(讀)。

3 DS1302實時顯示時間的軟硬體
DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。圖3示出DS1302與89C2051的連接圖,其中,時鍾的顯示用LCD。
3.1 DS1302與CPU的連接
實際上,在調試程序時可以不加電容器,只加一個32.768kHz 的晶振即可。只是選擇晶振時,不同的晶振,誤差也較大。另外,還可以在上面的電路中加入DS18B20,同時顯示實時溫度。只要佔用CPU一個口線即可。 LCD還可以換成LED,還可以使用北京衛信傑科技發展有限公司生產的10位多功能8段液晶顯示模塊LCM101,內含看門狗(WDT)/時鍾發生器及兩種頻率的蜂鳴器驅動電路,並有內置顯示RAM,可顯示任意欄位筆劃,具有3-4線串列介面,可與任何單片機、IC介面。功耗低,顯示狀態時電流為2μA (典型值),省電模式時小於1μA,工作電壓為2.4V~3.3V,顯示清晰。

3.2 DS1302實時時間流程
圖4示出DS1302的實時時間流程。根據此流程框圖,不難採集實時時間。下面結合流程圖對DS1302的基本操作進行編程:

根據本人在調試中遇到的問題,特作如下說明:
DS1302 與微處理器進行數據交換時,首先由微處理器向電路發送命令位元組,命令位元組最高位MSB(D7)必須為邏輯1,如果D7=0,則禁止寫DS1302,即防寫;D6=0,指定時鍾數據,D6=1,指定RAM數據;D5~D1指定輸入或輸出的特定寄存器;最低位LSB(D0)為邏輯0,指定寫操作(輸入), D0=1,指定讀操作(輸出)。
在DS1302的時鍾日歷或RAM進行數據傳送時,DS1302必須首先發送命令位元組。若進行單位元組傳送,8位命令位元組傳送結束之後,在下2個SCLK周期的上升沿輸入數據位元組,或在下8個SCLK周期的下降沿輸出數據位元組。
DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態為一個8位的位元組,其命令控制字為C0H~FDH,其中奇數為讀操作,偶數為寫操作;再一類為突發方式下的RAM寄存器,在此方式下可一次性讀、寫所有的RAM的31個位元組。
要特別說明的是備用電源B1,可以用電池或者超級電容器(0.1F以上)。雖然DS1302在主電源掉電後的耗電很小,但是,如果要長時間保證時鍾正常,最好選用小型充電電池。可以用老式電腦主板上的3.6V充電電池。如果斷電時間較短(幾小時或幾天)時,就可以用漏電較小的普通電解電容器代替。100 μF就可以保證1小時的正常走時。DS1302在第一次加電後,必須進行初始化操作。初始化後就可以按正常方法調整時間。

4 結論
DS1302 存在時鍾精度不高,易受環境影響,出現時鍾混亂等缺點。DS1302可以用於數據記錄,特別是對某些具有特殊意義的數據點的記錄,能實現數據與出現該數據的時間同時記錄。這種記錄對長時間的連續測控系統結果的分析及對異常數據出現的原因的查找具有重要意義。傳統的數據記錄方式是隔時采樣或定時采樣,沒有具體的時間記錄,因此,只能記錄數據而無法准確記錄其出現的時間;若採用單片機計時,一方面需要採用計數器,佔用硬體資源,另一方面需要設置中斷、查詢等,同樣耗費單片機的資源,而且,某些測控系統可能不允許。但是,如果在系統中採用時鍾晶元DS1302,則能很好地解決這個問題。

閱讀全文

與ds1032晶元如何編程相關的資料

熱點內容
商品驗偽用什麼APP查 瀏覽:350
請問大數據與會計專業做什麼的 瀏覽:77
如何修改數據上年結轉 瀏覽:6
win7一直配置文件重啟 瀏覽:124
佳能ir2525i網路掃描 瀏覽:283
win10指紋無法識別 瀏覽:646
jsp中怎麼引入js文件 瀏覽:925
文件名構成部分 瀏覽:484
興國互聯網app有哪些 瀏覽:475
北京時間票房多少票房統計數據 瀏覽:750
探探文件夾是哪個 瀏覽:429
如何分類微信文件 瀏覽:446
城市天際線win10 瀏覽:813
運動APP跑步如何抓作弊 瀏覽:57
微信中秋節動態祝福語 瀏覽:703
練英語的網站哪個好 瀏覽:894
科來網路分析系統報價 瀏覽:437
哪裡可以上傳自己的php網站 瀏覽:373
安卓手機如何打開zx文件 瀏覽:531
app攻擊是什麼 瀏覽:888

友情鏈接