LCD1602不显示

LCD1602只显示黑块不显示字符该怎么解决啊,接口从p2改到p0,p1都没解决,电阻换成电位器也没用

img


#include <reg52.h>
#include "lcd1602.h"

#define LCD P0
sbit E = P1^1;
sbit RS = P1^2;
sbit RW = P1^0;
//sbit E = P0^5;
//sbit RS = P0^7;
//sbit RW = P0^6;
/******延迟5毫秒函数********/
void delay5ms()   //误差 -0.000000000001us
{
    unsigned char a,b;
    for(b=15;b>0;b--)
        for(a=152;a>0;a--);
}


/******LCD1602写命令函数********/
void write_com(unsigned char command)
{
    RS = 0; 
    RW = 0;     //高读低写
    LCD = command;
    delay5ms(); //这里延时最低要30纳秒 我们直接给5ms
    E = 1;        //使能拉高 
    delay5ms(); //最低要求延迟150纳秒 我们直接给5ms
    E = 0;
}

/******LCD1602写数据函数********/
void write_data(unsigned char dat)
{
    RS = 1;
    RW = 0;
    LCD = dat;
    delay5ms(); //这里延时最低要30纳秒 我们直接给5ms
    E = 1;        //使能拉高 
    delay5ms(); //最低要求延迟150纳秒 我们直接给5ms
    E = 0;
}
/******初始化LCD1602********/
void init_lcd()
{        
    write_com(0x38); //数据总线816X2显示 5*7点阵
    delay5ms();
    write_com(0x38); //数据总线816X2显示 5*7点阵
    delay5ms();    
    write_com(0x38); //数据总线816X2显示 5*7点阵
    delay5ms();    
    write_com(0x38); //数据总线816X2显示 5*7点阵
    delay5ms();
    write_com(0x06);    //写入数据后光标自动右移 整屏不移动。 0x40(光标左移 整屏不移动)0x05(左移 整屏右移)0x07(右移 整屏右移)
    write_com(0x0c); //开显示功能 无光标 不闪烁
    write_com(0x01); //清屏 0000 0001
}

提供下程序以及接线原理,可能是程序的问题,也可能是接线的问题。

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^