有懂得能告诉我一声为什么w前会多个e出来吗?

img


下列为主要程序:

#include "lcd1602.h"
#include "delay.h"
#include "STC12C5A60S2.h"
unsigned char str[]="welcome to MCU";
unsigned char*p1; //定义一个无符号指针变量

/lcd写指令函数/
void lcd_write_cmd(unsigned char cmd)
{
RS=0; //数据/命令选择位
RW=0; //数据读写控制位
EN=0; //使能控制位(高脉冲)
lcd1602_data=cmd;
delay(2);
EN=1;
delay(2);
EN=0;
}

/lcd写数据函数/
void lcd_write_dat(unsigned char dat)
{
RS=1;
RW=0;
EN=0;
lcd1602_data=dat;
delay(2);
EN=1;
delay(2);
EN=0;
}

/lcd光标定位函数/
void lcd_location(unsigned char column,unsigned char line)
{
if(line==0)
lcd_write_cmd(0x80+column);
if(line==1)
lcd_write_cmd(0x80+0x40+column);
}

/lcd1602初始化/
void lcd1602_init()
{
lcd_write_cmd(0x0c); //显示开、光标设置
lcd_write_cmd(0x06); //显示光标移动设置
lcd_write_cmd(0x01); //显示清屏
}

/lcd显示函数/
void lcd_display()
{
unsigned char a; //字符串字符数计数
lcd_location(1,0); //选择文字显示的位置(列,行)
p1=&str[0];
for(a=0;a<14;a++)
{
lcd_write_dat(*p1);
p1++;
}

}

lcd_location(1,0); //选择文字显示的位置(列,行)
为啥从第1列开始?那第0列不就保留了么?

没有main函数,无法确定全部显示操作。你的代码从第一列开始的,0列的内容可能是前面的代码留下来的。