怎样在STC89C51单片机上用1602液晶显示字符“STC89C52RC”,求程序代码
如题。另外看一下我这个错在哪里?#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharc...
如题。
另外看一下我这个错在哪里?
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]'STC89C52RC'!;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
uchar num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--);
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcday=1;
delay(5);
lcden=0;
}
viod write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
dula=0;
wela=0;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main();
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{
write_data(STC89C52RC);
delay(5);
}
while(1)
} 展开
另外看一下我这个错在哪里?
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]'STC89C52RC'!;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
uchar num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--);
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcday=1;
delay(5);
lcden=0;
}
viod write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
dula=0;
wela=0;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main();
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{
write_data(STC89C52RC);
delay(5);
}
while(1)
} 展开
3个回答
展开全部
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]'STC89C52RC'!;//这边错了
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
uchar num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--);
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcday=1;
delay(5);
lcden=0;
}
viod write_data(uchar date)//这个write_data函数只能写一个字节
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
dula=0;
wela=0;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main();
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{
write_data(STC89C52RC);//write_data只能写一个字节,这边错了,还有如果要写单个字节,如果是字母的话,还得加引号
//如果要写一个字符串,可以另外写个函数
delay(5);
}
while(1)
}
追问
求完整修改好的,按照您讲的我完全没头绪😥我会给你采纳
迪凯特科技(北京)有限公司
2023-07-28 广告
2023-07-28 广告
程序逻辑混乱,出现不确定现象,测试结果时好时坏。理顺一下程序思路,保证采集按键、发送、接收数据、显示为一个完整的周期跟后面其他的操作没有关系.你可以联系迪凯特问问,他家挺好的,下边有链接。...
点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
展开全部
你这个是什么意思啊,数学啊还是英文啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
基本看不懂,看看我的吧
//////1062/////////
void ydelay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=10;b>0;b--);
}
void write_com(uchar com)
{
P0=com;
lcwr=0;
lcrs=0;
lcden=0;
ydelay(10);
lcden=1;
ydelay(10);
lcden=0;
lcwr=1;
}
void write_date(uchar date)//写数据
{
P0=date;
lcwr=0;
lcrs=1;
lcden=0;
ydelay(10);
lcden=1;
ydelay(10);
lcden=0;
lcwr=1;
}
void init1602()//初始化
{
write_com(0x38);//设置显示模式
ydelay(20);
write_com(0x0c);//开显示
ydelay(20);
write_com(0x06);//指针和光标自动加一
ydelay(20);
write_com(0x01);//清屏指令
ydelay(20);
}
void delay(uchar count) //delay
{
uint i;
while(count)
{
i=200;
while(i>0)
i--;
count--;
}
}
///////显示程序//////
void display(uchar bh,int num,int num1)
{
uchar a,A1,A2;
WDT_CONTR=0x34;
if(c!=0)
num=~num+1;
y=num1;
y=y&0x8000;
if(y!=0)
num1=~num1+1;
A1=num/1000;
A2=num1/1000;
if(nota!=1)
{
table1[0]=table[bh];
if(A1!=0)
table1[2]=table[A1];
else if(c!=0)
{
c=0;
table1[2]='-';
}
else
table1[2]=' ';
table1[3]=table[num%1000/100];
table1[4]=table[num%1000%100/10];
table1[6]=table[num%1000%100%10];
}
else
{
table1[0]=table[bh];
table1[2]='-';table1[3]='-';table1[4]='-';table1[6]='-';
}
if((not!=1)&&(not1!=1)&&(not2!=1))
{
if(A2!=0)
table2[2]=table[A2];
else if(y!=0)
{
y=0;
table2[2]='-';
}
else
table2[2]=' ';
table2[3]=table[num1%1000/100];
table2[4]=table[num1%1000%100/10];
table2[6]=table[num1%1000%100%10];
}
else
{table2[2]='-';table2[3]='-';table2[4]='-';table2[6]='-';}
write_com(0x80);
delay(2);
for(a=0;a<7;a++)
write_date(table1[a]);
delay(2);
write_com(0x89);
for(a=0;a<7;a++)
write_date(table2[a]);
delay(2);
write_com(0xc0);
for(a=0;a<16;a++)
write_date(table3[a]);
delay(2);
c=0;y=0;
}
//////1062/////////
void ydelay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=10;b>0;b--);
}
void write_com(uchar com)
{
P0=com;
lcwr=0;
lcrs=0;
lcden=0;
ydelay(10);
lcden=1;
ydelay(10);
lcden=0;
lcwr=1;
}
void write_date(uchar date)//写数据
{
P0=date;
lcwr=0;
lcrs=1;
lcden=0;
ydelay(10);
lcden=1;
ydelay(10);
lcden=0;
lcwr=1;
}
void init1602()//初始化
{
write_com(0x38);//设置显示模式
ydelay(20);
write_com(0x0c);//开显示
ydelay(20);
write_com(0x06);//指针和光标自动加一
ydelay(20);
write_com(0x01);//清屏指令
ydelay(20);
}
void delay(uchar count) //delay
{
uint i;
while(count)
{
i=200;
while(i>0)
i--;
count--;
}
}
///////显示程序//////
void display(uchar bh,int num,int num1)
{
uchar a,A1,A2;
WDT_CONTR=0x34;
if(c!=0)
num=~num+1;
y=num1;
y=y&0x8000;
if(y!=0)
num1=~num1+1;
A1=num/1000;
A2=num1/1000;
if(nota!=1)
{
table1[0]=table[bh];
if(A1!=0)
table1[2]=table[A1];
else if(c!=0)
{
c=0;
table1[2]='-';
}
else
table1[2]=' ';
table1[3]=table[num%1000/100];
table1[4]=table[num%1000%100/10];
table1[6]=table[num%1000%100%10];
}
else
{
table1[0]=table[bh];
table1[2]='-';table1[3]='-';table1[4]='-';table1[6]='-';
}
if((not!=1)&&(not1!=1)&&(not2!=1))
{
if(A2!=0)
table2[2]=table[A2];
else if(y!=0)
{
y=0;
table2[2]='-';
}
else
table2[2]=' ';
table2[3]=table[num1%1000/100];
table2[4]=table[num1%1000%100/10];
table2[6]=table[num1%1000%100%10];
}
else
{table2[2]='-';table2[3]='-';table2[4]='-';table2[6]='-';}
write_com(0x80);
delay(2);
for(a=0;a<7;a++)
write_date(table1[a]);
delay(2);
write_com(0x89);
for(a=0;a<7;a++)
write_date(table2[a]);
delay(2);
write_com(0xc0);
for(a=0;a<16;a++)
write_date(table3[a]);
delay(2);
c=0;y=0;
}
追问
大哥!!错误很多啊!
追答
我的程序是显示数码的,就是给你个参考,如果能看懂了,你就能写出自己的程序了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询