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]);
}
初始化没问题 问题在读忙函数 我已经找到了 展开
#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]);
}
初始化没问题 问题在读忙函数 我已经找到了 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询