登录|立即注册|使用QQ帐号登录
论坛 > 24小时必答区
发帖|
看2192|回4|收藏
楼主 ID:377597 只看他
2018-9-12 19:13
#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);
    }
}


沙发 ID:277550 只看他
2018-9-12 21:40


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

2、EN的波形是否正确

板凳 ID:277550 只看他
2018-9-12 21:47
还有,P0端口,最好是上拉一下
地板 ID:277550 只看他
2018-9-12 22:07
C51_LCD1602.c.jpg

参考代码



5# ID:382067 只看他
2018-9-13 13:42
你调一下lcd显示的对比度,可能已经显示了,但对比度太低,看不到,可以先用手压一下屏幕,看看是否有字显示

51黑电子论坛

Powered by Discuz! X3.1

首页|标准版|触屏版|电脑版