文档库 最新最全的文档下载
当前位置:文档库 › LCD1206时钟显示

LCD1206时钟显示

LCD1206时钟显示
LCD1206时钟显示

液晶LCD1602时钟显示键盘控制

#include

#define uchar unsigned char

#define uint unsigned int

sbit rs=P2^0;

sbit rw=P2^1;

sbit en=P2^2;

sbit key1=P3^1;

sbit key2=P3^2;

sbit key3=P3^3;

sbit rd=P3^4;

uchar num,count,keynum;

char second,minute,hour;

uchar code table[]="2011-06-20 THU"; uchar code table1[]="00:00:00";

void delay(uint x)

{

uint i,j;

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

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

}

void write_com(uchar com)

{

rs=0;

rw=0;

en=1;

P0=com;

delay(5);

en=0;

}

void write_date(uchar date)

{

rs=1;

rw=0;

en=1;

P0=date;

delay(5);

en=0;

}

void init()

{ en=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80+0x02);

for(num=0;num<14;num++)

{

write_date(table[num]);

delay(5);

}

write_com(0x80+0x44);

for(num=0;num<8;num++)

{

write_date(table1[num]);

delay(5);

}

TMOD=0x01;

EA=1;

ET0=1;

TR0=1;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

}

void write_shijian(uchar add,uchar date) {

uchar shi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+0x40+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

void keyscan()

{

rd=0;

if(key1==0)

{

delay(5);

if(key1==0)

{ keynum++;

while(!key1);

if(keynum==1)

{

TR0=0;

write_com(0x80+0x40+10); write_com(0x0f);

}

}

if(keynum==2)

{

write_com(0x80+0x40+7); }

if(keynum==3)

{

write_com(0x80+0x40+4); }

if(keynum==4)

{

keynum=0;

write_com(0x0c);

TR0=1;

}

}

if(keynum!=0)

{

if(key2==0)

{

delay(5);

if(key2==0)

{

while(!key2);

if(keynum==1)

{

second++;

if(second==60)

second=0;

write_shijian(10,second); write_com(0x80+0x40+10); }

if(keynum==2)

{

minute++;

if(minute==60)

minute=0;

write_shijian(7,minute); write_com(0x80+0x40+7); }

if(keynum==3)

{

hour++;

if(hour==24)

hour=0;

write_shijian(4,hour);

write_com(0x80+0x40+4); }

}

}

if(key3==0)

{

delay(5);

if(key3==0)

{

while(!key3);

if(keynum==1)

{

second--;

if(second==-1)

second=59;

write_shijian(10,second); write_com(0x80+0x40+10); }

if(keynum==2)

{

minute--;

if(minute==-1)

minute=59;

write_shijian(7,minute); write_com(0x80+0x40+7); }

if(keynum==3)

{

hour--;

if(hour==-1)

hour=23;

write_shijian(4,hour);

write_com(0x80+0x40+4);

}

}

}

}

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

count++;

if(count==20)

{

count=0;

second++;

if(second==60)

{

second=0;

minute++;

if(minute==60)

{

minute=0;

hour++;

if(hour==24)

{

hour=0;

}

write_shijian(4,hour); }

write_shijian(7,minute); }

write_shijian(10,second);

}

}

void main()

{

init();

while(1)

{

keyscan();

}}

相关文档