标题:
单片机驱动lcd1602只显示方格不显示文字
[打印本页]
作者:
201511106109
时间:
2017-4-4 09:27
标题:
单片机驱动lcd1602只显示方格不显示文字
1602只显示方格不显示文字。
昨天我弄得时候还可以显示今天就不行了,首先我确定接线什么的无误,因为这是开发板直接插上就行,其次我也调过变阻器了只有方格明暗变化,文字依旧不显示。我把厂家给的代码也附上
QQ图片20170404092509.jpg
(56.2 KB, 下载次数: 85)
下载附件
2017-4-4 09:25 上传
#include <reg51.h>
#include <intrins.h>
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef bit BOOL ;
sbit rs = P2^0;
sbit rw = P2^1;
sbit ep = P2^2;
BYTE code dis1[] = {"WELCOME! Zhi Jie"};
BYTE code dis2[] = {"ELECTRONICS TECH"};
delay(BYTE ms)
{ // 延时子程序
BYTE i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
BOOL lcd_bz()
{ // 测试LCD忙碌状态
BOOL result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (BOOL)(P0 & 0x80);
ep = 0;
return result;
}
lcd_wcmd(BYTE cmd)
{ // 写入指令数据到LCD
while(lcd_bz());
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
lcd_pos(BYTE pos)
{ //设定显示位置
lcd_wcmd(pos | 0x80);
}
lcd_wdat(BYTE dat)
{ //写入字符显示数据到LCD
while(lcd_bz());
rs = 1;
rw = 0;
ep = 0;
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
lcd_init()
{ //LCD初始化设定
lcd_wcmd(0x38);
delay(1);
lcd_wcmd(0x0c);
delay(1);
lcd_wcmd(0x06);
delay(1);
lcd_wcmd(0x01); //清除LCD的显示内容
delay(1);
}
main()
{
BYTE i;
lcd_init(); // 初始化LCD
delay(10);
lcd_pos(0); // 设置显示位置为第一行的第1个字符
i = 0;
while(dis1[i] != '\0')
{ // 显示字符"WELCOME! Zhi Jie"
lcd_wdat(dis1[i]);
i++;
}
lcd_pos(0x40); // 设置显示位置为第二行第1个字符
i = 0;
while(dis2[i] != '\0')
{
lcd_wdat(dis2[i]); // 显示字符"ELECTRONICS TECH"
i++;
}
while(1);
}
复制代码
作者:
w1179benp
时间:
2017-4-5 10:34
继续检查实物吧,程序是OK的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1