1602时钟带设定.docx

上传人:b****5 文档编号:29753750 上传时间:2023-07-26 格式:DOCX 页数:17 大小:16.46KB
下载 相关 举报
1602时钟带设定.docx_第1页
第1页 / 共17页
1602时钟带设定.docx_第2页
第2页 / 共17页
1602时钟带设定.docx_第3页
第3页 / 共17页
1602时钟带设定.docx_第4页
第4页 / 共17页
1602时钟带设定.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

1602时钟带设定.docx

《1602时钟带设定.docx》由会员分享,可在线阅读,更多相关《1602时钟带设定.docx(17页珍藏版)》请在冰豆网上搜索。

1602时钟带设定.docx

1602时钟带设定

#includereg52.h

#defineucharunsignedchar

#defineuintunsignedint

ucharcodetable[]=HL-8051---clock;

ucharcodetable1[]=--------------;

ucharcodetable2[]=ALL0000--;

ucharcodetable3[]=;

ucharclk_time[3];秒,分,时寄存器初始值

sbitT_RST=P1^0;ds1302-5

sbitT_IO=P1^1;ds1302-6

sbitT_CLK=P1^2;ds1302-7

sbiten=P3^4;

sbitrw=P3^6;

sbitrs=P3^5;

sbitled=P2^5;

sbitdula=P2^6;

sbitwela=P2^7;

sbitACC0=ACC^0;

sbitACC7=ACC^7;

sbitup=P3^0;

sbitdown=P3^1;

sbitset=P3^2;

sbitdid=P2^3;

sbitGND=P3^7;

ucharnum,clock_ss,clock_sg,clock_fs,clock_fg,clock_ms,clock_mg,b,clock_s,clock_g;

charhour,mie,sei,c,nhour,nmie,shour,smie;

DS1302:

写入操作(上升沿)

voidwrite_byte(ucharda)

{

uchari;

ACC=da;

for(i=8;i0;i--)

{

T_IO=ACC0;

T_CLK=0;

T_CLK=1;

ACC=ACC1;

}

}

DS1302:

读取操作(下降沿)

ucharread_byte(void)

{

uchari;

for(i=0;i8;i++)

{

ACC=ACC1;

T_CLK=1;

T_CLK=0;

ACC7=T_IO;

}

return(ACC);

}

DS1302写入数据(先送地址,再写数据)

voidwrite_1302(ucharaddr,ucharda)

{

T_RST=0;停止工作

T_CLK=0;

T_RST=1;重新工作

write_byte(addr);写入地址

write_byte(da);

T_RST=0;

T_CLK=1;

}

DS1302读取数据(先送地址,再读数据)

ucharread_1302(ucharaddr)

{

uchartemp;

T_RST=0;停止工作

T_CLK=0;

T_RST=1;重新工作

write_byte(addr);写入地址

temp=read_byte();

T_RST=0;

T_CLK=1;停止工作

return(temp);

}

 

延时程序=a1ms

voiddelay(uintz)

{

uintx,y;

for(x=z;x0;x--)

for(y=110;y0;y--);

}

voidfn()

{

did=0;

delay(120);

did=1;

delay(120);

did=0;

delay(120);

did=1;

delay(120);

did=0;

delay(120);

did=1;

delay(120);

did=0;

delay(320);

did=1;

delay(400);

}

voidwrite_com(ucharcom)

{

rs=0;

P0=com;

delay(5);

en=1;

delay(5);

en=0;

}

voidwrite_data(uchardate)

{

rs=1;

P0=date;

delay(5);

en=1;

delay(5);

en=0;

}

voidmorning()

{shour=clock_ss10+clock_sg;

smie=clock_fs10+clock_fg;

if(b==0)

{

if(nhour==shour)

{

if(smie=nmie)

{

fn();

}

}

}

}

voidinit()

{

b=0;

nhour=0;

nmie=0;

led=0;关led

rw=0;

GND=0;

en=0;

write_com(0x38);设置液晶

write_com(0x0c);设光标等

write_com(0x06);写一个字符地址指针加1且光标加1

write_com(0x01);清屏

write_com(0x80);设置s地址指针

}

voiddisplay(ucharadd,date)

{

if(b==0)

{

clock_ms=clk_time[0]16;clock_mg=clk_time[0]%16;

led=0;

clock_fs=clk_time[1]16;clock_fg=clk_time[1]%16;

led=0;

clock_ss=clk_time[2]16;clock_sg=clk_time[2]%16;

write_com(0x80+0x44);

write_data(0x30+clock_ss);

write_com(0x80+0x45);

write_data(0x30+clock_sg);

write_com(0x80+0x47);

write_data(0x30+clock_fs);

write_com(0x80+0x48);

write_data(0x30+clock_fg);

write_com(0x80+0x4a);

write_data(0x30+clock_ms);

write_com(0x80+0x4b);

write_data(0x30+clock_mg);

}

if(b!

=0)

{

clock_s=date10;clock_g=date%10;

write_com(0x80+0x40+add);

write_data(0x30+clock_s);

write_data(0x30+clock_g);

}

}

