为什么LCD1602只显示一个8呢?求大神帮忙
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#include<intrins.h>
typedef unsigned char uchar;
uchar code str1[]={"861066456"};
uchar code str2[]={"number"};
sbit RS=P1^0;
sbit RW=P1^1;
sbit EN=P2^5;
void delay() //判断LCD是否繁忙
{
P0=0xff;
do
{
RS=0;
RW=1;
EN=0;
EN=1;
}while(P0^7==1);
EN=0;
}
void w_cmd(uchar mingling)
{
delay();
EN=0;
RS=0;
RW=0;
P0=mingling;
EN=1;
EN=0;
}
void w_dat(uchar shuju)
{
delay();
EN=0;
RS=1;
RW=0;
P0=shuju;
EN=1;
EN=0;
}
void chushihua()
{
w_cmd(0x38);
w_cmd(0x0c);
w_cmd(0x06);
w_cmd(0x01);
}
void w_str(uchar *p)
{
while(*p!='\0')
{
w_dat(*p);
p++;
}
}
void main()
{
chushihua();
w_cmd(0x80);
w_str(str1);
w_cmd(0xC0);
w_str(str2);
while(1);
}
结果只显示一个‘8’
#include<intrins.h>
typedef unsigned char uchar;
uchar code str1[]={"861066456"};
uchar code str2[]={"number"};
sbit RS=P1^0;
sbit RW=P1^1;
sbit EN=P2^5;
void delay() //判断LCD是否繁忙
{
P0=0xff;
do
{
RS=0;
RW=1;
EN=0;
EN=1;
}while(P0^7==1);
EN=0;
}
void w_cmd(uchar mingling)
{
delay();
EN=0;
RS=0;
RW=0;
P0=mingling;
EN=1;
EN=0;
}
void w_dat(uchar shuju)
{
delay();
EN=0;
RS=1;
RW=0;
P0=shuju;
EN=1;
EN=0;
}
void chushihua()
{
w_cmd(0x38);
w_cmd(0x0c);
w_cmd(0x06);
w_cmd(0x01);
}
void w_str(uchar *p)
{
while(*p!='\0')
{
w_dat(*p);
p++;
}
}
void main()
{
chushihua();
w_cmd(0x80);
w_str(str1);
w_cmd(0xC0);
w_str(str2);
while(1);
}
结果只显示一个‘8’
不要乱遭函数。看看你的w_str(str1);多看看数据手册是怎建议的。建议看看郭天祥视频就十讲,包你明白。这个最好自己调试。不要有什么都问,,,既然都显示一个了害怕不显示其余的吗?自己调试出你会开心的。还有建议不要居于单片机,现在单片机弱爆了,除了工业控制现在应用比较低端。但是基础打好要,这个单片机血透了,计算机原理你就懂了80%懂了,再加上操作系统。