ds1302时钟程序Word文档下载推荐.docx

上传人:b****2 文档编号:3803448 上传时间:2023-05-02 格式:DOCX 页数:24 大小:17.22KB
下载 相关 举报
ds1302时钟程序Word文档下载推荐.docx_第1页
第1页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第2页
第2页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第3页
第3页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第4页
第4页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第5页
第5页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第6页
第6页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第7页
第7页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第8页
第8页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第9页
第9页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第10页
第10页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第11页
第11页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第12页
第12页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第13页
第13页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第14页
第14页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第15页
第15页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第16页
第16页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第17页
第17页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第18页
第18页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第19页
第19页 / 共24页
ds1302时钟程序Word文档下载推荐.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ds1302时钟程序Word文档下载推荐.docx

《ds1302时钟程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ds1302时钟程序Word文档下载推荐.docx(24页珍藏版)》请在冰点文库上搜索。

ds1302时钟程序Word文档下载推荐.docx

//时间初始化

voidread_rtc(void);

//读时间

voidtime_pros(void);

//时间处理

voiddelay(uintx);

voidinit(void);

//液晶初始化

voidwrite_com(ucharcom);

//写指令

voidwrite_date(uchardate);

//写数据

voidlcd_pos(ucharX,ucharY);

//voidwrite_sfm(ucharadd,uchardate);

//时分秒的写

voidkeyscan();

sbitkey1=P3^0;

//移

sbitkey2=P3^1;

//加

sbitkey3=P3^3;

//减

uchars1num;

charshi,fen,miao,zhou,yue,ri,nian;

voidmain()

{

uchari;

//set_rtc();

delay(30);

init();

//液晶初始化

//LCD(0,'

9'

);

//在第一个位置显示9

//LCD(1,'

//LCD(2,'

lcd_pos(2,0);

for(i=0;

i<

16;

i++)

{

write_date(table1[i]);

delay(20);

}

lcd_pos(3,0);

write_date(table2[i]);

while

(1)

{

read_rtc();

//读数据

keyscan();

//键盘扫描

time_pros();

//处理数据

write_com(0x99);

//秒地址

write_date(0x30+disp[4]);

//秒个位

write_date(0x30+disp[5]);

//秒十位

write_com(0x9b);

write_date(0x30+disp[2]);

write_date(0x30+disp[3]);

write_com(0x9d);

write_date(0x30+disp[0]);

write_date(0x30+disp[1]);

write_com(0x8f);

write_date(0x30+disp[10]);

write_date(0x30+disp[11]);

write_com(0x8d);

write_date(0x30+disp[6]);

write_date(0x30+disp[7]);

write_com(0x8b);

write_date(0x30+disp[8]);

write_date(0x30+disp[9]);

write_com(0x89);

write_date(0x30+disp[12]);

write_date(0x30+disp[13]);

}

voidkeyscan()

uchara,b;

if(key1==0)

delay(5);

s1num++;

while(key1==0);

if(s1num==1)

