C51小车超声波避障代码
以下是C51小车超声波避障代码的示例:
#include<reg51.h>
#define uchar unsigned char #define uint unsigned int
sbit Trig=P2^0; //超声波发射器 sbit Echo=P2^1; //超声波接收器
sbit IN1=P1^0; //小车驱动模块IN1接口 sbit IN2=P1^1; //小车驱动模块IN2接口 sbit IN3=P1^2; //小车驱动模块IN3接口 sbit IN4=P1^3; //小车驱动模块IN4接口
void delay(uint i) //延时函数 { while(i--); }
void Init() //初始化函数 { TMOD=0x01; //设定工作模式为定时器0模式1 TH0=0x00; //设定定时器初值 TL0=0x00; Trig=0; //初始化超声波发射器 Echo=0; //初始化超声波接收器 }
void Send() //发送超声波函数 { Trig=1; //触发超声波发射器 delay(10); //延时10us Trig=0; //停止触发 }
void main() { Init(); //初始化 while(1) { Send(); //发送超声波 while(!Echo); //等待超声波接收器的高电平 TL0=0; //清零定时器初值 TH0=0; TR0=1; //启动定时器 while(Echo); //等待超声波接收器的低电平 TR0=0; //停止定时器 if(TF0==1) //如果定时器溢出 { TF0=0; //清除溢出标志 continue; //重新发送超声波 } else //否则 { uint distance=(TH0<<8)+TL0; //计算距离 distance=distance/58; //距离除以58得到厘米数 if(distance<10) //如果距离小于10厘米 { IN1=0; //小车后退 IN2=1; IN3=0; IN4=1; delay(50000); //延时一段时间 IN1=0; //小车右转 IN2=1; IN3=1; IN4=0; delay(10000); //延时一段时间 } else //否则 { IN1=1; //小车前进 IN2=0; IN3=1; IN4=0; } } }
原文地址: https://www.cveoy.top/t/topic/c9a8 著作权归作者所有。请勿转载和采集!