标题: LCD1602烧录单片机程序显示白色方块一行,请大佬指出 [打印本页]

作者: 占良    时间: 2021-7-28 08:56
标题: LCD1602烧录单片机程序显示白色方块一行,请大佬指出
搭建了lcd1602的显示电路,硬件检查了没问题,但是烧录程序,无显示,现附图源码,显示状态图,
恳请大侠指出哪里不对,谢谢

51hei图片_20210728084952.jpg (134.41 KB, 下载次数: 110)

51hei图片_20210728084952.jpg

51hei图片_20210728084919.jpg (188.75 KB, 下载次数: 99)

51hei图片_20210728084919.jpg

51hei图片_20210728084930.jpg (204.96 KB, 下载次数: 95)

51hei图片_20210728084930.jpg

51hei图片_20210728084948.jpg (177.46 KB, 下载次数: 119)

51hei图片_20210728084948.jpg

作者: 在下陆一发    时间: 2021-7-28 10:28
怕不是地址端错误?  之前在csdn看到一个类似的,不知道能不能帮到你,网址在这https://blog.csdn.net/qq_31038073/article/details/90581356
作者: rz12345    时间: 2021-7-28 11:13
好像没看到字模啊!
作者: angmall    时间: 2021-7-28 11:26
楼主 : 建议你检查电路是否存在虚焊

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

作者: 公司的    时间: 2021-7-28 13:42
有可能是单片机连接的问题,我之前也遇到过,换了块单片机系统就可以。
作者: 占良    时间: 2021-7-28 13:53
公司的 发表于 2021-7-28 13:42
有可能是单片机连接的问题,我之前也遇到过,换了块单片机系统就可以。

刚开始我也是这样认为的,换了单片机还是一样的,换了LCD1602显示屏也是这样的,我烧录蜂鸣器的程序,可以运行正确,说明搭建的电路没问题
作者: 占良    时间: 2021-7-28 14:06
angmall 发表于 2021-7-28 11:26
楼主 : 建议你检查电路是否存在虚焊

可能产生的问题如下:

这些检查了,程序是可以编译生成HEX文件成功的
作者: 占良    时间: 2021-7-28 14:26
在下陆一发 发表于 2021-7-28 10:28
怕不是地址端错误?  之前在csdn看到一个类似的,不知道能不能帮到你,网址在这https://blog.csdn.net/qq_3 ...

没有I2C模块,谢谢
作者: lkc8210    时间: 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-7-28 17:25
lkc8210 发表于 2021-7-28 15:23
直接贴代码很难吗?
试试下面的代码吧,Proteus 仿真成功

感谢,问题解决了,问题是P0口上拉排阻弄反了
作者: 1024153202    时间: 2021-7-29 13:54
字膜可以拍的再清晰点,我之前也遇到过的
作者: lzb1964937553    时间: 2021-7-29 18:16
程序本身的问题,建议先换一个led试试,我之前有和你一样的问题,更换屏幕后就解决了
作者: 1836114456    时间: 2021-8-24 15:03
应该是灰度问题,v0接个电阻器试试

作者: wojiaoguogai    时间: 2021-8-30 18:33
初始化没过




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1