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

2019-07-15 23:15发布

本人新手,求大神解救。附上所编程序,以及液晶显示状况,求帮助。。。 IMG_20130806_105823.jpg
#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);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
xunfeng0862
1楼-- · 2019-07-16 00:10
在写数据前,要先确定是在哪个位置上写。
你应该封装一个显示函数。
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;  这个最好放入在写数据和写命令语句里面。自己在看下时序图,调试下,应该可以的。

466585843
2楼-- · 2019-07-16 01:58
 精彩回答 2  元偷偷看……
小咯咯怒
3楼-- · 2019-07-16 03:16
出现这种情况一般是硬件电路没有连接好,比如是p0口没接上拉电阻
背包少年
4楼-- · 2019-07-16 05:06
应该先写命令 再写数据
liwenbiao
5楼-- · 2019-07-16 10:26
先定位再写数据
moxingxing
6楼-- · 2019-07-16 12:46
 精彩回答 2  元偷偷看……

一周热门 更多>