voidkey()

{

ucharclock_s1,clock_s2,clock_f1,clock_f2;

rw=0;

if(set==0)

{

delay(10);

if(set==0)

{

did=0;

delay(10);did=1;

b++;

}

while(!

set);

if(b==1)

{

hour=clock_ss10+clock_sg;

mie=clock_fs10+clock_fg;

write_com(0x80+0x45);

write_com(0x0f);

}

if(b==2)

{

write_com(0x80+0x48);

}

if(b==3)

{

write_com(0x80+0x40);

for(num=0;num13;num++)

{

write_data(table2[num]);

}

write_com(0x80+0x45);display(4,nhour);write_com(0x80+0x45);

}

if(b==4)

{

write_com(0x80+0x48);

display(7,nmie);write_com(0x80+0x48);

}

if(b==5)

{

write_com(0x80+0x40);

for(num=0;num4;num++)

{

write_data(table3[num]);

}

write_com(0x80+0x45);

write_com(0x0c);

b=0;

clock_s1=hour10;十进制转十六进制

clock_s2=hour%10;十进制转十六进制

clock_s1=clock_s1&0xff;十进制转十六进制

clock_s2=clock_s2&0xff;十进制转十六进制

clock_s1=4;十进制转十六进制

clock_s1=clock_s1clock_s2;十进制转十六进制

clock_f1=mie10;十进制转十六进制

clock_f2=mie%10;十进制转十六进制

clock_f1=clock_f1&0xff;全1出1与运算

clock_f2=clock_f2&0xff;十进制转十六进制

clock_f1=4;十进制转十六进制

clock_f1=clock_f1clock_f2;十进制转十六进制

write_1302(0x8e,0x00);WP=0写操作

write_1302(0x80,0x00);写秒

write_1302(0x82,clock_f1);写分

write_1302(0x84,clock_s1);写时

write_1302(0x86,0x14);写日

write_1302(0x88,0x02);写月

write_1302(0x8a,0x06);写星期

write_1302(0x8c,0x09);

write_1302(0x8e,0x80);WP=1写保护

}

}

if(b!

=0)

{

if(up==0)

{

delay(10);

if(up==0)

{

did=0;

delay(10);

did=1;

while(!

up);

if(b==1)

{

hour++;

if(hour=24)

{

delay

(1);

hour=0;

}

display(4,hour);

write_com(0x80+0x45);

}

if(b==2)

{

mie++;

if(mie=60)

{

mie=0;

}

display(7,mie);

write_com(0x80+0x48);

}

if(b==3)

{

nhour++;

if(nhour=24)

{

delay

(1);

nhour=0;

}

display(4,nhour);

write_com(0x80+0x45);

}

if(b==4)

{

nmie++;

if(nmie=60)

{

nmie=0;

}

display(7,nmie);

write_com(0x80+0x48);

}

}

}

if(down==0)

{

delay(10);

if(down==0)

{

did=0;

delay(10);

did=1;

while(!

down);

if(b==1)

{

hour--;

if(hour0)

{

hour=23;

}

display(4,hour);

write_com(0x80+0x45);

}

if(b==2)

{

mie--;

if(mie0)

{

mie=59;

}

display(7,mie);

write_com(0x80+0x48);

}

if(b==3)

{

nhour--;

if(nhour0)

{

nhour=23;

}

display(4,nhour);

write_com(0x80+0x45);

}

if(b==4)

{

nmie--;

if(nmie0)

{

nmie=59;

}

display(7,nmie);

write_com(0x80+0x48);

}

}

}

}

}

voidmain()

{

uchartemp=0x80;

uchari;

init();

wela=1;关开发板数码管

P0=0Xff;关开发板数码管

wela=0;关开发板数码管

for(num=0;num15;num++)

{

write_data(table[num]);

delay(100);

}

write_com(0x80+0x40);

for(num=0;num15;num++)

{

write_data(table1[num]);

}

for(num=0;num16;num++)

{

write_com(0x18);

delay(20);

}

write_1302(0x8e,0x00);

write_1302(0x90,0xa4);

write_1302(0x8e,0x80);

while

(1)

{

if(b==0)

{temp=0x81;

for(i=0;i3;i++)

{

clk_time[i]=read_1302(temp);

temp+=2;

}

display(0x4b,0x00);

}

morning();

key();

}

}

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

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1