2901005274 发表于 2021-10-23 23:03
P0=dat;
E=0;
就这两个地方有什么不对的吗?LCD1602显示屏读写部分
xuyaqi 发表于 2021-10-24 07:29
P0已经在reg52.h声明了,#define P0要注释掉。E没有声明根据分析应该是EN,#define E也要注释掉。
xuyaqi 发表于 2021-10-24 07:29
P0已经在reg52.h声明了,#define P0要注释掉。E没有声明根据分析应该是EN,#define E也要注释掉。
xuyaqi 发表于 2021-10-24 07:29
P0已经在reg52.h声明了,#define P0要注释掉。E没有声明根据分析应该是EN,#define E也要注释掉。
2901005274 发表于 2021-10-23 23:03
P0=dat;
E=0;
就这两个地方有什么不对的吗?LCD1602显示屏读写部分
#include<reg52.h>
//*********************************************************************
sbit EN=P1^1;
sbit RS=P2^0;
sbit RW=P2^1;
//******************************************************************
char str[]="Goodbye World!";
//***********************************************************************
void delayms(unsigned int ms)
{
unsigned char i;
while(ms--)
for(i=0;i<123;i++);
}
//****************************************************************
void lcdwritecom(unsigned char com)
{
RW=0;
RS=0;
EN=1;
P0=com;
EN=0;
delayms(1);
}
//**********************************************************************
void lcdwritedat(unsigned char dat)
{
RW=0;
RS=1;
EN=1;
P0=dat;
EN=0;
delayms(1);
}
//******************************************************************
void lcdinit()
{
lcdwritecom(0x38);
delayms(10);
lcdwritecom(0x0c);
delayms(10);
lcdwritecom(0x06);
delayms(10);
lcdwritecom(0x01);
delayms(10);
lcdwritecom(0x38);
delayms(10);
}
//*******************************************************************
void main()
{
char i;
lcdinit();
lcdwritecom(0xc0);
for(i=0;i<14;i++)
{
lcdwritedat(str);
}
while(1);
}
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |