找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于LCD1602初始化问题

查看数: 4367 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-3-15 15:59

正文摘要:

最近再做个非接触式红外温度测量,用LCD1602显示,但第一行全部一直显示黑块,百度了下是初始化问题,求问怎么解决 void delay1(uint x)          //延时函数1 {   whil ...

回复

ID:570264 发表于 2021-3-16 13:48
终于找到原因了,我数据线有问题,原先是p0口,我换成了p1口就能正常显示了,估计p0排阻不好或者焊接不好
ID:139866 发表于 2021-3-16 11:58
也有可能是电位器的关系,调一下电位器试试
ID:584814 发表于 2021-3-16 10:32
程序问题,四线和八线接法的初始化命令不同,还可能与延时有关。
分析你那个成功了的时序,对照着修正或直接抄了就好。
ID:390416 发表于 2021-3-16 09:24
LCD1602显示℃ 这种自定义符号 http://www.51hei.com/bbs/dpj-200685-1.html
ID:703546 发表于 2021-3-15 20:58
把主频降到几兆试试。一般来说,有读忙操作,是否延时影响不太大,可能是IO配置或初始化指令操作有误。下面是以前写的测试可用的(51,晶振12M,8线),你试下。#include<reg51.h>
#define BF P1_7
#define RS P2_0
#define RW P2_1
#define E  P2_2
#define IO P1
sbit P1_7=P1^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
/*****忙标志*******/
unsigned char busy(void)
{
unsigned char b=0;
RS=0;RW=1;E=0;
IO=255;
E=1;
if(BF){b=1;}
return(b);
}
/*****初始化LCD****/
void inital(void)
{
IO=1;               /*1:(0000 0001)清屏,光标回位*/
RS=0;RW=0;E=0;      
while(busy()){;}
IO=56;              /*2:(0011 1000)8位总线,2行显示,5*7点阵*/
RS=0;RW=0;E=0;
while(busy()){;}
IO=15;              /*3:(0000 1111)整体显示开,显示光标,光标闪烁开*/
RS=0;RW=0;E=0;
while(busy()){;}
IO=6;               /*4:(0000 0110)光标右移*/
RS=0;RW=0;E=0;
}
ID:570264 发表于 2021-3-15 18:58
robinsonlin 发表于 2021-3-15 17:52
论坛上有很规范的标准结构代码,你可以参考一下。  你这个问题大概率是出在延迟函数上。

网上代码找了几个,只有一个成功,应该不是连线和对比度问题,我把成功的代码完整复制进来结果也没用
ID:570264 发表于 2021-3-15 18:56
lqb7733 发表于 2021-3-15 17:41
这个也和VO的电阻有关系,确认不是电位器没调好吗?调一下电位器试试看

如果是对比度问题,那应该是两行都有,对比度连线都没问题
ID:451718 发表于 2021-3-15 17:52
论坛上有很规范的标准结构代码,你可以参考一下。  你这个问题大概率是出在延迟函数上。
ID:213970 发表于 2021-3-15 17:41
这个也和VO的电阻有关系,确认不是电位器没调好吗?调一下电位器试试看

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表