| 终于找到原因了,我数据线有问题,原先是p0口,我换成了p1口就能正常显示了,估计p0排阻不好或者焊接不好 |
|
也有可能是电位器的关系,调一下电位器试试 |
|
程序问题,四线和八线接法的初始化命令不同,还可能与延时有关。 分析你那个成功了的时序,对照着修正或直接抄了就好。 |
| LCD1602显示℃ 这种自定义符号 http://www.51hei.com/bbs/dpj-200685-1.html |
|
把主频降到几兆试试。一般来说,有读忙操作,是否延时影响不太大,可能是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; } |
robinsonlin 发表于 2021-3-15 17:52 网上代码找了几个,只有一个成功,应该不是连线和对比度问题,我把成功的代码完整复制进来结果也没用 |
lqb7733 发表于 2021-3-15 17:41 如果是对比度问题,那应该是两行都有,对比度连线都没问题 |
| 论坛上有很规范的标准结构代码,你可以参考一下。 你这个问题大概率是出在延迟函数上。 |
| 这个也和VO的电阻有关系,确认不是电位器没调好吗?调一下电位器试试看 |