找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5702|回复: 13
收起左侧

LCD1602烧录单片机程序显示白色方块一行,请大佬指出

[复制链接]
回帖奖励 2 黑币 回复本帖可获得 2 黑币奖励! 每人限 1 次
ID:956507 发表于 2021-7-28 08:56 | 显示全部楼层 |阅读模式
搭建了lcd1602的显示电路,硬件检查了没问题,但是烧录程序,无显示,现附图源码,显示状态图,
恳请大侠指出哪里不对,谢谢

51hei图片_20210728084952.jpg
51hei图片_20210728084919.jpg
51hei图片_20210728084930.jpg
51hei图片_20210728084948.jpg
回复

使用道具 举报

ID:953372 发表于 2021-7-28 10:28 | 显示全部楼层
怕不是地址端错误?  之前在csdn看到一个类似的,不知道能不能帮到你,网址在这https://blog.csdn.net/qq_31038073/article/details/90581356
回复

使用道具 举报

ID:819198 发表于 2021-7-28 11:13 | 显示全部楼层
好像没看到字模啊!
回复

使用道具 举报

ID:155507 发表于 2021-7-28 11:26 | 显示全部楼层
楼主 : 建议你检查电路是否存在虚焊

可能产生的问题如下:
1、I/O口与LCD的数据口方向焊反
2、LCD的RS、RW、E的控制I/O口在程序编辑时定义错误
3、程序错误
只要这三点做对了是绝对没问题的
回复

使用道具 举报

ID:954677 发表于 2021-7-28 13:42 | 显示全部楼层
有可能是单片机连接的问题,我之前也遇到过,换了块单片机系统就可以。
回复

使用道具 举报

ID:956507 发表于 2021-7-28 13:53 | 显示全部楼层
公司的 发表于 2021-7-28 13:42
有可能是单片机连接的问题,我之前也遇到过,换了块单片机系统就可以。

刚开始我也是这样认为的,换了单片机还是一样的,换了LCD1602显示屏也是这样的,我烧录蜂鸣器的程序,可以运行正确,说明搭建的电路没问题
回复

使用道具 举报

ID:956507 发表于 2021-7-28 14:06 | 显示全部楼层
angmall 发表于 2021-7-28 11:26
楼主 : 建议你检查电路是否存在虚焊

可能产生的问题如下:

这些检查了,程序是可以编译生成HEX文件成功的
回复

使用道具 举报

ID:956507 发表于 2021-7-28 14:26 | 显示全部楼层
在下陆一发 发表于 2021-7-28 10:28
怕不是地址端错误?  之前在csdn看到一个类似的,不知道能不能帮到你,网址在这https://blog.csdn.net/qq_3 ...

没有I2C模块,谢谢
回复

使用道具 举报

ID:161164 发表于 2021-7-28 15:23 | 显示全部楼层
直接贴代码很难吗?
试试下面的代码吧,Proteus 仿真成功
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit E = P2^5;
  5. sbit RW = P2^6;
  6. sbit RS = P2^7;

  7.         unsigned char send[]={"987654321       "};
  8.         unsigned char send2[]={"There is lkc8210"};

  9. void delay_ms(int ms)
  10. {
  11.         int i,j;
  12.         for(i=0; i<ms; i++)
  13.         for(j=0; j<111; j++);
  14. }
  15. void delay_us(int us)
  16. {
  17.         while(--us);
  18. }

  19. void Port_W(char value)
  20. {
  21.         E=0;
  22.         RW=0;
  23.         P0=value;
  24.         E=1;
  25.         delay_us(3);
  26.         E=0;
  27. }

  28. void disp(char addr, char dat)
  29. {
  30.         RS=0;
  31.         Port_W(addr+0x80);
  32.         delay_us(3);
  33.         RS=1;
  34.         Port_W(dat);
  35.         delay_us(3);
  36. }
  37. void LCD_Initial()
  38. {
  39.         RS=0;
  40.         Port_W(0x38);
  41.         Port_W(0x01);
  42.         delay_ms(5);
  43.         Port_W(0x0C);
  44. }
  45. void main()
  46. {
  47.         unsigned char i;
  48.         LCD_Initial();
  49.         delay_ms(1000);
  50.         for(i=0;i<16;i++)disp(i,send[i]);
  51.         for(i=0;i<16;i++)disp(i+0x40,send2[i]);

  52.     while(1)
  53.     {
  54.     }
  55. }
复制代码


2021-07-28_151929.png

如果还是不显示就是硬件问题

回复

使用道具 举报

ID:956507 发表于 2021-7-28 17:25 | 显示全部楼层
lkc8210 发表于 2021-7-28 15:23
直接贴代码很难吗?
试试下面的代码吧,Proteus 仿真成功

感谢,问题解决了,问题是P0口上拉排阻弄反了
回复

使用道具 举报

ID:781863 发表于 2021-7-29 13:54 | 显示全部楼层
字膜可以拍的再清晰点,我之前也遇到过的
回复

使用道具 举报

ID:955412 发表于 2021-7-29 18:16 | 显示全部楼层
程序本身的问题,建议先换一个led试试,我之前有和你一样的问题,更换屏幕后就解决了
回复

使用道具 举报

ID:925265 发表于 2021-8-24 15:03 | 显示全部楼层
应该是灰度问题,v0接个电阻器试试
回复

使用道具 举报

ID:415064 发表于 2021-8-30 18:33 | 显示全部楼层
初始化没过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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