标题: 各位大神能帮萌新看一下这个1602程序为什么不显示吗? [打印本页]

作者: 1607928674    时间: 2018-9-12 19:13
标题: 各位大神能帮萌新看一下这个1602程序为什么不显示吗?
#include <reg52.h>
#include<intrins.h>

sbit RS = P3 ^ 5;
sbit RW = P3 ^ 6;
sbit E  = P3 ^ 4;
#define DATA P0
void delayms(char ms);
char is_busy();
void write_cmd(unsigned char cmd);
void write_data(unsigned char dat);
void pos (unsigned char pos);
void main()
{
    write_cmd(0x38);
    delayms(1);
    write_cmd(0x0c);
    delayms(1);
    write_cmd(0x06);
    delayms(1);
    write_cmd(0x01);
    delayms(1);
   
    pos (0);
    write_data('1');
    write_data('2');
    write_data('3');
    write_data('4');
    write_data('5');
    write_data('6');
    write_data('7');
    write_data('8');
    write_data('9');
    write_data('0');
   
    pos (0x40);
   
    write_data('1');
    write_data('2');
    write_data('3');
    write_data('4');
    write_data('5');
   
    while(1);
}
void pos (unsigned char pos)
{
    write_cmd(pos|0x80);
}
void write_data(unsigned char dat)
{
    while(is_busy());
    RS = 1;
    RW = 0;
    E  = 0;
    DATA = dat;
    _nop_();
    E = 1;
    E = 0;
}
void write_cmd(unsigned char cmd)
{
    while(is_busy());
    RS = 0;
    RW = 0;
    E  = 0;
    DATA = cmd;
    _nop_();
    E = 1;
    E = 0;
}
char is_busy()
{
    int a=0;
    char result;
    RS = 0;
    RW = 1;
    E  = 1;
    _nop_();
    result = (1<<7 & DATA);
    E = 0;
    return result;
}
void delayms(char ms)
{
    while(ms--)
    {
        unsigned char i, j;
        i = 2;
        j = 239;
        do
        {
            while (--j);
        } while (--i);
    }
}



作者: devcang    时间: 2018-9-12 21:40


1、确认一下忙检测是否正常

2、EN的波形是否正确


作者: devcang    时间: 2018-9-12 21:47
还有,P0端口,最好是上拉一下
作者: devcang    时间: 2018-9-12 22:07


参考代码




作者: yang阳    时间: 2018-9-13 13:42
你调一下lcd显示的对比度,可能已经显示了,但对比度太低,看不到,可以先用手压一下屏幕,看看是否有字显示




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1