我的程序是这样的
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit E=P2^6;
sbit RW=P2^5;
sbit RS=P2^4;
sbit RST=P2^3;
sbit Busy=P0^7;
#define LCDdata P0
void delay(uint xx)
{
while(xx--);
}
void rdbf(void)
{
while(1)
{
RS=0;
RW=1;
E=0;
LCDdata=0xFF;
E=1;
if((LCDdata&Busy)==0)
break;
}
}
void wr_data(uchar wrdata)
{
rdbf();
RS=1;
RW=0;
E=1;
LCDdata=wrdata;
E=0;
}
void wr_cmd(uchar cmd)
{
rdbf(); //当BF=0时,模块内部方可接收新的指令
RS=0;
RW=0;
E=1;
LCDdata=cmd;
E=0;
}
void lcd_init(void)
{
delay(5000);
RST=1;
RST=0;
RST=1;
wr_cmd(0x30);
delay(500);
wr_cmd(0x30); //2次功能模式设置,不用判忙(基本指令)
delay(500);
wr_cmd(0x0c); //整体显示,光标及其设置不显示
delay(500);
wr_cmd(0x01); //清屏
delay(500);
delay(500);
wr_cmd(0x06); //光标右移
delay(500);
}
void main(void)
{
lcd_init();
wr_cmd(0x80);
wr_data(0x44);
while(1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
- RS=0;
- RW=1;
- E=1;
复制代码而楼主的是
- RS=0;
- RW=1;
- E=0;
复制代码楼主还是在再看资料吧。
附:
LCD12864液晶的使用.pdf 下载积分: 积分 -1 分
8.49 MB, 下载次数: 72, 下载积分: 积分 -1 分
main中 wr_cmd(0x80); wr_data(0x44);之后都没有判忙或延时;
rdbf没有使用,也没有在程序结束时使E无效;
一周热门 更多>