80c51与1602液晶显示模块连接,一直无法显示(附图+程序

2019-07-18 13:03发布

近日在用proteus仿真,依据书里的知识,对照着连接了电路。并且自认为理解了程序,写了下来。但是,最终还是无法达到预期的目的。求各位大神帮帮忙!~

电路图
proteus仿真图
相对应的程序:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char

sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;//LCD的三个控制端


void delay(uint n)        //延时函数
{ uint i;
      uchar j;            
        for(i=n;i>0;i--)
           for(j=0;j<100;j++);         
}                                         


void write_LCD_command(uchar value)//写命令函数
{
    //Read_busy();
    RS=0;
    RW=0;

    EN=1;
    P0 = value;
    delay(haha);//采用了“haha”作为延时时间量,方便调整,下同
    EN=0;
        delay(haha);
}

void write_LCD_data(uchar value)//写命令函数
{
    RS=1;
    RW=0;
    EN=1;
    P0 = value;
    delay(haha);
    EN=0;
        delay(haha);
}

void init_LCD()   //初始化
{
    write_LCD_command(0x38); //8位,2行,5x7
    write_LCD_command(0x0c);//开显示,不显示光标,且不闪烁
    write_LCD_command(0x06);//每次写入数据后地址指针加1
    write_LCD_command(0x01);//清屏

}
//*******显示字符函数*********
void LCD_disp_char(uchar x,uchar y,uchar dat)
{
uchar address;
if(y==1)
         address=0x80+x;
else
         address=0xc0+x;
LCD_write_command(address);
LCD_write_data(dat);
}


void main()//主函数
{
       
        int haha;
        haha=10;
        P0 = 0x00;//意图是清零
        P2 = 0x00;//
        init_LCD();
    while(1)
        {
                LCD_disp_char(0,1,'A');//在第一行显示字符“A”
        }
}



以上就是我的设计以及遇到的问题。望各位大神们解答一下~~
file:///C:/Users/admin/AppData/Local/Temp/Wiz/6034a803-63c4-4ad8-a83a-90b9135194eb_0_files/8933756.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。