毕业设计 基于51单片机智能循迹小车的设计

序🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于51单片机智能循迹小车的设计

第一章 硬件系统设计

STC89C52开发板包含8位的CMOS结构,携带的RAM和可移除的EEROM都可以为其多样化编程提供便利。其功能在传统的51基础上进行拓展,添加了新的引脚功能。但是可以做到向下兼容STC89C52实物图如图3.1所示。

1.1 单片机控制模块

1.1.1 STC89C52简介

STC89C52开发板包含8位的CMOS结构,携带的RAM和可移除的EEROM都可以为其多样化编程提供便利。其功能在传统的51基础上进行拓展,添加了新的引脚功能。但是可以做到向下兼容STC89C52实物图如图1.1所示。

图1.1 单片机实物图

STC89C52具体介绍如下:

图1.2中,可以看到该开发板有40个引脚和借考进行插排设计,能支持可接线的外围电路拓展。按照其引脚功能来分,可以分为四组。下面分别说明这些引脚的名称和功能。

图1.2 STC89C52引脚图

1.电源与地引脚

Vcc:电源需要接+5V高电平,也可以通过上拉电阻与电源相连

Vss:地接口公共端

2.时钟电路引脚

X1和X2分别连接外部石英片以及补偿电容的一侧,若时钟的提供者非8051,而是外部的钟,则X1需要接低电平(地),X2接时钟的输入一侧

3.I/O端口引脚

本文使用的51开发板有4个总端口,分别其不同的功能。这些端口分别命名为PO以及P1P2P3,各自又有8个引脚,实现不同的作用,实际上,每个引脚按照硬件接线位置的不同,可以选择编码执行不同的复用功能(或分时复用)

第一、P0口:普通的用法就是公共的I/O接口,可以接上拉电阻或者驱动其他的负载元件。另外,其也可以作为总线使用,具体的来说,就是在开发板需要外接缓存时,需要一个总控线,那么这时的P0就得按时段跳转,执行不同的任务,做数据传输用或者地址总线(低8位)

第二、P1口:普通的用法是做通用的接口,收集或者发出电平信息而更多的功能体现体现与P0口一致,只是作为总线的高8位地址。

第三、P3口:除了做普通的I/O端口功能之外,该端口最特别的就是几乎每个引脚都有不同的用法规定,如表 1.1所说明。

表1.1 P3口的特殊功能规定

P3口引脚

P3口引脚特殊功能说明

P3.0

RXD(串行口输入)

P3.1

TXD(串行口输出)

P3.2

INT0(外部中断О输入)

P3.3

INT1(外部中断1输入)

P3.4

T0(定时器0的外部输入)

P3.5

T1(定时器1的外部输入)

P3.6

WR(片外数据存储器写选通控制输出)

P3.7

RD(片外数据存储器读选通控制输出)

4.控制信号引脚

PSEN:这里使用的用途是作为储存用。若CPU需要外部的Cache和Flash,则一定是需要该芯片进行脉冲的输入和处理的,接下来就是进行存储元件的选择。当负载过大而超过该引脚驱动能力时,可以在引脚后面先加上驱动芯片,经驱动芯片再对负载实现驱动。

ALE/PROG:该引脚有两个功能,其一是地址锁存允许的接口。如果ALE进行的而外部地址的的存取或者程序的读取,那么低地址需要存放到P0,而高位则需要放到P1端口。使用时具体的方式是分时复用。

EA/Vpp: EA决定的是可以对外部的存储器是否可以访问,若其接高电平,且存储器的地址是低于OFFFFH的,那么中央处理器就需要给出取值的命令。若同时满足EA为高电平,而地址高于OFFFFH单片机就可以开始执行程序。此外,该引脚同时也有Vpp的功能,指的是,在编程时,需要给该引脚通高电平的电源,才可以保证其编码可以保存与实现。电源的电压水平一般要求12.5V

RST/VPD:前者的RST引脚需要接入的复位信息,且能控制其执行功能的电压需要是高电压。且当输入的时间在2个时钟周期的时候,才可以完成复位的命令。第二个功能VPD是说,若Vcc的引脚不能用了,那么需要把电源给到Vpp上面作为应急备用,RAM需要记录数据。保护现场。

而起到控制作用的接线还包括P3.6P3.7的复用作用,来与外部的存储结构执行读或写的操作。

1.1.2单片机最小系统设计

AT89C51内部装有可编程的EEPROM以及RAM和ROM等寄存器,可以实现多空间的数据以及程序存取。而单片机的最小系统指的是,可以实现特定功能所需要的最少不见组成。一般有以下的特点:I/0接口线多,存储空间比较小,应用的领域有专门性的趋势。

