关于1602时钟的问题
这是代码
#include<reg51.h>
#define uchar unsigned char
#define GPIO_LCD P0
uchar F,M,S;
uchar code discode[]={"0123456789:"};
uchar Realtime[3];
sbit LCD_E=P2^7;
sbit LCD_RS=P2^6;
sbit LCD_WR=P2^5;
uchar Count;
void delay1ms(uchar);
void LCD_write_command(uchar); //写命令
void LCD_write_data(uchar); //写数据
void LCD_set_xy(uchar,uchar);
void LCD_init();
void DisPlay_Time();
void SHIJIAN();
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TR0=1;
ET0=1;
LCD_init();
LCD_set_xy(4,0);
S=10;
F=5;
M=25;
// DisPlay_Time();
while(1)
{
LCD_set_xy(4,0);
SHIJIAN();
// DisPlay_Time();
LCD_write_command(0x02);
}
}
void LCD_write_command(uchar com)
{
LCD_RS=0;
LCD_WR=0;
GPIO_LCD=com;
delay1ms(10);
LCD_E=1;
delay1ms(10);
LCD_E=0;
}
void LCD_write_data(uchar dat)
{
LCD_RS=1;
LCD_WR=0;
GPIO_LCD=dat;
delay1ms(10);
LCD_E=1;
delay1ms(10);
LCD_E=0;
}
void delay1ms(uchar n) //误差 0us
{
unsigned char a,b,c;
for(c=n;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
void LCD_init()
{
LCD_write_command(0x38);
LCD_write_command(0x0c);
LCD_write_command(0x06);
LCD_write_command(0x01);
LCD_write_command(0x80);
}
void LCD_set_xy(uchar x,uchar y)
{
uchar address;
if(y==0)
address=0x80+x;
else
address=0x0c+x;
LCD_write_command(address);
}
void DisPlay_Time()
{
//秒
LCD_write_data(discode[S/10]);
LCD_write_data(discode[S%10]);
LCD_write_data(discode[10]);
//分
LCD_write_data(discode[F/10]);
LCD_write_data(discode[F%10]);
LCD_write_data(discode[10]);
//时
LCD_write_data(discode[M/10]);
LCD_write_data(discode[M%10]);
}
void enter() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
Count++;
}
void SHIJIAN()
{
if(Count==20)
{
Count=0;
M++;
if(M==60)
{
M=0;
F++;
if(F==60)
{
F=0;
S++;
if(S==24)
{
S=0;
}
}
}
}
DisPlay_Time();
}