51循迹避障小车代码
时间: 2024-06-11 10:02:37 浏览: 14
51循迹避障小车代码一般是基于51单片机实现的,主要功能是通过循迹模块检测黑线,控制小车的行驶方向,同时通过超声波模块检测障碍物,实现避障功能。下面是一个简单的51循迹避障小车代码示例:
```
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit IN1 = P1^0;
sbit IN2 = P1^1;
sbit IN3 = P1^2;
sbit IN4 = P1^3;
sbit ECHO = P3^2;
sbit TRIG = P3^3;
uchar speed = 100; //小车的速度
uint distance; //超声波模块检测到的距离
void delay(uint t) //延时函数
{
uint i, j;
for (i = t; i > 0; i--)
{
for (j = 110; j > 0; j--)
{
_nop_();
}
}
}
void ultrasonic() //超声波模块测距
{
TRIG = 0;
delay(2);
TRIG = 1;
delay(10);
TRIG = 0;
while (!ECHO);
TR0 = 1;
while (ECHO);
TR0 = 0;
distance = TL0 | (TH0 << 8);
distance = distance / 58;
}
void forward() //小车前进
{
IN1 = 1;
IN2 = 0;
IN3 = 1;
IN4 = 0;
}
void back() //小车后退
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
}
void left() //小车左转
{
IN1 = 0;
IN2 = 1;
IN3 = 1;
IN4 = 0;
}
void right() //小车右转
{
IN1 = 1;
IN2 = 0;
IN3 = 0;
IN4 = 1;
}
void stop() //小车停止
{
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 0;
}
void main()
{
TMOD &= 0xF0; //定时器T0工作在模式1
TR0 = 0; //定时器T0关闭
TH0 = 0; //清零计数值
TL0 = 0; //清零计数值
ET0 = 1; //使能定时器T0中断
EA = 1; //开启总中断
while (1)
{
ultrasonic();
if (distance < 20) //如果距离小于20cm,后退并右转
{
back();
delay(500);
right();
delay(500);
}
else //如果距离大于20cm,根据循迹模块检测结果前进或者左转或者右转或者停止
{
if (P2 == 0x03) //前进
{
forward();
}
else if (P2 == 0x01) //右转
{
right();
}
else if (P2 == 0x02) //左转
{
left();
}
else //停止
{
stop();
}
}
}
}
void timer0() interrupt 1 //定时器T0中断函数
{
TH0 = (65536 - speed) / 256; //重新赋值计数值,控制小车速度
TL0 = (65536 - speed) % 256; //重新赋值计数值,控制小车速度
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)