基于51单片机制作超声波避障小车+舵机控制
基于51单片机制作超声波避障小车+舵机`
补充一下,主控芯片用的stc89c52,避障小车没有使用PWM波驱动电机,直接将电源降压给电机供电。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define left_qian IN3=0,IN4=1 //左前进
#define right_qian IN1=0,IN2=1 //右前进
#define left_hou IN3=1,IN4=0// 左后退
#define right_hou IN1=1,IN2=0 //右后退
#define enable {ENA=1,ENB=1;} //电机使能
#define disable {ENA=0,ENB=0;}
uint s=40,pwm_zkb=0,time;
uchar num=3;
uchar i=1,t=0;
uchar distance[4]={0,0,0,0}; //distance[1] 右距离distance[2]正前距离 distance[3] 左距离
sbit trig=P0^0;
sbit echo=P0^1;
sbit IN1=P1^1;
sbit ENA=P1^0;
sbit IN2=P1^2;
sbit ENB=P1^3;
sbit IN3=P1^4;
sbit IN4=P1^5;
sbit PWM=P0^3;/********************************************函数声明**********************/int juli(); //测距函数void delay(uint z); //延迟函数void init(); //初始化void delayms(unsigned int ms);void delay1(void) //延迟20us
{unsigned char a,b;for(b=3;b>0;b--)for(a=1;a>0;a--);
}
void culibijiso()
{ if(distance[1]<=5 &&distance[2]<=5 && distance[3]<=5 ){enable; //先后退后右转left_hou;right_hou;delay(1000);enable;left_qian;right_hou;delay(200); }else{if(distance[1]<=15 || distance[2]<=15 || distance[3]<=15){if(distance[1]>=distance[2]){if(distance[2]>=distance[3]) //左有障碍物 右转{enable;left_qian;right_hou;delay(800);}else {if(distance[2]<=5) //先后退后左转{ enable;left_hou;right_hou;delay(800);left_hou;right_qian;delay(200);}else //右转{enable;left_qian;right_hou;delay(800);}}}else{if(distance[1]>=distance[3]) //左有障碍物 右转{enable;left_qian;right_hou;delay(800); }else //左转{enable;left_hou;right_qian;delay(800);}}}else //直行
{enable;left_qian;right_qian;
}
}}void main(){ init();disable;while(1) { if(t==150) //70ms为一个周期检测一次{t=0;s=juli();if(s>20){enable;left_qian;right_qian; }else{disable;for(num=2;num<5;num++){ pwm_zkb=0;delay(1000);distance[i]=juli(); i++;pwm_zkb=0;} num=3;delay(300);i=1;culibijiso();disable; t=0; }}}
}void init(){ TMOD=0X11; //选择定时器1和定时器0TH0=0; TL0=0;TH1=(65536-461)/256; //t1赋初值TL1=(65536-461)%256; EA=1; //开总中断ET1=1; //开定时器1中断TR1=1; //打开定时器1}
void time1() interrupt 3{TH1=(65536-461)/256;TL1=(65536-461)%256;t++;if(pwm_zkb<num){PWM=1;}else{PWM=0;}pwm_zkb++;if(pwm_zkb==40){pwm_zkb=0;}}
int juli(){int ss;trig=1;delay1(); //延时20ustrig=0;while(echo==0); //等待回音TR0=1; // 开定时器0while(echo==1); //当为高电平时等待TR0=0; //关闭定时器0time=TH0*256+TL0; //读取脉冲长度ss=(time*1.72)/100; //计算距离 单位为cmTH0=0; //重新赋初值TL0=0;return ss; }void delay(uint z){uint i,k;for(i=z;i>0;i--){for(k=100;k>0;k--);}
}
基于51单片机制作超声波避障小车+舵机控制相关推荐
- 基于51单片机的超声波避障小车设计(含Proteus仿真)
超声波避障程序随处可见,基于51单片机的超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料. 这次主要给大家分享其Proteus仿真部分. 涉及到的模块有:超声波模块(hc-sr ...
- 基于51单片机的超声波避障小车(HC-SR04,SG90舵机)
+ 一.HC-SR04超声波模块 二.SG90舵机 三.总程序编写 一.HC-SR04超声波模块 HC-SR04时序图 触发信号输入端(Trig)输入一个10微秒以上的高电平信号,超声发送口收到信号自 ...
- 基于51单片机将红外避障模块(E18-D80NK)与led联动
最近我在用51板子将E18-D80NK和LED一起联动.想跟大家做一个经验分享. E18-D80NK介绍: 红外避障传感器是一种集发射与接收于一体的光电传感器.检测 距离可以根据要求进行调节.该传感器 ...
- 利用52单片机制作的超声波避障小车(包含所有源码)
做这个超声波避障小车的原因是因为单片机课程设计 一.硬件部分 1.电机驱动 电机驱动四个输入端IN1.IN2.IN3和IN4,四个输出端OUT1.OUT2.OUT3和OUT4,一个接地端GND,单片机 ...
- stm32捕获占空比_基于STM32超声波避障小车
不管是对于初学者还是对于一个玩过单片机的电子爱好者来说,或多或少都接触到过小车项目,今天给大家介绍的的一个项目基于STM32超声波避障小车.这也是我曾经的一个课设,在此开源分享给大家,全文5000多字 ...
- 基于STM32F103C8T6的循迹避障小车完整制作过程(详细)----上篇(第123点)
基于STM32F103C8T6的循迹避障小车完整制作过程 本文适合小白观看 由于本人的一个小项目,要做一个基于STM32的循迹避障小车,前后花了约1周的时间,这个过程中也参考了很多大神分享的资料,学到 ...
- 基于51单片机制作的蓝牙小车
基于51单片机制作的蓝牙小车 这是本人(小菜鸡一枚)于大一寒假所做的小玩意,以展现我这几月所学,这也是我发的第一篇博客,准确来说这可能是我搞51单片机的巅峰所做了,因为部长说以后要学stm32开发板了 ...
- 【031】基于51单片机的超声波倒车雷达系统(带温度显示补偿)Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计一份: (2).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计 ...
- 基于51单片机HC-SR04超声波测距带温度补偿
基于51单片机HC-SR04超声波测距带温度补偿 1 开发环境 2 功能说明介绍 3 程序 3.1 工程文件 3.2 代码 4 原理图 5 元器件清单 6 PCB 7全部资料 1 开发环境 仿真图:p ...
- 【030】基于51单片机的超声波液位测距报警系统(带温度显示)Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的超声波液位测距报警(带温度显示)系统proteus仿真设计一份: (2).基于51单片机的超声波液位测距报警(带温度显示)系统proteus仿真设计keli ...
最新文章
- 怎么提高面试成功率?
- 在Eclipse中进行HotSpot的源码调试--转
- 监听应用是否切到后台
- NUC970开发资源
- Filestream 使用简单步骤
- iirf有时有效,有时返回404错误的解决方法
- python写文件flush_python读写文件write和flush
- 互联网+医疗考验无线部署 飞塔SAA同频部署模式巧妙化解
- java模拟洗衣机程序,JAVA洗衣机仿真程序实验报告及代码
- IDEA插件修改class文件
- ASM-第二章寄存器
- mac安装应用提示已损坏的解决方法
- android 版本权限差别,安卓手机root前后有什么区别 root后哪些高权限操作
- 贵阳市交通大数据中心
- SumatraPDF添加保存标注到TXT文本的功能
- gabor filters matlab,gabor filter matlab
- 智能客服机器人的场景应用及功能有哪些
- CSS深入理解z-index(z-index相关知识总结)
- AutoML功能解析
- 【算法学习】欧几里得算法详解(包括扩展、同余方程)