单片机程序翻译

#include<AT89x51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table1[]="Distance ";
uchar shuju=0;
uchar biaozhi=0;
uchar table[20];
//******************LCD1602****************************//
sbit lcdrs=P2^5;
sbit lcden=P2^7;
sbit lcdrw=P2^6;

sbit key=P3^7;
uint temp;
uchar num=0;
//******************LCD1602****************************//

void delay1(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;
delay1(5);
lcden=1;
delay1(5);
lcden=0;
}

void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay1(5);
lcden=1;
delay1(5);
lcden=0;
}
void init1602()
{
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x84);
}
void SendASC(uchar d) //串口发送字符
{

SBUF=d; //数据赋值到缓冲区
while(!TI); //发送完

TI=0; //清零
}

void SendString(uchar *str) //串口发送字符串
{
while(*str) //判断是否发送完
{
SendASC(*str) ; //发送字符
str++; //字符位置加
//delay_uart(1);
}
}
void main()
{ lcdrw=0;
init1602();
for(temp=0;temp<15;temp++)
{
write_data(table1[temp]);
delay1(20);
}
//串口设置
TMOD=0x21;//设置定时器1为工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
PCON=0X80;
EA=1;
ES=1;
while(1)
{ if(biaozhi==1)
{
delay1(100);
write_com(0x84+0x40);
for(temp=0;temp<=shuju;temp++)
{
if(table[temp]==',')
break;
write_data(table[temp]);
delay1(20);
}
for(temp=0;temp<=10;temp++)
{
write_data(' ');
delay1(20);
}
biaozhi=0;
shuju=0;
}

if(key==0)
{
delay1(5);
if(key==0)
{ shuju=0;
biaozhi=0;
write_com(0x84+0x40);
for(temp=0;temp<=12;temp++)
{
write_data(' ');
delay1(20);
}
for(temp=0;temp<20;temp++)
{
table[temp]=0x00;
}
SendASC('D');
delay1(10);
}
while(key==0);
delay1(5);
while(key==0);
}
}
}
void ser() interrupt 4
{

if(RI==1)
{
RI=0;
table[shuju]=SBUF;
shuju++;
if(shuju>4)
biaozhi=1;
}

}这些程序什么意思。有没有大神帮忙翻译一下。每个程序的意思都翻译一下。急用谢谢!

程序太长了点,都注释太费时了,其实也没那么难,你静心看也应该能看懂的,1602液晶显示串口接收到的数据这个功能。追问

好的,谢谢

温馨提示:答案为网友推荐,仅供参考
相似回答