永发信息网

AT89C52 LCD1602在Isis 仿真软件能显示,在实物显示不出来

答案:2  悬赏:60  手机版
解决时间 2021-04-06 09:36
  • 提问者网友:回忆在搜索
  • 2021-04-05 19:54
LCD.h代码如下:
#ifndef __LCD1602_H__
#define __LCD1602_H__//=-----------------------
//------------------------------------------------

//------------------------------------------------
#endif

//**********************************************
#include
#define uchar unsigned char
#define uint unsigned int
#define LCDPORT P0
sbit LCDRS=P2^0;
sbit LCDRW=P2^1;
sbit LCDE=P2^2;
void Delay() //延时函数
{ uint uiCount;
for(uiCount=0;uiCount<250;uiCount++);
}
void WR_CMD(uchar ucCommand)
{ Delay();
LCDE=1;
LCDRS=0;
LCDRW=0;
LCDPORT=ucCommand;
LCDE=0;
}
//**************************************************
//把一个数据写入LCD函数
//***************************************************
void WR_Data(uchar ucData)
{ Delay();
LCDE=1;
LCDRS=1;
LCDRW=0;
LCDPORT=ucData;
LCDE=0;
}
//**********************************************************
//LCD初始化函数
//***************************************************************
void Initialize()
{
WR_CMD(0x01);//清屏
WR_CMD(0x38);//显示模式设置:8位2行5*7点阵
WR_CMD(0x0C);//文字不懂光标自动右移
}
//**************************************************************
//把一个字符写入LCD函数
//***************************************************************
void Show_1_Char(uchar ucChar)
{WR_Data(ucChar);}//写显示码符号

//把一组字符写入LCD函数

void Show_Char(uchar ucaChar[])
{
uchar ucCount;
for(ucCount=0;;ucaChar[ucCount++])
{
Show_1_Char(ucaChar[ucCount]);//调用一个字符写入LCD函数
if(ucaChar[ucCount+1]=='\0')//如果下一个字符是'\0'就退出
break;
}
}
GotoXY(x,y)
{
if(y==0)
{
WR_CMD(0x80+x);
}
if(y==1)
{
WR_CMD(0x80+0x40+x);
}

}
最佳答案
  • 五星知识达人网友:野慌
  • 2021-04-05 21:18
你好!
1、检查硬件的管脚连接

2、检查程序的时序控制
全部回答
  • 1楼网友:末日狂欢
  • 2021-04-05 21:35
db0-7接并口p0-2都可以的。 rs,rw,e分别接到三个io口就行了。 然后vcc接电源,vdd接地,vee接滑动变阻器接地
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