标题: 关于51单片机上LCD1602显示不了,急需大神们帮忙指点一下 [打印本页]

作者: ADDAacx    时间: 2020-6-25 11:29
标题: 关于51单片机上LCD1602显示不了,急需大神们帮忙指点一下
LCD只亮没有显示,我第一行一直是想显示“welcome home ”但是不知道为什么都显示不出来。

连线图.PNG (225.22 KB, 下载次数: 44)

电路图,4*4键盘用的是中断识别

电路图,4*4键盘用的是中断识别

源程序.docx

14.22 KB, 下载次数: 24

源程序代码


作者: gongnn    时间: 2020-6-25 17:10
先调一下对比度试试
作者: 51hei9560    时间: 2020-6-25 18:31
应该是指针有问题。
作者: 51hei9560    时间: 2020-6-25 19:26
指针可能有问题
作者: wulin    时间: 2020-6-25 22:11
去掉判忙函数后加delay(100);延时就可以正常显示。


  1. /*
  2. bit LCD_Check_Busy(void)                        //判忙函数
  3. {
  4.         #ifdef CHECK_BUSY        //当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2
  5.         DataPort= 0xFF;
  6.         RS=0;
  7.         RW=1;
  8.         EN=0;
  9.         _nop_();
  10.         EN=1;
  11.         return (bit)(DataPort & 0x80);
  12.         #else
  13.         return 0;
  14.         #endif
  15. }*/
  16. void LCD_Write_Com(unsigned char com)           //写入命令函数
  17. {  
  18. //        while(LCD_Check_Busy()); //忙则等待
  19.         DataPort= com;  
  20.         RS=0;
  21.         RW=0;
  22.         EN=1;
  23.         delay(100);
  24.         EN=0;
  25. }
  26. void LCD_Write_Data(unsigned char Data)   //写入数据函数
  27. {
  28. //        while(LCD_Check_Busy()); //忙则等待
  29.         DataPort= Data;
  30.         RS=1;
  31.         RW=0;
  32.         EN=1;
  33.         delay(100);
  34.         EN=0;
  35. }
复制代码




作者: ADDAacx    时间: 2020-6-26 09:54
wulin 发表于 2020-6-25 22:11
去掉判忙函数后加delay(100);延时就可以正常显示。

很棒,这是因为LCD一直处于忙碌状态所以才没有显示吗?我的程序之后遇到些逻辑问题,能不能问问大佬您。
作者: cdlongbo    时间: 2020-6-26 13:35
楼主是硬件还是软件仿真? 原来第一次学习液晶屏就生意1602,现在想起还是比较有感情的。
楼主如果是硬件调试,那首先确保软件没有问题,特别是捕捉ACK信号,软件没有问题了硬件上只有对比度电阻了!
作者: ADDAacx    时间: 2020-6-26 14:57
就只是软件仿真,问题已经解决了,就有发现我程序逻辑上出问题了。

作者: 胖虎宅急便    时间: 2020-6-26 15:30
是不是别的步骤有问题,或者插入姿势不对




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