📄 1602.c
字号:
#include<AT89x52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs = P2^0;
sbit rw = P2^1;
sbit ep = P2^2;
uchar code dis1[] = {"xiong zhi peng"};
uchar code dis2[] = {"shi 417 laoda "};
delay(uint ms)
{ // 延时子程序
int i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
lcd_bz()
{ // 测试LCD忙碌状态
uchar result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = P0&0x80;
ep = 0;
return result;
}
lcd_com(uchar cmd)
{
while(lcd_bz());
rs=0;
rw=0;
ep=0;
P0=cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
lcd_date(uchar dat)
{
while(lcd_bz());
rs=1;
rw=0;
ep=0;
P0=dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
lcd_init()
{
lcd_com(0x38);
delay(1) ;
lcd_com(0x0c);
delay(1) ;
lcd_com(0x06);
delay(1) ;
lcd_com(0x01);
delay(1) ;
}
void flash()
{
delay(600); //控制停留时间
lcd_com(0x08); //关闭显示
delay(200); //延时
lcd_com(0x0c); //开显示
delay(200);
lcd_com(0x08); //关闭显示
delay(200); //延时
lcd_com(0x0c); //开显示
delay(200);
}
a()
{
uchar i;
lcd_init();
lcd_com(0x80+0x10) ;
i=0;
while(dis1[i] != '\0')
{
lcd_date(dis1[i]);
i++;
}
lcd_com(0x80+0x40+0x10) ;
i=0;
while(dis1[i] != '\0')
{
lcd_date(dis2[i]);
i++;
}
i=0;
for(i=0;i<15;i++)
{
lcd_com(0x18) ;
delay(100) ;
}
flash() ;
}
b()
{ uchar i;
lcd_init();
lcd_com(0x80) ;
i=0;
while(dis1[i] != '\0')
{
lcd_date(dis1[i]);
i++;
}
lcd_com(0x80+0x40) ;
i=0;
while(dis1[i] != '\0')
{
lcd_date(dis2[i]);
i++;
}
i=0;
for(i=0;i<22;i++)
{
lcd_com(0x18) ;
delay(100) ;
}
}
main()
{
lcd_init();
delay(10);
while(1)
{
a();
b();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -