LCD1602非常的不正常
时间:10-02
整理:3721RD
点击:
代码如下:
使用的头文件如下:
*.h文件:
#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();
}
- #include<reg51.h>
- #include"LCD1602.h"
- void mian()
- {
- LCD1602init();
- while(1)
- {
- LCD1602write('T');
- LCD1602write('T');
- LCD1602write('T');
- LCD1602write('T');
- //LCD1602write('T');//老紫真特么醉了,5个T可以显示为毛4个T显示不出来!
- while(1);
- }
- }
使用的头文件如下:
*.h文件:
- #include<reg51.h>
- #ifndef __LCD1602_h_
- #define __LCD1602_h_
- sbit RW=P2^5;
- sbit RS=P2^6;
- sbit LCDE=P2^7;
- void LCD1602com(unsigned char com); //头文件中声明函数 如果有形参,则形参不能省略
- void LCD1602write(unsigned char Byte);
- void LCD1602init(); //初始设置
- void delay1ms(); //延时
- #endif
#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();
}
具体可能我不是很清楚,但是你认真看下LCD1602的操作时序,看看初始化有没有问题,看你都没有注释,还是注释一下比较好
操作时序有问题,或者是你用P0口作数据口,那个P0要加上拉电阻,不然也可能导致显示不正常
你在写数据之前要检测一下液晶是否已经处于空闲状态。