標題: 各位大神能幫萌新看一下這個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
你調(diào)一下lcd顯示的對比度,可能已經(jīng)顯示了,但對比度太低,看不到,可以先用手壓一下屏幕,看看是否有字顯示




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1