lcd1602只亮不显示_lcd1602简单显示程序
lcd1602只亮不显示
lcd1602液晶显示器是广泛使用的一种字符型液晶显示模块,通常跟单片机一起使用,由单片机控制显示的内容,那么当遇到lcd1602只亮不显示怎么办?下面教大家几个检查方法。
1、检查硬件是否短路/短路,用数字万用表的红黑表笔分别点到lcd1602的电源和地引脚,也就是如图所示的vcc和gnd引脚。
2、上电测量供电电压是否正常,上电后用数字万用表红黑表笔分别点到lcd1602的vcc和gnd两个引脚,观察数字万用表的读数是否为5v(常用5v电压供电)测量如图所示两点位置。
3、检查单片机最小系统是否正常工作,用示波器测量单片机的晶振电路是否起振,单片机、晶振等元件是否焊接良好。
4、检查lcd1602连接的排线是否有断开的线或者接触不良的接口,也有可能是排线损坏引起的原因,用数字万用表的导通测量档位测量排线以及接线是否正常导通.
5、以上硬件都检查正常没有问题的就检查下驱动程序,检查驱动程序是否正确,如图所示。
lcd1602简单显示程序
lcd1602液晶手册提供了一个初始化过程,由于不检测“忙”位,所以程序比较复杂,而我们总结了一个更加简易方便的过程提供给大家,手册上描述的那个,大家仅仅作为了解就可以了,下面我把程序写出来大家看下,我们的初始化只用了 4 条语句,没有像手册介绍的那么繁琐。
#include 《reg52.h》
#define lcd1602_db p0
sbit lcd1602_rs = p1^0;
sbit lcd1602_rw = p1^1;
sbit lcd1602_e = p1^5;
void initlcd1602();
void lcdshowstr(unsigned char x, unsigned char y, unsigned char *str);
void main(){
unsigned char str[] = “kingst studio”;
initlcd1602();
lcdshowstr(2, 0, str);
lcdshowstr(0, 1, “welcome to kst51”);
while (1);
}
/* 等待液晶准备好 */
void lcdwaitready(){
unsigned char sta;
lcd1602_db = 0xff;
lcd1602_rs = 0;
lcd1602_rw = 1;
do {
lcd1602_e = 1;
sta = lcd1602_db; //读取状态字
lcd1602_e = 0;
}while (sta & 0x80); //bit7 等于 1 表示液晶正忙,重复检测直到其等于 0 为止
}
/* 向 lcd1602 液晶写入一字节命令,cmd-待写入命令值 */
void lcdwritecmd(unsigned char cmd){
lcdwaitready();
lcd1602_rs = 0;
lcd1602_rw = 0;
lcd1602_db = cmd;
lcd1602_e = 1;
lcd1602_e = 0;
}
/* 向 lcd1602 液晶写入一字节数据,dat-待写入数据值 */
void lcdwritedat(unsigned char dat){
lcdwaitready();
lcd1602_rs = 1;
lcd1602_rw = 0;
lcd1602_db = dat;
lcd1602_e = 1;
lcd1602_e = 0;
}
/* 设置显示 ram 起始地址,亦即光标位置,(x,y)-对应屏幕上的字符坐标 */
void lcdsetcursor(unsigned char x, unsigned char y){
unsigned char addr;
if (y == 0){ //由输入的屏幕坐标计算显示 ram 的地址
addr = 0x00 + x; //第一行字符地址从 0x00 起始
}else{
addr = 0x40 + x; //第二行字符地址从 0x40 起始
}
lcdwritecmd(addr | 0x80); //设置 ram 地址
}
/* 在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,str-字符串指针 */
void lcdshowstr(unsigned char x, unsigned char y, unsigned char *str){
lcdsetcursor(x, y); //设置起始地址
while (*str != ‘