1.时钟电路

AT89C51在自己的内部有时钟电路,但是在特殊的场合应用下,还需要外部的源帮助强制执行以及其他多功能的校准。

本设计使用的是单片机内部的时钟源,因为比较经济,设计也相应地更加简单。上面说过X1、X2引脚可以用做定时与计数的实现。如今需要用到这两个口进行振荡频率的产生。而且形成的电路还包括电容以便形成谐振。时钟频率需要设计为1.2MHZ直至12MHZ电容的值可以按照给定值进行,这里不用过多关注,一般都是20~100pF总体看来,使用的11.059MHZ的频率和30pF的电容器。整个时钟的搭建如图1.3

在设计PCB的时候,需要考虑石英晶体与电容之间的距离,为了节约时间减少寄生电容的影响,增强电路的精度,这里使用的是NPO电容。

图1.3 时钟模块电路图

2)复位电路

复位保证的是发生特殊情况是,电路能通过重启和复盘来避免损失。这里AT89C51的复位是外置的电路。其引名称是RST在各个时钟周期都需要采集信息,得到内部的信息解码以及指令执行原则。一般来说,有上电时的自动复位以及按钮复位两种模式。复位模块电路图如图1.4所示。

图1.4 复位模块电路图

3)程序存储器

MCS-51具有64kB的可用容量,对于ROM而言,可以分为片外的内部的两种。可以存放数据信息,而且这里的数据可以是关于图像的,因为根据汇编的原理,图像可以转为点阵和数组的形式进行储存,因而可以实现储存的功能。不过,一般来说,51单片机的容量不足以存放大量的图片。另外,MCS-51系列中,其容量一般为4K字节,可用于信息储存的是ROM以及EEPROM,而80C52的空间可以扩容到8k字节,相当于2个51开发板的存储器,更别提还有更多功能的拓展[5]

1.1.3核心控制模块设计

这里需要注意,设计使用的中心在于单片机的各个组块说明:

第一、供电部分这里需要获得需要的能量动力是设计的“源”。

第二、晶振部分。这里主要用于时钟的定位,计数以及定时等等,能够给单片机一个具体的信号,什么时候该做什么。

第三、复位电路,用于初始化、重启等,若程序跑错也可以紧急关停进行损耗的规避。

第四、下载接口部分。

第五、控制部分是整个设计的指挥中心。

端口的设计如图1.5所示:

图1.5 核心控制模块电路图

1.2电源模块

1.2.1 稳压芯片简介

稳压器件本质也是一块IC芯片板,常见的三端稳压集成电路一般都是类似三极管的设计,有专门的导通电压和传输规则。常见的三端稳压集成电路有正电压lm78 ××系列以及负电压的lm79××系列。

图1.6 lm7805样品

本设计需要双5V电源为整个系统供电,电源模块以芯片LM7805为核心设计成输出+5V直流电压的稳压电源电路。

电源需要的部分有:变压器、整流以及滤波装置,还有稳压电路这四大板块。据图3.7进行说明:

因为三端固定集成稳压电路的使用方便,而且还需要安装足够大的散热器小功率条件则不需要用。另外还应当保留一定的剩余部分,以避开特殊的过热损失

1.2.2 电源稳压模块设计

本设计需要双5V电源为整个系统供电,电源模块以芯片LM7805为核心设计成输出+5V直流电压的稳压电源电路。

电源需要的部分有:变压器、整流以及滤波装置,还有稳压电路这四大板块。据图1.7进行说明:

图1.7 7805稳压电源

1.3电机驱动模块

1.3.1电动机驱动芯片L293D简介

L293D用的桥是H形状的,这里是两个脉宽调制进行的控制,有很多优点,电流也平稳连续用1片芯片可以同时操作2个电机实现多功能的运动。由于H桥电路可以很方便的实现电机正反转的驱动因此应用广泛。H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。另外,L293D将2个H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。每1个电机需要3个控制信号EN12、IN1、IN2,其中EN12是使能信号,IN1、IN2为电机转动方向控制信号,IN1、IN2分别为1,0时,电机正转,反之,电机反转。选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。选择一路I/O口,经反向器74HC14分别接IN1和IN2引脚,控制电机的正反转。由于H桥电路可以很方便的实现电机正反转的驱动因此应用广泛。

图1.8 典型H桥驱动电路

要使电机运转,必须使对角线上的一对三极管导通。

如图3.9和图3.10分别表示的是不同导通情况与电机的转动结果

