51单片机Lcd1602 程序问题,代码有错误吗?为什么只有一个光标在闪烁? 10

#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbi... #include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^6;
sbit RW=P2^5;
sbit E=P2^7;

uchar text1[]="Welcome to";
uchar text2[]="QQ:**********";

void delayms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--)
;
}

uchar Lcd1602ReadBusy()
{
uchar temp;
RS=0;
RW=1;
_nop_();
P0=0xff;
_nop_();
E=1;
_nop_();
_nop_();
E=0;
return (temp&0x80);
}

void Lcd1602WriteCom(uchar com)
{
while(Lcd1602ReadBusy());
RS=0;
RW=0;
_nop_();
P0=com;
_nop_();
E=1;
_nop_();
_nop_();
E=0;
_nop_();
_nop_();
}

void Lcd1602WriteData(uchar dat)
{
while(Lcd1602ReadBusy());
RS=1;
RW=0;
_nop_();
P0=dat;
_nop_();
E=1;
_nop_();
_nop_();
E=0;
_nop_();
_nop_();
}

void Lcd1602init()
{
delayms(15);
Lcd1602WriteCom(0x38);
delayms(5);
Lcd1602WriteCom(0x38);
delayms(5);
Lcd1602WriteCom(0x38);
Lcd1602WriteCom(0x0f);
Lcd1602WriteCom(0x01);
Lcd1602WriteCom(0x06);
}

void main()
{
uchar i,j;
Lcd1602init();
Lcd1602WriteCom(0x80);
for(i=0;i<13;i++)
Lcd1602WriteData(text1[i]);
Lcd1602WriteCom(0xc0);
for(j=0;j<13;j++)
Lcd1602WriteData(text2[j]);
}
初始化没问题 问题在读忙函数 我已经找到了
展开
 我来答
巍峨且素净丶彩霞5
2018-07-20 · TA获得超过544个赞
知道小有建树答主
回答量:763
采纳率:50%
帮助的人:146万
展开全部
这种问题还要问?

lcd1602的代码网上多的要命
随便下载一个就OK了。
你这个初始化就有问题,然后写入的时候,要先写入字符的起始行和列

但是lcd1602太简单了,你再看看接线。
追问
我们老师让自己学这个东西的,这是我今天看书之后写的程序 第一次写的肯定会有毛病 我知道这个程序有问题,但是不知道问题在哪?你看就这个程序怎么改改就对了?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式