本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
#include<reg52.h>
sbit lcden=P2^7;
sbit rs=P2^6;
sbit rw=P2^5;
int num;
int a,b,c,d,e,f;
unsigned char code table[]="0123456789";
unsigned char code table1[]=":";
unsigned char code table2[]=" ";
void delay(int x)
{
int i,j;
for(i=110;i>0;i--)
for(j=x;j>0;j--);
}
void write_com(int com)
{
rs=0;
P0=com;
delay(10);
lcden=1;
delay(10);
lcden=0;
}
void write_data(unsigned char date)
{
rs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void T1_time()interrupt 3
{
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
num++;
if(num==20)
{
num=0;
if(a==9) /*此处执行时钟的进位功能*/
{
a=-1;
b++;
}
if(b==6)
{
b=0 ;
c++;
}
if(c==10)
{
c=0;
d++;
}
if(d==6)
{
d=0;
e++;
}
if(e==10)
{
e=0;
f++;
}
if((f==2)&&(e==4))
{
f=0;
e=0;
}
a++;
}
}
void main()
{
rw=0;
init();
TMOD=0x10;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET1=1;
TR1=1;
while(1)
{
write_com(0x80);
for(num=0;num<4;num++)
{
write_data(table2[0]);
}
write_data(table[f]);
write_data(table[e]);
write_data(table1[0]);
write_data(table[d]);
write_data(table[c]);
write_data(table1[0]);
write_data(table[b]);
write_data(table[a]);
for(num=0;num<4;num++)
{
write_data(table2[0]);
}
}
}
main函数的运行一次的时间比中断时间长,每次运行程序都停在00:00:00.怎么改才可以完成时钟的功能呢,,,,,,这是一个通过液晶显示器显示的时钟 |