问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

LCD1602液晶显示出现乱码,求高手解惑!急!!!谢谢

发布网友 发布时间:2022-04-26 21:28

我来回答

4个回答

热心网友 时间:2022-06-05 22:46

展开1全部你把跟lcd数据连接的一些外设都去掉 程序的话

#include<reg52.h>
#include<intrins.h>
#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数据/命令选择引脚

/********************************************************************
* 名称 : LCD1602_delay()
* 功能 : 延时,延时时间大概为5US。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void LCD1602_delay()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void LCD1602_Delay(uint i)
{
uint x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
/********************************************************************
* 名称 : bit Busy(void)
* 功能 : 这个是一个读状态函数,读出函数是否处在忙状态
* 输入 : 输入的命令值
* 输出 : 无
***********************************************************************/
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;
}
/********************************************************************
* 名称 : LCD1602_wcmd(uchar del)
* 功能 : 1602命令函数
* 输入 : 输入的命令值
* 输出 : 无
***********************************************************************/
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;
}
/********************************************************************
* 名称 : LCD1602_wdata(uchar del)
* 功能 : 1602写数据函数
* 输入 : 需要写入1602的数据
* 输出 : 无
***********************************************************************/
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;
}
/********************************************************************
* 名称 : L1602_init()
* 功能 : 1602初始化,请参考1602的资料
* 输入 : 无
* 输出 : 无
***********************************************************************/
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);
}
/********************************************************************
* 名称 : LCD1602_char(uchar hang,uchar lie,char sign)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用该函数如下
L1602_char(1,5,'b')
* 输入 : 行,列,需要输入1602的数据
* 输出 : 无
***********************************************************************/
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);
}
/********************************************************************
* 名称 : LCD1602_string(uchar hang,uchar lie,uchar *p)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下
L1602_string(1,5,"ab cd ef;")
* 输入 : 行,列,需要输入1602的数据
* 输出 : 无
***********************************************************************/
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++;
}
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
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);
}

试试这个 有用请给好评

热心网友 时间:2022-06-05 22:46

我前一阵子出现乱码了,发现的问题是你送的数据其实是ascII码,当我显示一个数字时,其实现实的是他所对应的ascii码,不知道楼主是不是也是这个问题,比如你要现实1,你送的数据应该是48+1,你要现实字母,比如a,应该送的数据是97,A对应的是65,不知道有没有帮助到你

热心网友 时间:2022-06-05 22:47

晶振频率太高了。

热心网友 时间:2022-06-05 22:48

你好,麻烦问一下,您的这个问题解决了吗?我现在也在做LCD1602的显示,板子是自己设计自己焊的。和你出的问题完全是一样啊!!!!!!!您解决了吗?求赐教啊!!!我快被*疯了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机壁纸花卉红色手机壁纸花卉 辽宁智能五芯防水连接器 军工产品浅谈——航空插头 xp电脑系统修复XP系统怎么恢复出厂设置 ...表编辑器后打不开任何文件,无需重装系统,电脑盲都能用 粼基本信息 粼五笔怎样打? 【微科普】想变成光?先搞清楚光是什么吧! 手机被拉黑后打电话是什么提示? 物流管理专业对数学的要求高么 绍兴乔波滑雪场的滑雪场简介 冬天浙江省有没有雪山,想去玩。或者有什么滑雪场之类的,最好离温州近一点 天台绿城滑雪场的介绍 宁波周边滑雪场哪里好? 绍兴市乔波滑雪世界怎么样?有什么好玩的地方? 浙江滑雪去哪好?大明山还是安吉?还是别的什么地方?请说说具体优势劣势,还有滑雪要带什么东西? 浙江有室内滑雪场吗? lcd1602实现什么功能 浙江滑雪场哪个好 冬天浙江省里面有没有什么雪山?想去爬雪山玩玩,最好是雪山上面还有滑雪场的, 浙江省台州市附近便宜的滑雪场,急求。自驾游,最好场地有相应配套游玩项目。 请问室外滑雪哪里比较大型啊? 全球有几处滑雪胜地,被称为滑雪胜地的原因是什么? 浙江哪个滑雪场好 知乎 冬天浙江哪个雪山上面有滑雪场?最好离温州近一点的,不是自驾游 客观分析一下有哪些值得去的滑雪场?各自有什么特点? 浙江滑雪哪里好 浙江滑雪场哪个好 浙江滑雪场介绍 王者荣耀这位战士称王,站撸铠爹爆锤吕布,一打三还满血,他是谁? 凯爹不带吸血铭文,不放一技能能吸血吗? 数码管,lcd1602,液晶屏,点阵选择中,各有什么优势 LCD1602液晶显示出现乱码,如何解决? 各位大师用LCd1602液晶怎样设置第一行为静态显示,第二行为滚动显示,应该如何设置 机械键盘的键帽都是很松的吗? 是不是机械键盘的键帽多多少少都有晃动 机械键盘的按键都是很松的么 机械键盘键冒拔多了会不会变松 新买的机械键盘 是卫星轴的 大键都会晃动 感觉没安紧一样 左右上下的晃 还有点 哒哒哒的声音 正常吗 为什么我的机械键盘的键按起来好松的样子 机械键盘键帽轻轻一拔就出来了 我用过达尔优的机械师,键帽太松太高,手感不太好,有没有手感更稳的机械键盘推荐? 美国都有哪些节日,节日的具体日期是几号,国家一般放几天的假? 4月2日是什么节日 香港 今年3月21日和22日是香港的什么节日 办理住房贷款要注意些什么 圣诞节、万圣节、复活节,那个节日先呢? 灰姑娘节日几号 3月25号是香港的什么假期? 2019年8月1号是香港公众假期吗? 德国的大学,一年有几次假期?假期各多长?几月开学?