📄 szz1.c
字号:
#include <AT89x51.H>
#include <intrins.h>
#define uchar unsigned char
#define begin 1
sbit RS=P0^2;
sbit RW=P0^3;
sbit E=P0^4;
void lcd_initial();
void write_s(uchar *s);
void write_data(uchar);
void write_code(uchar);
void check_busy();
void display();
void delay(uchar);
uchar s,m,h,n;
void main()
{
TMOD=0x01;
EA=1;
ET0=1;
TL0=50000%256;
TH0=50000/256;
TR0=1;
lcd_initial();
delay(20);
write_code(0x86+begin);//显示:
delay(2);
write_s(":");
delay(2);
write_code(0x89+begin);//显示:
delay(2);
write_s(":");
display();
delay(20);
write_code(0x80);
write_s("TIME");
while(1)
{
display();
delay(20);
}
}
void lcd_initial()
{
write_code(0x01);
delay(5);
write_code(0x38);
delay(5);
write_code(0x0c);
delay(5);
write_code(0x06);
}
void check_busy()
{
RS=0;
RW=1;
E=1;
while(0x80&P2);
E=0;
}
void write_s(uchar *s)
{
while(*s>0)
{
write_data(*s);
s++;
}
}
void write_data(uchar dat)
{
check_busy();
P2=dat;
_nop_();
_nop_();
RS=1;
RW=0;
E=1;
_nop_();
_nop_();
E=0;
delay(2);
}
void write_code(uchar command)
{
check_busy();
P2=command;
_nop_();
_nop_();
RS=0;
RW=0;
E=1;
_nop_();
_nop_();
E=0;
delay(2);
}
void display()
{
write_code(0x84+begin);//显示小时
delay(2);
write_data(h/10+0x30);
delay(2);
write_data(h%10+0x30);
delay(2);
write_code(0x87+begin);//显示分钟
delay(2);
write_data(m/10+0x30);
delay(2);
write_data(m%10+0x30);
delay(2);
write_code(0x8a+begin);//显示秒钟
delay(2);
write_data(s/10+0x30);
delay(2);
write_data(s%10+0x30);
}
void delay(uchar i)
{
uchar j=250;
for(;i>0;i--,j=250)
{while(--j);}
}
void timer( ) interrupt 1
{
TL0=50000%256;
TH0=50000/256;
n++;
if(!(n%40))
{
s++;
if(s==60)
{
s=0;
m++;
if(m==60)
{
m=0;
h++;
if(h==24)
h=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -