单片机1602显示的一个程序运行错误问题
时间:10-02
整理:3721RD
点击:
#include<reg51.h>
#define uchar unsigned char
uchar code table1[]=" I LOVE YOU "
uchar code table2[]=" mcu "
sbit lcde=P2^7;
sbit lcdrs=P2^6;
sbit lcdwr=P2^5;
uchar num;
void delay(ms)
{
uchar i;
while(ms--)
{for(i=0;i<=110;i++);}
}
void write_com(com)
{
lcdrs=0;
lcdwr=0;
P0=com;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void write_data(uchar dat)
{
lcdrs=1;
lcdwr=0;
P0=dat;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void init()
{
lcde=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
void main()
{
init();
for(num=0;num<=16;num++)
{
write_dat(table1[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<=16;num++)
{
write_dat(table2[num]);
delay(5);
}
while(1);
}
LCD1602-1.C(21): error C183: unmodifiable lvalue
一直显示红色的部分有上面的错误,这个是1602的使能段,请大神叫我,感激不尽!
#define uchar unsigned char
uchar code table1[]=" I LOVE YOU "
uchar code table2[]=" mcu "
sbit lcde=P2^7;
sbit lcdrs=P2^6;
sbit lcdwr=P2^5;
uchar num;
void delay(ms)
{
uchar i;
while(ms--)
{for(i=0;i<=110;i++);}
}
void write_com(com)
{
lcdrs=0;
lcdwr=0;
P0=com;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void write_data(uchar dat)
{
lcdrs=1;
lcdwr=0;
P0=dat;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void init()
{
lcde=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
void main()
{
init();
for(num=0;num<=16;num++)
{
write_dat(table1[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<=16;num++)
{
write_dat(table2[num]);
delay(5);
}
while(1);
}
LCD1602-1.C(21): error C183: unmodifiable lvalue
一直显示红色的部分有上面的错误,这个是1602的使能段,请大神叫我,感激不尽!
让1602显示两个字符串,我是新手,1602的时序大致了解,只是这个程序我不知道为什么会错
那个使能不需要关断吗?一直给高电平吗?
而且这个程序首先有问题,我不知道为啥定义的这个变量就不能被重新赋值?
都是一些最基本的语法方面的错误,自己仔细检查吧。
3,4,49,55行。
code应表示为数组形式吧
恩恩,谢谢,我已经发现了,定义字符数组时漏了分号,谢谢各位啊!
这个就是字符数组吧