图1.9 H桥驱动电路正转               图1.10 H桥驱动电路反转

此芯片其内部电路就是H桥驱动电路。下图1.11为L293D的引脚图:

图1.11 L293D引脚图

与一般的直流驱动相比较看来,脉冲、能量和速度本L293D都很突出。按照1.12,用完整的电机进行驱动和调节。

图1.12 L293D原理图

1.3.2模块设计

在本次设计中,驱动的部分电机是需要依赖单片机如表3.2是具体的功能和对应的指令。其中“1”指此I/O口输出高电平,“0”指此I/O口输出低电平。

表1.2 L293D芯片四个输出口在不同状态下执行的指令

out1

Out2

Out3

Out4

状态

1

0

0

1

前行

0

1

1

0

后退

1

0

1

0

左转

0

1

0

1

右转

根据如上所示的原理即设计,便可得出如图1.13所示的电路图。

图1.13 电机驱动模块电路图

1.4循迹模块

实际上,红外传感器的功能和模块应用十分广泛,抗干扰的水平而且发出的信号不易丢失。本次实验具体采用的通信协议是NPC编码,但是设计的复杂程度也相应提升了。具体的接线和原理如1.14所示。

图1.14 循迹模块电路图

根据计划,选择并选择了主动红外跟踪检查方法。这种类型的方法取决于在具有不同目标的不同光谱仪中发送的数据信号的应用,这些光谱仪具有不同的弯曲特性,并且智能汽车可以在道路上安全行驶。在整个过程中持续不断地发送某些特性的红外传感器光源。特有的红外光传感器光源将木地板上的白光灯漫反射,然后将其转换为折射光,并安装在汽车底部的红外自动接收管中;预先设置的灰黑色指导线将消化并吸收特征性的红外光感测光源,这是全自动红外接收器不太可能接受的。根据钥匙模块接收到的数据信号的反馈,完成引导线间距和轿厢正确方向的调整。红外探测器的探测范围也有一定的局限性,一般来讲,不容易超过3厘米。但是由于我们都将红外探测器安装在汽车的底部,因此道路上的漫反射光与传感器之间的距离非常近,因此红外探测器在本设计中的应用足以完成跟踪功能

1.5避障模块

这里使用的是超声波感应,使用发出的波形和反射原理进行距离和速度的计算、确定。比起红外该设备的系统复杂度降低了。而且更稳定,如图1.15所示是原理。超声波感应器需要外设的电源进行供电,而图1.16为超声波模块电源原理图。

图1.15超声波避障模块电路图

图1.16 超声波避障模块电源电路图

1.6无线遥控模块

这里使用的遥感方式是根据信号获得点阵的按钮设计,需要符合NPC协议和指令,如图1.17

图1.17 红外遥控解码波形图

在代码的执行中,需要按照如图1.18的原理进行,单片机发出一定含义的指令,或者吸收一定的信息然后处理决定下一步的操作。

目前由于驱动电机的选择,故单片机能够接受到的指令为驱动电机的五种状态,即:前进、后退、左转、右转、停止。在单片机接受到这五个指令中的其中一种之后,将会开始调用驱动电机程序模块的子程序,来使小车进行相应的状态改变。

图1.18 无线红外遥控模块电路图

第二章 系统调试与分析

2.1软件调试平台

使用Keil系列用作C语言编程的debug记录。

虽然KEIL系列也支持汇编语言,但还是C语言的逻辑和书写规范符合一般思维逻辑,因此上手比较快,具有比较强的可移植性和拓展性。此外,KEIL目前已经发展到第五代,可以使用的库包比较多,由于学习的人比较多,能借鉴的学习资料也是丰富。还有一点最突出的优势,用户可以使用“调试”的选项,对于编码获得逐步的解释,还能转换为汇编语言显示编程的原理,执行效率非常高,可以满足复杂程序的设计。

由于51系列注重软件的编写和拓展所以要更加注意书写规范。这里使用的虽然是C语言,但是偶尔也需要对机器码进行分析,这里使用的办法注意有两类,第一、人工汇编,第二、机器编译现在来说,前者已经极少使用手了。目前对于嵌入式开发的需求也在增大,可谓“老树开新花”,嵌入原理和汇编语言重新招揽了用户和开发人员加入使用的队伍中,KEIL也支持汇编的运行,而且,其使用也有利于我们理解机器的原理,更好的使用机器的语言逻辑。目前,KEIL5已经顺应潮流开发出可以支持在线(汇编)调试的串口进行录的操作

