标题:
各位大神能帮萌新看一下这个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
C51_LCD1602.c.jpg
(200.84 KB, 下载次数: 42)
下载附件
2018-9-12 22:06 上传
参考代码
作者:
yang阳
时间:
2018-9-13 13:42
你调一下lcd显示的对比度,可能已经显示了,但对比度太低,看不到,可以先用手压一下屏幕,看看是否有字显示
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1