微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助关于1602液晶显示异常的问题

求助关于1602液晶显示异常的问题

时间:10-02 整理:3721RD 点击:
本人新手,求大神解救。附上所编程序,以及液晶显示状况,求帮助。


#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit lcden=P1^6;
sbit lcdrs=P2^1;
sbit lcdrw=P1^5;
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void write_com(uchar com)
{
        lcdrs=0;
        P0=com;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}
void write_data(uchar dat)
{
        lcdrs=1;
        P0=dat;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}
void init()
{
        dula=0;
        wela=0;
        lcden=0;
        lcdrw=0;
        write_com(0x38);
        write_com(0x0e);
        write_com(0x06);
        write_com(0x01);       
}
void main()
{
        init();
        write_data('a');
        while(1);
}

在写数据前,要先确定是在哪个位置上写。
你应该封装一个显示函数。
void lcd_dispchar(uchar x, uchar y, uchar a)
{
        if(y == 1)                         //在第一行显示
                x = 0x80 + x;
        else if(y == 2)                  //在第二行显示
                x = 0xc0 + x;
        else
                return;
        lcd_wcom(x);
        lcd_wdat(a);
}

lcdrw=0;  这个最好放入在写数据和写命令语句里面。自己在看下时序图,调试下,应该可以的。

我也是新手,感觉可能是开发板上的跳线帽没接好。

出现这种情况一般是硬件电路没有连接好,比如是p0口没接上拉电阻

应该先写命令 再写数据

先定位再写数据

没什么问题,应该是别的地方有问题吧

好吧,多谢各位有爱的亲们帮助。我是按照郭天祥老师视频上的讲解插的液晶,后来发现我买的实验板和他的不太一样,应该把液晶插到实验板的外面才对。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top