基于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单片机制作超声波避障小车+舵机控制相关推荐

  1. 基于51单片机的超声波避障小车设计(含Proteus仿真)

    超声波避障程序随处可见,基于51单片机的超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料. 这次主要给大家分享其Proteus仿真部分. 涉及到的模块有:超声波模块(hc-sr ...

  2. 基于51单片机的超声波避障小车(HC-SR04,SG90舵机)

    + 一.HC-SR04超声波模块 二.SG90舵机 三.总程序编写 一.HC-SR04超声波模块 HC-SR04时序图 触发信号输入端(Trig)输入一个10微秒以上的高电平信号,超声发送口收到信号自 ...

  3. 基于51单片机将红外避障模块(E18-D80NK)与led联动

    最近我在用51板子将E18-D80NK和LED一起联动.想跟大家做一个经验分享. E18-D80NK介绍: 红外避障传感器是一种集发射与接收于一体的光电传感器.检测 距离可以根据要求进行调节.该传感器 ...

  4. 利用52单片机制作的超声波避障小车(包含所有源码)

    做这个超声波避障小车的原因是因为单片机课程设计 一.硬件部分 1.电机驱动 电机驱动四个输入端IN1.IN2.IN3和IN4,四个输出端OUT1.OUT2.OUT3和OUT4,一个接地端GND,单片机 ...

  5. stm32捕获占空比_基于STM32超声波避障小车

    不管是对于初学者还是对于一个玩过单片机的电子爱好者来说,或多或少都接触到过小车项目,今天给大家介绍的的一个项目基于STM32超声波避障小车.这也是我曾经的一个课设,在此开源分享给大家,全文5000多字 ...

  6. 基于STM32F103C8T6的循迹避障小车完整制作过程(详细)----上篇(第123点)

    基于STM32F103C8T6的循迹避障小车完整制作过程 本文适合小白观看 由于本人的一个小项目,要做一个基于STM32的循迹避障小车,前后花了约1周的时间,这个过程中也参考了很多大神分享的资料,学到 ...

  7. 基于51单片机制作的蓝牙小车

    基于51单片机制作的蓝牙小车 这是本人(小菜鸡一枚)于大一寒假所做的小玩意,以展现我这几月所学,这也是我发的第一篇博客,准确来说这可能是我搞51单片机的巅峰所做了,因为部长说以后要学stm32开发板了 ...

  8. 【031】基于51单片机的超声波倒车雷达系统(带温度显示补偿)Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计一份: (2).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计 ...

  9. 基于51单片机HC-SR04超声波测距带温度补偿

    基于51单片机HC-SR04超声波测距带温度补偿 1 开发环境 2 功能说明介绍 3 程序 3.1 工程文件 3.2 代码 4 原理图 5 元器件清单 6 PCB 7全部资料 1 开发环境 仿真图:p ...

  10. 【030】基于51单片机的超声波液位测距报警系统(带温度显示)Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的超声波液位测距报警(带温度显示)系统proteus仿真设计一份: (2).基于51单片机的超声波液位测距报警(带温度显示)系统proteus仿真设计keli ...

最新文章

  1. 怎么提高面试成功率?
  2. 在Eclipse中进行HotSpot的源码调试--转
  3. 监听应用是否切到后台
  4. NUC970开发资源
  5. Filestream 使用简单步骤
  6. iirf有时有效,有时返回404错误的解决方法
  7. python写文件flush_python读写文件write和flush
  8. 互联网+医疗考验无线部署 飞塔SAA同频部署模式巧妙化解
  9. java模拟洗衣机程序,JAVA洗衣机仿真程序实验报告及代码
  10. IDEA插件修改class文件
  11. ASM-第二章寄存器
  12. mac安装应用提示已损坏的解决方法
  13. android 版本权限差别,安卓手机root前后有什么区别 root后哪些高权限操作
  14. 贵阳市交通大数据中心
  15. SumatraPDF添加保存标注到TXT文本的功能
  16. gabor filters matlab,gabor filter matlab
  17. 智能客服机器人的场景应用及功能有哪些
  18. CSS深入理解z-index(z-index相关知识总结)
  19. AutoML功能解析
  20. 【算法学习】欧几里得算法详解(包括扩展、同余方程)

热门文章

  1. 内存取证之Volatility ——合天网安实验室学习笔记
  2. 数字签名/数字证书/对称/非对称加密/CA 等概念明晰
  3. PHP生成DataMatrix二维条码
  4. 从图灵奖小插曲看50年来什么样的人工智能最受追捧
  5. Linux regulator框架理解及使用
  6. html按钮 字 颜色代码,html中按钮的字体颜色怎么设置?
  7. 缓解精神内耗的“马原疗法”
  8. 机器阅读理解 | (1) 智能问答概述
  9. ORACLE DG断档处理
  10. iOS上线 ERROR ITMS-4238