12864汉字液晶显示按键电子时钟程序.docx

上传人:b****7 文档编号:26149865 上传时间:2023-06-17 格式:DOCX 页数:11 大小:15.38KB
下载 相关 举报
12864汉字液晶显示按键电子时钟程序.docx_第1页
第1页 / 共11页
12864汉字液晶显示按键电子时钟程序.docx_第2页
第2页 / 共11页
12864汉字液晶显示按键电子时钟程序.docx_第3页
第3页 / 共11页
12864汉字液晶显示按键电子时钟程序.docx_第4页
第4页 / 共11页
12864汉字液晶显示按键电子时钟程序.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

12864汉字液晶显示按键电子时钟程序.docx

《12864汉字液晶显示按键电子时钟程序.docx》由会员分享,可在线阅读,更多相关《12864汉字液晶显示按键电子时钟程序.docx(11页珍藏版)》请在冰豆网上搜索。

12864汉字液晶显示按键电子时钟程序.docx

12864汉字液晶显示按键电子时钟程序

12864汉字液晶显示按键电子时钟程序

12864汉字液晶显示--按键电子时钟程序

12864汉字液晶显示--按键电子时钟程序(具有闪烁,移位,加一,减一功能)

#include

#include

#defineucharunsignedchar

voidlcd_ini();

voidascii_change(void);

voiddelay();

voidwri_add(ucharcom);

voidwri_dat(ucharcom1);

voidshan(void);

voiddisp();

voidtkey(void);

sbitcs=P1^7;

sbitsid=P1^6;

sbitsclk=P1^5;

bitflag=1;

uchardat,count,f=1;//f测试哪个单元为当前闪烁状态

uchardataclock[3]={23,45,12};

ucharcodeclockname[10]={"北京时间:

"};

uchardatanum[6];

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

voidmain()

{

lcd_ini();

count=10;//机器周期为1us,每次定时50ms,此变量用来控制循环次数,在下面赋值为20,共定时1秒

TMOD=0x01;

TL0=0XB0;

TH0=0X3C;

EA=1;

ET0=1;

IT0=1;

EX0=1;

TR0=1;

while

(1)

{

back:

ascii_change();

disp();

delay();

if(flag==1)

gotoback;

tkey();

shan();

delay();

}

}

/****lcd初始化*******/voidlcd_ini()

{

wri_add(0x30);

delay();

wri_add(0x0c);

delay();

wri_add(0x01);

delay();wri_add(0x06);

delay();

}/********定时程序*************/

voidtimer1()interrupt1using2

{

TL0=0XB0;

TH0=0X3C;

count--;

if(count==0)

{

count=10;

clock[2]++;//秒//

}

else

gotoout;

if(clock[2]==60)

{

clock[2]=0;

clock[1]++;//分//

}

if(clock[1]==60)

{

clock[1]=0;

clock[0]++;

}if(clock[0]==24)//时//

clock[0]=0;out:

_nop_();

}

/*******十位个位转换成ASCII码************/

voidascii_change(void)

{

num[5]=clock[2]-(clock[2]/10)*10+0x30;

num[4]=clock[2]/10+0x30;

num[3]=clock[1]-(clock[1]/10)*10+0x30;

num[2]=clock[1]/10+0x30;

num[1]=clock[0]-(clock[0]/10)*10+0x30;

num[0]=clock[0]/10+0x30;

}

/********廷时程序*************/

voiddelay()

{

uchari,j;

for(i=250;i>0;i--)

for(j=250;j>0;j--);

}

/*****Writeaddress*********/

voidwri_add(ucharcom)

{

uchari,j,k;

cs=0;

cs=1;

dat=0xf8;

for(i=1;i<=8;i++)

{

sid=(bit)(dat&0x80);

sclk=0;

sclk=1;

sclk=0;

dat=dat<<1;

}

dat=com;

dat=dat&0xf0;

for(j=1;j<=8;j++)

{

sid=(bit)(dat&0x80);

sclk=0;

sclk=1;

sclk=0;

dat=dat<<1;

}

dat=com;

dat=_cror_(dat,4);//此为高低四位交换

dat=dat&0xf0;

for(k=1;k<=8;k++)

{

sid=(bit)(dat&0x80);

sclk=0;

sclk=1;

sclk=0;

dat=dat<<1;

}}

/*********Writedata*************/

voidwri_dat(ucharcom1)

{

uchari,j,k;

cs=0;

cs=1;

dat=0xfa;

for(i=1;i<=8;i++)

{

sid=(bit)(dat&0x80);

sclk=0;

sclk=1;

sclk=0;

dat=dat<<1;

}

dat=com1;

dat=dat&0xf0;

for(j=1;j<=8;j++)

{

sid=(bit)(dat&0x80);

sclk=0;

sclk=1;

sclk=0;

dat=dat<<1;

}

dat=com1;

dat=_cror_(dat,4);//此为高低四位交换

dat=dat&0xf0;

for(k=1;k<=8;k++)

{

sid=(bit)(dat&0x80);

sclk=0;

sclk=1;

sclk=0;

dat=dat<<1;

}

}

/******displayprogram***********/

voiddisp()

{

uchari,k=0;

wri_add(0x80);

for(i=1;i<=9;i++)

wri_dat(clockname[i-1]);

wri_add(0x90);

for(i=1;i<=6;i++)

{

k++;

if(k==3||k==5)

wri_dat(clockname[8]);//时间之间的冒号。

wri_dat(num[i-1]);

}

}

/*******闪烁程序*************************/

voidshan(void)

{

uchari,k=0;

wri_add(0x90);

if(f==1)

{

num[0]='';

num[1]='';

}

else

gotonext;

for(i=1;i<=6;i++)

{

k++;

if(k==3||k==5)

wri_dat(clockname[8]);//时间之间的冒号。

wri_dat(num[i-1]);

}

gotoreturn1;

next:

if(f==2)

{

num[2]='';

num[3]='';

}

else

gotonext1;

for(i=1;i<=6;i++)

{

k++;

if(k==3||k==5)

wri_dat(clockname[8]);//时间之间的冒号。

wri_dat(num[i-1]);

}

gotoreturn1;

next1:

if(f==3)

{

num[4]='';

num[5]='';

}

else

gotoreturn1;

for(i=1;i<=6;i++)

{

k++;

if(k==3||k==5)

wri_dat(clockname[8]);//时间之间的冒号。

wri_dat(num[i-1]);

}

return1:

_nop_();

}/*******外部中断***********/

voidintr0()interrupt0using2

{

flag=~flag;//判断是否闪烁位//

TR0=~TR0;//闪关定时否则开定时

f=1;

}/**********按键程序************/

voidtkey(void)

{

ucharjudcekey;

judcekey=P1&0x0f;

if(judcekey==0x0f)

gotoreturn2;

/*******移位键*********/

if(judcekey==0x0e)

f++;

if(f==4)

f=1;

/**********加一键*********/

if(judcekey==0x0d)

{clock[f-1]++;}

if(f==1)

{if(clock[f-1]==24){

clock[f-1]=0;}

}

else{if(clock[f-1]==60)

clock[f-1]=0;

}

/******减一键***********/

if(judcekey==0x0b)

{clock[f-1]--;}

if(f==1)

{if(clock[f-1]==0xff){

clock[f-1]=23;}

}

else

{if(clock[f-1]==0xff)

clock[f-1]=59;

}return2:

_nop_();

}

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

当前位置:首页 > 求职职场 > 简历

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

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