標題:
各位大神能幫萌新看一下這個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, 下載次數(shù): 42)
下載附件
2018-9-12 22:06 上傳
參考代碼
作者:
yang陽
時間:
2018-9-13 13:42
你調(diào)一下lcd顯示的對比度,可能已經(jīng)顯示了,但對比度太低,看不到,可以先用手壓一下屏幕,看看是否有字顯示
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1