{

//write_com(0c);

//write_com(0x0f);

//write_com(0x98+5);

//写入光标位置

if(s1num==2)

write_com(0x98+3);

if(s1num==3)

write_com(0x98+1);

if(s1num==4)

write_com(0x88+7);

if(s1num==5)

write_com(0x88+5);

if(s1num==6)

write_com(0x88+3);

if(s1num==7)

write_com(0x88+1);

if(s1num>

=8)

{s1num=0;

write_com(0x0c);

write_ds1302(0x80,0x00);

//时钟正常工作

}

if(s1num!

=0)

if(key2==0)

if(key2==0)

while(!

key2);

{delay(20);

time_data[6]=read_ds1302(0x81);

//读取当前时间(bcd码)

a=time_data[6]/16;

b=time_data[6]%16;

miao=a*10+b;

miao++;

if(miao==60)

miao=0;

a=miao/10;

b=miao%10;

time_data[6]=a*16+b;

write_ds1302(0x8e,0x00);

//去除写保护

write_ds1302(0x80,time_data[6]);

write_ds1302(0x8e,0x80);

//加上写保护

time_data[5]=read_ds1302(0x83);

a=time_data[5]/16;

b=time_data[5]%16;

fen=a*10+b;

fen++;

if(fen==60)

fen=0;

a=fen/10;

b=fen%10;

time_data[5]=a*16+b;

write_ds1302(0x82,time_data[5]);

time_data[5]=read_ds1302(0x81);

time_data[4]=read_ds1302(0x85);

a=time_data[4]/16;

b=time_data[4]%16;

shi=a*10+b;

shi++;

if(shi==24)

shi=0;

a=shi/10;

b=shi%10;

time_data[4]=a*16+b;

write_ds1302(0x84,time_data[4]);

time_data[4]=read_ds1302(0x81);

time_data[3]=read_ds1302(0x8b);

a=time_data[3]/16;

b=time_data[3]%16;

zhou=a*10+b;

zhou++;

if(zhou==8)

zhou=1;

a=zhou/10;

b=zhou%10;

time_data[3]=a*16+b;

write_ds1302(0x8a,time_data[3]);

time_data[3]=read_ds1302(0x81);

time_data[2]=read_ds1302(0x87);

a=time_data[2]/16;

b=time_data[2]%16;

ri=a*10+b;

ri++;

if(ri==32)

ri=1;

a=ri/10;

b=ri%10;

time_data[2]=a*16+b;

write_ds1302(0x86,time_data[2]);

time_data[2]=read_ds1302(0x81);

time_data[1]=read_ds1302(0x89);

a=time_data[1]/16;

b=time_data[1]%16;

yue=a*10+b;

yue++;

if(yue==13)

yue=1;

a=yue/10;

b=yue%10;

time_data[1]=a*16+b;

write_ds1302(0x88,time_data[1]);

time_data[1]=read_ds1302(0x81);

time_data[0]=read_ds1302(0x8d);

a=time_data[0]/16;

b=time_data[0]%16;

nian=a*10+b;

nian++;

if(nian==99)

nian=0;

a=nian/10;

b=nian%10;

time_data[0]=a*16+b;

write_ds1302(0x8c,time_data[0]);

time_data[0]=read_ds1302(0x81);

if(key3==0)

key3);

miao--;

if(miao==-1)

miao=59;

{delay(20);

fen--;

if(fen==-1)

fen=59;

shi--;

if(shi==-1)

shi=24;

zhou--;

if(zhou==0)

zhou=7;

ri--;

if(ri==0)

ri=31;

yue--;

if(yue==0)

yue=12;

nian--;

if(nian==0)

nian=99;

voidwrite_ds1302_byte(uchardat)//写一个字节

for(i=0;

8;

{

clk=0;

io=dat&

0x01;

//准备数据

dat=dat>

>

1;

//移位

clk=1;

}

voidwrite_ds1302(ucharadd,uchardat)//写地址写数据

rst=0;

_nop_();

rst=1;

write_ds1302_byte(add);

//传地址

write_ds1302_byte(dat);

//传数据

io=1;

ucharread_ds1302(ucharadd)//写地址读数据

uchari,value;

rst=0;

_nop_();

clk=0;

rst=1;

write_ds1302_byte(add);

//低电平数据不变,数据可读

value=value>

if(io)

value=value|0x80;

}

returnvalue;

//voidset_rtc(void)//校准初始时间

//{

//uchari,j;

//for(i=0;

7;

i++)//十进制数转换为BCD码

//{

//j=time_data[i]/10;

//十位

//time_data[i]=time_data[i]%10;

//个位

//time_data[i]=time_data[i]+j*16;

//十进制数转换为BCD码

//}

//write_ds1302(0x8e,0x00);

//write_ds1302(write_add[i],time_data[i]);

//写地址传数据

//}//对时完成

////write_ds1302(0x8e,0x80);

//加上写保护(防止误动作)

//}

voidread_rtc(void)//读时间

uchari;

time_data[i]=read_ds1302(read_add[i]);

voiddelay(uintx)

{

uinta,b;

for(a=x;

a>

0;

a--)

for(b=110;

b>

b--);

voidwrite_com(ucharcom)//写指令数据

LCD_RS=0;

LCD_RW=0;

LCD_EN=0;

P0=com;

LCD_EN=1;

voidwrite_date(uchardate)//写指令数据

LCD_RS=1;

P0=date;

voidlcd_pos(ucharX,ucharY)

ucharpos;

if(X==0)

{X=0x80;

elseif(X==1)

{X=0x90;

elseif(X==2)

{X=0x88;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2