收藏 分销(赏)

基于无线控制的智能小车系统的设计设计.doc

上传人:精**** 文档编号:2487089 上传时间:2024-05-30 格式:DOC 页数:44 大小:3.31MB
下载 相关 举报
基于无线控制的智能小车系统的设计设计.doc_第1页
第1页 / 共44页
基于无线控制的智能小车系统的设计设计.doc_第2页
第2页 / 共44页
点击查看更多>>
资源描述
(完整word)基于无线控制的智能小车系统的设计设计 基于无线控制的智能小车 摘 要:本文针对基于无线控制的智能小车的设计和研究,首先对系统的总体设计加以介绍,概括了智能小车的主要作用及其工作模式,并介绍了智能小车的主要元器件;然后详细介绍了系统的硬件以及软件设计,硬件方面,重点研究了温度采集模块、红外避障模块和无线收发模块,软件方面详细讲解了上位机人机交互界面的设计、避障设计以及无线通信的数据处理;最后,总结了系统测试结果并对本设计的发展前景做了概述。 关键词:单片机;上位机;红外线;避障;温度检测;无线通信 The intelligent car Based on wireless control Abstract: In this paper, the overall description of the smart car, which is base on the wireless control, is introduced its design and research。 First introduced is the overall design of the system, and describes the major function, operating mode and the main components of the smart car; then analyses the system’s hardware and software design in detail。 Hardware side, the focus is on the temperature acquisition module, infrared obstacle avoidance module and wireless transceiver module; The software has a detailed account of the host-computer interactive interface design, the design of the obstacle avoidance and wireless communication’s data processing; Finally summaries up the test results of this system and has an overview of the prospects for the development of this design. Keywords: MCU; upper computer; Infrared ray; Obstacle avoidance; Temperature detection; Wireless communication 1. 绪论 1.1课题的背景及意义 1.1。1课题背景 未来是充满科学技术的新时代,而智能化[1]正是科学技术的重要体现。在一定程度上,智能化的发展能够带动一些相关领域的发展。因此,智能化将是新世纪的一个重要前进方向. 随着科学技术的不断发展,应运而生的是各种机器人的更新换代。至今,机器人从示教型机器人,发展到可离线编程的工业机器人,再到如今的智能机器人。机器人的发展步伐不断加快.从上个世纪六十年代起,关于机器人的移动问题,人类做了很多研究设计。主要有以下几方面: 1) 机器人移动方式; 2) 机器人驱动控制方式; 3) 机器人行走的路径规划. 从机器人移动方式方面来分类,主要有模拟人类行走的腿式机器人、有模拟坦克的履式机器人、以及模拟汽车行驶的轮式机器人。 作为轮式机器人,智能小车是智能系统[2~3]的一个典型代表,它综合了自动控制技术、驱动技术、传感器技术和信息处理技术等多学科知识,具有实用性强和应用范围广的特点。随着技术的发展,智能小车[4]的应用范围在不断扩大,遍及工业、抢险救灾、海洋开发、宇宙空间以及人类生活的各个方面,对人类生活产生巨大影响。 1。1。2研究意义 智能技术改变了人类的社会生活,对人类生活生产方式产生了巨大影响。近年来,随着人类社会现代化的步伐不断加快,人类迫切需求更多智能化产品的出现,以改善人类现有的生活和生产方式。进一步提高生活质量,提升生产效率。 智能小车的出现从实际上改变了工业生产面貌,使人类生产从手工化逐步过渡到机械化、智能化。智能小车,能够适应各种恶劣环境,通过远程控制的方式,可以在完全不需要人类实际参与的情况下,安装预期目标完成作业.本课题所研究的智能小车,可以应用到多个领域如粮库检测,矿下探测,危险未知区域的信息采集等.这里以信息采集为例,主要采集温度信息.运用智能小车,可以减少劳动力、提高工作效率并避免一些安全事故。 1.2 基于无线控制的智能小车系统概述 1.2。1基于无线控制的智能小车系统组成 本系统主要组成部分包括:上位机、单片机、电机驱动、温度采集、红外避障等部分。其总体框架见图1. 图1 系统总体框架图 1) 电机驱动模块 该模块主要完成小车驱动功能。根据接受到的单片机控制信号,变动输出电平,控制电机转向,从而实现对小车运动的控制。 2) 温度采集模块 该模块主要负责采集温度,并将转换后的温度信息传给单片机,进行温度显示和传输。 3) 红外避障模块 此模块主要功能是是小车在行驶过程中避开障碍物。通过检测小车前方的障碍物,并将检测信息发送给单片机,从而控制小车转向,达到避障效果。 4) 单片机模块 这是系统下位机的核心模块.它能接受上位机的信息,控制小车的行驶。同时,将检测到的信息反馈给上位机,进行实时显示。 5) 上位机模块 此模块是主要功能是对小车进行远程控制,并接受小车反馈的信息,进行实时显示. 1.2。2基于无线控制的智能小车系统特点 本系统融合了信息采集、无线传输、远程控制等技术,设计出了无线控制的智能小车。该系统成本低,实用性强,具有广泛的应用前景. 1。3本课题主要研究内容 本课题的主要研究内容包括: (1)小车的硬件设计。主要介绍小车所选取的硬件及其功能和详细参数。在下位机控制方面,以STC89C52单片机作为控制中心。此外,还介绍了避障模块、信息采集模块、小车驱动模块的硬件设计。 (2)避障设计。采用红外传感器[5]来识别障碍物。利用红外避障,对近距离障碍物反应灵敏,障碍物感应距离可以调节,而且不会有造成信号干扰.当遇到障碍物时,能够很快发出低电平信号,传送给单片机,控制小车转向,到达避障目的。 (3)无线通信[6~7]。整个系统由上位机和下位机组成,上位机和下位机的信息交流是通过无线形式的方式进行的。上 位机要控制小车,必须通过无线形式发送控制命令,小车要发送温度信息到上位机也必须通过无线信息。因此,实现无线通信时系统控制实现的关键.通过无线收发模块,可以实现信息的无线发送和接受,只要按照预先设定好的通信协议进行数据传输,就能实现上位机和下位机的信息交换。 (4)人机交互界面。小车是通过PC终端来控制的,要想让小车按照人的意愿进行运行,就要设置好人与计算机的信息交流。通过LabVIEW[8]编程环境,建立人机交互界面,实现这一功能。 (5)进行实车实验,对小车进行调试. 2系统硬件电路的设计 2。1系统总体设计 本系统以小车模型为平台,通过控制小车的运动,让小车到达预期的目的地,从而对该地区进行信息采集,并将采集到的信息以无线传输的方式,发送到PC终端。小车可四轮独立驱动,车体上搭载有51单片机最小系统[9~10]、温度传感器、红外避障模块、电机驱动模块以及无线收发模块。系统可分为两种工作模式: (1)远程控制模式 该模式下,PC终端通过无线发送模块,将对小车的控制信息发送给小车,小车通过无线接受模块接受到信息后,按照收到的运动信号运动到目的地,小车行驶的同时,进行采集信息,并通过无线发送模块将信息回发给PC终端。 (2)自动模式 选择自动模式后,小车的运动将不会受到PC终端的控制,小车将以51单片机最小系统为“大脑”,进行自行运动。在该模式下,小车能够自行的向前运动,由于车体上搭载有红外避障模块,小车可以随时检测障碍物。当遇到障碍物时,红外避障传感器能够检测到障碍物具体位置,并将障碍物位置信息传送给小车“大脑",单片机按照给定程序进行分析判断,控制小车转向,从而避开障碍物。与此同时,小车不断采集信息,并将采集到得信息通过无线发送模块,发给PC终端。 总体方案设计如图2 图2 系统总体方案图 本课题采用ZK-4WD小车模型,为竞技比赛常用车型。该模型主要包括四个轮子、四个电机、一个底盘。 小车模型如图3 图3 ZK—4WD小车模型图 ZK-4WD小车模型有以下几个优点: 1) 机械结构简单,非常方便安装。 2) 采用四个减速直流电机转弯灵活,方向性好。四轮电机驱动,马力实足,使在斜坡、凹凸不平的路面上也能够行驶。 3) 小车自带测速码盘,可以迅速组成一套测速系统。可以测速,测距. 4) 底盘大而稳,并且有很多小孔,可直接安装其他模块,非常容易扩展. 5) 车体几乎全为塑料,质量很轻,而且车体较小。整体轻便小巧,运动灵活,方便控制,对电量损耗小,能够持久工作。 2.2电源模块 本系统采用可充电电池为电源,保证系统正常工作。小车模型系统中,需要供电的模块有:电机及其驱动模块、温度传感器模块、单片机最小系统模块、红外避障模块、无线收发模块。 整个系统由全部硬件电路的电源由6V、1300mA的可充电镍镉电池提供。各个硬件所需电源最终都由电池供电,其中由于各个硬件所需电源参数不同,所以需要经过电机驱动模块进行转换后才能使用。在本系统中,电机驱动模块的电源是直接取自电池,而电机模块,温度传感器模块,红外避障模块,以及单片机都是经过电机驱动模块将电压转换才能供电。 整个电源模块的电路结构如图4所示 图4 电源模块的电路结构 2.3 电机及其驱动模块 2.3。1电机模块 小车的运动时靠直流电机[11]来实现的,通过控制直流电机的转动方向来控制小车的运动方向。 直流电机的工作原理是直流电机里边固定有环状永磁体,电流通过转子上的线圈产生洛伦兹力,当转子上的线圈与磁场平行时,再继续转受到的磁场方向将改变,因此此时转子末端的电刷跟转换片交替接触,从而线圈上的电流方向也改变,产生的洛伦兹力方向不变,所以电机能保持一个方向转动.当流入电机的直流电流方向改变时,相应地电机转向也改变。 本课题采用的是小型直流电机,其额定电压为3V-6V,空载时转速为100—240转/分,额定电流100—120mA。电机的具体参数如表1。 表1 电机参数 属性 参数 工作电压 DC 3V DC 5V DC 6V 工作电流 100mA 100mA 120mA 空载 100转/分 190转/分 240转/分 空载速度 20转/分 39转/分 48转/分 轮胎直径 6。6cm 重量 50kg 外形尺寸 70mm*22mm*18mm 噪声 〈65db 2.3.2电机驱动模块L293D 电机驱动模块使用L293D 电机驱动芯片。该模块可以直接驱动4路3-16V直流电机,输入接口为6V-15V,并提供了5V输出接口,可以给 5V 单片机电路系统供电,可以方便的控制直流电机速度和方向,也可以控制2相步进电机,5线4相步进电机。电机驱动模块L293D如图5 图5 电机驱动模块L293D实物图 产品参数: 1).驱动芯片:L293D 双 H 桥直流电机驱动芯片(两片) 2).驱动部分端子供电范围 Vs:+5V~+16V ; 如需要板内取电,则供电范围 Vs:+6V~+16V 3)。驱动部分峰值电流 Io:1A 4).逻辑部分工作电流范围:0~36mA 5).控制信号输入(IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8)电压范围: 低电平:-0。3V≤Vin≤1。5V;高电平:2.3V≤Vin≤Vss 6)。使能信号输入(EN1 EN2 EN3 EN4)电压范围: 低电平:-0。3≤Vin≤1.5V(控制信号无效);高电平:2。3V≤Vin≤Vss(控制信号有效) 7)。存储温度:-25℃~+130℃ 其电路原理图如图6 图6 电机驱动模块电路原理图 其驱动电路的设计如图7所示 图7 L298电机驱动电路图 管脚接口说明如表2 表2 管脚接口 电机驱动L298 电 机 IN1 IN2 电机1 的控制端 IN3 IN4 电机2 的控制端 EN1 电机1 的使能端 EN2 电机2 的使能端 控制端的使用说明如表3 表3 控制端的使用说明 IN 1 IN 2 EN 1 电机 * * 0 不转 0 1 1 正转 1 0 1 反转 1 1 1 不转 0 0 1 不转 本系统将电机驱动模块IN 端与单片机的P1口相连接,实现对电机的控制,具体连接方法如表4 表4 电机驱动与单片机的接口 单片机引脚 电机引脚 P10 P11 控制左后方电机 P12 P13 控制左前方电机 P14 P15 控制右前方电机 P16 P17 控制右后方电机 2.4温度传感器模块 本系统选用DS18B20温度传感器[12~14],为“一线总线"接口的传感器。测量温度范围为—55°C~+125°C,在—10~+85°C范围内,分辨率可达到0。0625℃。温度信息以“一线总线”的数字信号进行传输,系统抗干扰性得以提高。适用于大多数环境的温度测量. 2。4。1“一线总线"特征: 1) 独特的电源和信号复合在一起 2) 仅使用一条口线 3) 每个芯片唯一编码,支持联网寻址 4) 简单的网络化的温度感知 5) 零功耗等待 2.4。2 DS18B20 的特点: 1) 独特的单线接口仅需一个端口引脚进行通讯 。 2) 简单的多点分布应用 。 3) 无需外部器件 。 4) 可通过数据线供电 . 5) 零待机功耗 。 6) 适用电压为 3V~5V. 7) 测温范围-55~+125℃,以 0。5℃递增。华氏器件-67~+2570F,以 0。90F 递增 . 8) 温度以9位数字量读出. 9) 温度数字量转换时间 200ms(典型值) 。 10) 应用包括温度控制、工业系统、消费品、温度计或任何热感测系统。 引脚排列如图8 图8 引脚排列 硬件设计中,DQ脚与单片机的P2。2口相连,进行数据传输.GND和VDD连接到电机驱动模块相应管脚.DS18B20方框图如图9。 图9 DS18B20方框图 2.5单片机模块 系统选用STC89C52单片机[15~17]作为下位机的控制核心.STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器(ROM)和256 bytes的随机存取数据存储器(RAM)。STC 89C52单片机在电子行业中有着广泛的应用.且该单片机可以不用专门的烧写器而直接使用串口或并口就可以向单片机中下载程序,非常方便。其总体机构包括: 1) 8位CPU 2) 4K字节内部程序存储器 3) 128字节内部数据存储器 4) 2个16位定时器/计数器 5) 1个全双工的异步串行口 6) 4个8位的I/O口(P0,P1,P2,P3) 单片机管脚如图10 图10 STC89C52单片机管脚图 主要引脚介绍:       1) 主电源引脚 VCC(40脚):接+5 V电源正端. GND(20脚):接+5 V电源地端。 2) 外接晶体引脚 XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。 XTAL2(18脚):接外部石英晶体的另一端.在单片机内部,它是一个反相放大器的输出端.当采用外部振荡器时,接收振荡器信号。 3) 输入/输出引脚: P0口(39~32脚):P0.0~P0.7统称为P0口。在不接片外存储器与不扩展I/O口时,可作为准双向输入/输出口。在接有片外存储器或扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。 P1口(1~8脚):P1.0~P1。7统称为P1口,可作为准双向I/O口使用。 P2口(21~28脚):P2.0~P2.7统称为P2口,一般可作为准双向I/O口使用;在接有片外存储器或扩展I/O口且寻址范围超过256字节时,P2口用作高8位地址总线。 P3口(10~17脚):P3。0~P3。7统称为P3口。除作为准双向I/O口使用外,还可以将每一位用于第二功能,而且P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。 4) 控制线 ALE/PROG(30脚):运行方式时,ALE为外部存储器低8位地址锁存信号;FLASH编程方式时,该引脚用作编程脉冲输入端。 RST (9脚):该引脚为单片机的上电复位端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机回复到初始状态。 PSEN(29脚):片外程序存储器读选通信号输出端,低电平有效。当从外部程序存储器读取指令或常数期间,每个机器周期该信号两次有效,以通过数据总线P0口读回指令或常数。在访问片外数据存储器期间,PSEN信号将不出现。 EA/VPP(31脚):EA为片外程序存储器选用端。该引脚有效(低电平)时,只选用片外程序存储器,否则单片机上电或复位后选用片内程序存储器;FLASH编程方式时,为编程电源输入端VPP。 2.6红外避障模块[18] 该红外传感器可以检测前方0—80CM(可以调节)障碍物,三线NPN输出型。前方无障碍输出高电平,有障碍输出口(黄色)电平会从高电平变成低电平。检测距离可以根据要求进行调节,通过电位器可以调节障碍的检测距离。该传感器具有探测距离远、受可见光干扰小、反应灵敏等特点. 系统使用三个红外传感器,分别按照与小车车身的前、左、右三个位置,可以分别检测前、左、右三个方向的障碍物。 红外传感器实物如图11 图11 红外传感器实物图 红外传感器原理图如图12 图12 红外传感器原理图 红外传感器管脚定义如表5 表5 红外传感器管脚定义 管脚 接法 红色 接4。5—5V电源高电平 黄色 接单片机,输出TTL电平给单片机 黑色 接GND 0V电源低电平 2.7无线收发模块 系统选用APC220-43无线收发[19]模块。APC220是一块低功率无线模块,其特点如下: 1) 1200米传感距离; 2) 工作频率418—455MHz; 3) 灵活的软件编程选项设置; 4) 内置看门狗,保证长期可靠运行; 5) 适合大数据量传输。 APC220—43实物图如图13 图13 APC220-43实物图 图14 串口助手软件图 APC220模块操作简单,使用时将其视为一个串口设备,几乎不对其编程,只需要将两个APC220模块的参数设置成一样即可。设置参数可以在程序中完成,也可以通过串口助手软件完成。通过串口助手软件可以设置模块的通信频段和波特率等参数.串口助手软件如图14所示。 APC220的技术指标如表6 表6 APC220的技术指标 属性 参数 工作频率 418MHz to 455MHz (1KHz步进) 调制方式 GFSK 频率间隔 200KHz 发射功率 20mw (10级可调) 接收灵敏度 —118dBm@1200bps 空中传输速率 2400—9600bps 接口速率 1200—57600bps 接口效验方式 8E1/8N1/8O1 接口缓冲空间 256bytes 工作湿度 10%~90%(无冷凝) 工作温度 -30℃ — 85℃ 电源 3.4 – 5。5V (±50mV 纹波) 发射电流 ≦35mA@10mW 接收电流 ≦28mA 休眠电流 ≦5uA 传输距离 1200米传输距离 (1200bps开阔地可视距离) 尺寸 37。5mm x 18.3mm x 7.0mm APC220-43模块共有 9 个接脚,具体定义如表7: 表7 APC220—43接脚定义 引脚 定义 说明 1 GND 接地 2 VCC 3。4V-5.5V 3 EN 电源使能端,≧1。6V或悬空使能,≦0.5V休眠。 4 RXD URAT输入口,TTL电平。 5 TXD URAT输出口,TTL电平。 6 AUX UART口的收发指示输出,低接收,高输出。7 7 SET 参数设置,低有效. 8 NC 空脚。 9 NC 空脚。 模块与终端设备的连接如图15 图15 APC220-43与终端设备的连接 APC220—43与单片机的管脚连接如表8 表8 APC220-43与单片机的管脚连接 APC220-43模块 单片机 TXD P3。0 RXD P3.1 VCC VCC GND GND 3 系统的软件设计 与系统硬件相对应,系统的软件是整个系统的灵魂。整个系统在软件的作用下才能开始运行。系统软件通过对各种机械动作的运算、加工、处理,转换成命令信号,发送到系统各个部分,从而对整个系统进行控制。系统软件设计的好坏,直接关系到系统运行的效率、精确性、稳定度。 本系统的软件设计采用模块化机构,对各个功能部件实行分块设计。整个软件系统包括小车运动模块、避障模块、LED显示模块、温度采集模块、中断模块、串口通信模块、无线通信模块、上位机处理模块. 软件系统整体结构如图16 图16 软件系统整体结构 3.1上位机主程序 上位机是整个系统最高指挥官,由上位机发送各种指令到下位机,下位机进行运算处理,并给出相应回应,从而控制整个系统工作。上位机通过PC终端设备来实现,PC终端设备上建立人机交互界面,通过人机交互界面,可以实现人与计算机的交流,并将人的命令通过人机交互界面发送给整个系统. 人机交互界面如图17 图17 人机交互界面 如图17,上位机的人机交互界面有控制部分和显示部分界面,显示部分包括温度的波形显示、温度计显示、串口资源显示,当前温度值数字显示;控制部分包括小车的远程控制和小车的自动控制。 3.1.1上位机开发环境介绍LabVIEW 本系统的上位机通过LabVIEW来实现编程控制。LabVIEW[20] 是美国国家仪器(NI)公司所研制开发的,作为一种程序开发环境,与C和BASIC开发环境相类似,但是LabVIEW有不同于其他开发环境的部分: LabVIEW的编程语言是G语言,一种图形化编辑语言,其程序的形式是框图.“G”语言[21] 作为一种图形化的程序语言,使用时,只需要编辑程序框图,不用写程序代码,能很大程度上提升工作效率。 LabVIEW编译平台包括前面板(如图18)和程序框图(如图19)两部分组成 如图18 前面板图 如图19 程序框图图 前面板中有丰富的输入控件(如图20),和显示控件(如图21),能模仿实际仪器,非常方便地对数据信号进行显示和控制。 输入控件(如图20) 显示控件(如图21) 程序框图中,通过G语言,实现对数据信息的处理和控制,并能对串口工作方式进行设置,如图22. 图22 串口设置图 上位机G语言总程序框图如图23 图23 上位机G语言总程序框图 3。1.2上位机主要功能 1) 发送小车运行模式的控制命令。 2) 在远程控制模式下,发送小车运动指令,控制小车运动方向。 3) 无线发送数据。 4) 无线接收温度信息。 5) 实时显示温度信息。 上位机进入运行状态后,等待控制命令。当发出控制命令后,首先判断运动模式,若为自动模式,则小车自行运动,并发出温度信息到上位机处,上位机接受到温度信息后,进行实时显示;若为远程控制模式,则小车按照接受到的运动命令进行行驶,并发出温度信息到上位机处,上位机接受到温度信息后,进行实时显示。 上位机主程序流程框图如图24 图24 上位机主程序流程框图 3。2下位机主程序 3.2.1单片机控制 下位机用单片机STC89C52为核心控制系统,以C语言为开发环境。下位机结构如图25。 图25 下位机程序结构图 3.2。2温度采集子程序 本系统使用DS18B20温度传感器,温度数据关系如表9所示。 表9 DS18b20温度数据关系 温度℃ 数据输出(二进制) 数据输出(十六进制) +125 00000000 11111010 +25 00000000 00110010 +1/2 00000000 00000001 0 00000000 00000000 -1/2 11111111 11111111 FFFF —25 11111111 11001110 FFCE -55 11111111 10010010 FF92 温度采集子程序包括:初始化,读一个字节,写一个字节,读取温度。当需要读取温度信息时,首先向温度传感器写入数据信息,完成初始化命令,再次写入数据,使其开始转换温度信息,最后再发出命令,完成温度读取.子程序如下: void Init_DS18B20(void)//初始化ds1820 { unsigned char x=0; DQ = 1; //DQ复位 Delay(8); //稍做延时 DQ = 0; Delay(80); //精确延时 大于 480us DQ = 1; //拉高总线 Delay(14); x=DQ; Delay(20); } unsigned char ReadOneChar(void) //读取一个字节数据 { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; dat〉>=1; DQ = 1; if(DQ) dat|=0x80; Delay(4); } return(dat); } void WriteOneChar(unsigned char dat)//写一个字节 { unsigned char i=0; for (i=8; i〉0; i—-) { DQ = 0; DQ = dat&0x01; Delay(5); DQ = 1; dat>>=1; } } unsigned int ReadTemperature(void)//读取温度 { unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器 a=ReadOneChar(); //读低8位 b=ReadOneChar(); //读高8位 t=b; t<〈=8; t=t|a; tt=t*0。0625; t= tt*10+0。5; //放大10倍输出并四舍五入 return(t); } 3。2.3电机子程序 小车采用四轮驱动,使小车驱动力增强,并可以原地360度转弯。电机驱动模块接口连接在单片机P1口。通过改变P1口的管脚的电平信号,来改变电机转动方向,从而改变小车运动。部分子程序如下: #define Left_moto_go {P1_0=0,P1_1=1,P1_2=0,P1_3=1;} //左边两个电机向前走 #define Left_moto_back {P1_0=1,P1_1=0,P1_2=1,P1_3=0;} //左边两个电机向后转 #define Left_moto_Stop {P1_0=0,P1_1=0,P1_2=0,P1_3=0;} //左边两个电机停转 #define Right_moto_go {P1_4=0,P1_5=1,P1_6=0,P1_7=1;} //右边两个电机向前走 #define Right_moto_back {P1_4=1,P1_5=0,P1_6=1,P1_7=0;} //右边两个电机向前走 #define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;} //右边两个电机停转 void run(void) //前进 { Left_moto_go ; //左电机往前走 Right_moto_go ; //右电机往前走 } void backrun(void) //后退 { Left_moto_back ; //左电机往前走 Right_moto_back ; //右电机往前走 } void leftrun(void) //左转 { Left_moto_go ; //左电机往前走 Right_moto_back ; //右电机往前走 } void rightrun(void) //右转 { Left_moto_back ; //左电机往前走 Right_moto_go ; //右电机往前走 } void stoprun(void) //停止 { Left_moto_Stop ; //左电机停止 Right_moto_Stop ; //右电机停止 } 3。2.4避障子程序 小车避障通过红外传感器来实现,小车的右、前、左三个方向分别安装了三个红外传感器,检测到障碍物时,就返回低电平到P3.5 ,P3。6, P3。7,通过单片机进行判断,改变小车运动方向,从而达到避障效果。 void fun() { if(P3_5==0&&P3_7==0) // 左(中)右测 后退 { backrun(); } else if(P3_5==0) // 右中测 左转 { leftrun(); } else if(P3_7==0) // 左中测 右转 { rightrun(); } else if(P3_6==0) // 中测 左转 { if(flag==1) { rightrun(); flag=0; } if(flag==0) { leftrun(); flag=1; } } else run(); } 3。2.5串口通信子程序[22] 通过串口方式[23],实现数据的发送与接收.下位机处,单片机通过串口通信,与无线模块交互数据信息,上位机处,PC终端通过串口通信,与无线模块交互数据信息. /************************串口中断接受一个字符*************************/ void INT_Uart_Transmit() interrupt 4 //全双工uart接收 { uchar receive_temp; if (RI==1) //处理接收中断 { RI=0; //清除中断标志位 receive_temp=SBUF; //接收串口数据 if (point==0) { if(receive_temp=='@') //判断是否起始位 point++; else point=0; } else if (point>0 && point<=3) //判断是否接收够4bit receive_buffer[point++]=receive_temp; else if (point==4) //判断是否接收够4bit { if(receive_temp==’#’) { receive_data[0]=receive_buffer[3]; if(receive_buffer[1]==’y' && receive_buffer[2]==’c') { Car_mode=’1'; //远程控制模式 } if(receive_buffer[1]==’z' && receive_buffer[2]==’d’) { Car_mode=’2'; //自动灭火模式 } point=0; } else point=0; } else point=0; //缓冲区已满,清除缓冲区内数据,重新接收 } } /****************************串口发送一个数字**************************/ void send_int(int txd) { SBUF = txd; while(!TI); // 等特数据传送 TI = 0; // 清除数据传送标志 } /****************************串口发送一个字符*************************/ void send_char(unsigned char txd) { SBUF = txd; while(!TI); // 等特数据传送 TI = 0; // 清除数据传送标志 } /**************************串口发送字符串********************/ void send_str(unsigned char str[]) { unsigned char i
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 研究报告 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服