标题: LCD1602洞洞板测试显示正常,PCB上显示乱码 [打印本页]

作者: yinnan128    时间: 2021-6-30 17:04
标题: LCD1602洞洞板测试显示正常,PCB上显示乱码
本帖最后由 yinnan128 于 2021-7-1 14:23 编辑

用洞洞焊的测试电路,LCD显示正常,然后焊在板子上,不是显示乱码了,要不就不显示。是不是LCD程序写的时序不对呢
PCB是烧录器5V升压12V,然后12V经7805降压给单片机供电,是不是有电磁干扰?洞洞板是直接烧录器供电。看PCB单片机引脚没有虚焊,排除焊接问题
  1. void write_nibble_lcd(unsigned char Val) //使用的是4位数据传输
  2. {
  3.         LCDEN = 1;   //写入时序
  4.         D0 = D1 = D2 = D3 = 0;
  5.         if(Val & 0x01)
  6.         D0 = 1;
  7.         if(Val & 0x02)
  8.         D1 = 1;
  9.         if(Val & 0x04)
  10.         D2 = 1;
  11.         if(Val & 0x08)
  12.         D3 = 1;
  13.         LCDEN = 0;   //使能清零
  14. }

  15. void write_lcd(unsigned char Val) //发送一个字符
  16. {
  17.         write_nibble_lcd(Val >> 4);
  18.         write_nibble_lcd(Val);
  19.         delay_ms(1);        
  20. }

  21. /******************************初始化LCD************************************/
  22. void lcd_init(void)
  23. {
  24.                 LCDRS = 0;  //写入命令   0 选择发送命令    1 选择发送数据
  25.                 write_nibble_lcd(0x03);        
  26.                 delay_ms(1);
  27.                 write_nibble_lcd(0x02);        
  28.                 delay_ms(1);
  29.                 write_lcd(0x28);    //在四位线下的初始化
  30.                 write_lcd(0x06);    //光标右移,显示不移
  31.                 write_lcd(0x0E);    //显示开,光标开,光标不闪烁
  32.                 write_lcd(0x01);    //清屏
  33. }
  34. /*******************************写命令************************************/
  35. void write_com(u8 com)
  36. {
  37.                 LCDRS = 0;
  38.                 write_lcd(com);
  39.           delay_ms(2);
  40.    
  41. }
  42. /*******************************写数据***********************************/
  43. void write_data(u8 date)
  44. {
  45.                 LCDRS = 1;  //写入数据   0 选择发送命令    1 选择发送数据
  46.                 write_lcd(date);
  47.           delay_ms(2);
复制代码




51hei图片_20210630164822.jpg (131.07 KB, 下载次数: 34)

51hei图片_20210630164822.jpg

51hei图片_20210630164751.jpg (113.26 KB, 下载次数: 49)

51hei图片_20210630164751.jpg

51hei图片_20210630164744.jpg (107.2 KB, 下载次数: 57)

51hei图片_20210630164744.jpg

1625120192(1).png (9.05 KB, 下载次数: 51)

1625120192(1).png

作者: lkc8210    时间: 2021-7-1 03:07
如果想排除是否干扰
把显示正常的5V+接到7805的输出+看看
作者: yinnan128    时间: 2021-7-1 10:44
lkc8210 发表于 2021-7-1 03:07
如果想排除是否干扰
把显示正常的5V+接到7805的输出+看看

昨晚为了检查是不是PCB、5V升压12V影响。直接烧录器5V跳过升压电路,供电单片机和LCD,结果显示正常了,就是ADC读取不了电压。
作者: zjjhtony    时间: 2021-7-1 13:27
有时候硬件电路也很重要,硬件的问题很多是通过软件无法解决的,必须解决硬件问题。
硬件和软件需要匹配才行。
作者: wufa1986    时间: 2021-7-1 13:32
这很明显数据线高4位有一条没接,因为初始化只要低4位,所以你初始化成功,显示字符需要8位
作者: yinnan128    时间: 2021-7-1 14:26
wufa1986 发表于 2021-7-1 13:32
这很明显数据线高4位有一条没接,因为初始化只要低4位,所以你初始化成功,显示字符需要8位

LCD接线图已经补上,数据确实只接了4条,没看到过需要5线的相关资料,能提供地址吗?为什么洞洞4线也能显示正常呢?并且ADC测量电压按键控制改变数值什么的都没问题
作者: yinnan128    时间: 2021-7-1 14:28
zjjhtony 发表于 2021-7-1 13:27
有时候硬件电路也很重要,硬件的问题很多是通过软件无法解决的,必须解决硬件问题。
硬件和软件需要匹配才 ...

目前怀疑是12V转5V的7805输出滤波没做好,今晚把滤波加强看看结果
作者: 人人学会单片机    时间: 2021-7-6 20:32
LCD1602显示℃ 这种自定义符号 http://www.51hei.com/bbs/dpj-200685-1.html
LCD1602液晶最新资料 说明了具体的时间要求 http://www.51hei.com/bbs/dpj-205768-1.html




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