LCD1602液晶显示出现乱码,求高手解惑!急!!!谢谢
答案:4 悬赏:50 手机版
解决时间 2021-04-28 09:29
- 提问者网友:藍了天白赴美
- 2021-04-28 03:54
LCD1602液晶显示出现乱码,求高手解惑!急!!!谢谢
最佳答案
- 五星知识达人网友:妄饮晩冬酒
- 2021-04-28 04:44
你把跟lcd数据连接的一些外设都去掉 程序的话
#include
#include
#define uchar unsigned char
#define uint unsigned int
//这三个引脚参考资料
sbit LCD1602_EN=P2^7; //1602使能引脚
sbit LCD1602_RW=P2^6; //1602读写引脚
sbit LCD1602_RS=P2^5; //1602数据/命令选择引脚
void LCD1602_delay()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void LCD1602_Delay(uint i)
{
uint x,j;
for(j=0;j for(x=0;x<=148;x++);
}
bit Busy(void)
{
bit busy_flag = 0;
LCD1602_RS = 0;
LCD1602_RW = 1;
LCD1602_EN = 1;
LCD1602_delay();
busy_flag = (bit)(P0 & 0x80);
LCD1602_EN = 0;
return busy_flag;
}
void LCD1602_wcmd(uchar del)
{
while(Busy());
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_EN = 0;
LCD1602_delay();
P0 = del;
LCD1602_delay();
LCD1602_EN = 1;
LCD1602_delay();
LCD1602_EN = 0;
}
void LCD1602_wdata(uchar del)
{
while(Busy());
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_EN = 0;
LCD1602_delay();
P0 = del;
LCD1602_delay();
LCD1602_EN = 1;
LCD1602_delay();
LCD1602_EN = 0;
}
void LCD1602_init(void)
{
LCD1602_wcmd(0x38);//设置16X2显示
LCD1602_wcmd(0x08);//关显示
LCD1602_wcmd(0x0c);//开显示
LCD1602_wcmd(0x0e);//开显示显示光标
LCD1602_wcmd(0x0f);//开显示显示光标光标闪烁
LCD1602_wcmd(0x06);//写入指针加一
LCD1602_wcmd(0x04);//写入指针减一
// LCD1602_wcmd(0x07);//写入整屏左移
// LCD1602_wcmd(0x05);//写入整屏右移
LCD1602_wcmd(0x01);//清屏
//LCD1602_wcmd(0x80+0x10);
}
void LCD1602_char(uchar hang,uchar lie,char sign)
{
uchar a;
if(hang == 1) a = 0x80;
if(hang == 2) a = 0xc0;
a = a + lie - 1;
LCD1602_wcmd(a);
LCD1602_wdata(sign);
}
void LCD1602_string(uchar hang,uchar lie,uchar *p)
{
uchar a,b=0;
if(hang == 1) a = 0x80;
if(hang == 2) a = 0xc0;
a = a + lie - 1;
while(1)
{
LCD1602_wcmd(a++);
if((*p == '\0')||(b==16)) break;
b++;
LCD1602_wdata(*p);
p++;
}
}
void Main()
{
LCD1602_Delay(30);
LCD1602_init();
LCD1602_string(1,1," Welcome To ");
LCD1602_string(2,1," The MCU World ");
LCD1602_char(1,1,'*');
LCD1602_char(1,16,'*');
while(1);
}
试试这个 有用请给好评
#include
#include
#define uchar unsigned char
#define uint unsigned int
//这三个引脚参考资料
sbit LCD1602_EN=P2^7; //1602使能引脚
sbit LCD1602_RW=P2^6; //1602读写引脚
sbit LCD1602_RS=P2^5; //1602数据/命令选择引脚
void LCD1602_delay()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void LCD1602_Delay(uint i)
{
uint x,j;
for(j=0;j for(x=0;x<=148;x++);
}
bit Busy(void)
{
bit busy_flag = 0;
LCD1602_RS = 0;
LCD1602_RW = 1;
LCD1602_EN = 1;
LCD1602_delay();
busy_flag = (bit)(P0 & 0x80);
LCD1602_EN = 0;
return busy_flag;
}
void LCD1602_wcmd(uchar del)
{
while(Busy());
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_EN = 0;
LCD1602_delay();
P0 = del;
LCD1602_delay();
LCD1602_EN = 1;
LCD1602_delay();
LCD1602_EN = 0;
}
void LCD1602_wdata(uchar del)
{
while(Busy());
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_EN = 0;
LCD1602_delay();
P0 = del;
LCD1602_delay();
LCD1602_EN = 1;
LCD1602_delay();
LCD1602_EN = 0;
}
void LCD1602_init(void)
{
LCD1602_wcmd(0x38);//设置16X2显示
LCD1602_wcmd(0x08);//关显示
LCD1602_wcmd(0x0c);//开显示
LCD1602_wcmd(0x0e);//开显示显示光标
LCD1602_wcmd(0x0f);//开显示显示光标光标闪烁
LCD1602_wcmd(0x06);//写入指针加一
LCD1602_wcmd(0x04);//写入指针减一
// LCD1602_wcmd(0x07);//写入整屏左移
// LCD1602_wcmd(0x05);//写入整屏右移
LCD1602_wcmd(0x01);//清屏
//LCD1602_wcmd(0x80+0x10);
}
void LCD1602_char(uchar hang,uchar lie,char sign)
{
uchar a;
if(hang == 1) a = 0x80;
if(hang == 2) a = 0xc0;
a = a + lie - 1;
LCD1602_wcmd(a);
LCD1602_wdata(sign);
}
void LCD1602_string(uchar hang,uchar lie,uchar *p)
{
uchar a,b=0;
if(hang == 1) a = 0x80;
if(hang == 2) a = 0xc0;
a = a + lie - 1;
while(1)
{
LCD1602_wcmd(a++);
if((*p == '\0')||(b==16)) break;
b++;
LCD1602_wdata(*p);
p++;
}
}
void Main()
{
LCD1602_Delay(30);
LCD1602_init();
LCD1602_string(1,1," Welcome To ");
LCD1602_string(2,1," The MCU World ");
LCD1602_char(1,1,'*');
LCD1602_char(1,16,'*');
while(1);
}
试试这个 有用请给好评
全部回答
- 1楼网友:人類模型
- 2021-04-28 06:29
晶振频率太高了。
- 2楼网友:渊鱼
- 2021-04-28 05:54
我前一阵子出现乱码了,发现的问题是你送的数据其实是ascII码,当我显示一个数字时,其实现实的是他所对应的ascii码,不知道楼主是不是也是这个问题,比如你要现实1,你送的数据应该是48+1,你要现实字母,比如a,应该送的数据是97,A对应的是65,不知道有没有帮助到你
- 3楼网友:孤独的牧羊人
- 2021-04-28 05:24
你好,麻烦问一下,您的这个问题解决了吗?我现在也在做LCD1602的显示,板子是自己设计自己焊的。和你出的问题完全是一样啊!!!!!!!您解决了吗?求赐教啊!!!我快被逼疯了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