找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于51单片机上LCD1602显示不了,急需大神们帮忙指点一下

查看数: 5108 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-6-25 11:29

正文摘要:

LCD只亮没有显示,我第一行一直是想显示“welcome home ”但是不知道为什么都显示不出来。

回复

ID:790273 发表于 2020-6-26 15:30
是不是别的步骤有问题,或者插入姿势不对
ID:767280 发表于 2020-6-26 14:57
就只是软件仿真,问题已经解决了,就有发现我程序逻辑上出问题了。
ID:790159 发表于 2020-6-26 13:35
楼主是硬件还是软件仿真? 原来第一次学习液晶屏就生意1602,现在想起还是比较有感情的。
楼主如果是硬件调试,那首先确保软件没有问题,特别是捕捉ACK信号,软件没有问题了硬件上只有对比度电阻了!
ID:767280 发表于 2020-6-26 09:54
wulin 发表于 2020-6-25 22:11
去掉判忙函数后加delay(100);延时就可以正常显示。

很棒,这是因为LCD一直处于忙碌状态所以才没有显示吗?我的程序之后遇到些逻辑问题,能不能问问大佬您。
ID:213173 发表于 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. }
复制代码



ID:735887 发表于 2020-6-25 19:26
指针可能有问题
ID:735887 发表于 2020-6-25 18:31
应该是指针有问题。
ID:220661 发表于 2020-6-25 17:10
先调一下对比度试试

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

Powered by 单片机教程网

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