我是一个初学者有关1602液晶屏的问题哪位大哥能帮我解答一下。

2019-03-24 18:49发布

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;

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 date)
{
        lcdrs=1;
        P0=date;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
       
}
void init()
{
        dula=0;
        wela=0;
    lcden=0;
        write_com(0x38);
        write_com(0x0e);
    write_com(0x06);
        write_com(0x80);
        write_com(0x01);
}
void main()
{
        init();
     write_data('1');
        while(1);
       
}



这是我按视频教材写的1602程序,但是没有显示错误下载后却无法在1602上显示1,这是为什么?我按照视频教的排查了一遍没发现错误,哪位大哥能帮我看看哪里出错了 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
378711227
1楼-- · 2019-03-25 21:12
1602的接线与视频上的接线不一样,你还得控制另外一个脚试一下。
378711227
2楼-- · 2019-03-26 00:17
看看你的原理图,认真分析一上1602的每个接口,特别是RS、R/W、EN三个口是不是都接上,如果接上那就把RW接地就OK了。
重邮king
3楼-- · 2019-03-26 03:51
对比度调了没?那个地方很容易被忽略!另外,在初始化函数中最好在每条指令后都延时一下(5ms左右吧)~
blue_bm
4楼-- · 2019-03-26 05:02
你试试这样呢
uchar one='1';
write_data(one);
mark276810852
5楼-- · 2019-03-26 07:40
 精彩回答 2  元偷偷看……
138hc487
6楼-- · 2019-03-26 09:34
write_com(0x80);
write_com(0x01);这个把显示清0,数据指针清0了,就没有具体位置了。
你在初始化函数里面这样写不对。
write_com(0x80);
不要写在初始化函数里面,直接写在主函数里面,写在你要显示数据的前面。

一周热门 更多>