ds1302+lcd1602程序Word文档下载推荐.docx
- 文档编号:17955835
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:12
- 大小:15.90KB
ds1302+lcd1602程序Word文档下载推荐.docx
《ds1302+lcd1602程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ds1302+lcd1602程序Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
sbitsclk=P1^4;
sbitio=P1^5;
voidwrite_ds1302_byte(uint);
voidlcd_busy_wait();
voidwrite_ds1302(uint,uint);
uintread_ds1302(uint);
voidinit_time();
voidread_time();
voidxieshijian2(uintadd,uintshu);
voidxieshijian1(uintadd,uintshu);
voidxiexingqi(uintadd,uintshu);
voidtime_bcd(uintx);
uinttime_wadd[]={0x8c,0x88,0x86,0x8a,0x84,0x82,0x80};
uinttime_radd[]={0x8d,0x89,0x87,0x8b,0x85,0x83,0x81};
uinttime_init[7]={11,0,0,1,0,0,0};
uinttime_shuzhi[7]={0,0,0,0,0,0,0};
ucharxingqi[7][3]={{"
MON"
},{"
TUS"
WEN"
THU"
FRI"
STA"
SUN"
}};
//按键定义
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
//标志位定义
voidkeyscan();
uintgn_flag;
//程序开始
voidmain()
{
uintnum;
lcd1602_init();
init_time();
write_1602_cmd(0x80);
for(num=0;
num<
16;
num++)
{
write_1602_dat(nyx[num]);
}
write_1602_cmd(0x80+0x40);
13;
write_1602_dat(sfm[num]);
while
(1)
keyscan();
if(gn_flag==0)
{
read_time();
xieshijian2(10,time_shuzhi[6]);
xieshijian2(7,time_shuzhi[5]);
xieshijian2(4,time_shuzhi[4]);
xiexingqi(12,time_shuzhi[3]);
xieshijian1(9,time_shuzhi[2]);
xieshijian1(6,time_shuzhi[1]);
xieshijian1(3,time_shuzhi[0]);
}
}
}
/************************
1602读写时序操作
************************/
voidwrite_1602_cmd(uintcmd)
lcd_busy_wait();
en=0;
rs=0;
rw=0;
lcd_data=cmd;
_nop_();
en=1;
voidwrite_1602_dat(uintdat)
rs=1;
lcd_data=dat;
voidlcd1602_init()
write_1602_cmd(0x38);
delay1ms(4);
write_1602_cmd(0x0c);
write_1602_cmd(0x06);
write_1602_cmd(0x01);
lcd_data=0xff;
voidlcd_busy_wait()
rw=1;
lcd_data=0xff;
while(lcd_data&
0x80);
voiddelay1ms(uintx)
uinti,j;
for(i=x;
i>
0;
i--)
for(j=110;
j>
j--);
ds1302的时序操作
voidwrite_ds1302_byte(uintdate)
uinti;
for(i=0;
i<
8;
i++)
sclk=0;
io=date&
0x01;
date>
>
=1;
sclk=1;
}
voidwrite_ds1302(uintcmd,uintdate)
{
rst=0;
sclk=0;
rst=1;
write_ds1302_byte(cmd);
write_ds1302_byte(date);
io=1;
sclk=1;
uintread_ds1302(uintadd)
uintshu,i;
write_ds1302_byte(add);
shu>
if(io)shu|=0x80;
returnshu;
voidinit_time()
uinti,a,b;
7;
a=time_init[i]/10;
b=time_init[i]%10;
time_init[i]=a*16+b;
write_ds1302(0x8e,0x00);
write_ds1302(time_wadd[i],time_init[i]);
write_ds1302(0x8e,0x80);
voidread_time()
time_shuzhi[i]=read_ds1302(time_radd[i]);
voidxieshijian2(uintadd,uintshu)
uinta,b;
a=shu/16;
b=shu%16;
write_1602_cmd(0x80+0x40+add);
write_1602_dat(0x30+a);
write_1602_dat(0x30+b);
voidxieshijian1(uintadd,uintshu)
write_1602_cmd(0x80+add);
voidxiexingqi(uintadd,uintshu)
3;
write_1602_dat(xingqi[shu-1][i]);
}
voidtime_bcd(uintx)
a=time_shuzhi[x]/16;
b=time_shuzhi[x]%16;
if(b==0x0a)
a++;
b=0;
time_shuzhi[x]=a*16+b;
}
/********************************
按键设置时间
********************************/
voidkeyscan()
if(key1==0)
delay1ms(5);
if(key1==0)
{
while(!
key1);
gn_flag++;
if(gn_flag==8)
{
gn_flag=0;
write_1602_cmd(0x0c);
write_ds1302(0x8e,0x00);
for(i=0;
{
write_ds1302(time_wadd[i],time_shuzhi[i]);
}
write_ds1302(0x8e,0x10);
}
switch(gn_flag)
case1:
write_1602_cmd(0x80+0x40+11);
write_1602_cmd(0x0f);
break;
case2:
write_1602_cmd(0x80+0x40+8);
case3:
write_1602_cmd(0x80+0x40+5);
case4:
write_1602_cmd(0x80+14);
case5:
write_1602_cmd(0x80+10);
case6:
write_1602_cmd(0x80+7);
case7:
write_1602_cmd(0x80+4);
default:
break;
if(key2==0)
if(key2==0)
{
key2);
case1:
time_shuzhi[6]++;
time_bcd(6);
if(time_shuzhi[6]==0x59)time_shuzhi[6]=0;
xieshijian2(10,time_shuzhi[6]);
write_1602_cmd(0x80+0x40+11);
break;
case2:
time_shuzhi[5]++;
time_bcd(5);
if(time_shuzhi[5]==0x59)time_shuzhi[5]=0;
xieshijian2(7,time_shuzhi[5]);
write_1602_cmd(0x80+0x40+8);
case3:
time_shuzhi[4]++;
time_bcd(4);
if(time_shuzhi[4]==0x12)time_shuzhi[4]=0;
xieshijian2(4,time_shuzhi[4]);
write_1602_cmd(0x80+0x40+5);
case4:
time_shuzhi[3]++;
time_bcd(3);
if(time_shuzhi[3]==0x8)time_shuzhi[3]=1;
xiexingqi(12,time_shuzhi[3]);
write_1602_cmd(0x80+14);
case5:
time_shuzhi[2]++;
time_bcd
(2);
if(time_shuzhi[2]==0x30)time_shuzhi[2]=0;
xieshijian1(9,time_shuzhi[2]);
write_1602_cmd(0x80+10);
case6:
time_shuzhi[1]++;
time_bcd
(1);
if(time_shuzhi[1]==0x13)time_shuzhi[1]=1;
xieshijian1(6,time_shuzhi[1]);
write_1602_cmd(0x80+7);
case7:
time_shuzhi[0]++;
time_bcd(0);
if(time_shuzhi[6]==0x50)time_shuzhi[6]=0;
xieshijian1(3,time_shuzhi[0]);
write_1602_cmd(0x80+4);
default:
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ds1302 lcd1602 程序