LCD1602非常的不正常

2019-07-15 14:59发布

代码如下:
  1. #include<reg51.h>
  2. #include"LCD1602.h"
  3. void mian()
  4. {
  5.     LCD1602init();
  6.     while(1)
  7.     {
  8.         LCD1602write('T');
  9.         LCD1602write('T');
  10.         LCD1602write('T');
  11.         LCD1602write('T');
  12.         //LCD1602write('T');//老紫真特么醉了,5个T可以显示为毛4个T显示不出来!

  13.         while(1);
  14.     }
  15. }
复制代码连续显示5个T完全正常,但是要它只显示4个,屏幕什么都不显示,3个、2个、1个T都不行。但是5个以上的T就可以显示。求大神解答,实在感激不尽!

使用的头文件如下:
*.h文件:
  1. #include<reg51.h>
  2. #ifndef __LCD1602_h_
  3. #define __LCD1602_h_

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

  7. void LCD1602com(unsigned char com);   //头文件中声明函数 如果有形参,则形参不能省略  
  8. void LCD1602write(unsigned char Byte);   
  9. void LCD1602init();    //初始设置
  10. void delay1ms();      //延时
  11. #endif
复制代码*.c文件:
#include"LCD1602.h"

void delay1ms()   
{
    unsigned char a,b;
    for(b=102;b>0;b--)
        for(a=3;a>0;a--);
}
void LCD1602com(unsigned char com)
{
    RS=0;
    RW=0;
    P0=com;
    delay1ms();
    LCDE=1;
    delay1ms();
    LCDE=0;
}

void LCD1602write(unsigned char Byte)
{
    RS=1;
    RW=0;
    P0=Byte;
    delay1ms();
    LCDE=1;
    delay1ms();
    LCDE=0;
}
void LCD1602init()
{
    LCD1602com(0x38);
    LCD1602com(0x0c);
    LCD1602com(0x06);
    LCD1602com(0x80);
    LCD1602com(0x01);
    delay1ms();
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
michael_llh
1楼-- · 2019-07-15 19:43
具体可能我不是很清楚,但是你认真看下LCD1602的操作时序,看看初始化有没有问题,看你都没有注释,还是注释一下比较好
mhx321
2楼-- · 2019-07-15 19:46
操作时序有问题,或者是你用P0口作数据口,那个P0要加上拉电阻,不然也可能导致显示不正常
青竹林
3楼-- · 2019-07-16 01:05
你在写数据之前要检测一下液晶是否已经处于空闲状态。

一周热门 更多>