////// 液晶秒表程序
/// ///4*4矩阵键盘 第五版 2009.07。23。22:11
#include<reg52.h>
#include<my.h>
unsigned char code xin[]={"my heart is here"};
unsigned int count;
void main()
{
unsigned int i;
count=0;
year=2009;
month=7;
day=24;
hour=9;
min=15;
second=30;
init();
init_int();/////////////////////////////////////////定时器中断初始化
for(i=0;i<16;i++) /////////////////////////////////必须要写,不知道为什么
{
Write_Comn(0X18);
delay(400);
}
showheart();
while(1)
{
KEY4X4_scan();////////////////////////////////////////////键盘扫描
switch(keyvalue)
{
case 0x1E: number=1;
init();
shownumber();
break;
case 0x1D:number=2;
shownumber();
break;
case 0x1B:number=3;
shownumber();
break;
case 0x17:number=4;
shownumber();
break;
case 0x2E:number=5;
shownumber();
break;
case 0x2D:number=6;
shownumber();
break;
case 0x2B:number=7;
shownumber();
break;
case 0x27:number=8;
shownumber();
break;
case 0x3E:number=9;
shownumber();
break;
case 0x3D:number=10; numberflag=0;shownumber();break;
case 0x3B:number=11; numberflag=0;shownumber();break;
case 0x37:number=12; numberflag=0;shownumber();break;
case 0x4E:number=13; numberflag=0;shownumber();
break;
case 0x4D:number=14; numberflag=1;
showtime();
break;
case 0x4B:number=15; numberflag=0;
showheart();
init();
break;
case 0x47: number=16;
init();
numberflag=0;
mysecond();
init();
break;
default:
Write_Comn(0x80+16);
// for(i=0;i<16;i++)
//Write_Data(xin[i]);
break;
}
}
}
void time_int() interrupt 1 /////////////////////////用于日历的定时器中断
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==20)
{
second++;
if(second==60)
{ min++;second=0;}
if(min==60)
{ hour++;min=0;}
if(hour==24)
{day++;hour=0;}
if(day==31)
{month++;day=1;}
if(month==12)
{year++;month=1;}
count=0;
}
if(numberflag==1)
showtime();
}