内容发布更新时间 : 2024/12/22 21:23:09星期一 下面是文章的全部内容请认真阅读。
word专业整理
IN1=0; IN2=0; IN3=0;
IN4=1;
delayms(10);
EN1=1;
EN2=1;
DisplayListChar(1,
1,Clef);
delayms(800); IN1=0; IN2=1; IN3=0;
IN4=1;
delayms(10);
EN1=1;
EN2=1;
}
}
void StartModule() //启动模块 { TX=1;
//启动一次模块
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_();
学习资料 整理分享
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); TX=0;
}
void main() { delayms(400);
//启动等待,等LCD讲入工作
状态 LCDInit(); //初始化
delayms(5); //延时片刻(
DisplayListChar(0, 0,net); TMOD=0x21;
//设T0为方式1 11.0592M晶振 TH1=0xfd; TL1=0xfd;
SCON=0x50;
//串口的工作方式,设置为方式1
TR1=1;
//打开定时器
word专业整理
ES=1; //打开串口中断 TH0=0;
TL0=0; ET0=1; //允许T0中断 EA=1; //开启总中断
while(1) {
StartModule();
while(!RX);
//当RX
为零时等待 TR0=1;
//开启计数
while(RX);
//当RX
为1计数并等待
TR0=0;
//关闭计数 Conut(); //计算
delayms(200);
}
}
void zd0() interrupt 1 //T0中断来计数器溢出,超过测距范围 {
flagg=1; //中断溢出标志
}
/****中断服务子函数*****/ void com_isr(void) interrupt 4 {
if(RI)
学习资料 整理分享
{
rec=SBUF;
//从串口缓冲区取得数据 flag=1;
RI=0;
//清除串行接受标志位
/***根据串口指令电机运转函数**/ delayms(10);
if(rec==0x01) //正转
(前进) {
startmove=1;
DisplayListChar(1, 1,forward); IN1=0; IN2=1;
IN3=0;
IN4=1;
delayms(100);
EN1=1; EN2=1;
flag=0;
}
if(rec==0x02)/反转(后
退) { startmove=2;
IN1=1;
IN2=0;
IN3=1;
IN4=0;
word专业整理
DisplayListChar(1, 1,back);
delayms(100); EN1=1; EN2=1;
flag=0;
}
if(rec==0x03) //左转
{
IN1=0;
IN2=0;
IN3=0;
IN4=1;
delayms(10); EN1=1;
EN2=1;
DisplayListChar(1, 1,left); delayms(800);
IN1=0;
IN2=1;
IN3=0;
N4=1;
delayms(10);
EN1=1;
EN2=1; flag=0; }
if(rec==0x04)
//右
转
学习资料 整理分享
{
IN1=0; IN2=1;
IN3=0;
IN4=0;
delayms(10);
EN1=1;
EN2=1;
DisplayListChar(1,
1,right); delayms(800); IN1=0; IN2=1;
IN3=0;
IN4=1;
delayms(10);
EN1=1;
EN2=1;
flag=0;
}
if(rec==0x05) //停车 {
startmove=0;
DisplayListChar(1,
1,stop); IN1=0; IN2=1; IN3=0;
IN4=0;
delayms(10);
EN1=0;
EN2=0;
flag=0;
startmove=0;
word专业整理
} 学习资料 }
整理分享
}
word专业整理
附录三
语音单元可视化编程部分程序:
学习资料 整理分享