![245d22e15741b0ae44cde3ff93058a62.png](https://img-blog.csdnimg.cn/img_convert/245d22e15741b0ae44cde3ff93058a62.png)
上篇推文介绍了基于51单片机的智能GSM垃圾桶,本篇推文将以电光学院“星火杯”中的优秀作品——循迹避阻电动小车为例,介绍以51单片机为控制核心来实现对传感器的控制。
![756e6e0eae24d92b0115a30bfd634873.png](https://img-blog.csdnimg.cn/img_convert/756e6e0eae24d92b0115a30bfd634873.png)
循迹避阻电动小车设计原理
本设计是一种基于单片机控制的简易自动寻迹避阻小车系统,包括小车系统构成软硬件设计方法。小车以51单片机为控制核心,用单片机产生PWM波,控制小车速度。利用红外光电传感器对路面黑色轨迹进行检测,将路面检测信号反馈给单片机。其技术关键是单片机对传感器的控制及对其反馈信息处理后对电机的精确控制。我们在车身上安装了红外传感器,动作指示灯,以及反应小车运行时间的计时显示模块。
小车的每一个动作都会有相应的指示灯。小车能够灵敏检测路面情况并作出准确的判断。小车采用前轮驱动,前轮左右两边各有一个电机驱动,通过调整前面两个轮子的转速启停而达到控制转向的目的,后轮是万向轮起支撑的作用,将循迹传感器装在车体的中间和左右轮前,当车身左边的传感器检测到黑线时,主控芯片控制左轮减速,车身向左修正。当车身右边的传感器检测到黑线时,主控芯片控制右轮减速,车身向右修正。从而实现循迹功能。 对的各个不同的运动速度和方向,小车都有相应的指示灯显示。 核心控制部分采用可在线编程的51单片机,可以在不增加系统硬件的情况下方便地对系统进行二次开发。
![d5569f9e44409d80652102ea9d57f9ea.png](https://img-blog.csdnimg.cn/img_convert/d5569f9e44409d80652102ea9d57f9ea.png)
控制传感器模块程序示例
#include //包含51单片机相关的头文件
#include
sbit LeftLed=P2^0; //定义前方左侧指示灯端口
sbit RightLed=P0^7; //定义前方右侧指示灯端口
sbit FontLled=P1^7;
sbit LeftIR=P3^5; //定义前方左侧红外探头端口
sbit RightIR=P3^6; //定义前方右侧红外探头端口
sbit FontIR=P3^7; //定义前方正前方红外探头端口
sbit M1A=P0^0; //定义左侧电机驱动A端
sbit M1B=P0^1; //定义左侧电机驱动B端
sbit M2A=P0^2; //定义右侧电机驱动A端
sbit M2B=P0^3; //定义右侧电机驱动B端
sbit B1=P0^4; //定义语音识别传感器端口
sbit SB1=P0^6; //定义蜂鸣器端口
sbit IRIN=P3^3; //定义红外接收端口
unsigned char code LedShowData[]={0x03,0x9F,0x25,0x0D,0x99, //定义数码管显示数据
0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9
unsigned char code