单片机lcd1602液晶屏电子时钟C程序Word格式文档下载.docx
《单片机lcd1602液晶屏电子时钟C程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机lcd1602液晶屏电子时钟C程序Word格式文档下载.docx(11页珍藏版)》请在冰点文库上搜索。
time00-00-00t"
},shijian1[16]={"
date00-00-00"
};
//这三个引脚参考资料
sbitE=P2^7;
//1602使能引脚
sbitRW=P2^6;
//1602读写引脚
sbitRS=P2^5;
//1602数据/命令选择引脚
sbitLE=P3^7;
sbitkey1=P3^2;
//小时修改建
sbitkey2=P3^3;
//分钟修改键
sbitkey3=P3^4;
//显示选择键
*名称:
delay()
*功能:
延时,延时时间大概为5US。
*输入:
无
*输出:
voiddelay()
{
uintn=250;
while(n--);
}
bitBusy(void)
这个是一个读状态函数,读出函数是否处在忙状态
输入的命令值
bitBusy(void)
bitbusy_flag=0;
RS=0;
RW=1;
E=1;
delay();
busy_flag=(bit)(P0&
0x80);
E=0;
returnbusy_flag;
wcmd(uchardel)
1602命令函数
voidwcmd(uchardel)
while(Busy());
RW=0;
P0=del;
wdata(uchardel)
1602写数据函数
需要写入1602的数据
voidwdata(uchardel)
RS=1;
L1602_init()
1602初始化,请参考1602的资料
voidL1602_init(void)
wcmd(0x38);
wcmd(0x0c);
wcmd(0x06);
wcmd(0x01);
voidtimeInit()
TMOD=0X01;
//定义定时器1工作方式16位定时c/t选为定时器GATE选TR1控制
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
TR0=1;
EA=1;
ET0=1;
voidtimeint()interrupt1
count++;
/*************************
***时间日期设定
*************************/
voidshijianxian()
if(count>
=100)
{
miao++;
count=0;
}
if(miao>
=60)
fen++;
miao=0;
if(fen>
shi++;
fen=0;
if(shi>
=24)
ri++;
shi=0;
if(ri>
30)
yue++;
ri=1;
if(yue>
12)
nian++;
;
yue=1;
if(nian==99)
nian=0;
if((key1==0)&
((t%6)==0))
((t%6)==0))
{
23)shi=0;
}
if((key3==0)&
shi--;
if(shi<
0)shi=23;
((t%6)==1))
((t%6)==1))
59)fen=0;
fen--;
if(fen<
0)fen=59;
((t%6)==2))
((t%6)==2))yue++;
((t%6)==3))
((t%6)==3))ri++;
/******************************
****时间显示
*******************************/
voidshijianxian1()
shijian[6]=shi/10+48;
shijian[7]=shi%10+48;
shijian[9]=fen/10+48;
shijian[10]=fen%10+48;
shijian[12]=miao/10+48;
shijian[13]=miao%10+48;
shijian[8]=45;
shijian[11]=45;
shijian[15]=t+48;
****日期显示
voidriqi()
shijian1[6]=nian/10+48;
shijian1[7]=nian%10+48;
shijian1[9]=yue/10+48;
shijian1[10]=yue%10+48;
shijian1[12]=ri/10+48;
shijian1[13]=ri%10+48;
shijian1[8]=45;
shijian1[11]=45;
Main()
主函数
voidMain()
uinti;
L1602_init();
timeInit();
while
(1)
shijianxian();
shijianxian1();
if(key2==0)
if((key2==0))
t++;
if(t>
=6)t=0;
riqi();
for(i=0;
i<
16;
i++)
wcmd(0xc0+i);
wdata(shijian[i]);
wcmd(0x80+i);
wdata(shijian1[i]);
}