马克扎西 发表于 2018-5-1 12:54 屏幕接反了 |
|
void write_com(uchar com) { e=0; rs=0; rw=0; P0=com; delay_uint(3); e=1; delay_uint(25); e=0; } 这些是定义起来干嘛的 |
|
我也遇到了这个问题,然后拔掉了单片机,测了一下D0~D7的电压,只有D6的电压为0,请问是这个原因吗? |
Hellen_z 发表于 2020-3-7 18:09 他是插口插反了,你可以去检查试试看 |
| 一样的开发板,一样的问题 |
| 考虑第二排地址错误 |
| 小伙,之前在论坛看到你的问题。我没事自己画的电路板也出现了,在洞洞板上是可以的。软件也是可以用的,最后查到是硬件问题,有2个引脚连接到一起了。如果有别人遇到,可以查下管脚。 |
|
刚刚遇到了,最后通过一根根线排查接好就行了。 不接单片机是显示一排黑方块的,lz一闪一闪的可能是接触不良,, 其他有些人说是延时问题,但程序我看着没问题... |
小猫猫爱吃鱼 发表于 2018-4-26 16:26 同意这个说法 |
|
sbit rs=P2^5; //寄存器选择信号 H:数据寄存器 L:指令寄存器 sbit rw=P2^4; //寄存器选择信号 H:数据寄存器 L:指令寄存器 sbit e =P2^6; //片选信号 下降沿触发 这几个端口对照开发板的电路图查一下。我记得好像是 sbit rs=P2^6; sbit rw=P2^5; sbit e =P2^7; 只显第一排黑块是没有LCD1602没有正常初始化 |
|
sbit rs=P2^5; //寄存器选择信号 H:数据寄存器 L:指令寄存器 sbit rw=P2^4; //寄存器选择信号 H:数据寄存器 L:指令寄存器 sbit e =P2^6; //片选信号 下降沿触发 |
| 检查端口是否设置正确,从图片上看连数码管和 LED 都显示了实为不该,正确应为只有 LCD 液晶屏显示 |
| 兄弟,你解决问题了没有?我遇见同样的问题了 |
|
本帖最后由 zl2168 于 2018-4-30 21:20 编辑 给你介绍一个正确有效看得懂的案例,自己对照查错吧! 实例67 LCD1602显示屏显示⒈ LCD1602显示屏简介 ⑴ 引脚功能 … ⑵ 内部寄存器 … ⑶ 控制指令 … ⑷ 操作时序 … ⒉ 电路设计 … ⒊ 程序设计 … ⒋ Keil调试 … ⒌ Proteus仿真 … 先Proteus仿真一下,确认有效。
实例61 LCD1602显示屏显示.rar
(49.26 KB, 下载次数: 135)
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1。书中电路和程序设计有详细说明,程序语句条条有注解。 |
|
问题解决了吗?你说第一行和第二行都能静态显示,我很好奇黑块还能出现在什么地方,贴个图才好帮你更好的分析呀 |
马克扎西 发表于 2018-4-30 09:48 还是没有仔细看,难怪玩不转。 |
| 可能排线出现了问题 |
小猫猫爱吃鱼 发表于 2018-4-26 16:26 你好,接口是按照开发板给的原理图接的,核实了很多遍没有错啊 ![]() |
wulin 发表于 2018-4-26 17:41 还是和原来一样诶 ![]() |
|
void init_1602() //lcd1602初始化设置 { write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口 write_com(0x01);//显示清零,数据指针清零 write_com(0x0c);//设置开显示,不显光标 write_com(0x06);//设置写一个字符后地址指针加1 } |