
我写了个LCD1602显示程序,为什么实物显示成功,但protues仿真却无法显示?
程序:#include<reg52.h>#defineuintunsignedint#defineucharunsignedchar#definelcdP0#define...
程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define lcd P0
#define n 5
sbit lcd_e=P3^0;
sbit lcd_rw=P3^1;
sbit lcd_rs=P3^2;
/*sbit lcd_e=P2^6;
sbit lcd_rw=P2^5;
sbit lcd_rs=P2^4;*/
void delayms(uint cc)
{
uint x=cc;
uint y=500;
for(;x>0;x--)
for(;y>0;y--);
}
void lcd_com(uchar com)
{
lcd_e=0;
lcd_rw=0;
lcd_rs=0;
delayms(n);
lcd=com;
lcd_e=1;
delayms(n);
lcd_e=0;
}
void lcd_data(uchar date)
{
lcd_e=0;
lcd_rw=0;
lcd_rs=1;
delayms(n);
lcd=date;
lcd_e=1;
delayms(n);
lcd_e=0;
}
void lcd_str(char*s)
{
char*str;
str=s;
while(*str)
{
lcd_data(*str);
str++;
}
}
uchar time0=0;
void init(void);
void main()
{
uchar i;
char*s1="I LOVE YOU !";
char*s2="1314";
init();
lcd_com(0x80+0x10);
lcd_str(s1);
for (i=0;i<14;i++)
{
lcd_com(0x18);
delayms(30000);
}
lcd_com(0x01);
lcd_com(0x80+0x02);
lcd_str(s1);
lcd_com(0x80+0x42);
lcd_str(s2);
while(1);
}
void init()
{
lcd_com(0x38);
lcd_com(0x0c);
lcd_com(0x06);
lcd_com(0x01);
}
仿真图: 展开
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define lcd P0
#define n 5
sbit lcd_e=P3^0;
sbit lcd_rw=P3^1;
sbit lcd_rs=P3^2;
/*sbit lcd_e=P2^6;
sbit lcd_rw=P2^5;
sbit lcd_rs=P2^4;*/
void delayms(uint cc)
{
uint x=cc;
uint y=500;
for(;x>0;x--)
for(;y>0;y--);
}
void lcd_com(uchar com)
{
lcd_e=0;
lcd_rw=0;
lcd_rs=0;
delayms(n);
lcd=com;
lcd_e=1;
delayms(n);
lcd_e=0;
}
void lcd_data(uchar date)
{
lcd_e=0;
lcd_rw=0;
lcd_rs=1;
delayms(n);
lcd=date;
lcd_e=1;
delayms(n);
lcd_e=0;
}
void lcd_str(char*s)
{
char*str;
str=s;
while(*str)
{
lcd_data(*str);
str++;
}
}
uchar time0=0;
void init(void);
void main()
{
uchar i;
char*s1="I LOVE YOU !";
char*s2="1314";
init();
lcd_com(0x80+0x10);
lcd_str(s1);
for (i=0;i<14;i++)
{
lcd_com(0x18);
delayms(30000);
}
lcd_com(0x01);
lcd_com(0x80+0x02);
lcd_str(s1);
lcd_com(0x80+0x42);
lcd_str(s2);
while(1);
}
void init()
{
lcd_com(0x38);
lcd_com(0x0c);
lcd_com(0x06);
lcd_com(0x01);
}
仿真图: 展开
4个回答
展开全部
据我印象当中一般如果连接没错。。那就是实际与模拟高低电平的逻辑值不同
更多追问追答
追问
你的意思是 仿真是类似 RS232电平??
追答
我是说实物的逻辑电平跟仿真的有稍许的差错。。。然后你现在提交下仿真的问题看看 是什么提示。。。这么说也不是个办法

2023-06-12 广告
STM32是一种由意法半导体(STMicroelectronics)公司设计和生产的单片机系列,广泛用于嵌入式系统、物联网(IoT)设备、汽车电子、工业自动化等领域。STM32具有以下优点:1. 低功耗:STM32单片机通常具有较低的功耗,...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
源码错了
追问
怎么说??可是实物实验却成功了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void lcdin()
{
delay1(15);
lcdm(0x38);
delay1(5);
lcdm(0x0C);
delay1(5);
lcdm(0x06);
delay1(5);
lcdm(0x01);
}
是初始化有问题,你改为0x38,0x0c,0x06,0x01。 看一下LCD1602的控制字就明白了。
{
delay1(15);
lcdm(0x38);
delay1(5);
lcdm(0x0C);
delay1(5);
lcdm(0x06);
delay1(5);
lcdm(0x01);
}
是初始化有问题,你改为0x38,0x0c,0x06,0x01。 看一下LCD1602的控制字就明白了。
追问
谢谢 请先看清我写的程序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询