单片机stc89c52rc控制LCD1602不能显示怎么办?

#include<reg52.h>sbitrs=P2^0;sbitrw=P2^1;sbiten=P2^2;#defineDataP1voidDelay(unsignedc... #include <reg52.h>
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
#define Data P1
void Delay(unsigned char H,unsigned char L);
void LCDWriteCom(unsigned char com,bit busy);
void LCDWriteData(unsigned char dat,bit busy);
void ReadBusy(void);
void LCDInit();
//以上为声明部分
void ReadBusy(void){
rs=0;
rw=1;
en=0;
en=1;
while(Data&0x80);
en=0;
}
void LCDInit(){
Delay((65536-15000)/256,(65536-15000)%256);
LCDWriteCom(0x38,0);
Delay(0xec,0x78);
LCDWriteCom(0x38,0);
Delay(0xec,0x78);
LCDWriteCom(0x38,0);

LCDWriteCom(0x38,1);
LCDWriteCom(0x08,1);
LCDWriteCom(0x06,1);
LCDWriteCom(0x01,1);
LCDWriteCom(0x0c,1);
}
void Delay(unsigned char H,unsigned char L){
TR0=1;
TH0=H;
TL0=L;
TF0=0;
while(!TF0);
TR0=0;
}
void LCDWriteDat(unsigned char dat,bit busy){
if(busy)
ReadBusy();
rs=1;
rw=0;
Data=dat;
Delay(0xec, 0x78); //延时5ms
en=1; //保证数据接收到了
en=0;
}
void LCDWriteCom(unsigned char com,bit busy){
if(busy)
ReadBusy();
rs=0;
rw=0;
Data=com;
Delay(0xec,0x78); //延时5ms
en=1;
en=0;

}
void main(void){
TMOD=0x00;//0000 0000 开定时器
TR0=1; //开定时器
LCDInit();
LCDWriteCom(0x80,1);
LCDWriteDat('Y',1);
TR0=0;

while(1);
}
谢了,就是全白屏,说明进去数据了。
展开
 我来答
cjj796
2015-05-14 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3454万
展开全部
你好!
根据软件定义的端口,和硬件仔细的核对一下,有问题再问
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
111
2024-12-20 广告
作为合肥鑫义达科技有限公司的工作人员,我认为工业级LCD显示屏之所以被广泛使用,主要归因于其高可靠性、耐用性和多功能性。在工业环境中,设备需长时间运行并面临恶劣条件,如温度变化、震动和尘埃,而工业级LCD显示屏采用特殊材料和工艺,能有效抵御... 点击进入详情页
本回答由111提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式