




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能移动探测装置软件设计摘 要本系统由信号检测、信号控制以及通信部分组成。系统选用STC12C5A60S2单片机为核心控制器,主要由电源模块、电机驱动模块、超声波测距模块、红外避障模块、无线通信模块(XL2401-D03)、一氧化碳探测模块、温度检测模块构成智能移动探测装置。其中小车驱动由L298N驱动电路完成,速度由单片机输出的PWM波控制。避障通过红外传感器模块和超声波测距模块配合,来控制小车的移动方向。将小车摄像头采集的现场图片,通过无线传输模块将图片传送至前方电脑,并传送现场的一氧化碳浓度及温度以达到探测的目的。关键词:STC12C5A60S2单片机;L298N;无线通信(XL2401-D03);超声波测距;红外避障Intelligent mobile detection deviceSoftware designAbstractThis system consists of signal detection, signal control and communication. Choose STC12C5A60S2 single-chip microcomputer as the core controller system, mainly by the power supply module, motor drive module, ultrasonic distance measuring module, Infrared obstacle avoidance module ,wireless communication module (XL2401 - D03), carbon monoxide detection module, temperature detection modules intelligent mobile device. Which car drivers completed by L298N drive circuit, the speed is controlled by single chip microcomputer output PWM wave, obstacle avoidance by ultrasonic ranging module, through the mobile car, the car camera figure collection of pictures, through the wireless transmission module to transfer images to the front of the computer, and sends the scene of the carbon monoxide concentration and temperature in order to achieve the purpose of detection.Keywords: STC12C5A60S2 microcontroller;L298N;wireless communication (XL2401 - D03); ultrasonic ranging;Infrared obstacle avoidance目 录1绪论11.1 智能移动探测装置的意义及作用11.2 智能移动探测装置的前景11.3 本文工作12系统的软件设计32.1 软件总体设计方案32.2 软件设计主程序流程图42.2.1 车载系统主流程图42.2.2 车载系统中断流程图52.2.3 手柄显示系统主流程图及中断流程图62.3 开发环境简介72.4 软件设计子程序模块及流程图82.4.1 小车驱动模块82.4.2 超声波测距模块102.4.3 一氧化碳检测模块122.4.4 显示模块152.4.5 温度检测模块182.4.6 无线传输模块213软件系统调试234硬件设计思路及原理图245系统功能测试255.1 车载系统前方超声波模块测试255.2 车载系统左方超声波模块测试255.3 车载系统右方超声波模块测试265.4 车载系统避障测试266结论28附录1:车载系统源程序清单29附录2:手柄系统源程序清单49参考文献57致谢58III1绪论1.1智能移动探测装置的意义及作用自从第一个机器人的诞生,便标志着人类在智能方面的探索将是一个新的开始,是人类探索智能方面的伟大突破,也是人类新思想的呈现之作。人类将会不断探索,研究,以制造出更为理想的,并能为人类提供更多服务、帮助的智能机器。这个目标也是人类的一个长期的目标。随着机器人在智能方面的迅速发展,机器人所实现的功能也越发的强大,这些功能的实现离不开其自身的传感器。现如今,较为先进的机器人会携带各种类型的传感器,其中视觉传感器更为突出,它的携带让机器人如同有了人类的眼睛。促使智能机器人的表现更为灵活,能为人类提供更多的现场的信息。而这些信息的传递将会为人类探索机器人所在环境提供方便。当然这样的传感器的出现也是比较难的,它是需要许多复杂的电路和程序运作才能实现的,它的核心是摄像管具有自动聚焦功能的,是仿照人类眼睛的,所以在市场上这样的传感器价格是比较贵的。机器人要代替人类就必须完成最基本的两个功能自动行走和避障的功能,这两个功能的实现将会是机器人完成其他功能的前提。避障控制方面可以以小车为载体,让小车实现避障功能以完成它的顺利行走进而去探测更多的现场环境的数据。1.2 智能移动探测装置的前景随着现代科技和工业以及各行业发展的需求,智能探测装置的发展迫在眉睫,尤其在石油,煤炭开采,海洋探索,太空探索等高压危险环境这种智能探测装置更是尤为重要的。至此产生了许多的探测装置,比如鱼群声纳探测装置,红外成像探测装置,地下管道涂层破损点及与金属体接触点的探测装置,脉冲编码体制的探测装置,电气化铁道故障点探测装置等等。智能探测移动装置可以运用于事故现场,有毒有害现场等,人短时间无法进入或无法判断现场是否存在对人体有害的物质。使用智能小车进入现场对现场环境进行检测以及搜索现场是否有幸存者。然后将现场环境检测的数据和现场的图像资料传回到安全位置的指挥员手中,方便指挥员评估风险以及实施救援。智能探测移动装置在科学领域探测也有较好的前景。特别在一些恶劣的环境中,如在南北极极地环境。还有一些人类短时间无法涉足的地方,如在地外星体地表上。科学家都不适宜长期冒着高风险工作,就可以使用类似的智能移动探测装置,带着相关探测的传感器工作,将有价值的信息通过无线通信传回便可。1.3 本文工作简介该智能移动探测装置可以作为机器人的典型代表以实现机器人的功能。本智能移动探测装置采用四轮小车为主体,为了控制方便,左方前后两轮用同一PWM波控制,右方前后两轮用另一路PWM波控制。本系统的避障采用三个红外传感器模块完成,分别安装在小车最前方的左中右,中间的红外检测前方障碍物,左右红外检测两边的障碍物。三个超声波测距模块分别配合红外模块更好的实现避障功能。小车的右上方安装一接近开关,防止红外失灵不能避开障碍物时以进行的保护措施。一氧化碳检测,温度检测分别通过一氧化碳模块,DS18B20模块完成。图像采集是由CMOS图像传感器OV7640来完成的,图像控制处理由可编程逻辑器件K60处理。图像的传输部分使用了蓝牙技术,将所测得图像数据传输到上位机上。最后一氧化碳浓度,环境温度及超声波模块测距的显示通过无线通信模块传送至前方的LCD12864液晶显示屏上,当一氧化碳浓度,温度超过设定值时将会出现报警,而图像采集的信息通过蓝牙传送至前方电脑。智能移动探测装置的动力系统,是由直流电机充当,主要控制小车的行驶速度。单片机驱动直流电机一般有两种方案:传统方案是由软件模拟PWM输出调制,此方案难以精确调速并且浪费很多单片机的资源,但可供选择单片机的型号较多。本设计选择直接拥有PWM功能的STC12C5A60S2单片机,不但不需占用单片机资源,而且可以实现精确调速。 2系统的软件设计2.1 软件总体设计方案由图2-1系统框图可见本系统使用两块STC12C5A60S2单片机,并通过无线模块NRF24L01实现单方向通讯。其中单片机A(车载系统)负责检测车身周围的环境。首先在系统初始化打开STC12C5A60S2单片机自带的8通道,10位精度的AD和内置的两项独立可调的PWM。将AD用于采集MQ-7一氧化碳检测模块输出的电压。之后,驱动DS18B20元件检测小车所处环境的温度。然后,驱动超声波检测小车到周围障碍物的距离,将数据处理后,通过驱动L298芯片和调制PWM控制小车的动作和车速。最后将以上测得数据存储到无线模块的发送数组中,将数据传送给单片机B(手柄显示系统)。基于系统的可靠性设计,我们将红外避障模块和接近开关添加到单片机的外部扩展中断中。当中断触发后,通过检测触发的引脚,判断小车的状态,从而决定小车下一步动作。单片机B(手柄显示系统)主要负责处理无线模块NRF24L01接收到数据。将接收到的数据整理后,驱动人机交互设备LCD12864液晶显示屏,显示小车所处环境的温度,一氧化碳的浓度和小车到周围障碍的距离。并对温度值和CO浓度值与设定值进行比较,如果超过预定值,驱动蜂鸣器进行声音报警。LCD12864 显示DS18B20模块MQ-7模块超声波测距模块报警模块红外避障模块STC12C5260S2 单片机ASTC12C5A60S2 单片机BL298驱动模块NRF24L01-D3发送模块NRF24L01-D3接收模块单片机内部PWM调速 模块图2-1 系统框图2.2 软件设计主程序流程图2.2.1 车载系统主流程图图2-2车载系统主流程图图2-2车载系统主流程图:单片机上电后,先进行系统初始化。其中包括AD功能寄存器配置,温度采集元件DS18B20复位,PWM寄存器配置,无线通信模块初始化,最后打开外部中断0和外部中断1及总中断。进入主循环后,开始读取AD的采样值,DS18b20采集的温度值以及超声波传感器测得的温度值。将前方超声波模块测得值,与设定值进行比较,看属于哪个区间范围,从而控制小车的速度,以及下一步是否前进。将左方和右方超声波模块测得值进行比较,决定小车转向。最后将测得的所有数据装在无线传输模块数组中,进行发送。2.2.2 车载系统中断流程图图2-3车载系统中断流程图 图2-3车载系中断流程图:扩展外部中断1的流程图,其中左中右三个红外避障模块以及接近开关触发后都为低电平,他们任意一个为低电平都会触发外部中断1。当外部中断触发后,单片机会检测与之引脚相连的的电平。如果是接近开关触发,说明已经撞车,直接开始倒车。如果是红外避障模块触发的中断,判断其三个的组合。与预设的7种情况相匹配,执行其预定的动作。2.2.3 手柄显示系统主流程图及中断流程图图2-4手柄显示系统主流程图 图2-5手柄显示系统中断流程图图2-4手柄系统显示系统主流程图:单片机上电后,先进行系统初始化,其中包括LCD12864初始化设置,和无线通讯模块的初始化。进入主循环后,首先判断无线模块标志位是否为“1”,当标志位为“1”说明无线模块成功接收到数据。将接收到的数据处理,接收到的数组是一个8位的字符型,而我们要显示的数据都是16位的无符号的短整型。我们每次取出两个字符型的数据,将第一个(原数据高8位)进行移位处理与第二个数据(原数据低8位)进行或运算,将原始数据还原出来。最终将原始数据通过驱动LCD12864显示出来。当无线模块的标志位为“0”,说明无线模块没有成功接收到数据,继续检测,直到标志位为“1”为止。图2-5手柄显示系统的中断流程图:当无线模块接收到数据后,无线模块IRQ引脚拉低,触发单片机外部中断0。通过读取无线模块STATUS寄存器的值,判断是否成功接收到数据,如果成功将成功接收的标志位置1。2.3 开发环境简介在本设计中,由于采用是C语言编程,所以本设计软件开发环境选择了美国Keil SOFTWARE公司出品的兼容51系列单片机的Keil4。KEIL VISION可以方便的使用并且利用其强大的仿真功能进行软硬件的调试工作。目前最新版的KEIL系统提供了包括于C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的一整套完善的开发方案,并可以通过一个集成开发环境(UVISION)将这些部分严密的组合在一起共同工作。WIN98、NT、WIN2000、WINXP等操作系统都可以有效的运行KEIL软件进行编程。 实际使用KEIL 51时,该集成环境既可用于C语言开发也可用于汇编语言开发。它内部集成了文件编辑、项目管理、编译链接和仿真调试等多种功能。用户可以在这里用文件编辑器编写自己的程序,用多种方法来调试和修改程序。编译程序也能帮助用户检查错误,提示用户修改错误,直至程序无误。 Keil操作页面如下图2-6开发环境页面所示:菜单栏输出信息窗口工程管理窗口编辑窗口图2- 6开发环境页面2.4 软件设计子程序模块及流程图2.4.1 小车驱动模块小车动力装置直流电机的驱动,使用了ST公司生产的L298芯片。L298驱动芯片是一种可以承受高电压和大电流电机的驱动芯片。此驱动芯片主要有以下几个特点:a该芯片使用标准TTL逻辑电平信号作为控制信号;b该芯片拥有两个使能端,使其可以在不受输入信号变化的情况下就允许或禁止器件工作;c该芯片有一个逻辑电源输入端,容许其内部部分逻辑电路可以在低电压环境下工作。L298芯片的引脚功能见表2-1。表2-1 L298引脚功能表引脚符号功能115SENSING ASENSING B此两端与地连接电流检测电阻,并向驱动芯片反馈检测到的信号23OUT1OUT2此两脚是连接负载的全桥式驱动器A的两个输出端4Vs电机驱动电源输入端57IN 1IN 2全桥式驱动器A开关的输入控制端,采用标准的TTL逻辑电平信号。611ENABLE AENABLE B使能控制端.输入标准TTL逻辑电平信号;低电平时全桥式驱动器禁止工作。8GND接地端,芯片本身的散热片与8脚相通9Vss逻辑控制部分的电源输人端口1012IN 3IN 4全桥式驱动器B开关的输入控制端,采用标准的TTL逻辑电平信号。1314OUT 3OUT 4此两脚是连接负载的全桥式驱动器B的两个输出端见表2-2电机转动状态编码我们将单片机P2口接在L298输入口,由于驱动四个直流电机,我们使用两个L298芯片,刚好用完一组I/O(P2)口。通过控制P2口的输出值与编码值相匹配,控制四个电机的运动状态,从而控制小车的运动状态。表2-2 电机转动状态编码右A电机右B电机左C电机左D电机右A电机右B电机左C电机左D电机小车运行状态INA1INA2INB1INB2INC1INC2IND1IND210101010正转正转正转正转直行01001010反转停正转正转右急转00001010停停正转正转右转10100100正转正转反转停左急转续表2-2电机转动状态编码INA1INA2INB1INB2INC1INC2IND1IND2右A电机右B电机左C电机左D电机小车运行状态10100000正转正转停停左转01010101反转反转反转反转倒车01010000反转反转停停左后倒00000101停停反转反转右后倒对于电机的调速,本设计使用STC12C5A60S2单片机内部PWM特殊寄存器生成的两路PWM进行调速,其中一路控制左边两个电机,另一路控制右边两个电机。PWM控制小车车速的基本原理如下:通过调节PWM波的占空比来调节直流电两端的平均电压,两端的平均电压越高则车速越快。其中的占空比为高电平所持续的时间t占整个周期T的比值。图2-7小车动作及调速图2-7小车动作及调速流程图:首先开始对与单片机相连的P2口进行I/O口定义,方便后面的操作。之后配置单片机自身的PWM特殊寄存器,使其与L298使能端相连的引脚可以输出可控的PWM波,方便对车速的控制。然后,对小车可能用到的动作做进行预先的判断,并按表2-2电机转动编码将这些会出现的动作编成相对应的子函数,方便之后调用。当小车周围出现障碍时,就可以与预设的情况进行匹配。通过更改PWM特殊寄存器的初值调整单片机的输出PWM的占空比,从而达到改变车速,再调用相应的动作子函数,使小车实现躲避障碍物的功能。2.4.2 超声波测距模块本设计测距功能使用精度可达高到3mm的 HC-SR04超声波测距模块,该模块采用非接触式测距,其测距范围为0.02m-4m。该模块主要由超声波发射器,超声波接收器和控制电路组成。 基本工作原理:a. 使用单片机的I/O口给TRIG触发引脚一个至少10S的高电平信号。b. 此模块内部会自动生成8个40KHz的方波,作为响应。发送出去后,开始检测回响信号。c. 当有回响信号返回时,通过单片机I/O口检测ECHO引脚输出高电平所持续的时间T,T也就是超声波从发射到返回的时间。测量距离S=(T*声速(340M/S)/2;实物图如图2-8所示:图2-8 超声波实物引脚图如图2-8超声波实物引脚图所示,VCC接5V电源,GND为地线,TRIG为触发控制信号的输入端,ECHO是回响信号的输出接口。超声波时序图如图2-9所示:图2-9 超声波驱动时序图由图2-9超声波驱动时序图可以看出首先需要单片机提供一个大约10s的脉冲作为该模块的触发信号,此时模块内部将会生成8个40KHz的超声波。当单片机检测到有回波信号后开始计时,回响信号的所持续的时间就是超声波从发射到返回的时间。由此可以通过声速计算出,该模块到障碍物的距离。将单片机P3.0,P3.1,P3.4,P3.5,P3.6,P3.7依次接小车中左右超声波模块ECHO,TRIG引脚。驱动流程图如图2-10超声波驱动流程图所示:图2-10超声波驱动流程图如图2-10首先我们控制单片机使与超声波模块TRIG引脚相连的I/OP3.1或P3.4或P3.7为高电平,然后通过精确软件延时10us后拉低。此时开始检测与超声波模块ECHO引脚相连I/O是否为高电平,根据图2-9时序图可知,回响信号的脉冲宽度与所测的距离成正比。如果I/O此时被拉高,那我们立刻开启定制器TRO=1开始计时。当检测到ECHO为低电平是我们关闭定时器TRO=0。通过读取特殊功能寄存器THO和TLO获取时间。由公式:S=(340*t)/2可以计算出距离。其中t为ECH0高电平的时间,S表示距离。此时我们完成了一个方向的距离的测试,重复以上的流程,获取小车前方,左方和右方的距离。2.4.3 一氧化碳检测模块本设计一氧化碳检测模块,选用由二氧化锡气敏材料组成的MQ-7传感器。该模块主要有以下特点:a该模块内部气敏材料,在洁净空气中电导率较低;b可以使用高低温循环检测的方法。当使用高温加热方式时,即加热电压为5v。主要用于清除吸附在传感器上的杂乱气体。当选用低温加热方式时,即加热电压为1.5v。主要用于检测一氧化碳的浓度。此时二氧化锡电导率与一氧化碳的浓度成比例。我们只需检测输出电压的变化即可测得一氧气体的浓度。本模块的接口说明:VCC5V工作电压GND外接GNDDO小板数字开关输出接口(0和1)AO小板模拟量输出接口将单片机STC12C5A60S2中P1.1口与CO模块AO引脚相连接,使用其自带的10位AD采集CO模块AO引脚输出的模拟量(电压)。通过数学计算将采集到的电压转化为CO的浓度。表2-3 STC12C5A60S2系列单片机A/D转换的寄存器见表2-3 A/D转换寄存器列表,由于本次AD采集程序中不需要打开AD中断,故在配置STC12C5A60S2单片机AD相关寄存器时可以直接将中断允许寄存器IE,中断优先级寄存器IP和IPH忽略。我们只需要配置P1模拟模拟功能控制寄存器P1ASF,ADC控制寄存器ADC_CONTR,AD转化结果寄存器即可。AUXR1的ADRJ为AD转化结果寄存器数据格式调整控制位。我们选择其默认格式ADRJ=0,10位AD转化结果的高8位存放在ADC_RES中,低两位存放在ADC_RESL中的低两位中。此时完整10位结果,计算公式为:10位AD的结果:(ADC_RES7:0,ADC_RESL1:0)=1024*(Vin/Vcc)A. P1口模拟功能控制寄存器P1ASFSTC12C5A60S2单片机的A/D转换通道与P1口可以复用。上电复位后P1口默认为弱上拉型I/0口,需要通过软件赋值操作来设置为A/D转换通道,不需要作为A/D功能使用的P1口将继续作为普通I/O口。需要作为A/D通道使用的I/O口需将与其对应的P1ASF寄存器中的位置1。 P1ASF寄存器的格式在表2-4 P1ASF寄存器和表2-5说明所示。表2-4 P1ASF寄存器SFR nameAddressbitB7B6B5B4B3B2B1B0P1ASF9DHnameP17ASFP17ASFP17ASFP17ASFP17ASFP17ASFP17ASFP17ASFP1口中的相应位作为A/D使用时,要将P1ASF中的相应位置置1。表2-5 P1ASF寄存器位说明P1ASF7:0PI.X的功能其中PIASF寄存器地址为:9DH不能够进行位寻址P1ASF.0=1P1.0口 用作A/D功能使用P1ASF.1=1P1.1口 用作A/D功能使用P1ASF.2=1P1.2口 用作A/D功能使用P1ASF.3=1P1.3口 用作A/D功能使用P1ASF.4=1P1.4口 用作A/D功能使用P1ASF.5=1P1.5口 用作A/D功能使用P1ASF.6=1P1.6口 用作A/D功能使用P1ASF.7=1P1.7口 用作A/D功能使用根据表2-4 P1ASF寄存器和表2-5 P1ASF寄存器说明,本设计需要P1.1口为AD采集通道即可,除P1.3,P1.4作为PWM输出外其他还是用做普通I/O口,由表2-4可知,模拟功能控制寄存器P1ASF应该为0x02。B. ADC控制寄存器ADC_CONTR表2-6 ADC_CONTR寄存器位功能说明SFR nameAddressbitB7B6B5B4B3B2B1B0ADC_ CONTFBCHnameADC_ POWERSPEED1SPEED0ADC_ FLAGADC_ STARTCHS2CHS1CHS0ADC_POWER: ADC电源控制位。 0:关闭A/D转换器电源; 1:打开A/D转换器电源;在写A/D转化程序的初始化过程中就要开启电源ADC_POWER=1准备随时采集CO模块AO输出的电压值。SPEED1,SPEED0: 模拟A/D转换器转换速度的控制位表2-7 SPEED1,SPEED0位组合功能说明SPEED1SPEED0A/D转换所需时间1190个时钟周期转换一次10180个时钟周期转换一次01360个时钟周期转换一次00540个时钟周期转换一次ADC_FLAG: 模数转换器转换结束标志位,当A/D转换后,ADC_FLAG=1,要由软件清0。ADC_START:模数转换器转换启动控制位,设置“1”时,开始转换,转换结束后为0。根据表2-7中ADC_FLAG和ADC_START的功能可以在需要A/D转换时才开启ADC_START,当开始转换后,通过检测ADC_FLAG位检测A/D是否转换完成。表2-8 CHS0, CHS1,CHS2位组合功能说明CHS2CHS1CHS0模拟输入通道选择000选择P1.0用作A/D输入来用001选择P1.1用作A/D输入来用010选择P1.2用作A/D输入来用011选择P1.3用作A/D输入来用100选择P1.4用作A/D输入来用101选择P1.5用作A/D输入来用110选择P1.6用作A/D输入来用111选择P1.7用作A/D输入来用根据表2-8组合功能说明,当选P1.1作为A/D输入时,配置为:CHS2=0,CHS1=0,CHS0=1。C. CO采集子程序流程图如图2-11所示:首先根据需求配置相应的特殊功能寄存器P1ASF,ADC_POWER,SPEED0和SPEED1选择通道及转化速率。然后通过给ADC_START特殊功能寄存器赋值1,开始转换。当检测到ADC_FLAG=1时,返回A/D采集值,通过数据处理就可以得到CO的浓度值。图2-11 AD采集流程图2.4.4 显示模块本设计人机交互设备选用内部带有中华字库的LCD12864模块。该模块可以使用8位并行或者2线串行接口方式的数据传输模式,其内部包含了国家标准一级和二级的简体汉字。由于其内部是由128x64个点阵组成,每行有写8个16x16的点阵,其每个16x16的点阵可以显示一个汉字,所以说LCD12864同时可以显示32个汉字。当显示ASCII时,只需16x8个点阵即可,故LCD12864同时可以显示64个ASCII。也可以同时显示ASCII和汉字,所以说LCD12864操作简单,而且信息量较多。A. LCD12864接口说明表2-9 LCD12864接口说明管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)1/0当RS=“1”,说明DB7DB0操作的是数据当RS=“0”,说明DB7DB0操作的是指令5R/W(SID)1/0当R/W=“1”,E=“H”,进行的是读取操作当R/W=“0”,E=“HL”,进行的是写入操作6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H/L三态数据线13DB6H/L三态数据线14DB7H/L三态数据线15PSBH/LH:8位并口数据交换模式,L:串口数据交换模式16NC-空脚17/RESETH/L复位端,低电平有效18VOUT-LCD驱动电压输出端19AVDD背光源正端20KVSS背光源负端根据表2-9 LCD12864接口说明可以看出,显示模块LCD12864有并口和串口两种数据交换模式。综合考虑单片机资源占用,可靠性,数据传输速率,以及编程操作简易性等几方面原因。本设计选用并口数据传输模式,故PSB引脚必须接高电平。否则会出现显示数据不稳定,乱码等情况。B. RS,R/W的配合选择决定控制界面的4种模式:表2-10 RS,R/w组合功能说明RSR/W功能说明LL单片机将指令写人指令暂存器(IR)LH单片机读取指令,判断LCD是否处于忙状态HL单片机将数据写入数据暂存器(DR)HH单片机从数据暂存器(DR)中读取数据C. E信号功能说明表2-11 E功能说明E状态执行动作结果HLI/O缓冲DR配合R/W进行写指令或数据HDRI/O缓冲配合R/W进行读指令或数据LH无动作D. LCD12864的写操作时序如图2-12所示。图2-12 写操作时序E. LCD12864的读操作时序如图2-13所示。 图2-13 读操作时序F. 读/写操作具体流程图如下图 图2-14 写操作流程图 2-15 读操作流程图图2-14写操作流程图和图2-15读操作流程图,分别是参照图2-12写操作时序图和图2-13读操作时序图绘制的。其中图2-14写操作流程图:按照2-12写操作时序图,首先给给RS和RW赋值。R/W=0进行写操作 ,当RS赋值为1写入的是数据,即在LCD12864上所要显示内容对应的ASCII值。当RS赋值为0写入的是指令,例如光标控制,清屏,移位等。然后,给控制信号E一个高电平,在此时间段内写入相对应的8位指令或数据。最后,将所有配置复位。图2-15读操作时序图:按照2-13读操作时序图,首先给给RS和RW赋值。R/W=1进行读操作 ,当RS赋值为1读取的是数据,参照表2-10 RS和R/W组合说明可知,此操作是单片机从数据暂存器(DR)中读取数据。当RS赋值为0读取的是指令,一般用来判断LCD12864是否处于忙状态。然后给控制信号E一个高电平,在此时间段内读取相对应的8位指令或数据。 G. 12864显示子流程图图2-16 显示子流程图 图2-16 显示子流程图:首先对LCD显示模块进行初始化,确定其是否显示光标,光标是否闪烁,移位方式,清屏处理。当要写入要显示的数据时,首先写入指令确定数据要显示的位置,然后将要显示的数据写入。2.4.5 温度检测模块本设计温度检测选用了DS18B20元件。DS18B20元件是由DALLAS设计生产的一款单总线方式访问的数字温度计。该元件具有体积小,外围电路简单等特点。因此本设计选择该元件为基础组建一个温度检测系统。由于该元件遵循单总线协议,即只要使用一个引脚就可以进行数据的传输,所以它对读/写操作的时序要求比较严格。在进行此操作时为保证数据的可靠性,需要关闭总中断。此外根据表2-13该元件上电后默认精度为12位,在写完读取温度指令后,会在该器件内部的两个8位的RAM中获取有效数据。其中前5位用来表示测得数据的正负,即为数据的符号位,后面的11位用于表示数据值。由于测量精度为12位,所以当测得温度为正数时,实际温度值为数据值乘以0.0625。当测得值为负数时,实际温度应为数据值的补码乘以0.0625。具体引脚描述见表2-12所示:表2-12 引脚功能描述序号名称 引脚功能描述1GND地信号2DQ数据输入/输出引脚。3VDD该引脚接电源正极。表2-13 DS18B20温度与数据的对应关系如下温度二进制 数据输出十六进制 数据输出+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H*上电复位后,该温度寄存器的默认值是+85A. DS18B20复位时序 图2-17 复位时序图 a. 单片机拉低总线480s 960s,之后释放总线b. 这时DS18B20会拉低总线,需要持续60240s表示应答。c. 在DS18B20拉低总线电平的60240s之间,单片机读取总线上的电平,如果总线上为低电平,表示复位成功。d. DS18B20在拉低电平的60240s之后会释放总线。B. DS18B20写0/1时序图图2-18 DS18B20写0/1时序图DS18B20写逻辑0的步骤如下: DS18B20写逻辑1的步骤如下:a. 单片机拉低电平大约15s a. 单片机拉低电平大约15sb. 然后单片机继续拉低电平大约1545s b. 然后单片机继续拉高电平大约1545s的时间 的时间c. 释放总线 c. 释放总线C. DS18B20读取0/1时序图图2-19 DS18B20读0/1时序图DS18B20读取逻辑0的步骤如下: DS18B20读取逻辑1的步骤如下:a. 单片机拉低电平大于1s a. 单片机拉低电平大于1sb. 单片机释放总线,然后读取总线 b.单片机释放总线,然后读取总线 c. 这时候DS18B20会拉低 c. 这时候DS18B20会拉高d. 读取电平后,延迟大约4045s d. 读取电平后,延迟大约4045sD. DS18B20子程序流程图图2-20 DS18B20子程序流程图 图2-20 DS18B20子程序流程图:DS18B20是单总线通信器件,对时序有着严格的要求。必须依次完成初始化,读取ROM,写指令三个步骤。因此首先我们对DS18B20进行初始化,因为一共使用一个DS18B20器件,第二步改为跳过读序列号命令,第三步写温度转换命令。之后的三步中,前两个步骤是一样的,第三步改为写读取温度寄存器指令。最后读取温度值,将得到的温度值处理后返回即可。2.4.6 无线传输模块本设计无线传输模块选用NORDIC公司设计生产的XL24L01D03 芯片。该模块是一种支持无线收发功能且工作频率位于2.4G国际通用的ISM频段。该模块的通信频道,输出功率可以通过单片机在初始化时进行设置,其最高通信的速率为2Mbps。 表2-14 XL24L01管脚介绍管脚次序管脚定义功能描述 1VCC输入电源(3.03.3V)2GND电源地3CSN PI使能,低有效4CE工作模式选择,RX 或TX 模式选择5MOSI SPI输出6SCK SPI时钟7IRQ S中断输出8MISO SPI输入A. SPI协议说明: SPI总线协议是一种环形总线结构,由以下ss(cs)、sck、sdi、sdo几个部分组成。进行数据转换时序为,在时钟信号SCK的作用下,双向移位的寄存器进行数据交换。a. SPI读操作时序图2-21所示:图2-21 SPI读操作时序图b. SPI写操作时序图2-22所示:图2-22 SPI写操作时序图B. NRF24L01可以设置为以下几种主要的模式见表2-14表2-15. XL24L01主要的模式模式PWR_UPPRIM_RXCEFIFO寄存器状态接收模式111数据在TX_FIFO寄存器中发送模式101处于发送模式,直到数据发送完毕发送模式101-0TX_FIFO为空C. 普通C51单片机没有SPI总线协议的接口,STC12C5A60S2单片机作为C51的升级版内部集成了SPI接口。但由于我们使用P1.3和P1.4作为PWM输出口,I/O口的功能有所重叠,故我们使用普通I/O口模拟SPI口,进行数据交换。其数据交换子程序流程图见图2-23数据交换子程序流程图所示:图2-23 数据交换子程序流程图3软件系统调试 a. 首先,每当编写好一个模块子程序程序后,就进行保存,并开始编译,检查输出信息窗口是否弹出错误或者警告。检查后将其更正,直到没有错误为止。 b. 点击工具栏里红色按钮“Star/Stop Debug Sessio”进行软件运行调试,检查程序是否会出现死循环,中断函数是否可以正常运行,定时的精度,以及软件延时的精度。出现问题后及时更正,编译后继续检查一遍。 c. 当以上工作做完后我们就可以进行部分软硬件联调,用模块的子程序驱动模块,检查是否可以达到预期的目的。此时就可以开始优化自己的程序。 d. 当所有的子程序和模块都可以较好的融合后,我们按照最开始的资源分配,将所有的子程序整理。重复步骤a,b最后组成一个工程文件,生成一个hex文件。如图3所示: e. 最后使用整理好的程序,进行整机联调。继续优化程序,直到可以达到自己的预期为止。图3 软件调试4硬件设计思路及原理图智能移动探测装置采用四轮小车为主体,为了控制方便,左方前后两轮用同一PWM波控制,右方前后两轮用同一PWM波控制。本系统的避障采用三个红外传感器模块完成,分别安装在小车最前方的左中右,中间的红外检测前方障碍物,左右红外检测两边的障碍物,三个超声测距模块分别配合红外显示与障碍物的距离,并有效避障。小车的右上方安装一接近开关,防止红外失灵不能避开障碍物时以进行的保护措施。一氧化碳检测,温度检测分别通过一氧化碳模块,DS18B20模块完成。图像采集是由CMOS图像传感器OV7640来完成的,图像控制处理由可编程逻辑器件K60处理。图像的传输部分使用了蓝牙技术,将所测得图像数据传输到上位机上。最后一氧化碳浓度,环境温度及超声波模块测距的显示通过XL24L01-D3无线通信模块传送至前方的LCD12864液晶显示屏上,当一氧化碳浓度,温度超过设定值时将会出现报警,而视频采集的信息通过蓝牙传送至前方电脑。图4为整体硬件设计电路原理图。图4 硬件原理图5系统功能测试5.1 车载系统前方超声波模块测试 图5-1前方超声波模块测试如图5-1所示,通过三角尺的测量,将一个纸盒放在小车正前方21cm处。两个系统上电后,LCD12864第二行“中”后可清晰的显示,测得距离为0.21m。由此可见,两个系统均工作正常,且前方超声波模块测量距离正确。5.2 车载系统左方超声波模块测试图5-2 左方超声波模块测试 如图5-2所示,通过三角尺的测量,将一个纸盒放在小车左方11cm左右处。两个系统上电后,LCD12864第一行“左”后可清晰的显示,测得距离为0.11m。可见,左方超声波模块测量距离正确。5.3 车载系统右方超声波模块测试图5-3 右方超声波模块测试小车之后的位置如图5-3所示,通过三角尺的测量,将一个纸盒放在小车左14cm处。两个系统上电后,LCD12864第一行“右”后可清晰的显示,测得距离为0.14m。由此可见,两个系统均工作正常,且右方超声波模块测量距离正确。5.4 车载系统避障测试图5-4车载系统避障测试全景图 起初位置最后位置图5-5车载系统避障测试全景图 图5-4和图5-5为车载系统避障测试时拍摄的全景图。其中图5-4前方有一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论