用10元钱的单片机自制「蓝牙遥控小车」
本文会结合:电路学习、PCB 设计、焊接与单片机开发进行教学,并以视频和图文的形式 讲述如何制作出一辆帅气的智能小车 ,做到零基础也能学会!成本100多。
PS:视频在文末,STC32是一块制作成本只有10元的单片机:一不小心做出了产品级51单片机
一、功能介绍
逐梦壹号是这款智能小车的名字。它通过蓝牙连接手机APP遥控。拥有无人驾驶循迹功能。
它以 STC32 核心板为主控 ,两节 3.7V14500 锂电池供电,经过 7805稳压芯片输出 5V 电压给单片机与其它模块进行供电。
一辆优秀的四驱小车,它的功能必须是强大的,逐梦壹号具备以下八项核心功能 ,且每一项功能都对应了单片机知识点 :
车头放置两个 LED,模拟汽车灯光系统 ,如行驶过程中的单闪,双闪以及近光灯和远光灯的功能,学习单片机的输出功能;使用独立按键,模拟汽车一键启动功能 ,模式切换功能,学习单片机的输入检测;无源蜂鸣器用于产生音乐 及警报功能 ,学习定时器功能配置;路上没电怎么办,使用电池电压检测功能 ,ADC 电阻分压网络给单片机采集电池电压,电量过低时会警报,学习 ADC 电压采集功能;四路电机独立控制,实现小车行走,学习电机驱动“及” PWM 输出功能;前方有障碍物,超声波避障, 读取与前方障碍物的距离,避免撞车,让小车行驶更安全,学习传感器的使用;使用 393 比较器电路与红外光电传感器检测地面黑线,实现小车无人驾驶循迹功能 ,学习传感器的使用;使用蓝牙模块,通过手机 APP 控制 小车行驶,掌握串口协议与数据传输;逐梦壹号功能布局图如下所示:
图 2-1 逐梦壹号功能布局图
二、原理图设计
相信聪明的你已经对逐梦壹号的功能有了一个大致的了解,那么这些功能是如何实现的,它们的电路应该如何进行设计呢?
1.核心板电路
逐梦壹号上的主控是一块可拔插的 STC32 核心板,使用核心板的好处是可以自由设计更换主控,而且焊接起来更加方便。
在学习过程中完成逐梦壹号四驱车的设计后还可以用核心板去设计其它的扩展项目,另外核心板尺寸小巧可以直接插到面包板或者洞洞板 ,实现快递搭建电路模块进行验证。
图 3-1 STC32 核心板电路原理图
图 3-2 STC32 核心板功能布局图
核心板上板载 CH340N 串口芯片 ,配合程序下载按钮,可以直接进行程序烧录以及串口调试。24C02 Flash 存储芯片用于程序空间的扩展 ,适应更加复杂的项目开发使用 431 基准源给芯片提供稳定的基准电压 。作为最小系统必备的独立按键和 LED 灯也是必不可少的单独对核心板进行学习,也能够掌握 STC32 的基本开发能力,接下来要做的就是通过一些扩展项目加强个人能力和培养与项目开发的能力。
2.电源输入电路
在设计电源电路时需要重点考虑四驱小车整体的工作电压:
比如 STC32 核心板的工作电压是 5V,电机参考电压是 6V,那么电源输入电压就不能低于 6V 。常见的供电设备就是外接电池。
一般的干电池是 1.5V,那至少需要 4 节电池, 而干电池又不能循环充电,容易造成资源浪费。故而选择支持充电的锂电池。
锂电池的种类很多,在具体选型的时候主要根据体积以及容量来选型。综合考虑小车整体大小,最终选用了 14500 两节锂电池供电,工作电压为 3.7*2=7.4V。
设计电路如图 3-3 所示:
图 3-3 电源输入电路
图中P1 为双节 14500 的电池座,装上电池后,经过 D1 防反接的二极管,开关 SW1 打开,电源通过 7805 线性稳压器稳压到 5V 输出。
C1 和C2 为电源滤波电容 ;LED1 为电源指示灯 ;R5 为限流电阻 ,这里取 10K,让LED 发光不会太亮,同时也是为了减少项目中所用元件种类;U1 为 7805 稳压器的散热片 ,避免工作过久芯片发热严重,给它降降温。
3.LED 驱动电路
没有车灯的小车是没有灵魂的,那还必须选择高亮的 LED 用来模拟汽车的左右车灯。
LED 灯的阴极接电源地 GND ,这里限流电阻取值就稍微小一些,让LED 电流更大,灯更亮;LED 灯的程序控制也比较容易,R7 电阻左端连接一个LED-R 的网络标签与单片机引脚连接 ,当引脚输出高电平时,二极管导通,LED 点亮;利用定时器及延时以及 IO 口输出配置 ,就可以实现车灯闪烁以及高亮和弱亮的呈现效果了。
图 3-4 LED 灯驱动电路
4.按键输入电路
为了模拟一键启动以及模式切换功能,在智能小车上使用一个独立按键进行控制,可以实现长按以及短按的功能。
该按键引脚与单片机的中断引脚相连,也可以进行中断实验演示。
检测原理为:单片机的引脚与按键连接,当按键按下时, 按键导通接到 GND 电平 ,即单片机引脚检测到低电平后告诉单片机我已经检测到按键按下的信号了,你可以去执行 XXX 操作。这就是单片机外部信号检测的基本原理。
图 3-5 独立按键电路
5.蜂鸣器驱动电路
为了当智能小车能发出声音,你可能会想加上一个喇叭,但是同样还需要一个声音信号的产生,如此设计的话整体电路会变得比较复杂。
在众多电子元器件中,有那么一种神奇的元件,它可以发出各种音调的声音,它就是无源蜂鸣器。相对于无源蜂鸣器,它还有个亲兄弟叫有源蜂鸣器。
值得注意的是这里的“源”指的是振荡源而不是电源。
有源蜂鸣器只要通上电就可以发出响声 ,无需外围电路设计,缺点是只能固定发出某个频率的音调, 不能更改。
而无源蜂鸣器不能直接通电使用 ,还需要外部输入一个振荡信号 ,缺点是外围电路设计相对复杂些,但能够自由控制蜂鸣器输出的声音,我们就可以使用无源蜂鸣器这一特性生成一些美妙的音乐了。
图 3-6 无源蜂鸣器驱动电路
由于单片机的 IO 口驱动电流太小,不能直接驱动无源蜂鸣器,所以需要专门设计一个驱动电路,如图 3-6 所示。
S8050 三极管起开关作用,当输入信号为高电平时,三极管导通,蜂鸣器发声。 二极管 D2 为续流作用,保护蜂鸣器不会损坏。
6.ADC 检测电路
ADC,即模拟信号转数字信号的转换器。
电压信号是一个模拟值,一直不断的变化状态的,使用单片机的 ADC 功能,可以将变化的电压状态转换成我们所需要的电压参数。
我们所用的锂电池电压为 3.7V 不代表电池满电电压是 3.7V, 而是 4.2V,当电池电压为 3.7V 时电量仅剩 20%,此时应注意充电。
有了 ADC 电压检测功能就可以很方便的时刻监控电池的容量,再结合无源蜂鸣器做一个电量过低的警报,提醒我们该去充电了。
逐梦壹号使用两节锂电池供电,即 4.2*2=8.4V,这个电压是不能直接接到单片机的 IO 口的,容易损坏单片机。 通用的处理方式是使用电阻进行分压或者说使用运放电路将电压降低到单片机容忍的电压以内。
这里我们使用了三颗 10K 的电阻进行分压,取 1/3 电压点接到单片机的 ADC 引脚。
图 3-7 ADC 电阻分压电路
7.电机驱动电路
电机驱动是小车的基础所在。单片机直接输出的电流太小,不足以带动小车行走。
电机电路采用了 RZ7899 电机专用驱动芯片 ,该芯片外围电路简单,非常适合智能小车等小型电机驱动应用。它由逻辑输入端口 BI 和 FI 控制电机前进、后退以及制动,配合单片机 PWM 输出可以控制电机转速。
在焊接时注意在电机上并联一个 104 的瓷片电容起着防干扰的作用。 电机则使用的 N20 电机,小巧精致,电机焊接时使用排针直接与电机控制引脚连接,十分方便,小车的安装后续可观看组装视频。
图 3-8 电机驱动电路
8.超声波避障电路
为了避免逐梦壹号在行驶过程中出现撞车事故,使用了一个超声波模块放置在小车车头。
超声波模块的型号为 HC-SR04 ,使用四个引脚与单片机连接,分别是 GND、VCC、Trig 以及 Echo 引脚。
除去电源引脚,只需要两根信号线就可以检测超声波, 也能检测前方障碍物的距离,检测原理方法将在软件部分讲解。
图 3-9 HC-SR04 超声波模块
图 3-10 超声波模块接口电路
9.红外循迹电路
红外循迹电路是以 ITR9909 传感器为核心 ,使用 XD393 比较器进行检测输入状态 ,配合精度调整的电位器,测量距离在 1mm~15mm 范围 内可调节。
小车循迹一般是在白色地板上沿着一根黑线行走,利用红外光在不同颜色的反射情况进行识别:
红外光一直对外发射,车底如果是白色地板,光线会被折射回去,此时接收管接收到信号,经过比较器输出低电平,LED 指示灯亮,单片机检测到低电平;如果车行驶在黑线周边,红外光被黑色吸收,接收管接收不到发射的信号,此时比较器电路输出为高电平,LED 指示灯熄灭,单片机检测到高电平。循迹其实也就是一个寻找黑线以及沿着黑线行走的过程。
图 3-11 红外光电循迹电路(右侧两路)
10.蓝牙接口电路
既然是要做一辆智能小车,那么无线控制少不了。
常用的智能小车控制方案有:红外、蓝牙、WIFI、2/4G 等方案。逐梦壹号所选用的是蓝牙控制,这种方式电路简单,手机就是遥控器,另外还可以学习蓝牙 APP 的设计。
智能小车上使用 HC05 蓝牙主从模块,一共有 6 个引脚。
EN 引脚用于控制蓝牙模块进入 AT 指令 ,设置为高电平时,可以设置蓝牙模块的状态与数据传输;VCC 引脚和 GND 引脚为电源输入引脚 ,输入电压范围为 3.6-6V;TXD 和 RXD 是用于与单片机连接的串口引脚 ,其中 RXD 接单片机的 TXD,TXD 接单片机的 RXD 引脚,此处需留意不能接反;最后一个引脚为 STATE 引脚,功能是显示蓝牙配对的状态。 当蓝牙连接上手机时,该引脚输出高电平。图 3-12 HC-05 蓝牙主从模块
图 3-13 蓝牙模块接口电路
11.电路原理图及器件列表
将以上电路进行整合,我们就得到了下图的整体电路设计图。
图 3-14 逐梦壹号电路原理图
在嘉立创EDA 绘制逐梦壹号原理图时,可按照下表中的器件名称、封装及立创商城编号进行搜索设计,也可以自由选型,设计过程中如有疑惑可查看逐梦壹号原理图设计视频 ,视频就在文末 ,以下物料清单仅供设计参考:
三、PCB 设计
完成电路原理图的设计之后那么下一步就来到了 PCB 设计环节。
1.小车外形设计
一辆帅气的四驱小车,那么必须拥有一个精致的车型。
我们可以在网络上找到各式各样四驱车的车型参照设计,如果你恰好会 3D 建模,还可以打造属于自己独一无二的智能小车。
图 4-1 田宫双星四驱车T2 底盘
图 4-2《四驱兄弟》胜利冲锋四驱车
智能小车的外形可以在专业的CAD 软件里面设计后将DXF 软件导入到嘉立创EDA 专业版里面作为板框层—即 PCB 的外形,也可以直接在软件里面根据自己的想法进行设计创造。
逐梦壹号的车型设计时参照了技小新四驱智能小车 ,结合电路结构特性设计而成 ,完美地将所有元器件合理地摆放在车体上,即使不加外壳也显得十分好看。
具体设计方法请查看视频教程。
图 4-3 技小新四驱小车底盘图
图 4-4 逐梦壹号外形示意图
2.PCB 布局
在进行 PCB 设计一定需要注意的是布局的合理性 ,在有限的板子空间内放置电池、电机、核心板以及各种电路模块。
布局合理性指的是输入输出接口能操作方便 ,各电路模块摆放在同一区域且摆放整理。
在对智能小车进行布局时只需要根据小车的功能区域进行摆放:四个电机分布在两侧,超声波模块放前面,光电循迹传感器靠近车头,电池盒和核心板位置放中间位置,电源及开关放车尾便于操作。
这样一顿操作下来其实小车整体布局已经出来了,左右两翼可以根据电路情况摆放蓝牙模块以及蜂鸣器电路。
总结下来就是先放核心器件,再摆放其它次要器件 ,器件布局时按各个电路模块放置, 考虑电气特性,摆放整齐合理。 详细布局流程与方法请观看视频课程:
图 4-5 逐梦壹号布局参考图1
图 4-6 逐梦壹号布局参考图 2
3.PCB 走线
一个好的布局相当于完成了 PCB 设计的一大半工作。
在 PCB 走线时需将电源线适当加粗,网络线粗细程度为:GND 线>电源线>信号线 。
在逐梦壹号智能小车设计中,主电源输入线宽为 45mil,VCC 及+5V 网络线宽为 30mil,常规信号线为 15mil,电机驱动处使用 80mil 粗导线连接 ,提高导线过流与散热能力。
图 4-7 电源线与信号线线宽比较
图 4-8 电机驱动芯片连接图
走线避免走直角,使用 45°角折线或者圆弧走线,走线以横平竖直为主,需要拐弯时拐角要小,保持走线的美观性。
图 4-9 圆弧拐角走线(正确)
图 4-10 135°拐角走线(正确)
图 4-11 直角拐角走线(错误)
图 4-12 拐角折线过长(错误)
4.整理与优化
PCB 走线完成后接下来进行下一步,整理与优化。
这一个步骤需要像菜市场挑菜一样,细细检查,把一些可能存在的问题依次排除,最后在加上丝印标记以及 logo 就可以完成整个 PCB 的设计了,可根据以下步骤逐一优化 PCB:
第一步:检查 DRC,根据提示解决 DRC 错误
DRC(设计规则检查)的检查在 PCB 设计里面尤为重要,为了避免走线遗漏以及走线太近等问题的出现,在完成 PCB 设计后需进行 DRC 检查。
点击嘉立创 EDA 顶部工具栏的“设计”-“DRC 检查”,也可以使用快捷键“S”打开底部面板 ,选择 DRC,点击“检查 DRC”,检查出问题后点击问题的对象即可在PCB 中定位到错误的地方,根据报错解释进行修改即可。
图 4-13 的错误提醒就是忘记连接 GND 导线了,当然这个问题可以用敷铜功能快速解决。
图 4-13 DRC 检查窗口
第二步:放大 PCB,逐步检查走线连接情况
这一步其实就是用鼠标滚轮放大 PCB,从电源输入部分再到单片控制电路逐一排查,对整体走线进行优化。
需要检查的地方有: 导线超过焊盘冒尖、导线折角过长、差分等长走线未对齐、焊盘出线方向不对、导线太细、导线间距太窄、电源走线不合理等基础问题。
检查完毕后还需要对整体 PCB 进行添加泪滴操作 , 以加固焊盘与导线的连接,避免焊接过程中过热导致导线铜皮脱落。
第三步:添加丝印及 logo 标识
走线优化完成便我们的 PCB 设计已经接近尾声了,为了让这份辛苦有一个好的收尾,丝印标记以及 logo 添加也是必不可少的。
逐梦壹号智能小车上需要外接一个蓝牙模块以及超声波模块,设计时需要留意是否有明显标记引脚功能,防止模块插反报废。
接口位置标记后接下来需要对所有的元器件位号进行整理,位号摆放位置需一致 。空间允许的情况下还可以把元件的参数也显示出来,在焊接时就显得十分方便了。
最后再合适的位置加上自己喜欢的图案以及 logo,完成 PCB 的设计。
四、视频课程
智能小车视频课程<原理图绘制教学>如下:
视频加载中...
逐梦壹号的开源文章已经结束,但实践学习之路才刚刚开始 ,当你结合视频课程继续学习,你将收获:
学习单片机项目电路分析的方法,学会如何看懂原理图;学习单片机电路设计方法,初步掌握元器件选型与数据手册阅读;掌握嘉立创 EDA 设计原理图和 PCB 方法,设计属于自己的智能小车;掌握元器件焊接的基础方法与硬件调试技能,成为新一代“焊武帝”;学习 STC32 单片机的基础功能和外设使用,上手 STC32 项目开发;掌握嵌入式软件开发、代码的阅读与 BUG 调试的方法与技巧;希望大家可以通过小车的学习,顺利掌握单片机项目的开发能力!
如果您认为这篇文章不错,欢迎点赞、关注、转发!
我会持续更新优质开源项目!
51单片机自动壁障小车设计,附原理图程序全套制作资料
大家好,欢迎关注电气技术微课堂!
在科学探索及紧急抢险中经常要对一些危险或人类不能直接到达的地域进行探测,这就需要用机器人来完成。而机器人在复杂地形行进时自动避障是一项必不可少也是最基本的功能。避障功能在日常生活中也是比较常见的,像是风靡一时的自动清扫机器人,只需放在地上一会就可以将你的屋子打扫干净,这里面的最基本功能也是避障,当它检测到前方有障碍就会绕开。这样就可以躲避家具将你的地板清理干净了。因此,自动避障系统的研发就应运而生。
MCS-51《单片机原理及接口技术》是中职院校电气自动化专业开设的 一门必修课程,该课程主要是通过对单片机的内部结构、相关外围电路及编程语言的学习,使学生掌握用单片机进行开发设计一些实用电子电路的能力,自动避障小车就是基于这一系统开发而成的。自动避障小车可以作为地域探索机器人和紧急抢险机器人的运动系统,让机器人在行进中自动避过障碍物。
一、本设计任务和主要内容
本设计是对以单片机STC89C52RC为核心的系统根据感测模块传输的前方路面信息,控制小车行驶走向的软、硬件设计开发。系统要能够做到准确及时监测前方路面信息并传输给主控模块,做到根据前方路面信息及时调整小车的走向,做到显示小车的走向和小车已经行驶过的路程。
壁障小车的主要功能是:
① 感测模块实时监测路面情况并及时将障碍物的位置传输给单片机;
② 单片机核心模块根据感测模块给予的信息控制小车两电机转动;
③ 电机驱动模块驱动两电机转动,实现转向与行走。
二、系统主要硬件电路设计
根据设计要求,我们的自动避障小车主要由五个模块构成:车体框架、电源及稳压模块、主控模块、探测模块、电机驱动模块组成。 各模块分述如下:
图1 系统模块组成框图
2.1 小车避障原理分析
小车车头处装有三个红外探头,中间一个光电开关对向正前方,两侧的红外探头向两边各分开30度,(如图2所示)。小车在行进过程中由红外探头向前方发射出红外线,当红外线遇到障碍物时发生漫反射,反射光被光电开关接收。小车根据三个探头接受信号的情况来判断前方障碍物的分布并做出相应的动作。
图2 自动避障小车车体及避障原理图
红外探头选用的是E12-D15NK型红外避障传感器,这是一种集发射与接收于一体的光电传感器,发射光经过调制后发出,接收头对反射光进行解调输出。有效的避免了可见光的干扰。分别探测正前方,前右侧,前左侧障碍物信息,在特殊地形(如障碍物密集地形)可将正前方的光电开关移置后方进行探测。E12-D15NK光电开关平均有效探测距离0~30cm可调,且抗外界背景光干扰能力强,可在日光下正常工作(理论上应避免日光和强光源的直接照射)。我们小车换档调速后的最大制动距离不超过30cm,一般在10~20cm左右,因而探测距离满足我们的小车需求示意图如下:
图4 红外避障传感器原理图
电气特性:
红色:VCC;黑色:GND;黄色:信号输出;白色:和红线一起外接电位器。
工作电压:5VDC
工作电流:10-15mA
驱动电流:100mA
感应距离:1-15CM
机械特性:
颜色:橙黄色
直径:12MM
长度:35MM
引线长度:25CM(不含接头)
2.2电源模块
方案一: 采用交流电经直流稳压处理后供电 采用交流电提供直流稳压电源,电流驱动能力及电压稳定性最好,且负载对电源影响也最小。但由于需要电线对小车供电,极大影响了壁障小车行动的灵活性及地形的适应能力。而且壁障小车极易把拖在地上的电线识别为障碍物,人为增加了不必要的障碍。故我放弃了这一方案。
方案二: 采用蓄电池供电 蓄电池具有较强的电流驱动能力和较好的电压稳定性能,且成本低廉。可采用蓄电池经7812芯片稳压后给电机供电,再经过降压接7805芯片给单片机及其他逻辑单元供电。但蓄电池体积相对庞大,且重量过大,造成电机负载过大,不适合我们采用的小车车架(玩具电动车车架)。故我放弃了这一方案。
方案三: 采用干电池组进行供电 采用四节干电池降压至5V后给单片机及其他逻辑单元供电,另取六节干电池为电机及光电开关供电。这样电机启动及制动时的短暂电压干扰不会影响到逻辑单元和单片机的工作。干电池用电池盒封装,体积和重量较小,同时玩具车底座可以安装四节干电池,正好可为单片机及其他逻辑单元供电。在稳压方面,起始时考虑使用7805芯片对6V的电池电压进行降压稳压。但考虑到这样使得7805芯片消耗大量能量,降低电池寿命;同时,由于STC89C51、光电开关、小车电机对于供电电压要求并不苛刻,故我们将6V电池电压接一个二极管降压后直接给单片机及其他逻辑单元供电。而电机和光电开关的电源不做稳压处理。这样只需在小车主板上加两个调速按钮,根据电池电量选择合适功率即可,甚至于可直接在软件里设置自动换挡。 综合考虑,我采用方案三。
2.3主控模块 3.1、STC89C52RC单片机最小系统
我采用的是STC公司的51内核单片机STC89C52RC,单片机最小系统及概述如下:STC89C52RC单片机介绍
STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。
主要特性如下:
1. 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.
2. 工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)
3. 工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
4. 用户应用程序空间为8K字节
5. 片上集成512字节RAM
6. 通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片
8. 具有EEPROM功能
9. 具有看门狗功能
10. 共3个16位定时器/计数器。即定时器T0、T1、T2
11. 外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒
12. 通用异步串行口(UART),还可用定时器软件实现多个UART
13. 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)
14. PDIP封装
在探测模块和单片机中断接口之间、独立按键与单片机中断接口之间,需要经过电平的逻辑处理进行连接。主要涉及到一个三输入或非门和一个二输入与门。这两个逻辑关系我们直接选用74HC系列的集成芯片实现。 由于三输入或非门在市场上很难购买到,我们采用了两个二输入或非门和一个二输入与门完成了三输入或非门。由于我们采用的74HC08(四二输入与门)、74HC02(四二输入或非门)均为四二输入的,各提供四个二输入与门和四个二输入或非门,我们用各用一片芯片即可实现所需逻辑功能。
2.4电机驱动模块
本系统采用了L298N芯片来驱动电机 ,L298N是一个具有高电压大电流的全桥驱动芯片,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号,而且带有使能端,方便PWM调速,电路简单,性能稳定,使用比较方便。L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,正好符合我们小车两个二相电机的驱动要求。 综合考虑,我采用L298N芯片驱动小车电机。
最终方案如下: 使用干电池组对系统供电,改造玩具电动车作为小车底座,采用STC89C52RC作为主控芯片,采用E12-D15NK光电开关进行障碍物探测,使用L298N驱动直流电机。逻辑关系处理使用74HC系列芯片完成。
2.5 总电路图
图5 总电路图设计
三、系统软件设计
3.1程序流程图
本系统设计流程图如下
图6 系统软件主流程图
3.2系统程序清单
#include <reg51.h>
#define uchar unsigned char
#define uintunsigned int
/********************
端口定义
*********************/
sbit IN1=P1^0; //P10与电机驱动IN1相连
sbit IN2=P1^1 //P11与电机驱动IN2相连
sbit IN3=P1^2; //P12与电机驱动IN3相连
sbit IN4=P1^3; //P13与电机驱动IN4相连
uchar INS=P2; //P2端口的^0、P2^1、P2^2分别与左、中、右红外模块输出信号线线相连
uint D=200;//定义延迟函数的参数
/************************
各个子函数定义
***********************/
void Go(void)
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
}
void Back(void)
{
IN1=0;
IN2=0;
IN3=0;
IN4=1;
}
void Go_left(void)
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void Go_right(void)
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
void Stop(void)
{
IN1=IN2=IN3=IN4=0;
}
/***
void Back_left(void)
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
void Back_right(void)
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
}
***/
void Delay(uint n)
{
uint i,j;
i=j=n;
for(;i>0;i--)
for(;j>0;j--);
}
void Be_move(void)
{
uchar temp;
temp=INS&0x07;
switch(temp)
{
case 0x01:Go_right();Go();Delay(D);break;
case 0x02:
case 0x03:
case 0x07:Back();Delay(D);Go_right();Go();Delay(D);break;
case 0x06:Back();Delay(D);Go_left();Go();Delay(D);break;
case 0x04:Go_left();Go();Delay();break;
case 0x05:Go();Delay();break;
default:Stop();Delay();break;
}
}
void main()
{
uchar temp;
while(1)
{
temp=INS&0x07;
if(temp==0x00) Go();
else Be_move();
}
}
相关问答
自动寻迹 智能小车 怎么做啊具体要求如下 51单片机 ?接循迹用的光电传感器,用单片机判断,驱动电机执行。传感器越多越好。以比较奇葩的单路传感器为例,0驱动左轮,1驱动右轮,就可以沿黑线一侧摇摆前进。这么简单...
c 51单片机智能小车 所需软件?单片机核心板。电机驱动板。动力锂电池。小车。避障用超声波,寻线用红外对管单片机核心板。电机驱动板。动力锂电池。小车。避障用超声波,寻线用红外对管
用 单片机 制作一辆遥控 小车的 成本要多少?我做的qibot小车,可以追光、超声波避障、巡线、遥控,成本200多点吧,主要是用的铝合金车身,控制系统用的pic18单片机。如果想入门的话,可以考虑使用51、AVR、...
51单片机 编程有什么用?51单片机作为学习单片机的过程中必须要经过的一个过程来讲是非常重要的,原因在于51单片机从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象...
51单片机 能DIY哪些小东西?51单片机能DIY:多功能时钟,秒表,报警器,计数器,红外门禁检测,密码门;计算器,能想到的东西都可以啊,还有温湿度等付感器相关的;或者电压表,电流表,...51单...
51单片机 入门应该知道哪些知识?1.硬件2.软件一、硬件1.熟悉常用的元器件,如果你不知道哪些,找一个51开发板,把原理图上的元器件全部熟悉一遍,知道他们的工作原理和使用场景。2.熟悉欧姆...
51单片机 用的是哪个软件?51单片机的编译软件现在最流行的是keilc51,你可以用这个软件进行编程和编译。单片机自身完成不了什么任务需要有外电路的配合,所以你需要购买一块51单片机开...
51 系列 单片机 包括哪些种类?51单片机的种类的种类非常多,主要有:1,Intel(英特尔)的:80C31、80C51、87C51,80C32、80C52、87C52等;2,ATMEL(艾德梅尔)的:89C51、89C52、8...
基于51单片机 中等难度的毕业设计题目?TOP1.基于51单片机人脸简易识别系统TOP2.基于51单片机智能非特定人声语音识别系统TOP3.基于51单片机指纹考勤系统TOP4.基于51单片机智能小型穿戴手表TOP5...
51单片机的 独特地位是如何形成的?51单片机的独特地位是通过英特尔公司对该架构的持续投资、广泛的第三方支持以及广泛的应用而形成的。英特尔公司为51单片机提供了大量的开发工具、技术支持和...