最好在程序设计之前,进行程序框图的书写,这样可以很好地整理编程思路,也能够利用框图检查自己在设计过程中的矛盾之处。这里有一个专业的叫法——模块化有时候,程序的实现不是一个独立的主函数,需要有各种中断和调用,因此需要分块进行编程以及逻辑检测,于是,许多个独立但完整的框图结构就产生了,与此相对应的还有硬件电路的刻录,其主要功能也进行了模块的分类。这样易于推广和检测错误

KEIL的具体环境可以由一张系统的结构图来显示,如图2.1,包括了C语言汇编器在内的各种管理内容。

图2.1 Keil for 51开发平台截图

KEIL5的搭建以及关于本实验采用的器件规则设计如图2.2

图2.2 MCU选型设置

2.2程序调试

编程第一遍的时候不一定完全准确,此时需要一个帮忙检查到底是哪里出错的“管家”,这里可以由“debug”的功能进行检查。这里的错误类型有:逻辑、语法以及算法的功能缺失等等。通过多次的调试,最终可以得到满意的结果

2.2.1设置和删除断点

一般来说,调试第一次是全程的跑,后面就都需要每一步都检查,所以需要做的事断点+单步运行的操作,这也是广大开发人员认为最有用的办法。在出现错误或运行时间过长的语句,需要增加一个断点的标记,这时我们在源程序窗口待添加断点的行号前双击鼠标,就可以在该行添加一个断点。然后再进行回溯的检查,看之前是哪里出了错误,程序跑起来在断点的地方停下,可以有效节省时间,也能使得工程师缩小寻找的范围,进行专类的思考。

2.2.2查看和修改程序

在调试过程中,使用“View”里面的“Registers Windows”功能可以对具体的数据/程序到存储器的双向过程进行查阅,明白具体的地址和流向。同时,由于仿真的可逆性以及各阶段都可人为操作的特点,发现有些去向是有问题的时候,可以直接在表格中进行修正,其后的程序也会自动修改,这样来实现进一步的调试。当然,这对于开发者的汇编水平要求比较高,不是谁都可以发现机器码具体发生的问题的

在“View”里面的“Watch Windows/Watch12”,如图2.3能够得到若干寄存器的具体内容,若鼠标双击右键或者是“F2”点击,都可以对具体的信息进行详细浏览。这里有:代码中的伪代码、计数设计以及输入/出口的电平信息等等。双击变量的当前只可以改变它。通过软件检查出程序中出现了许多的问题。经过多次的模块子程序的修改,一步一步的完善程序,来解决出现的问题。

图2.3调试界面窗口

如果你有任何问题、需要建议或解决疑难,别客气噢,随时找我求助或寻求支持。我专注于单片机相关的知识,可以提供电子设计、嵌入式系统、编程和硬件方面的宝贵帮助。不管你的问题属于哪个领域,都可以向我咨询啦,获取有针对性的建议和指导。祝愿你在单片机设计领域取得巨大成功!

  • 0
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于51单片机的WiFi智能循迹小车程序设计结构图主要包括硬件设计与软件设计两部分。 硬件设计: 1. 单片机:使用51单片机作为主控芯片,负责控制整个循迹小车。 2. 电机驱动:使用电机驱动芯片,将51单片机的输出信号转换为电机的转动信号,控制小车的前进、后退、转弯等动作。 3. 编码器:安装在电机上的编码器用于检测电机的转动速度和方向,通过反馈信号给51单片机。 4. 循迹模块:采用红外传感器数组或巡线传感器进行循迹检测,将车辆离线的位置信息传递给单片机。 5. WiFi模块:通过WiFi模块实现与外部设备的通信,实现远程控制和数据传输功能。 6. 电源系统:为整个小车提供稳定的电源,包括电池、稳压电路等。 软件设计: 1. 初始化:包括初始化引脚、定时器、中断、串口等,并设置WiFi模块的工作模式和参数。 2. 循迹控制:通过读取循迹模块的信号,判断小车当前所处位置,控制电机的转动实现循迹功能。 3. WiFi通信:配置WiFi模块与外部设备之间的通信,接收外部指令或发送数据给外部设备。 4. 数据处理:对接收到的指令进行解析,根据指令操作电机的转动和小车的运动。 5. 避障控制:在循迹过程中,通过超声波传感器或红外避障传感器检测前方障碍物,并实现避障功能。 6. 扩展功能:根据需求,可以添加其他功能,如灯光控制、声光提示等。 以上是基于51单片机的WiFi智能循迹小车程序设计结构图的主要内容,通过合理的硬件设计和软件编程实现了循迹、避障和远程控制等功能。在实际应用中,可以根据需要进行适当的调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值