#include<reg51.h>
sbit RS=P3^0;
sbit RW=P3^1;
sbit E=P3^2;
unsigned char count=0;
unsigned int hour=0,min=0,sec=0;
unsigned char str[]={"0123456789"};
unsigned char str1[]={"CLOCK:"};
void delay(unsigned int t)
{
unsigned int i=0,j=0;
for(i=0;i<t;i++)
{
for(j=0;j<120;j++);
}
}
void writedat(unsigned char dat)
{
RS=1;
RW=0;
E=0;
delay(5);
P2=dat;
E=1;
E=0;
}
void writecom(unsigned char com)
{
RS=0;
RW=0;
E=0;
delay(5);
P2=com;
E=1;
E=0;
}
void initlcd()
{
writecom(0x38);
writecom(0x0c);
writecom(0x06);
writecom(0x01);
}
void display()
{
unsigned int temp0=0,temp1=0,temp2=0,temp3=0,temp4=0,temp5=0;
unsigned int i=0;
temp0=hour/10;
temp1=hour%10;
temp2=min/10;
temp3=min%10;
temp4=sec/10;
temp5=sec%10;
writecom(0x80);
delay(5);
while(str1[i]!='\0')
{
writedat(str1[i]);
delay(5);
i++;
}
writecom(0x80+0x40+4);
delay(5);
writedat(str[temp0]);
delay(5);
writedat(str[temp1]);
delay(5);
writedat(':');
delay(5);
writedat(str[temp2]);
delay(5);
writedat(str[temp3]);
delay(5);
writedat(':');
delay(5);
writedat(str[temp4]);
delay(5);
writedat(str[temp5]);
delay(5);
}
void inittimer()
{
TMOD=0x01;
TH0=(65536-50000)/256; //50ms
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
}
void main()
{
initlcd();
inittimer();
while(1)
{
display();
}
}
void timer0_isr() interrupt 1
{
TH0=(65536-50000)/256; //50ms
TL0=(65536-50000)%256;
count++;
if(count==20) //1s
{
sec=sec++;
count=0;
}
if(sec==60)
{
min=min++;
sec=0;
}
if(min==60)
{
hour=hour++;
min=0;
}
if(hour==24)
{
hour=0;
}
}