基于51单片机智能小车的设计.docx
- 文档编号:4046790
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:34
- 大小:670.81KB
基于51单片机智能小车的设计.docx
《基于51单片机智能小车的设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机智能小车的设计.docx(34页珍藏版)》请在冰豆网上搜索。
基于51单片机智能小车的设计
单片机课程设计
设计名称:
智能小车及温度显示
所在学院:
电气与控制工程学院
专业班级:
测控技术与仪器0902
学生XX:
学生学号:
090607021109060702250906070227
指导教师:
完成时间:
2021/07/06
智能小车的设计
摘要:
智能作为现代的新创造,是以后的开展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。
智能小车就是其中的一个表达。
本设计采用STC89C52单片机为主要控制核心,STC89C52是一款高速低功耗的新一代8051单片机,我们利用红外接收遥控器对小车的控制信号,对小车实现无线遥控,利用DS18B20检测小车所在环境的温度,并利用12864液晶显示模块将其显示出来。
关键词:
STC89C52单片机DS18B20检测温度液晶显示
Abstract:
Smartasamoderninvention,thedirectionofdevelopmentinthefuture,hecaninanenvironmentwhereautomaticoperationinaccordancewiththepre-setpattern,nohumanmanagementcanbeappliedtotheuseofscientificexploration.Thesmartcarisoneofexpression.ThisdesignusesSTC89C52microcontrollercoreasthemaincontrolSTC89C52isanewgenerationofhigh-speedlow-power8051,weusetheinfraredreceiverremotecontrolsignalsofthecar,wirelessremotecontrolcarusingtheDS18B20testcarwherethetemperatureoftheenvironmentanduse12864LCDmodulewillbedisplayed.
Keyword:
STC89C52single-chipDS18B20detectiontemperatureLCD
1.方案论证与比拟
1.1课程实现
方案1:
采用各类数字电路来组成小车的控制系统,对外围避障信号,各路趋光信号进展处理,车库拦栅上升下降控制,温度显示等。
本方案电路复杂,灵活性高,效率低,不利于小车智能化的扩展,对各路信号处理比拟困难。
方案2:
采用STC89C52单片机来作为整机的控制核心单元。
红外线探头采用市面上通用的发射管与及接收头,经过单片机调制后发射。
车库拦栅控制局部用步进机来驱动再将采集到的各类信号送往单片机进展综合分析处理,实现准确有效的动作,此系统比拟灵活,采用软件方法来解决复杂的硬件电路局部使系统硬件简洁化,各类功能易于实现,能很好地满足题目的要求,并容易扩展功能。
比拟以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,能到达题目要求。
1.2电机驱动模块
方案1:
使用晶体三级管8550搭成桥电路控制两路继电器控制小车的转向,原理简单,方便使用,但是需要用到两个继电器,既占用空间又不经济。
2:
使用芯片L298N驱动电机并控制电机的转向,L298N是SGS公司的产品,比拟常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。
可以方便的驱动两个直流电机,或一个两相步进电机。
方案3:
使用步进电机控制小车的速度。
由于步电机的特性,它能够更加准确的控制小车的转速,更好的定位,但是它的价格比拟昂贵并且体积较大重量也较大,不利于本次比赛的实现。
这里我们使用红外对车轮转数的计数,可以充当小车定位的功能。
L298N可承受标准TTL逻辑电平信号VSS,VSS可接4.5~7V电压。
4脚VS接电源电压,VS电压范围VIH为+2.5~46V。
输出电流可达2.5A,可驱动电感性负载。
1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。
L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。
5,7,10,12脚接输入控制电平,控制电机的正反转。
6和11口接控制使能端EnA,EnB,控制电机的停转。
图1是L298N原理图:
图〔1〕L298N工作原理图
In3,In4的逻辑图与图1一样。
由图1可知EnA为低电平时,输入电平对电机控制起作用,当EnA为高电平,输入电平为一高一低,电机正或反转。
同为低电平电机停顿,同为高电平电机刹停。
该方案选择其控制两路直流电机的转向。
结合三种方案的优缺点,最终选择方案2
1.3温度测量模块
方案一:
使用热敏电阻,热敏电阻价格廉价对温度感应敏感,但是准确度不高。
方案二使用热电偶。
热电偶经过全桥电路处理之后能够测量比拟高的温度,而且精度也比拟高,但是电路要求高,元件价格比拟贵。
方案三:
使用DS18B20温度传感器。
DS18B20采用一种单线总线系统,可以用一根线连接主从件,DS18B20为从器件,经过单片机简单处理之后能够得到高精度的温度,并且其测量范围也比拟大,精度高,性价比高,使用方便。
所以最终选择方案三。
DS18B20温度传感器实物图见图〔2〕
图〔2〕DS18B20温度传感器实物图
1.4显示模块
方案1:
使用LED数码管进展显示。
数码管价格廉价,显示亮度好,能耗低,但是显示的内容少。
方案2:
使用LCD液晶进展显示。
液晶显示相对价格比拟贵,驱动比拟麻烦,但是其显示内容多,能耗小,连接电路简单,体积较小。
考虑到本设计的具体要求,选择方案2,选用12864LCD液晶显示器。
图〔3〕12864液晶显示实物图
1.5遥控
方案一:
此方案中,使用专用遥控器作为控制信号发出装置,当按下遥控器的设置键后,一体化红外接收装置接收到遥控器发出的设置控制信号,然后将信号送到专用的解码芯片中进展解码,解码后将信号送到单片机,由单片机查表判断这个信号是不是设置信号,当确认是设置信号后,启动设置子程序,那么以后接收到的红外信号就是
设置的时间信号了,红外接收头接收到红外信号后再通过放大器将信号传到解码器中,解码器解完码后送到单片机,单片机再通过查表确定这些数值并进展设置,然后按下确认键,红外接收头接收到这个信号并通过放大送到解码器中,解码后再送到单片机中,单片机通过查表确定这是确认操作后,可以通过可控硅控制。
方案二:
此方案中,我们采用普通的家用电器遥控器作为控制信号发出装置,当按下遥控器的设置键后,红外接收装置接收到遥控器发出的红外线控制信号,然后把这个信号转换成电信号,传到单片机中,利用单片机对这个信号进展解码,
解码完成后查表确定是不是设置信号,当这个信号是设置信号后,启动设置子程序,那么以后接收到的红外信号就是设置的时间信号了,单片机再对这些信号进展解码,查表判断出数值是多少,然后设置,设置完时间后要进展确认,当遥控器发出确认信号后,单片机收到这个信号并查表判断这是确认信号后,执行确认指令,使设置生效。
方案一为硬件解码方案,硬件解码需要使用与遥控器相配套的专用的解码器芯片,而解码芯片一般不易得到,价格也较贵,或者自行开发解码电路〔但电路太复杂,性能欠佳〕。
方案二为软件解码方案,软件解码可以不考虑遥控器的芯片是什么型号的,因为我们只需检测到它的发射编码,然后用软件方式来对它进展处理,从而得到所要的信息。
软件解码具有灵活、硬件精简〔仅需集成红外接收头和一片单片机〕、可靠性高,本钱低等特点。
经以上的论证,可以采用软件解码方案,其中承受用HX1838,本钱低,方便实现,并且系统整体性能和可靠性高。
图〔4〕HX1838红外接收器实物图
2.单片机最小应用系统
STC89C52是一种带8K字节闪烁可编程可檫除只读存储器〔FPEROM-FlashProgramableandErasableReadOnlyMemory〕低电压,高性能OS8的微处理器,具有片内ROM/EPROM,因此这种芯片构成的最小系统简单、可靠。
用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如下列图示。
由于集成度的限制,最小应用系统只能用作一些小型的控制单元。
其应用特点:
〔1〕有可供用户使用的大量I/O线。
〔2〕内部存储器容量有限。
〔3〕应用系统开发具有特殊性。
图〔5〕单片机的最小应用系统
2.1时钟电路
STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
内部方式的时钟电路如图(a)所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。
外部方式的时钟电路如图〔b〕所示,RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
〔a〕内部方式时钟电路〔b〕外部方式时钟电路
图〔6〕
2.2复位电路
〔1〕复位操作
复位是单片机的初始化操作。
其主要功能是把PC初始化为0000H,使单片机从0000H单元开场执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
〔2〕复位信号及其产生
RST引脚是复位信号的输入端。
复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。
假设使用颇率为6MHz的晶振,那么复位信号持续时间应超过4us才能完成复位操作。
产生复位信号的电路逻辑如下图:
图〔7〕复位信号的电路逻辑图
整个复位电路包括芯片内、外两局部。
外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进展采样,然后才得到内部复位操作所需要的信号。
复位操作有上电自动复位相按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图1.2.2
(2)〔a〕所示。
这佯,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。
按键手动复位有电平方式和脉冲方式两种。
其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图1.2.2
(2)〔b〕所示;而按键脉冲复位那么是利用RC微分电路产生的正脉冲来实现的,其电路如图1.2.2
(2)〔c〕所示:
〔a〕上电复位〔b〕按键电平复位〔c〕按键脉冲复位
图〔8〕复位电路
上述电路图中的电阻、电容参数适用于6MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。
本系统的复位电路采用图〔b〕上电复位方式。
3.控制局部
3.1电机驱动
一个电动小车整体的运行性能,首先取决于它的电源模块和电机驱动模块,电机驱动模块的主要功能:
驱动小车轮子转动,使小车行进。
电动小车的驱动系统一般由控制器、功率变换器及电动机三个主要局部组成。
电动小车的驱动不但要求电机驱动系统具有高转矩重量比、宽调速范围、高可靠性,而且电机的转矩-转速特性受电源功率的影响,这就要求驱动具有尽可能宽的高效率区。
图〔9〕电机驱动硬件接线图
3.2.温度检测及显示模块
温度检测模块使用DS18B20,它的主要特点有:
独特的单线接口仅需一个端口引脚进展通讯、简单的多点分布应用、无需外部器件、可通过数据线供电、零待机功耗、测温范围主要在-55ºC——+125ºC、数字温度计以9位数字量的形式反映器件的温度值。
DS18B20通过一个单线接口发送或接收信息,因此在中央微处理器和DS18B20之间仅需一条连接线〔加上地线〕。
用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。
因为每个DS18B20都有一个独特的片序列号,所以多只DS18B20可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。
图〔10〕温度显示接线图
3.3.遥控
红外接收探头用HX1838,接收红外信号频率为38Hz,周期约26us,同时能对信号进展放大、检波、整形,得到TTL电平的编码信号。
红外接收电路一体化的红外接收装置将遥控信号的接收、放大、检波、整形集于一身,并且输出可以让单片机识别的TTL信号,这样大大简化了接收电路的复杂程度和电路的设计工作,方便使用。
在本系统中我们采用红外一体化接收头HX1838。
HX1838黑色环氧树脂封装,不受日光、荧光灯等光源干扰,内附磁屏蔽,功耗低,灵敏度高。
在用小功率发射管发射信号情况下,其接收距离可达35m。
当手拿遥控器对着接收头按任意键时,发光二极管会闪烁,说明红外接收头和遥控器工作都正常;如果发光二极管不闪烁发光,说明红外接收头和遥控器至少有一个损坏。
只要确保遥控器工作正常,很容易判断红外接收头的优劣。
4.流程图
4.1主程序流程图
4.2遥控器解码程序流程图
4.3温度显示流程图
5.参考文献
[1]何立民.MCS-51系列单片机应用系统设计[M].,航空航天大学.1998.
[2]李广弟.单片机根底[M].,航天航空大学.2001.
[3]X毅刚,彭喜元.新编MCS—51单片机应用设计第一版[M].XX工业大学.2003.
[4]赵负图.传感器集成电路手册第一版[M].化学工业.2004.
[5]苏凯等.MCS-51系列单片机系统原理与设计[M].冶金工业.2003.
[6]X鑫等.单片机原理及应用[M].电子工业.2005.8.
[7]全国大学生电子设计竞赛获奖作品汇编[M].,理工大学.2004.8.
6.设计心得体会
6.1设计心得体会〔魏璐〕
关于这次课程设计,我是受益颇多的。
从一开场选题,就查了很多相关的资料,一直到考完试动手完成它,虽然确实遇到很多技术上的问题,但整个过程可以说是相当享受的。
我们这次的课程设计是智能小车的制作,实现的主要功能有无线遥控、检测温度并显示。
电机驱动、红外遥控、温度测量并显示等相关知识及其实现已在硬件局部写出,这里只谈论下我自己的感受。
当教师在之前让我们选题目时,我就开场在网上、在图书馆找资料,当接触到智能小车这个题目时,我就很感兴趣,也征得其他两个组员得一致同意,于是就决定做智能小车。
随后我们就买器材,焊接电路,写程序。
但一切并不是那么顺利,其中遇到了多种困难,比方说焊接电路的难度就是一个很大的挑战,还有程序的调试也是不容易做到的,实习的一周我们前两天是做硬件工作,其中包括焊接芯片以及显示电路,后三天主要是调程序。
但程序的调试真的很让人头疼,不断地调试,但效果却始终不明显。
我们无法判断到底是程序的问题还是硬件焊接有问题,鉴于查询硬件很麻烦,我们又重新焊接了块板子〔驱动板〕,但结果总不是那么理想。
事实上,我们遇到的问题远不止这些,但是,无论怎样的挫折,无论怎样的想要放弃,最后都坚持了下来。
有困难就查资料,有困难就请教同学,有困难就解决困难!
本着这样的信念和心态,我们解决了一个个的困难,虽说结果不能到达预期结果,但从中我们也学到了很多知识,从原来一点都不知道的HX1838〔红外接收〕,L298N〔驱动〕,DS18B20〔测温度〕到最后的的每一个元件都有所了解,我觉得这就是我们坚持到最后的最大成果,其实在很多事情降临时,我们不仅仅关心的是最后的结果,更重要的是拥有其中的过程。
在整个动手过程,既加深了我们对单片机的理论认识,又通过智能小车这个很有意思的载体,实现了对单片机的应用。
同时,对我而言,这次课程设计还有更重要的意义,那就是我开启了对单片机制作的兴趣,个人希望在以后的工作学习中,加强这方面的训练,多制作出自己感兴趣的单片机作品。
6.2设计心得体会〔雷军〕
经过这一个星期的实习,过程曲折真是一语难尽。
从开场时充满激情总以为什么都很简单,到最后差点有点想放弃的冲动,这之间的复杂心情,点点滴滴无不令我回味无长。
特别是在设计程序的过程中,我明白到做一个好程序的不易,做一个好的编程者就更加困难,突然就很佩服那些编程者。
这我们组一共三个人,小车整体上是我们三个都在做,但个人的侧重点不同,魏璐主要负责查询资料和设计论文,我和陈志伟主要负责硬件搭建和软件调试。
通过这次课程设计,加强了我们动手、思考和解决问题的能力。
在整个设计过程中,我们一共用了三个板子,一个是我们以前焊的51板,红外接收电路以及12864的显示电路,硬件大体就是这样。
在电路焊接的过程中,我们是不停的返工,经过不停的修改测试,最终将硬件搭接好了。
剩下的主要是软件调试,这个我们花了好长时间,几乎是三个人换着调的,这个真是太麻烦了,稍微有点错误,就出现问题,这个真是对我们耐心的大挑战,不过最后还是没到达预期的效果,感觉有点遗憾。
我觉得做课程设计同时也是对课本知识的稳固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。
平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。
而且还可以记住很多东西。
比方一些芯片的功能,比方HX1838〔红外接收〕,L298N〔驱动〕,DS18B20〔测温度〕等等。
平时看课本,这次看了,下次就忘了,通过动手实践让我们对各个元件印象深刻。
认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
所以这个期末测试之后的课程设计对我们的作用是非常大的。
在课程设计的过程中,真正体会到了理论运用到实际中是具有很大的差异的。
往往会出现意想不到的问题,我们必须得做到冷静耐心的去分析问题,而不是焦躁不安,轻言放弃。
当然了,这次的课程更重要的是团队的合作,我们必须得各尽所长才能解决各种困难。
6.3设计心得体会〔陈志伟〕
万事开头难!
在刚开场接触到硬件的时候,根本就无从下手,在几番请教过别人之后,才有一点点的头绪,之后才知道先干什么,后干什么。
在这次的智能小车设计过程中,我们先查找有关的芯片和元器件的资料,了解它的用法及各个管脚的功能,然后先按模块进展硬件是焊接,先把各个模块调试好,在将模块组装在一起。
在这次的智能小车设计中,小车的模块分为电机驱动模块,红外接收模块,温度检测模块,液晶显示模块,稳压模块,单片机最小应用系统等。
在红外接收模块调试中,我们遇到了本设计中遇到的最大问题,当我们把遥控解码之后,程序烧到单片机中之后,按了遥控器中的按键,红外接收模块中的发光二级管已经亮了,这说明红外能承受到遥控的信号,而单片机却没有反响,我们所用的红外是HX1838,经过几个人不停的调试,不断地修改程序,在小车接收到遥控的信号时,大家都由衷的快乐,可是还是不能到达我们所预期的结果,难免心中有些遗憾。
在整个的过程中,我清楚的意识到团队合作的重要性。
一个大的工程不是一个人可以完成的,虽然我们在课程设计的一开场,就已经分工好。
但是在整个过程,在开场的硬件搭建时我们三个人都有参加,如果不了解硬件的组成,软件调试和论文根本就没有方法完成。
我们在查资料的时候,我们都会资源共享。
在整个过正中我们每个人都会有一份芯片的资料。
总之,这次的课程设计,让我获益匪浅。
我明白了团队协作,分工合作的团队精神。
在经过大家不停的奋战之后,我们的智能小车终于完成的。
功夫不负有心人!
7.附录
7.1元件清单:
名称
型号
数量
遥控接收器
HX1838
1
驱动芯片
L298N
1
LCD液晶显示器
12684
1
温度传感器
18SB20
1
二极管
1N4007
8
电容
104
1
电机
两相直流电机
2
单片机
AT89C52
1
车体
1
7.2程序清单:
主程序:
#include
#include"51--12864.h"
#include"ds18b20.h"
sbitEA0=P3^4;
sbitEA1=P3^5;
sbitEB0=P3^6;
sbitEB1=P3^7;
uchartable[]={"多功能小车"};
ucharx[33];
ucharircode[4],star=0,count1=0,count2,bye=0,chuliok=0;
//uchary[5]={2343,1353,1452,1848,1749};
ucharcount3,count4=0;
voidTemp()
{
ReadTemp();//开启温度采集程序
temp_to_str();//温度数据转换成液晶字符
Write_(0x90+6);//液晶字符显示位置
Print(TempBuffer);//显示温度
}
voidtimer0init(void)//定时器0定时方式2初始化
{
TMOD=0x02;
TH0=0x00;
TL0=0x00;
ET0=1;
EA=1;
TR0=1;
}
voidint0init(void)//外部中断0初始化
{
IT0=1;
EX0=1;
EA=1;
}
voidchuli(void)//字节数据处理
{
inti,j,k=1,a;
for(j=0;j<4;j++)
{
for(i=0;i<8;i++)
{
a=a>>1;
if(x[k]>6)a=a|0x80;
k++;
}
ircode[j]=a;
}
chuliok=1;
}
voidgo(void)
{EA0=0;EA1=1;EB0=0;EB1=1;}
voidback(void)
{EA0=1;EA1=0;EB0=1;EB1=0;}
voidleft(void)
{EA0=0;EA1=1;EB0=1;EB1=0;}
voidright(void)
{EA0=1;EA1=0;EB0=0;EB1=1;}
voidkey()//按键扫描与处理
{count3=ircode[2];
//EA0=0;
//EA1=0;
//EB0=0;
//EB1=0;
//默认翻开电源为停顿
switch(count3)
{
case0x1A:
go();break;//前进键
case0x05:
back();break;//后退
case0x01:
left();break;//左拐弯
case0x03:
right();break;//右拐弯
default:
break;
}
}
voidmain()
{
Ini_Lcd();
timer0init();
int0init();
dis_hanzi(0x80+2,table,5);
Write_(0x90);
chinesedis("当前温度值:
");
Write_(0x88);
chinesedis("行驶方式:
");
Write_(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 智能 小车 设计