基于单片机的红外遥控智能小车设计报告
- 格式:doc
- 大小:982.50 KB
- 文档页数:62
基于单片机智能遥控小车的设计引言:一、硬件设计:智能遥控小车的硬件设计包括机械结构和电子模块两个方面。
1.机械结构设计:机械结构设计为小车提供了良好的稳定性和移动能力。
首先,选取适合的底盘结构,确保小车的稳固性和均衡性。
其次,选择合适的电机和轮子,以实现小车的前进、后退和转向功能。
最后,在机械结构中添加传感器支架和摄像头支架,方便后续的传感器和摄像头模块的安装。
2.电子模块设计:电子模块设计包括主控模块、通信模块和电源模块三个部分。
(1)主控模块:主控模块是整个智能遥控小车的核心,它负责接收遥控命令、控制电机的转动并实时处理传感器数据。
选择一款性能较强的单片机作为主控芯片,如STM32系列,以满足小车处理复杂任务的需求。
(2)通信模块:(3)电源模块:电源模块为智能遥控小车提供稳定的电源,要保证小车的正常工作需要满足一定的电流和电压要求。
选取合适的锂电池组或者干电池组作为电源,通过适当的电压调节和保护电路,保证电源的稳定性和安全性。
二、软件设计:智能遥控小车的软件设计包括底层驱动程序的编写和上层应用程序的开发。
1.底层驱动程序:底层驱动程序主要用于控制电机和监测传感器数据。
通过编写合适的电机驱动程序,实现小车的前进、后退和转向功能。
同时,编写传感器驱动程序获取传感器的数据,如超声波测距、红外线检测和摄像头采集等,为上层应用程序提供数据支持。
2.上层应用程序:三、功能拓展:智能遥控小车的功能可以通过添加各种传感器和模块进行拓展,如以下几个功能:1.环境检测功能:通过添加温湿度传感器、二氧化碳传感器等,实时监测环境数据,可以应用于室内空气质量、温湿度调节等应用。
2.避障功能:通过添加超声波传感器、红外线传感器等,在小车前方进行信号检测,实现小车的避障功能。
3.图像识别功能:通过添加摄像头模块,对图像进行处理和分析,实现小车的图像识别功能,如人脸识别、物体识别等。
结论:基于单片机的智能遥控小车设计通过合理的硬件结构和软件设计,实现了远程遥控和实时传输数据的功能。
基于单片机的智能小车设计基于单片机的智能小车设计一、引言本文档旨在介绍一个基于单片机的智能小车设计。
智能小车是一种能够自主感知环境、做出决策并执行动作的。
本设计将通过单片机控制小车的移动与感知功能,使其能够自主避障、跟随线路、遥控操作等。
二、需求分析2.1 功能需求●小车应能够通过避障传感器、红外线传感器等感知器件检测周围环境,自主避开障碍物。
●小车应能够根据预设的线路进行自主导航,并能跟随或保持在线路上运行。
●小车应支持遥控操作,用户可以通过遥控器控制小车的运动。
●小车应能够通过摄像头等视觉传感器获取实时图像并进行图像处理。
2.2 硬件需求●单片机控制模块。
●电机驱动模块。
●避障传感器模块。
●红外线传感器模块。
●摄像头模块。
●遥控器模块。
2.3 软件需求●单片机控制程序。
●图像处理算法。
●遥控器控制程序。
三、系统设计3.1 硬件设计3.1.1 单片机控制模块●选择合适的单片机控制模块,如Arduino、Raspberry Pi等。
●连接电机驱动模块、避障传感器模块、红外线传感器模块、摄像头模块等。
3.1.2 电机驱动模块●选择适合的电机驱动模块,如直流电机驱动器、步进电机驱动器等。
●连接电机驱动器与电机,控制小车的运动。
3.1.3 避障传感器模块●选择合适的避障传感器模块,如超声波传感器、红外线传感器等。
●连接避障传感器与单片机,实现避障功能。
3.1.4 红外线传感器模块●选择合适的红外线传感器模块,用于检测线路。
●连接红外线传感器与单片机,实现跟随线路功能。
3.1.5 摄像头模块●选择合适的摄像头模块,如USB摄像头、树莓派摄像头等。
●连接摄像头与单片机,获取实时图像。
3.1.6 遥控器模块●选择合适的遥控器模块,如无线遥控器等。
●连接遥控器与单片机,实现遥控操作功能。
3.2 软件设计3.2.1 单片机控制程序●编写控制程序,根据传感器的信号进行相应的处理,并控制电机驱动模块控制小车的运动。
基于单片机智能遥控小车的设计现今的智能遥控小车在各个领域都有广泛的应用,如家庭娱乐、安防巡检、仓库物流等。
在这篇文章中,我们将讨论基于单片机的智能遥控小车的设计。
首先,我们需要选择适合的单片机作为主控制器。
目前市面上最常用的单片机有Arduino、Raspberry Pi等。
Arduino是一种开源电子原型平台,其特点是体积小巧、易于编程。
Raspberry Pi是一款基于ARM架构的微型计算机,具有与PC相似的性能。
在选择单片机时,我们需要考虑到所需功能的复杂度,并根据需求选择适合的处理器。
接下来,我们需要设计小车的底盘。
底盘一般由两个驱动电机和轮子组成,可以使用直流电机或步进电机。
直流电机通常用于需要更高速度和功率的应用,而步进电机适用于需要更精确运动和控制的应用。
在选择电机时,我们需要考虑小车的负载能力和运动需求,并选择合适的电机类型。
为了实现遥控功能,我们需要添加无线通信模块。
常见的无线通信模块有蓝牙、Wi-Fi和红外线模块等。
蓝牙模块可以实现长距离通信和高速传输,适用于需要远程操控的应用。
Wi-Fi模块可以实现无线网络连接和上传数据,适用于需要实时监控和远程控制的应用。
红外线模块可以实现近距离通信和简单的遥控功能,适用于低成本和简单的应用。
在设计电路时,我们需要考虑电源管理和传感器的接入。
智能遥控小车通常需要稳定的电源供应,可以使用电池,或将电源直接接入插座。
在接入电源时,我们需要添加合适的电压调节器和电流保护模块,以确保电路的安全运行。
此外,我们还可以添加各种传感器,如超声波传感器、红外线传感器和摄像头等,以实现遥测和环境感知功能。
软件方面,我们需要为单片机编写应用程序。
根据单片机的选择,我们可以使用相应的编程语言和集成开发环境。
Arduino通常使用C/C++编程语言和Arduino开发环境,Raspberry Pi可以使用Python和Linux操作系统。
在编写程序时,我们需要实现与无线通信模块的通信,控制电机和传感器的运行,以及处理接收到的指令。
基于51单片机的红外遥控小车设计和制作本文介绍一款红外线遥控小车,以AT89S51单片机为核心控制器,用L289驱动直流电机工作,控制小车的运行。
本款小车具有红外线遥控手动驾驶、自动驾驶、寻迹前进等功能。
本系统采用模块化设计,软件用C语言编写。
一、设计任务和要求以AT98C51单片机为核心,制作一款红外遥控小车,小车具有自动驾驶,手动驾驶和循迹前进等功能。
自动驾驶时,前进过程中可以避障。
手动驾驶时,遥控控制小车前进、后退、左转、右转、加速等操作。
寻迹前进时小车还可以按照预先设计好的轨迹前进。
二、系统组成及工作原理本系统由硬件和软件两部分组成。
硬件部分主要完成红外编码信号的发射和接受、障碍物检测、轨迹检测、直流电机运行的发生等功能。
软件主要完成信号的检测和处理、设备的驱动及控制等功能。
AT89S51单片机查询红外信号并解码,查询各个检测部分输入的信号,并进行相应处理,包括电机的正反转,判断是否遇到障碍物,判断是否小车其那金中有出轨等。
系统结构框图如图1所示。
图1 系统结构框图三、主要硬件电路1、遥控发射器电路该电路的主要控制器件为遥控器芯片HT6221,如图2所示。
HT6221将红外码调制成38KHZ的脉冲信号通过红外发射二极管发出红外编码。
图2中D1是红外发射二极管,D2是按键指示灯,当有按键按下时D2点亮。
HT6221的编码规则是:当一个键按下超过36ms,振荡器使芯片激活,如果这个按键按下且延迟大约108ms,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9~18ms),8位数据码(9~18ms)和这8位数据码的反码(9~18ms)组成,如果按键按下超过108ms仍未松开,接下来发射的代码将仅由起始码(9ms)和结束码(2.5ms)组成。
按照上图的接法,K1~K8的数据码分别为:0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07。
基于单片机的红外遥控智能小车的设计【摘要】本设计采用AT89S52单片机加电机驱动电路和红外遥控及液晶实时显示小车运行状态还有红外接收一体化传感器设计而成,采用模块化的设计方案,运用红外遥控器控制小车的启动和停止,并对设计的电路进行了实际测试。
实现了用红外遥控控制小车的启动停止左转右转的同时可以实时显示小车的运行状态。
【关键词】单片机;红外遥控;电机驱动;LCD16021.引言利用单片机最小系统加红外遥控器及红外接收模块及电机驱动模块通过编程来实现小车的启动和停止,左转右转和前进后退等功能,本设计采用模块化设计结构,各个功能相互不受影响,具有较高的智能化、人性化。
2.红外遥控小车的系统组成红外遥控小车的实现主要由遥控发射器、红外接收头、电机驱动模块及可扩展接口电路及液晶显示模块组成,如图1所示。
红外遥控器用来产生遥控编码脉冲,驱动红外发射管输出红外遥控信号,遥控接收头完成对遥控信号的放大、检波、整形、解调出遥控编码脉冲。
遥控编码脉冲是一组串行二进制码,此串行码输入到单片机,由单片机完成对遥控指令解码,并执行相应的遥控功能。
使用红外遥控器作为控制系统的输入,然后单片机一方面根据接收到的遥控码来驱动电机模块控制小车的运行,同时控制液晶实时显示小车的运行状态。
为了实现此功能,首先需要解决如下几个关键问题:如何接收红外遥控信号;如何识别红外遥控信号以及解码软件的设计、驱动电机运行及液晶显示的程序设计。
2.1 红外遥控的实现原理遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:(1)采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”。
单片机技能与认证培训设计报告题目:红外遥控小车姓名:学号:系别专业:电信系班级:完成时间: 6月12日华南理工大学广州学院电子信息工程学院一、设计任务及要求用红外遥控的方式,控制小车模型前进、后退、左转、右转等功能。
二、设计方案以及元器件选取设计方案:本设计方案通过红遥控发射信号产生高低电平,用来提供给L298N,达到来控制电机的目的。
其中INA、INB、INC、IND的电平分别为一高一低,两个电机就能转动了。
小车尾部采用万向轮来辅助小车前进后退以及左右转。
元器件选取:L298N小车驱动89c52单片机hs0038红外接收器2个直流电机4节五号电池万向轮1个电解电容2个电阻、电容、晶振等最小系统部分元器件三、硬件电路1.最小系统部分如下图所示:复位电路采取按键复位电路。
晶振的作用则是为系统提供基本的时钟信号2.红外接受电路采用hs0038红外接收器,电路图如下3.小车驱动电路采用L298N来控制电机:四、软件设计红外专用的延迟函数:主函数部分如下五、调试以及结果1.第一次小车无法起动。
后发现原因是因为把hs0038的3个口弄错,误把第一个引脚当作GND,导致无法通过红外遥控小车行走。
后发现1为输出端,2为GND,3为VCC。
修改线路后成功通过遥控控制小车前后左右行走。
2.小车左轮部分齿轮在1个地方有时会卡住无法转动,需要人工转动下带动左轮转动,经过除尘、添加润滑油等措施后,卡住现象稍有减少,但无法完全避免。
六、总结通过这次实验,我们锻炼了自己的动手能力,了解了遥控小车的原理及制作过程,使我们的团队意识增强,经过几天的努力,完成了模块的设计与制作,完成了整个系统的编程、组装与调试。
基本上满足竞赛的要求,使用模块时,综合考虑电路的简单、电路的成本、以及电路的性能。
此次设计仍有一些问题没有得到完全解决,对一些器件的应用还不是很熟悉,因此在今后的学习中,更要好好学习知识,增加技能训练。
比如红外传感器的原理与应用的知识,光敏二极管的原理与应用电路等,当我们遇到不懂不会的问题时,我们能通过图书馆、网络等各种渠道学习想要知道的知识,有时候虽然只是一个很简单的小车模块,但使我们认识到自己所学的专业知识在实践中所出现的很大的不足。
单片机智能车设计报告1. 引言单片机智能车是一种以单片机为核心控制器的智能机器人车辆,具备自主感知、决策和行动能力。
在本设计报告中,我们将介绍我们设计的单片机智能车的结构和功能,以及设计中所采用的关键技术和方法。
2. 设计目标我们的设计目标是制作一辆具备自主避障、跟随和遥控功能的单片机智能车。
具体而言,我们希望实现以下功能:- 方向控制:通过遥控器实现远程控制车辆的前进、后退、左转和右转;- 自主避障:利用超声波传感器感知前方障碍物并自动避让;- 跟随功能:通过红外传感器感知前方物体并自动跟随移动。
3. 系统组成我们的单片机智能车系统主要由以下模块组成:- 单片机:我们使用了一块功能强大的STM32单片机作为核心控制器;- 电机驱动:采用H桥电机驱动模块控制车辆运动;- 超声波传感器:用于感知前方障碍物的距离;- 红外传感器:用于感知前方物体;- 遥控器:搭配红外接收模块实现对车辆的远程控制;- 显示屏:用于显示车辆当前状态和遥控指令。
4. 系统工作原理4.1 方向控制方向控制是通过遥控器实现的,遥控器发送红外信号,被红外接收模块接收后,单片机对信号进行解码,根据解码结果来控制车辆的运动方向。
4.2 自主避障自主避障是通过超声波传感器实现的。
超声波传感器发射一定频率的超声波信号,并接收信号的反射,根据反射时间来计算障碍物与车辆的距离。
当距离小于一定阈值时,单片机通过控制电机驱动模块停止车辆运动,并自动转向避开障碍物。
4.3 跟随功能跟随功能是通过红外传感器实现的。
红外传感器发射红外信号,并接收信号的反射。
当红外传感器感知到前方物体时,单片机通过控制电机驱动模块使车辆保持一定距离跟随物体移动。
5. 实现步骤和关键技术1. 硬件搭建:将电机驱动模块、超声波传感器和红外传感器连接至单2. 编写驱动程序:编写单片机的驱动程序控制电机驱动模块,包括前进、后退、左转和右转;3. 编写红外传感器程序:编写单片机的程序读取红外传感器的信号,并根据信号进行判断和控制;4. 编写超声波传感器程序:编写单片机的程序读取超声波传感器的信号,并根据信号进行距离计算和判断;5. 编写遥控器程序:编写单片机的程序解码遥控器信号,并根据解码结果控制车辆的运动方向;6. 联调测试:将编写好的程序烧录到单片机上,并进行测试和调试,确保各功能正常运行。
基于单片机的智能小车设计基于单片机的智能小车设计简介本文档旨在介绍一种基于单片机的智能小车设计。
智能小车是一种能够通过程序控制和感知周围环境的车辆,通常具备自主导航、避障、跟随等功能。
基于单片机的设计方案被广泛应用于智能小车,本文将介绍设计方案的硬件搭建与软件实现。
硬件搭建1.主控板智能小车的主控板使用单片机作为处理器,常见的单片机包括Arduino、Raspberry Pi等。
选择适合的单片机型号时,需考虑处理器性能、GPIO口数量和扩展性等因素。
2.电机驱动模块电机驱动模块用于控制小车的运动,一般包括直流电机和对应的驱动芯片。
选择合适的电机驱动芯片时,需根据电机的额定电压和电流来确定芯片的驱动能力。
3.传感器模块智能小车需要通过传感器感知周围环境,常见的传感器模块包括红外线传感器、超声波传感器、陀螺仪、加速度计等。
这些传感器能够帮助小车实现避障、跟随等功能。
4.通信模块通信模块用于与上位机或其他外部设备进行数据交互。
通常可以选择WiFi模块、蓝牙模块、无线模块等。
通过通信模块,智能小车可以实现远程控制或与其他设备进行协作。
5.电源模块电源模块提供电力支持,为智能小车的各个模块供电。
在选择电源模块时,需考虑小车所需的电压和电流,并确保电源稳定可靠。
软件实现1.编程语言选择基于单片机的智能小车可以使用多种编程语言来实现,例如C、C++、Python等。
选择合适的编程语言时,需考虑单片机的支持情况、编程难度和功能需求等因素。
2.底层驱动编写在设计智能小车时,需要编写底层驱动程序来控制电机、传感器等模块的操作。
通过与硬件设备进行交互,底层驱动程序可以实现对小车的控制和感知。
3.高级功能实现智能小车的高级功能通常包括自主导航、避障、跟随等。
实现这些功能需要根据具体情况编写对应算法和逻辑,并结合传感器数据进行决策和控制。
4.通信与远程控制通过通信模块,智能小车可以与上位机或其他设备进行数据交互。
可以使用串口通信、网络通信等方式实现数据传输,实现远程控制或与其他设备进行协作。
基于单⽚机的智能⼩车设计开题报告课题类别:设计□√论⽂□学⽣姓名:张⾦⾏学号: 201057050229班级:电⼦1002班专业(全称):电⼦信息⼯程指导教师:杨安平2014年4⽉⼀、本课题设计(研究)的⽬的:随着计算机、微电⼦、信息技术的快速发展,智能化技术的发展速度也越来越快,智能化与⼈们⽣产⽣活的联系越来越紧密,智能化将是未来社会发展的必然趋势。
随着汽车⼯业的迅速发展,关于智能汽车的研究也越来越受⼈关注,全国电⼦⼤赛和省内电⼦⼤赛⼏乎每次都有智能⼩车这⽅⾯的题⽬,全国各⾼校也都很重视该题⽬的研究。
智能⼩车由于成本低廉,甚⾄还能够胜任⼀些⼈类不能完成的⼯作,它已逐步深⼊到⼯农业以及社会的各个⽅⾯。
本课题设计的智能⼩车中⽤到的红外遥控技术、语⾳识别技术、单⽚机控制系统、传感技术、⾃动避障技术已⼴泛应⽤于⼯农业⽣产、国防军事、医疗卫⽣、宇宙探测等诸多领域,特别是其在军事侦察、反恐、防暴、防核化及污染等危险和恶劣环境中有着⼴阔的应⽤前景,由此可见其有着及其重要的研究意义。
本设计的智能⼩车要求能够实时显⽰时间、速度、⾥程,具有⾃动循迹、避障功能,可控制⾏驶车速并能准确定位停车。
要求能够通过实际动⼿设计,学会电⼦产品的设计开发过程,掌握单⽚机的基本原理、遥控原理、显⽰原理,⽽且能够熟练进⾏系统的硬件电路设计、软件设计调试和掌握相关电⼦开发软件的使⽤。
⼆、设计(研究)现状和发展趋势(⽂献综述):1研究现状智能⼩车、机器⼈的发展研究从上世纪60年代⾄今已有⼏⼗年的历史,⾃从上世纪60年代末期,第⼀台能够⾃主移动机器⼈问世以后,经过⼏⼗年的发展智能机器⼈已经从最初的⽰教模仿机器⼈发展到现在的具有感知功能的智能机器⼈,在技术上取得了很⼤的进步许多国家都对智能机器⼈进⾏了⼤量的研究。
由于各国的科研实⼒不同,其⽔平也有⾼低,其中美国和⽇本在该项技术的研究处于领先地位。
法国提出的“机器⼈与⼈⼯体”国家计划主要是对智能机器⼈的认知功能进⾏深⼊的研究,使其能够在复杂的环境中通过⾃主感知判断来⾃动执⾏各种动作。
单片机系统课程设计智能小车(避障及循迹)的设计学院:班级:姓名:学号:同组成员:指导老师:日期:摘要智能作为现代社会的新生产物,是未来的发展的一个重要方向,它可以按照预定的模式在特定的环境里自动的运作,无需人为管理,便可以完成预期目标。
本设计主要体现多功能小车的智能模式,设计中的理论方案、分析方法及特色与创新点等对智能化机器人,智能家用电器等自动半自动机器人的设计与普及有一定的参考意义。
整个智能小车设计主要以单片机为控制核心,通过红外遥控实现小车前后左右的移动,以及对小车功能模式的转换;通过红外传感器,实现小车的避障功能和循迹功能。
设计采用对比选择,模块独立,综合处理的研究方法。
结合实际情况对比方案优劣选出最优方案进行设计。
从红外遥控,红外循迹和避障,都严格按照科学严谨态度完成。
通过调试检测各模块,得到正确的信号输出,实现其应有的功能。
最后将各个调试成功的模块结合到小车的车体上,结合程序,通过单片机的控制,将各模块有效整合在一起,达到所预期的目标,完成最终设计与制作,能使小车在一定的环境中智能化运转。
关键词:智能小车避障循迹遥控ABSTRACTSmart as a new product of modern society, it is an important direction of future development, it can be according to the predetermined pattern in a specific environment of automatic operation, without human management, can achieve expected goal. This design mainly reflects the multi-function car intelligent mode, the theory in the design of scheme, analysis method and special features and innovation point of intelligent robot, intelligent home appliances such as the design of automatic semi-automatic robot and popularity have certain reference significance.The smart car design mainly by the single chip processor as the core, through infrared remote control to realize the car moving around, as well as to the car function mode conversion; Through the infrared sensor, achieve the function of car obstacle avoidance and tracking function. Independent design USES contrast to choose, module, integrated processing methods. Combined with actual situation comparing scheme to design and choose the optimal solution. From the infrared remote control, infrared tracking and obstacle avoidance, are in strict accordance with the scientific rigorous attitude to complete. Through debugging test module, get the correct output signal, realize its function. Finally combine the modules of various debugging success on car body, combined with the program, through the single-chip microcomputer control, to effectively integrate various modules together, achieve the expected goals, complete the final design and production, can make the car intelligent operation in a certain environment.Keywords: intelligent car avoidance tracking control第一章绪论 (1)1.1 设计的背景和意义 (1)1.2 智能小车的发展现状 (2)1.3 该设计的主要内容和目的 (4)第二章系统总体方案设计与论证 (5)2.1 系统的总体方案设计 (5)2.2 主控系统 (6)2.3 电机驱动模块 (6)2.4 循迹模块 (6)2.5 显示模块 (6)第三章系统硬件电路设计 (7)3.1 主控模块的电路设计 (7)3.1.1 AT89S52单片机的简介 (7)3.2 红外避障模块的电路设计 (9)3.2.1 LM393双电压比较器集成电路 (9)3.2.2红外对管工作原理 (11)3.2.3红外避障电路图及工作原理 (12)3.3红外循迹电路的设计 (13)第四章系统软件设计 (15)4.1 主程序 (15)第五章总结 (25)附录1程序清单 (26)附录2硬件原理图 (35)附录3 实物图 (36)第一章绪论1.1 设计的背景和意义随着电子技术、计算机技术和制造技术的飞速发展,数码相机、DVD、洗衣机、汽车等消费类产品越来越呈现光机电一体化、智能化、小型化等趋势。
基于单片机的无线遥控智能小车的设计与制作基于单片机的无线遥控智能小车的设计与制作一、引言无线遥控智能小车作为一种具有很高应用价值的机器人产品,广泛应用于工业自动化控制和科研实验等领域。
本文通过基于单片机技术的无线遥控智能小车的设计与制作,并对其硬件框架、控制原理与实现过程进行了详细介绍。
二、硬件框架设计无线遥控智能小车的硬件框架主要包括:单片机控制模块、无线收发模块、电机驱动模块、传感器模块和电源供应模块。
其中,单片机控制模块采用Arduino Uno开发板,具有良好的稳定性和可扩展性;无线收发模块采用nRF24L01无线收发模块,能够实现稳定的无线通信;电机驱动模块采用L298N电机驱动模块,能够实现电机的正反转和速度调节。
三、控制原理与实现过程1. 信号传输通过无线收发模块实现遥控信号的传输。
遥控器通过按键发送指令信号,无线收发模块接收到信号后解码,并将解码后的数据发送给单片机控制模块。
2. 控制逻辑设计单片机控制模块接收到解码后的数据,并根据指令进行相应的处理。
根据指令控制电机驱动模块的工作状态,从而控制小车的行进方向和速度。
3. 传感器模块为了使无线遥控智能小车具备一定的智能化能力,我们添加了一些传感器模块,如红外避障传感器、超声波测距模块和光敏传感器。
通过这些传感器模块,小车能够实时感知周围环境并根据实际情况进行相应的处理,如避开障碍物、自动停车等。
四、制作过程1. 硬件组装首先,将Arduino Uno开发板与nRF24L01无线收发模块、L298N电机驱动模块和传感器模块相连接,并通过杜邦线进行连接;其次,将电机连至电机驱动模块,并将驱动模块与单片机控制模块进行连接;最后,为整个系统供电,利用适配器连接至电源供应模块。
2. 软件编程使用Arduino编程软件进行代码编写。
根据硬件框架设计和控制原理,编写相应的控制程序,实现指令接收、电机控制、传感器数据处理等功能。
五、实验结果与展望经过完整的设计与制作过程,我们成功地实现了基于单片机的无线遥控智能小车。
遥控小车制作大作业报告目录一、整体方案设计 (1)1.1 整体方案设计的思路 (1)1.2 整体方案的流程图 (1)二、小车系统概况 (1)2.1 最小系统简介 (1)2.2 稳压系统简介 (2)2.3 红外遥控简介 (2)2.4 驱动原理简介 (3)2.5 直流电机简介 (4)三、硬件及软件 (5)3.1、Protel (5)3.2、protues (5)3.3、Keil (5)四、程序清单 (6)五、电路板的焊接及仿真 (10)六、结论及心得 (10)一、整体方案设计1.1 整体方案设计的思路利用无线发射和无线接收模块控制单片机,让单片机翻译传输指令,从而实现相应的功能。
具体的过程如下:无线发射模块发出指令,无线接收模块接收信号后,传递给单片机,单片机翻译接收到信号后,传输给驱动电路驱动电机旋转,从而实现让小车的前进、后退、停止、左转和右转。
1.2 整体方案的流程图基于单片机STC89C52整体设计的智能小车, 根据原来设计的思路上画出了相对应的流程路,由于是整体结构图,就只是画出了大致的结构流程, 而细节将在后面做出介绍。
二、小车系统概况2.1 最小系统简介单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组。
无线发射模块无线接收模块单片机电机驱动模块小车运动传输信号传输信号控制控制控制1、复位电路由按键复位和上电复位两部分组成。
(1)上电复位:STC89系列单片及为高电平复位,通常在复位引脚RST 上连接一个电容到VCC ,再连接一个电阻到GND ,由此形成一个RC 充放电回路保证单片机在上电时RST 脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K 和10uF 。
(2)按键复位:按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST 也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。
单片机晶振的作用是为系统提供基本的时钟信号。
红外接收与控件电路原理图:141红外遥控器原理图:红外遥控器实物图:红外接收与控制实物图:程序:接收控制主程序:#include<reg52.h>#include "hongwai.c"#include "5110.c"sbit hy=P0^0;//LED指示灯sbit hz=P2^0;sbit qy=P1^4;sbit qz=P3^7;sbit djf1=P1^0;//电机1的方向控制sbit djd1=P1^1;//电机1的动力控制sbit djf2=P1^2;//电机2的方向控制sbit djd2=P1^3;//电机2的动力控制unsigned char flag,flag1,PW;bit fan,fan1,tf=0;unsigned char fafg=0;unsigned char time_flag;unsigned char data time[2];//=====================================//ms延时//===================================== void delayms(unsigned int ms){unsigned char i;while(ms--)for(i=0;i<120;i++);}//=====================================//LED灯闪烁//===================================== void LED(unsigned char ms){unsigned char i;for(i=0;i<ms;i++){delayms(200);qz=~qz;qy=~qy;hz=~hz;hy=~hy;}}//======================================//控制//=====================================void kongzi(void){switch(shu[2]){case 0x20: {//前进fafg=1;qz=qy=0;hz=hy=1;TR1=ET1=1;djd1=djd2=1;djf1=djf2=0;fan=0;break;}case 0x30: {//后退fafg=2;qz=qy=1;hz=hy=0;TR1=ET1=1;djd1=djd2=1;djf1=djf2=1;fan=1;break;}case 0x40: {//前左转弯fafg=3;djf1=djf2=0;qz=0;qy=hz=hy=1;djd1=1;djd2=0;fan1=0;TR1=ET1=1;break;}case 0x60: { //后左转弯fafg=4;djf1=djf2=1;hz=0;hy=qz=qy=1;djd1=1;djd2=0;fan1=0;TR1=ET1=1;break;}case 0x50: {//前右转弯fafg=5;djf1=djf2=0;qy=0;qz=hy=hz=1;djd1=0;djd2=1;fan1=1;TR1=ET1=1;break;}case 0x70: { //后退fafg=6;djf1=djf2=1;hy=0;hz=qz=qy=1;djd1=0;djd2=1;fan1=1;TR1=ET1=1;break;}case 0x80: {if(tf==1){qy=qz=hy=hz=1;TR1=ET1=0;djd1=djd2=0;NOKIA5110_clear(); // 清屏W_LCD_chinese(20,0,21);//停W_LCD_chinese(40,0,22);//止W_LCD_zifu(15,3,time[1]/10);// W_LCD_zifu(23,3,time[1]%10);// W_LCD_zifu(33,3,11);//:W_LCD_zifu(42,3,time[0]/10);//W_LCD_zifu(50,3,time[0]%10);//time[0]=time[1]=0;tf=0;}break;}}}//***********************************************//显示//************************************************ void LCD_display(void){NOKIA5110_clear(); // 清屏W_LCD_zifu(15,3,time[1]/10);//W_LCD_zifu(23,3,time[1]%10);//W_LCD_zifu(33,3,11);//:W_LCD_zifu(42,3,time[0]/10);//W_LCD_zifu(50,3,time[0]%10);//if(fafg==1){W_LCD_chinese(20,0,0);//前W_LCD_chinese(40,0,1);//进}if(fafg==2){W_LCD_chinese(20,0,2);//后W_LCD_chinese(40,0,3);//退}if(fafg==3){W_LCD_chinese(5,0,0);//前W_LCD_chinese(25,0,4);//左W_LCD_chinese(45,0,5);//转W_LCD_chinese(65,0,6);//弯}if(fafg==4){W_LCD_chinese(5,0,2);//后W_LCD_chinese(25,0,4);//左W_LCD_chinese(45,0,5);//转W_LCD_chinese(65,0,6);//弯}if(fafg==5){W_LCD_chinese(5,0,0);//前W_LCD_chinese(25,0,7);//右W_LCD_chinese(45,0,5);//转W_LCD_chinese(65,0,6);//弯}if(fafg==6){W_LCD_chinese(5,0,2);//后W_LCD_chinese(25,0,7);//右W_LCD_chinese(45,0,5);//转W_LCD_chinese(65,0,6);//弯}}//=====================================//定时器T1//===================================== void wan_T1(void) interrupt 3{time_flag++;tf=1;TH1=(65536-50000)/256;TL1=(65536-50000)%256;if(time_flag>15){time[0]++;time_flag=0;if(time[0]>59){time[0]=0;time[1]++;if(time[1]>59) time[1]=0;}}}//=====================================//主函数//=====================================void main(void){djd1=djd2=0;NOKIA5110_init();NOKIA5110_clear(); // 清屏W_LCD_chinese(0,0,8);//正delayms(100);W_LCD_chinese(15,0,9);//在delayms(100);W_LCD_chinese(30,0,10);//初delayms(100);W_LCD_chinese(45,0,11);//始delayms(100);W_LCD_chinese(60,0,12);//化delayms(100);W_LCD_chinese(10,3,13);//请delayms(100);W_LCD_chinese(25,3,14);//稍delayms(100);W_LCD_chinese(40,3,2);//后delayms(100);W_LCD_zifu(60,3,10);//...PW=20;TH1=(65536-50000)/256;TL1=(65536-50000)%256;IP=0x09;//设置中断优先级IPH=0x08;open_interrupt();TR1=ET1=0;LED(10);qy=qz=hy=hz=1;NOKIA5110_clear(); // 清屏 W_LCD_chinese(1,0,10);//初delayms(100);W_LCD_chinese(16,0,11);//始delayms(100);W_LCD_chinese(31,0,12);//化delayms(100);W_LCD_chinese(46,0,15);//完delayms(100);W_LCD_chinese(61,0,16);//成delayms(100);W_LCD_chinese(0,3,17);//等delayms(100);W_LCD_chinese(15,3,18);//待delayms(100);W_LCD_chinese(30,3,19);//信delayms(100);W_LCD_chinese(45,3,20);//号delayms(100);W_LCD_zifu(65,3,10);//...while(1){kongzi();if(tf==1&&time_flag==7) LCD_display();}}红外解码:/*************************************************************************//**** 红外解码/*** 晶振:11.0592MHZ/*** 数据口:外中断0/*** 计数器:定时器T0/************************************************************************/#include<reg52.h>sbit Dat=P3^2; //数据口bit tru;unsigned char shu[4];/****************开中断************************/void open_interrupt(void){TMOD=0x11; //定时器T0工作在方式1IT0=1; //中断0在下降沿触发TR0=1;EX0=1; //开外部中断0EA=1; //开中断}/**************接收数据**********************/void R_Dat(void) interrupt 0{unsigned char i,j;unsigned int dtime=0;unsigned char temp;// P1=0xff;TH0=TL0=0;while(!Dat){if(TH0*256+TL0>20000) return;}while(Dat)if(TH0*256+TL0>20000) return;dtime=TH0*256+TL0;TH0=TL0=0;if(8000<dtime&&dtime<14000) //9MS的引导码+4.5MS的结束码{for(i=0;i<4;i++){temp=0;for(j=0;j<8;j++){while(!Dat){if(TH0*256+TL0>20000) return;}while(Dat){if(TH0*256+TL0>20000) return;}dtime=TH0*256+TL0;TH0=TL0=0;if(1450<dtime&&dtime<3000) {temp=(temp>>1)|0x80;}//是否为1 else if(700<dtime&&dtime<1450) {temp=(temp>>1)|0x00;}//是否为0}shu[i]=temp;}if(shu[0]==~shu[1]&&shu[2]==~shu[3]) tru=1;//查错}}LCD5110驱动程序:#include<reg52.h>#include "ziku.C"//-----------------管脚定义-------------------------sbit LCD_sce = P2^7; //片选,低最平有效sbit LCD_rst = P2^6; //复位,0复位sbit LCD_dc = P2^5; //1写数据,0写指令sbit LCD_sdin = P2^4; //数据sbit LCD_sclk = P2^3; //时钟//********************************************************************** // NOKIA5110_w_byte : 使用SPI接口写数据到LCD// 输入参数:data :写入的数据;// command :写数据/命令选择;//********************************************************************** void NOKIA5110_w_byte(unsigned char dat,unsigned char command){unsigned char i;LCD_sce=0; //LCD使能LCD_dc=command;//for(i=0;i<8;i++) //传输8位数据(1个字节){if(dat&0x80) LCD_sdin=1;else LCD_sdin=0;dat=dat<<1;LCD_sclk=0;LCD_sclk=1;}LCD_sce=1; //LCD不使能}//**********************************************************************//NOKIA5110_init : LCD初始化//**********************************************************************void NOKIA5110_init(void){unsigned char k;LCD_rst=0;for(k=0;k<250;k++);LCD_rst=1;//-------------------------------------------------------------NOKIA5110_w_byte(0x21, 0); // 使用扩展命令设置LCD模式NOKIA5110_w_byte(0xd0, 0); // 设置偏置电压NOKIA5110_w_byte(0x06, 0); // 温度校正NOKIA5110_w_byte(0x13, 0); // 1:48NOKIA5110_w_byte(0x20, 0); // 使用基本命令NOKIA5110_w_byte(0x0c, 0); // 设定显示模式,正常显示}//**********************************************************************// NOKIA5110_set_XY : 设置LCD坐标函数// 输入参数:X:0-83// Y:0-5//**********************************************************************void NOKIA5110_set_XY(unsigned char x, unsigned char y){NOKIA5110_w_byte(0x40 | y, 0); // 列(竖)NOKIA5110_w_byte(0x80 | x, 0); // 行(横)}//*********************************************************************//写汉字到LCD//*********************************************************************void W_LCD_chinese(unsigned char X,unsigned char Y,unsigned char dat)unsigned char i;NOKIA5110_set_XY(X,Y);for(i=0;i<16;i++) NOKIA5110_w_byte(hanzi[dat][i],1);NOKIA5110_set_XY(X,Y+1);for(i=16;i<32;i++)NOKIA5110_w_byte(hanzi[dat][i],1);}//*********************************************************************//写字符到LCD5110//********************************************************************* void W_LCD_zifu(unsigned char X,unsigned char Y,unsigned char dat){unsigned char i;NOKIA5110_set_XY(X,Y);for(i=0;i<8;i++) NOKIA5110_w_byte(zifu[dat][i],1);NOKIA5110_set_XY(X,Y+1);for(i=16;i<24;i++)NOKIA5110_w_byte(zifu[dat][i],1);}//**********************************************************************//NOKIA5110_clear : LCD清屏//**********************************************************************void NOKIA5110_clear(void){unsigned char t;unsigned char k;NOKIA5110_set_XY(0,0);for(t=0;t<6;t++){for(k=0;k<84;k++)NOKIA5110_w_byte(0x00,1);}}字库:unsigned char code zifu[][32]={{0xF0,0xF8,0x0C,0x04,0x0C,0xF8,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x03,0x07,0x0C,0x08,0x0C,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*以上为"0"的点阵*/{0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*以上为"1"的点阵*/{0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*以上为"2"的点阵*/{0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*以上为"3"的点阵*/{0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*以上为"4"的点阵*/{0x00,0xF8,0x98,0x48,0x48,0x88,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x1C,0x10,0x20,0x20,0x18,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*以上为"5"的点阵*/,0x00,0x00,0x0F,0x19,0x20,0x20,0x30,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*以上为"6"的点阵*/{0x00,0x08,0x08,0x08,0x08,0xE8,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x38,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*以上为"7"的点阵*/{0x00,0x70,0xD8,0x08,0x08,0xD8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x1E,0x31,0x21,0x21,0x31,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*以上为"8"的点阵*/{0x00,0xF0,0x18,0x08,0x08,0x18,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x19,0x33,0x22,0x22,0x19,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*以上为"9"的点阵*/{0x80,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x01,0x00,0x01,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*10以上为"..."的点阵*/{0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*11以上为":"的点阵*/};unsigned char code hanzi[][32]={{0x00,0x08,0x08,0xC8,0x48,0x4A,0x4C,0xC8,0x08,0x08,0xCE,0x0A,0x08,0xE8,0x 08,0x00,0x00,0x00,0x80,0xFF,0x09,0x09,0x49,0x7F,0x00,0x00,0x0F,0x40,0x40,0x7F,0x00,0x00},/*0以上为"前"的点阵*/{0x00,0x40,0x44,0xC8,0x00,0x10,0x10,0x10,0xFE,0x10,0x10,0xFE,0x10,0x10,0x10 ,0x00,0x00,0x60,0x20,0x3F,0x20,0x21,0x51,0x4F,0x41,0x41,0x41,0x5F,0x41,0x41,0x41,0x00},/*1以上为"进"的点阵*/0x00,0x00,0x20,0x3C,0x07,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00},/*2以上为"后"的点阵*/{0x00,0x80,0x84,0x9C,0x00,0x00,0xFC,0x54,0x54,0x54,0x54,0x54,0x7C,0x7C,0x0 0,0x00,0x00,0x40,0x60,0x3F,0x20,0x20,0x5F,0x50,0x48,0x4B,0x42,0x44,0x4E,0x59,0x40,0x00},/*3以上为"退"的点阵*/{0x00,0x00,0x10,0x10,0x10,0x90,0x7C,0x1E,0x10,0x10,0x10,0x10,0x10,0x10,0x10 ,0x00,0x00,0x10,0x10,0x0C,0x46,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x40,0x00},/*4以上为"左"的点阵*/{0x00,0x88,0xE8,0x1E,0xCA,0x08,0x08,0x40,0x48,0xC8,0x7E,0x48,0x48,0x48,0x4 8,0x00,0x00,0x09,0x09,0x09,0x7F,0x09,0x05,0x00,0x10,0x13,0x22,0x72,0xCE,0x06,0x02,0x00},/*5以上为"转"的点阵*/{0x00,0x44,0x64,0xB4,0x94,0x84,0xFC,0x86,0x86,0xFC,0x84,0x84,0x94,0x24,0x4 4,0x00,0x00,0x00,0x00,0x0E,0x0A,0x0A,0x0A,0x0A,0x0A,0xCA,0x4A,0x4A,0x7B,0x18,0x00,0x00},/*6以上为"弯"的点阵*/{0x00,0x10,0x10,0x10,0x10,0x90,0x70,0x1E,0x12,0x10,0x10,0x10,0x10,0x10,0x10, 0x00,0x00,0x08,0x08,0x04,0x43,0x7F,0x21,0x21,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00},/*7以上为"右"的点阵*/{0x00,0x00,0x08,0xC8,0xC8,0x08,0x08,0x08,0xF8,0x88,0x88,0x88,0x88,0x08,0x00 ,0x00,0x00,0x20,0x20,0x3F,0x3F,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00},/*8以上为"正"的点阵*/{0x00,0x00,0x08,0x08,0x88,0xE8,0x38,0x0E,0x08,0x08,0xE8,0x08,0x08,0x08,0x08 ,0x00,0x00,0x04,0x06,0x03,0x7F,0x20,0x21,0x21,0x21,0x21,0x3F,0x21,0x21,0x21,0x20,0x00},/*9以上为"在"的点阵*/{0x00,0x00,0x10,0x90,0xD6,0x30,0x80,0x80,0x08,0x08,0xF8,0x08,0x08,0x08,0xF8 ,0x00,0x00,0x06,0x03,0x01,0x7F,0x03,0x47,0x64,0x30,0x0E,0x03,0x40,0x60,0x7C,0x1F,0x00},/*10以上为"初"的点阵*/,0x00,0x00,0x40,0x63,0x34,0x0E,0x1B,0x10,0x00,0x7E,0x22,0x22,0x22,0x22,0x7E,0x00,0x00},/*11以上为"始"的点阵*/{0x00,0x80,0xC0,0x30,0xFC,0x06,0x00,0x00,0x00,0xFE,0x80,0xC0,0x60,0x10,0x0 0,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x04,0x04,0x02,0x7F,0x41,0x40,0x40,0x60,0x30,0x00},/*12以上为"化"的点阵*/{0x00,0x20,0x10,0xF6,0x00,0x00,0x44,0x54,0x54,0x54,0x7E,0x54,0x54,0x54,0x44, 0x00,0x00,0x00,0x00,0x7F,0x10,0x08,0x00,0xFF,0x15,0x15,0x15,0x15,0xD5,0x7F,0x00,0x00},/*13以上为"请"的点阵*/{0x00,0x40,0x44,0xFC,0xFC,0x46,0x40,0x04,0xD8,0x40,0x7E,0x42,0x50,0xC8,0x0 4,0x00,0x00,0x08,0x06,0x7F,0x7F,0x03,0x06,0x00,0xFF,0x09,0x09,0x09,0x49,0xFF,0x00,0x00},/*14以上为"稍"的点阵*/{0x00,0x00,0x38,0x08,0x68,0x48,0x48,0x4A,0x4E,0x48,0x48,0x68,0x08,0x38,0x00, 0x00,0x00,0x40,0xC1,0x41,0x21,0x1D,0x07,0x01,0x01,0x7F,0x41,0x41,0x41,0x71,0x21,0x00},/*15以上为"完"的点阵*/{0x00,0x00,0x00,0xF0,0x90,0x90,0x90,0x10,0x10,0xFE,0x10,0x12,0xD6,0x10,0x10 ,0x00,0x00,0x40,0x78,0x0F,0x00,0x10,0x5F,0x40,0x60,0x37,0x1C,0x1F,0x61,0x40,0x60,0x00},/*16以上为"成"的点阵*/{0x00,0x10,0x18,0x46,0x46,0x7C,0x44,0x44,0xF0,0x5C,0x46,0x44,0x5C,0x14,0x0 4,0x00,0x00,0x02,0x0A,0x0A,0x0A,0x2A,0x6A,0x0A,0x0B,0xCA,0x4A,0x7E,0x0A,0x0A,0x0A,0x00},/*17以上为"等"的点阵*/{0x00,0x00,0x10,0xCC,0x66,0x20,0x48,0x48,0x48,0x7E,0x4A,0x48,0xC8,0x48,0x4 0,0x00,0x00,0x02,0x01,0x7F,0x00,0x02,0x02,0x0A,0x12,0x02,0x42,0x42,0x7F,0x02,0x02,0x00},/*18以上为"待"的点阵*/{0x00,0x80,0x60,0xFC,0x06,0x88,0xA8,0xA8,0xA8,0xAA,0xAC,0xA8,0xA8,0xA8,0x 88,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x7C,0x24,0x24,0x24,0x24,0x24,0x7C,0x00,0x00},/*19以上为"信"的点阵*/{0x00,0x80,0x80,0xA0,0xBC,0xA4,0xA4,0xA4,0xA4,0xA4,0xA4,0xA4,0xBC,0x80,0x 80,0x00,0x00,0x00,0x00,0x00,0x04,0x07,0x04,0x04,0x44,0x44,0x44,0x74,0x1C,0x00,0x00,0x00},/*20以上为"号"的点阵*/{0x00,0xC0,0x70,0xFE,0x02,0x04,0x14,0x74,0x54,0x56,0x56,0x54,0x54,0x74,0x04 ,0x00,0x00,0x00,0x00,0x7F,0x00,0x03,0x01,0x05,0x45,0x45,0x7D,0x05,0x05,0x05,0x03,0x00},/*21以上为"停"的点阵*/{0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xFE,0x40,0x40,0x40,0x40,0x40,0x00 ,0x00,0x00,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00}/*22以上为"止"的点阵*/};红外遥控器程序:#include<reg52.h>sbit ir=P1^1;//红外输出//sbit P1_0=P1^0;sbit LED=P1^2;sbit qian=P2^1;sbit hou=P2^2;sbit zuo=P2^5;sbit you=P2^7;bit flag;unsigned int flag1;//=====================================//MS延时函数//=====================================void delayms(ms){while(ms--)for(i=0;i<120;i++);}//=====================================//定时器T0初始化//=====================================void T0_init(void){TMOD=0x02;TH0=0xe6;TL0=0xe6;EA=ET0=1;}//====================================//定时器T0中断函数//====================================void Timer0(void) interrupt 1{flag1++;if(flag) ir=~ir;else ir=0;}//===================================//数据处理//=================================== void cend_data(unsigned char add,unsigned char dat){unsigned char unadd,undat;unsigned char i;unadd=~add;undat=~dat;TH0=0xe6;TL0=0xe6;LED=~LED;flag1=0;flag=1;while(flag1<300); //9MS初始码flag1=0;flag=0;while(flag1<150);//4.5MS结束码for(i=0;i<8;i++) //发送用户码{flag1=0;flag=1;while(flag1<18);bir=(add>>i)&0x01;flag1=0;flag=0;if(bir==0x01) while(flag1<56);else while(flag1<18);}for(i=0;i<8;i++) //发送用户反码{flag1=0;flag=1;while(flag1<18);bir=(unadd>>i)&0x01;flag1=0;flag=0;if(bir==0x01) while(flag1<56);else while(flag1<18);}for(i=0;i<8;i++) //发送数据码{flag1=0;flag=1;while(flag1<18);bir=(dat>>i)&0x01;flag1=0;flag=0;if(bir==0x01) while(flag1<56);else while(flag1<18);}for(i=0;i<8;i++) //发送数据反码{flag1=0;flag=1;while(flag1<18);bir=(undat>>i)&0x01;flag1=0;flag=0;if(bir==0x01) while(flag1<56);else while(flag1<18);}flag1=0;flag=1;while(flag1<10);flag=0;}//=============================//主函数//=============================void main(void){T0_init();//TR0=1;LED=0;while(1){if(!qian==1&&zuo!=0&&you!=0)//前进{TR0=1;while(!qian==1&&zuo!=0&&you!=0) {cend_data(0x08,0x20);delayms(100);}TR0=0;LED=0;}elseif(!hou==1&&zuo!=0&&you!=0)//后退{TR0=1;while(!hou==1&&zuo!=0&&you!=0) {cend_data(0x08,0x30);delayms(100);}TR0=0;LED=0;}elseif(!zuo==1&&!qian==1)//前左转弯{TR0=1;while(!zuo==1&&!qian==1) {cend_data(0x08,0x40);delayms(100);}TR0=0;LED=0;}elseif(!you==1&&!qian==1)//前右转弯{TR0=1;while(!you==1&&!qian==1) {cend_data(0x08,0x50);delayms(100);}TR0=0;LED=0;}elseif(!zuo==1&&!hou==1)//后左转弯{TR0=1;while(!zuo==1&&!hou==1) {cend_data(0x08,0x60);delayms(100);}TR0=0;LED=0;}elseif(!you==1&&!hou==1)//后右转弯{TR0=1;while(!you==1&&!hou==1) {cend_data(0x08,0x70);delayms(100);}TR0=0;LED=0;}else //停止{TR0=1;cend_data(0x08,0x80);delayms(50);TR0=0;LED=0;}}}。
基于单片机的智能小车设计基于单片机的智能小车设计引言智能小车是近年来快速发展的一种智能设备,它可以根据程序控制自主地移动、避障、遥控等,具有广泛的应用前景。
本文将介绍基于单片机的智能小车的设计方案,包括硬件设计和软件实现。
硬件设计主控模块智能小车的主控模块采用单片机,常见的选择有Arduino、Raspberry Pi等。
在本设计中,我们选择了Arduino Uno作为主控模块,因为它价格实惠,易于上手,且具有丰富的扩展模块。
电源模块智能小车的电源模块可以选择直流电池,输入电压需符合主控模块和驱动模块的工作电压范围。
为了保证电池寿命和安全性,建议加装合适的电池保护模块,以防止过充、过放等问题。
驱动模块智能小车需要具备前进、后退、左转、右转等动作,因此需要使用驱动模块控制电机的转动。
常见的驱动模块有L298N、TB6612FNG等,可以根据实际需求选择合适的驱动模块。
传感器模块为了实现智能小车的避障功能,需要添加传感器模块来检测前方障碍物。
常见的选择有红外传感器、超声波传感器等。
在本设计中,我们选择了HC-SR04超声波传感器,它具有较高的测距精度和稳定性。
编码器模块为了实现智能小车的精确控制和位置监测,可以添加编码器模块来监测电机的转速和转向。
编码器模块可以是光电编码器、磁编码器等。
软件实现智能小车的软件实现主要涉及以下几个方面:控制算法智能小车的控制算法可以使用PID算法、模糊算法等。
PID算法是一种经典的控制算法,通过对速度和位置误差进行调节,实现小车的平稳运动。
遥控功能为了方便用户操作,可以添加无线遥控模块,实现对智能小车的遥控功能。
常见的无线遥控模块有蓝牙、Wi-Fi等。
避障功能智能小车的避障功能可以利用传感器模块实现。
通过检测前方障碍物的距离,如果距离过近,则停车或转向避开障碍物,保证小车的安全运行。
数据通信如果需要将智能小车的状态数据传输到其他设备,可以添加数据通信模块,如串口、无线模块等。
基于单片机的红外遥控智能小车设计报告毕业设计(论文)题目:基于单片机的红外遥控智能小车西安邮电学院毕业设计(论文)任务书学生姓名指导教师职称工程师学院电子工程学院系部光电子技术专业光电信息工程题目基于单片机的红外遥控智能小车任务与要求任务:以51单片机为控制核心,实现具有自动避障、加速、减速等功能的红外遥控智能小车。
要求:1 搜集资料,熟悉单片机开发流程;熟悉红外传感器等相关器件;掌握单片机接口和外围电路应用;具备一定的单片机开发经验。
2 学会电路设计、仿真等相关软件的使用;3 具备一定的硬件调试技能。
4 学会查阅资料;5 学会撰写科技论文。
开始日期2010年3月22日完成日期2010年6月27日主管院长(签字) 年月日西安邮电学院毕业设计 (论文) 工作计划学生姓名赵美英指导教师崔利平职称工程师学院电子工程学院系部光电子技术专业光电信息工程题目基于单片机的红外遥控智能小车工作进程主要参考书目(资料)1、何立民,单片机应用系统设计,北京:航天航空大学出版社;2、李广弟,单片机基础,北京:北京航空航天大学出版社,2001;3、何立民,MCS-51系列单片机应用系统设计系统配置与接口技术,北京航空航天大学出版社,1990.01;4、赵负图,传感器集成电路手册,第一版,化学工业出版社,2004;5、Atmel.AT89S51数据手册.主要仪器设备及材料1.普通计算机一台,单片机开发环境;2.电路安装与调试用相关仪器和工具。
(如示波器、万用表、电烙铁、镊子、钳子等)。
论文(设计)过程中教师的指导安排每周四进行交流与总结;其余时间灵活安排,及时解决学生问题。
对计划的说明依学生实际情况,适当调整工作进度。
西安邮电学院毕业设计(论文)开题报告电子工程学院光电子技术系(部)光电信息工程专业2006 级光电0601班课题名称:基于单片机的红外遥控智能小车学生姓名:赵美英学号:05064028指导教师:崔利平报告日期: 2010年3月25日说明:本报告必须由承担毕业论文(设计)课题任务的学生在毕业论文(设计) 正式开始的第1周周五之前独立撰写完成,并交指导教师审阅。
西安邮电学院毕业设计 (论文)成绩评定表西安邮电学院毕业论文(设计)成绩评定表(续表)目录摘要 (I)Abstract.................................................................................................................................... I I 第1章引言.. (1)第2章系统硬件设计及原理简介 (2)2.1 单片机控制系统 (2)2.1.1 AT89S52各引脚描述 (2)2.1.2 定时器/计数器2 (4)2.1.3 单片机最小系统 (6)2.2 液晶显示 (6)2.2.1 1602LCD接口引脚说明 (7)2.2.2 LCD的控制方法 (7)2.2.3 液晶与单片机连接电路 (10)2.3 温度测量电路 (10)2.3.1 DS18B20产品的主要特点 (10)2.3.2 DS18B20的引脚介绍 (11)2.3.3 DS18B20的使用方法 (12)2.3.4 DS18B20控制电路 (13)2.4 红外遥控 (14)2.4.1 红外遥控器 (14)2.4.2 红外接收头 (15)2.5 直流电机驱动 (16)2.6 按键中断电路 (18)2.7 避障电路 (18)第3章系统软件设计 (19)3.1 主程序 (19)3.2 液晶驱动子程序 (19)3.3 温度检测子程序 (20)3.4 电机驱动子程序 (21)3.5 速度调整子程序 (22)3.6 红外解码子程序 (23)第4章硬件安装及调试总结 (25)第5章结论 (26)致谢 (27)参考文献 (28)附录1:源程序 (29)1 main.c (29)2 1602c.h (31)3 ds18b20.c (33)4 TC9012.h (36)5 speed.h (38)附录2: (40)1 电路原理图 (40)2 PCB图 (41)3 元件清单 (42)摘要主要介绍了一款具有红外遥控、自动避障、温度检测等功能的智能小车的设计与制作,并详细介绍了单片机、温度传感器、1602LCD的原理及应用。
该小车以玩具小车为车体,以AT89S52单片机为整个系统的控制核心,控制由三极管组成的桥电路来驱动直流电机。
使小车运动,采用HS0038红外一体接收头接收遥控信号,由单片机解码,实现对小车的遥控控制,红外二极管及HS0038红外接收头组成小车的自动避障电路。
为了实时观察小车运行状态,还配备了指示灯以显示小车行进方向。
另外,温度检测及显示电路可实现温度的实时监测。
本系统采用模块化设计,软件用C语言编写,采用了软件的多任务结构,提高了CPU的利用率和系统的灵活性。
本设计结构简单,较容易实现,具有高度的智能化和自动化。
关键词:AT89S52 直流电机红外遥控HS0038 解码AbstractThis article introduces an infrared remote control with automatic obstacle avoidance, the temperature detection function of the intelligent car design and production. The Principle and Application of microcontroller, temperature sensor and 1602LCD is the focus of the system.The car to toy car for the body to AT89S52 microcontroller core of the w- hole system of control, control the composition of the bridge from the transis- tor to drive the DC Circuit. Make car movement, one infrared receiver with HS0038 first to receive remote control signals for the MCU decoding, achiev- ing control of the car's remote control, infrared diode and the composition of car HS0038 infrared receiving circuit of automatic obstacle avoidance. In or- der to observe the car running real-time, is also equipped with lights to show the car moving direction. In addition, the temperature detection and display circuit can realize real-time monitoring of temperature.The system is modular in design, software written using C language, using the software's multi-task structure, increase the CPU utilization and system flexibility. The design is simple, relatively easy to implement, with a high degree of intelligence and automation.Key words:MCU DC motor Infrared Remote Control HS0038 Decode第1章引言单片机以其强大的控制能力已经被广泛应用于诸多领域,配以各种外部接口及传感器可以实现系统的智能化与自动化。
无论是在工业控制、医疗卫生,还是在国防军事、航天航空领域,微控制器都起着举足轻重的作用。
从最初的8位控制器到现在的16位、32位控制器都还有很大的发展和应用空间。
随着经济的不断发展,人们的生活水平也在不断的提高,车已经成为生活水平高低的一种象征。
大人想要一辆真正的车,小孩子也想要一辆属于自己的车。
此次设计的遥控小车,具有遥控的功能,可以模拟真的小车,更是小朋友们心中理想的玩具。
今天,电子行业也发展的非常快,电子产品的价格在不断的下调,所以这款遥控小车的电子元件的成本已经不是很高,集成芯片的工艺也不断更新,功能也非常强大,所以设计这种遥控小车已经不是难事。
智能遥控车的设计包含机械系统构建、控制系统硬件配置、传感技术、控制算法的程序编写等。
通过对这些技术的研究讨论,能更进一步了解现代智能技术。
本次设计的这款智能遥控小车在普通玩具车小车的机械部分做了改进,使之可以实现左右转向和前进速度控制,因此更加接近真实的车辆。
“智能遥控车”运用单片机和红外传感器控制小车运动。
遥控器采用普通电视遥控器,接收部分采用专用的红外接收头接收,能够将接收到的信号解调去掉载波,输出脉宽不等的脉冲,将信息送给单片机进行处理,送出控制信号来控制小车的前进、后退、左右转弯、加减速,H桥电路来控制电机的正反转来实现小车的前进后退。
另外该小车还具有检测温度并显示的功能,可实现温度的实时监测。
第2章系统硬件设计及原理简介按照设计要求,系统可以分为以下几个基本功能模块:遥控接收模块、液晶显示模块、电机驱动模块、避障模块、温度检测模块等。
系统结构框图如图2-1所示。
图2-1 系统结构框图有些模块的功能是由硬件完成,有些模块的功能由软、硬件配合完成。
下面将详细介绍各模块的基本原理及设计方法。
2.1 单片机控制系统AT89S52 是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。