#include <reg52.h>
#define uchar unsigned char
typedef unsigned int uint;
// 待打印的字符集
uchar code table[] = "Hello MCU!";
uchar code table1[] = "ZhangYuGuang!";
//定义使能控制引脚
sbit en = P1^5;
sbit rw = P1^6;
sbit rs = P1^7;
void delay(uint z){
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//写地址
void write_com(uchar com)
{
rs = 0;//写地址
rw = 0;//进行写操作
en = 0;
P2 = com;
delay(5);
en = 1;
delay(5);
en = 0;
}
//写数据
void write_data(uchar date)
{
rs = 1;//写数据
rw = 0;//进行写操作
en = 0;
P2 = date;
delay(5);
en = 1;
delay(5);
en = 0;
}
void init(){
rw = 0;
en =0;
// 使能端为0,写指令
write_com(0x38);// 设置显示方式
write_com(0x0c);// 开显示,包括光标和闪烁
write_com(0x06);// 写一个字符后,地址指针自动加一
write_com(0x01);// 显示清0,数据指针清0
}
void main(void){
uchar num = 0;
init();
//把数据写到1602里 分两步
//1 写位置(地址指针会自动加1,所以只传入一个初值就可以了)
write_com(0x80);
//2写数据
for(num=0;num<10;num++)
{
write_data(table[num]);
delay(5);
}
//1 写位置(地址指针会自动加1,所以只传入一个初值就可以了)
write_com(0x80+0x40);
//2写数据
for(num=0;num<13;num++)
{
write_data(table1[num]);
delay(5);
}
while(1);
}
先看编译器的错误提示信息
点击编译器输出的错误信息,可以跳到出错的那段代码,看看问题出现在哪。