1602液晶屏显示

weixin_44382508 2020-12-04 11:08:35
请教各位单片机大佬 我在学习1602液晶屏显示 但为什么会这样呢



#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table1[]="I Love You";
uchar code table2[]="xiao ming";
uchar *str1=table1;
uchar *str2=table2;

#define LcdDB P0

sbit LcdEN=P2^3;
sbit LcdRW=P2^1;
sbit LcdRS=P2^0;

void Lcd_Init();
void LcdWrCmd(uchar cmd);
void LcdWrDat(uchar dat);
void LcdBusy();
void Lcd_Show(uchar x,uchar y);


void main()
{
Lcd_Init();


Lcd_Show(2,0);


while(*str1 !='\0')
{
LcdWrDat(*str1++);
}

Lcd_Show(1,1);

while(*str2 !='\0')
{
LcdWrDat(*str2++);
}

while(1)
{
;
}

}

void Lcd_Init()
{
LcdWrCmd(0x38);
LcdWrCmd(0x0c);
LcdWrCmd(0x06);
LcdWrCmd(0x01);

}

void LcdWrCmd(uchar cmd)
{
LcdBusy();
LcdRS=0;
LcdRW=0;
LcdDB=cmd;
LcdEN=1;
LcdEN=0;
}
void LcdWrDat(uchar dat)
{
LcdBusy();
LcdRS=1;
LcdRW=0;
LcdDB=dat;
LcdEN=1;
LcdEN=0;
}

void LcdBusy()
{
LcdDB=0xFF;
LcdRS=0;
LcdRW=1;
LcdEN=1;
while(LcdDB&0x80);
LcdEN=0;
}

void Lcd_Show(uchar x,uchar y)
{
uchar addr;
if(y==0)
{
addr=0x00+x;
}
else
addr=0x40+x;
LcdWrCmd(addr|0x80);

}
...全文
9541 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinwe888 2020-12-07
  • 打赏
  • 举报
回复
做2次初始化试试!我也碰到过
weixin_44382508 2020-12-05
  • 打赏
  • 举报
回复
引用 5 楼 zmc419的回复:
多试试别的例程,调一下1602对比度
好的,谢谢,我这就去试试
weixin_44382508 2020-12-05
  • 打赏
  • 举报
回复
引用 4 楼 luj_1768的回复:
代码可以这么写么?最好先仔细对对例程,看看该怎么使用。
代码有啥问题吗,还请赐教
weixin_44382508 2020-12-05
  • 打赏
  • 举报
回复
引用 4 楼 luj_1768的回复:
代码可以这么写么?最好先仔细对对例程,看看该怎么使用。
这个代码有什么问题吗,感谢赐教
zmc419 2020-12-05
  • 打赏
  • 举报
回复
多试试别的例程,调一下1602对比度
luj_1768 2020-12-05
  • 打赏
  • 举报
回复
代码可以这么写么?最好先仔细对对例程,看看该怎么使用。
1372381432 2020-12-05
  • 打赏
  • 举报
回复
感谢分享,让我看到了前途
weixin_44382508 2020-12-04
  • 打赏
  • 举报
回复
这个电压不是引脚设定好了的吗
yishumei 2020-12-04
  • 打赏
  • 举报
回复
是不是V0电压高了,调低点看看

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