LCD1602简单时钟程序Word格式文档下载.doc

上传人:b****3 文档编号:15494768 上传时间:2022-11-02 格式:DOC 页数:7 大小:29KB
下载 相关 举报
LCD1602简单时钟程序Word格式文档下载.doc_第1页
第1页 / 共7页
LCD1602简单时钟程序Word格式文档下载.doc_第2页
第2页 / 共7页
LCD1602简单时钟程序Word格式文档下载.doc_第3页
第3页 / 共7页
LCD1602简单时钟程序Word格式文档下载.doc_第4页
第4页 / 共7页
LCD1602简单时钟程序Word格式文档下载.doc_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

LCD1602简单时钟程序Word格式文档下载.doc

《LCD1602简单时钟程序Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《LCD1602简单时钟程序Word格式文档下载.doc(7页珍藏版)》请在冰豆网上搜索。

LCD1602简单时钟程序Word格式文档下载.doc

i++);

}

/*******写命令**********/

voidlcd_wmc(uchari)

P0=i;

RS=0;

RW=0;

E=0;

delay();

E=1;

/*******写数据***********/

voidlcd_wmd(uchari)

RS=1;

/*******初始化液晶*******/

voidlcd_init()

lcd_wmc(0x01);

lcd_wmc(0x38);

lcd_wmc(0x0c);

lcd_wmc(0x06);

lcd_wmc(0xc9);

for(i=0;

6;

i++)

lcd_wmd(shen[i]);

lcd_wmc(0xc0);

/*******更新缓冲区子程序*******/

voidnewbuf()

dispbuf[0]=s%10;

dispbuf[1]=s/10;

dispbuf[3]=m%10;

dispbuf[4]=m/10;

dispbuf[6]=h%10;

dispbuf[7]=h/10;

/*******显示子程序**********/

voiddisp(uchardispadd)

uchartmp;

lcd_wmc(dispadd);

tmp=dispbuf[7];

tmp=word[tmp];

lcd_wmd(tmp);

tmp=dispbuf[6];

tmp=dispbuf[5];

tmp=dispbuf[4];

tmp=dispbuf[3];

tmp=dispbuf[2];

tmp=dispbuf[1];

tmp=dispbuf[0];

/*********************键盘子程序***********************/

ucharkeypro(void)

ucharscanl,scanh;

P2=0x0f;

//先将所有行线拉低

if((P2&

0x0f)!

=0x0f)//如果列线有变化

{

delay();

//延迟一段时间。

if((P2&

=0x0f)//如果此时此刻列线还有变化,说明确实有按键按下

{

scanl=0xfe;

while((scanl&

0x10)!

=0)

{

P2=scanl;

//给P1口赋扫描码,每次只拉低一行

if((P2&

0xf0)!

=0xf0)//如果判断为真,则说明找到了按键按下的行

{

scanh=(P2&

0xf0)|0x0f;

//计算识别码

return(~scanh)+(~scanl);

}

elsescanl=(scanl<

<

1)|0x01;

//否则依次将第二,第三,第四行拉低

}

}

}

return0;

//没有按键按下返回0

/********************时间调整子程序********************/

voidadjustime()

uchark;

staticucharadd;

k=keypro();

switch(k)

case0x88:

if(!

at){add=0xc1;

EA=0;

lcd_wmc(0xc1);

lcd_wmc(0x0f);

at=1;

else{lcd_wmc(0xc0);

lcd_wmc(0x0c);

at=0;

EA=1;

}break;

case0x48:

if(at)

{

if(add==0xc1){add=0xc7;

lcd_wmc(add);

else{add=add-3;

lcd_wmc(add);

}

break;

case0x28:

if(add==0xc7){add=0xc1;

else{add=add+3;

}

break;

case0x18:

if(at)

{

if(add==0xc1)h++;

if(h==24)

h=0;

if(add==0xc4)m++;

if(m==60)

m=0;

if(add==0xc7)s++;

if(s==60)

s=0;

newbuf();

disp(0xc0);

lcd_wmc(add);

}

break;

default:

break;

}

if(k!

{

while((P1&

=0xf0)

P1=0xf0;

}

/*********************初始化子程序**********************/

voidinit()

TMOD=0x01;

TH0=0x4c;

TL0=0x00;

EA=1;

ET0=1;

TR0=1;

counter=0;

h=12;

m=0;

s=0;

dispbuf[2]=10;

dispbuf[5]=10;

/***************************主程序************************/

voidmain(void)

{

init();

lcd_init();

while

(1)

adjustime();

if(!

at)

{

//闪烁

if(counter<

10)

dispbuf[2]=10;

dispbuf[5]=10;

else

{

dispbuf[2]=11;

dispbuf[5]=11;

//更新显示缓冲区及调用显示程序

if(counter==0)

newbuf();

disp(0xc0);

}

elseif(counter==10)

}

}

/*************************定时器0的中断**********************/

voidTime0()interrupt1using2//再次强调中断子程序执行时间越短越好

TH0=(65536-46075)/256;

TL0=(65536-46075)%256;

counter++;

if(counter==20)

s++;

if(s==60)

{

m++;

s=0;

if(m==60)

h++;

m=0;

if(h==24)

h=0;

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

当前位置:首页 > 总结汇报 > 其它

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

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