#include<reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit Lcden = P2^7;
sbit Lcdrs = P2^6;
sbit Lcdwr = P2^5;
uchar code display[] = "I like study" ;
void delay(uint i)
{
while(i--);
}
void write_com(uchar com)//按照时序图设置RS、R/W、EN的高低电平
{
Lcdrs = 0;
Lcdwr = 0;
Lcden = 0;
P0 = com;
delay(1000);//延时没有严格的限制,只要表格中要求的时间即可
Lcden = 1;
delay(1000);
Lcden = 0;
}
void write_dat(uchar dat)
{
Lcdrs = 1;
Lcdwr = 0;
Lcden = 0;
P0 = dat;
delay(100);
Lcden = 1;
delay(100);
Lcden = 0;
}
void Init()
{
write_com(0x38);//设定8位数据线,显示两行,5*7的点阵/字符
write_com(0x0f);// 控制显示开关
write_com(0x06);//每次写入数据狗光标右移,整屏不移动
write_com(0x01);//清屏指令
}
void main()
{
uchar i,num;
Init();
write_com(0x80+0x10);//设定初始地址。 显示地址只有0x00~0x0f和第二行0x40~0x4f;其他地址在屏幕右边,
//不显示出来,如果要让整个屏幕从右边显示出来,就需要将初始地址设置在屏幕右边,
//然后通过屏幕整体向左移动来实现
for(i=0;i<12;i++)
{
write_dat( display[i] );
delay(100);
}
for(num=0;num<16;num++)
{
write_com(0x18);//整屏向左移动
delay(10000);
}
while(1);//有这个程序后,显示屏不会闪烁显示。如果没有这个程序,不将程序停留在这成死循环,
//则LCD会闪烁显示文字。
}
学会看错误提示
右键点#include <reg52.h>
打开reg52.h看看6,8,10行是啥
你居然把主要代码写到一个编译器自带的头文件reg52.h里去了。