版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录1绪论11.1选题意义11.2国内外现状研究11.3设计目标及主要内容3设计目标3主要内容32系统总体方案设计42.1系统简介42.2主要电路器件选型4单片机选型4加速度传感器选型5测速传感器选型6显示屏选型8报警芯片选型8电机驱动选型83系统硬件电路设计103.1中央处理电路设计10单片机最小系统设计10按键电路设计113.2传感器电路设计12加速度传感器电路设计12超声波模块电路设计13霍尔传感器的电路设计143.3电机驱动电路设计153.4显示模块电路设计173.5报警电路设计18倒车提醒电路18防盗报警电路183.6电源电路设计194系统软件设计204.1系统主程序流程图21主机程序流程图21从机程序流程图224.2各子程序单元流程图及设计22电机控制和测速单元软件设计22倒车提醒单元软件设计23加速度检测单元软件设计24双机串行通信软件设计255实验结果分析275.1硬件调试275.2软件调试29结论30致谢32参考文献33附一:系统原理图34附二:源程序代码351绪论1.1选题意义随着社会经济的开展,交通运输业日益兴旺,汽车已经成为一种重要的代步工具。尤其是近几年来,我国开始进入私家车时代,汽车的数量更是逐年增加。与此同时车祸、倒车碰撞和车辆被盗等事故也时常发生,造成了不可防止的人身伤亡和经济损失,因此汽车的测速、倒车防撞和防盗报警问题越来越受到人们的重视。测速电路可以检测汽车的实时速度,帮助用户了解车辆行驶速度,有效防止事故发生;超声波测距法是最常见的一种距离测距方法,应用于本系统中可以测量车辆与障碍物的距离,当距离小于设定的平安范围时,蜂鸣器报警提醒用户有障碍物,可以有效防止倒车碰撞;防盗电路可以检测车辆是否平安,车俩被盗时发出报警信息有效防止用户的经济损失。综上所述,可以看出本系统可以有效的防止车祸、倒车碰撞和车辆被盗等事故,有很大的实用价值。1.2国内外现状研究目前用于辅助司机倒车的装置主要有:语音告警装置、后视系统以及倒车雷达等。语音告警装置用于播放提示语以提醒车后的行人注意避让正在倒车的汽车。这种装置价格廉价,使用方便,其缺点是只能对车后的行人起告警作用,对于其他障碍物那么不起作用,所以其应用范围有限。后视系统是由视频捕捉装置和视频播放装置组成,通过后视系统司机可以直观地看到车后的障碍物,消除视觉盲区。由于这类装置的价位较高,目前还没有普遍推广使用。目前,很多科研机构已对汽车雷达技术进行深入开发,国内外也已有相应的产品。经过总结分析,按照工作方式分主要有激光、超声波、红外、毫米波等一些测量方法,它们的工作原理虽然不完全一样,但最终作用都是通过不同的探测方法判断车前方障碍物与本车的相对距离,并根据程序中定义好的危险等级做出相应的预防措施。下面简要分析一下几种方式的特点:激光方式:激光具有高定向性,能以定向的光束无发散地直线向前传播;单色性好,它可以到达的亮度比太阳光还高几百亿倍;相干性好,激光的频率、振动方向、相位高度一致。因此激光波束近似直线性,很少扩散,波束能量集中,传输距离较远。但它在对气候的适应能力方面具有局限性,因为激光测距方式受恶劣天气、汽车剧烈震动、发射镜外表磨损、污染等因素影响,那么探测距离减少二分之一至三分之一,降低了实用精度,所以在汽车倒车雷达领域激光测距方式没有得到很好开展。红外线方式:红外线可以人为制造,自然界中也广泛存在,一般的生物都会辐射出红外线,表达出来的宏观效应就是热度。红外线透视和夜视是分别利用了红外线的不同性质。红外线测距系统本钱低廉,但是容易受到天气和路边等物体干扰的影响,在恶劣的天气与环境下探测距离仍然不能满足要求。毫米波方式:毫米波是微波的一个波段,频率在30-300G,相应波长为1-10mm。毫米波电子系统具有如下特性:小天线孔径具有较高的天线增益;高跟踪精度和制导精度;不易受电子干扰;低角跟踪时多径效应和地杂波干扰小;多目标鉴别性能好;雷达分辨率高;大气衰减“谐振点〞可作保密传输。但其价格昂贵,结构复杂。超声波方式:超声波是频率大于20kHz的声波,具有方向性强、能量衰减缓慢、在介质中转播距离远等特点,用于测距计算方法简单,常用于非接触式距离测量,其传感器种类较多,由于超声波指向性强,在传输过程中能量损耗缓慢,反射能力强,经常被用于距离的测量。由于超声波测距的探测距离较短,主要用于倒车雷达等近距离测距。目前汽车测速原理可以分为机械式和电子式两类。机械式不够准确,电子式相对准确。电子式的就必须用到单片机与一个电磁感应器用来计算行进中车轮所转动的圈数,输入车轮的外径,计算单位时间内车轮所转圈数即得。现在汽车测速大多采用这种方式。目前的汽车报警系统领域多用到开关振动、超声波、红外探测等类型的传感器,其在应用过程中暴露出诸多的缺点:首先,传感器价格昂贵,体积庞大,难以集成。比方超声波传感器,体积大,市场价在8元左右,操作复杂,易受干扰;其次,误报现象比拟严重,汽车防盗报警器扰民现象越来越普遍,成为城市管理中的一道新难题。据一些城市统计,这类投诉往往占环境噪声总投诉量的10%—20%,所占比例不算很高,但影响人群不少。本系统采用美新公司的加速度传感器,主要用来检测物体状态。传感器采集到的信号经算法处理后,判断物体是处于移动还是振动状态,进行分级报警,从而克服了传统报警系统的漏报误报现象,大大提高报警效率,提高人们的生活质量。1.3设计目标及主要内容设计目标〔1〕电机转速的实时测量;〔2〕能实现电机的正反转;〔3〕能实现电机的加减速;〔4〕当离障碍物的距离小于设定值时蜂鸣器鸣叫提醒用户;〔5〕数码管能实时显示电机速度;〔6〕当电机停止时,检测加速度信息,当加速度值大于设定值时发出报警音。主要内容本系统可以测量电机的实时转速,帮助用户了解车辆行驶速度,有效防止事故发生;当汽车与障碍物的距离小于设定值时可以提醒用户,防止汽车碰撞障碍物,减少用户的经济损失;当有人盗窃汽车时,加速度传感器检测到的加速度信息大于设定值,单片机控制语音报警模块发出报警声,有效防止车内贵重物品和汽车丧失。2系统总体方案设计2.1系统简介系统框图如下列图:测速传感器检测电机的实时速度,通过显示屏显示出来。当电机停止时,主机通过加速度传感器检测加速度信息,并将加速度信息传给从机,当加速度大于设定值时,从机控制报警模块发出报警音,防止车辆被盗。超声波模块用于测量车辆与障碍物的距离,当测量距离小于设定值时,从机控制报警模块的蜂鸣器鸣叫,提醒用户注意障碍物,防止倒车碰撞。图2-1系统框图2.2主要电路器件选型单片机选型STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM、MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。本系统需要用到四个定时器/计数器,STC89C52只有三个定时器/计数器,如果换用有四个及以上定时器/计数器的单片机〔例如Atmega64〕,价格相对较高。而该款单片机价格廉价,降低了系统的本钱,并且可以采用双机串行通信的方式满足系统设计要求,所以选择该款单片机。图2-2STC89C52引脚图加速度传感器选型美新的MEMS加速度传感器采用了其独特的气体热感的原理,具有以下独特的性能特点:〔1〕可靠性高,抗冲击能力强(>50000g);〔2〕低的共振频率和频响(<100Hz);〔3〕零点偏差小;〔4〕抗干扰能力强(相比于同类产品);〔5〕产品的一致性、重复性好;〔6〕外形精巧:5mm×5mm×1.55mm;〔7〕工作温度范围:0℃to+70℃〔G/H〕-40利用美新的MEMS加速度传感器的以上优势,可以使产品更加精确。美新加速度传感器MXC6202加速度传感器测量物体加速度的两个分量Ax,Ay,该测量数据完全可以满足汽车报警所需的加速度信息。假设采用三轴加速度传感器本钱加高,而且硬件电路和软件设计都会变复杂。综上可得,本系统采用美新加速度传感器MXC6202。图2-3MXC6202测速传感器选型方案一:光电式脉冲发生器。主要由光源、光敏器件和遮光盘组成。车轮旋转带动遮光盘旋转,当遮光盘没有遮住光源时,光源的光射到光敏器件上,光敏器件中有电流流过,于是在输出端产生电压输出。其脉冲频率与车速成正比,经过单片机处理后,即可得出车辆的速度。这种光脉冲发生装置,在转换速度较高的情况下,由于车辆运行中的振动引起的光脉冲干扰等问题不好解决,现在采用的不多。方案二:磁电式脉冲发生器。将导磁材料的齿轮固定在转轴上,对着齿轮端面固定一块磁钢,霍尔元件贴在磁钢的一个端面上,随着齿轮转动,元件的输出呈周期性变化,经整形和放大后输出方波脉冲。霍尔传感器输出频率与转速成正比,此信号经单片机处理后,即可得出车辆的速度。本设计测量要求稳定性好,灵敏度高和精度高,而且对汽车速度的测量要求传感器能够适应各种各样的环境。所以这里选择方案二。其原因还有三点:其一是霍尔传感器输出信号电压幅值不受转速的影响;其二是频率响应高,其响应频率高达20kHz,相当于车速为1000km/h时所检测的信号频率;其三是抗电磁波干扰能力强。根据脉冲计数来实现转速测量的方法主要有M法(测频法)、T法(测周期法)和M/T法(频率周期法)。测频法一般用于高速测量,在转速较低时,测量误差较大;而测周期法一般用于低速测量,速度越低测量精度越高,但在测量高转速时,误差较大;频率周期法结合了上面两种方法的优点,但是此种方法要求单片机有3个定时/计数器。考虑上面三种因素,该系统选择测频法。霍尔传感器是对磁敏感的传感元件,常用于开关信号采集的有CS3020、CS3040等,这种传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路门输出,工作电压范围宽,使用非常方便。考虑到用于汽车速度测量这种特殊环境下,在本设计中选择了CS3020霍尔传感器,该系列霍尔开关电路传感器广泛用于汽车工业和军事工程中。如图2-4所示是CS3020的外形图。将有字面对准自己,三根引脚从左向右分别是Vcc,地,输出。图2-4CS3020的外形图CS3020是由电压调整器,霍尔电压发生器,差分放大器,史密特触发器和集电极开路的输出级组成的磁敏传感电路,它是一种单磁极工作的磁敏电路,适合于矩形或者柱形磁体下工作。当磁钢随车轮轴旋转时,霍尔传感器受磁场的影响,霍尔器件输出一个脉冲信号。感受到磁场的时候输出一个低电平,没感受到磁场的时候输出高电平。工作特点如下:〔1〕电源电压范围宽;〔2〕开关速度快,无瞬间抖动;〔3〕工作频率宽;〔4〕寿命长、体积小、安装方便;〔5〕能直接和晶体管及TTL、MOS等逻辑电路接口。显示屏选型方案一:采用1602LCD显示屏作为显示器,1602是一个能显示32个字符的液晶显示屏,其显示美观大方、功耗很小,适用于显示较多字符的场合,而且控制复杂、价格较贵、而且环境温度不能太冷和太热。由于本系统只需显示电机的转速,显示的字符个数较少,而且1602液晶显示屏不亮,故本系统不采用1602LCD显示器。方案二:采用七段数码管作为本系统的显示器。其优点是控制简单、亮度大、价格廉价、亮度也比拟高。由于系统要求显示四位数码,因此采用四位数码管作为显示器。报警芯片选型本系统语音报警芯片采用LX110C,该芯片具有体积小、硬件电路简单、功耗小等多个优点,并且报警音乐质量相对较高,因此选用该报警芯片图2-5LX110C电机驱动选型方案一:采用集成的电机驱动芯片L298n,具有驱动能力强、运行可靠、使用简单、易于操作、体积小等优点,但是其价格比拟昂贵,本钱较高,且效率不高。方案二:采用双三极管构成的H桥电路驱动。通过单片机控制三极管的通断,单片机输出不同占空比的PWM即可调节电机的速度。由于这种电路工作在管子的饱和截止模式下,效率非常高,电子开关的速度很快,稳定性也极佳。由于兼于方案二调速特性优良、调整平滑、调速范围广、过载能力大、且本钱较低,因此本设计采用方案二。3系统硬件电路设计3.1中央处理电路设计单片机最小系统设计单片机加上适当的外围器件和应用程序,构成的应用系统称为最小系统。〔1〕时钟电路单片机内部具有一个高增益反相放大器,用于构成振荡器。通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器。可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。图3-1时钟电路〔2〕复位电路单片机小系统常采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。其结构如下列图。上电自动复位通过电容C1充电来实现。手动按键复位是通过按键将电阻R1与VCC接通来实现。图3-2复位电路按键电路设计常用的按键有三种:机械触点式按键、导电橡胶式和柔性按键〔又称触摸式键盘〕。
机械触点式按键是利用机械弹性使键复位,手感明显,连线清晰,工艺简单,适合单件制造。但是触点处易侵入灰尘而导致接触不良,体积相对较大。导电橡胶按键是利用橡胶的弹性来复位,通过压制的方法把面板上所有的按键制成一块,体积小,装配方便,适合批量生产。但是时间长了,橡胶老化而使弹力下降,同时易侵入灰尘。柔性按键是近年来迅速开展的一种新型按键,可以分为凸球型和平面型两种。柔性按键最大特点是防尘、防潮、耐蚀,外形美观,装嵌方便。而且外形和面板的布局、色彩、键距可按照整机的要求来设计。由于客观条件与经济能力有限,本系统采用机械触点式按键。〔1〕独立连接式键盘独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,然而,在按键较多时,I/O口线浪费较大,不宜采用。独立式按键软件常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,那么可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。由于本程序较为简单,为了使用方便及节省资源,选择独立式键盘。本系统使用的按键工作方式为:低电平有效,当有按键按下时给单片机相应的I/O口一个低电平,控制系统执行相应的功能。下列图为独立式键盘电路图:图3-3独立式键盘电路图〔2〕去抖动键盘编程中主要考虑去抖动的问题。当测试说明有键被按下之后,紧接着就进行去抖动处理。因为键是机械开关结构,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动。为保证键识别的准确,在电压信号抖动的情况下不能进行行状态输入。为此需进行去抖动处理。去抖动有硬件和软件两种方法。硬件方法就是加去抖动电路,从根本上防止抖动的产生。软件消抖,在第一次检测到有键按下时,执行一段延时程序之后,再检测此按键,如果第二次检测结果仍为按下状态,CPU便确认此按键己按下,消除了抖动。3.2传感器电路设计3.2.1加速度传感器电路设计〔1〕加一个电容可以很好的防止电源干扰〔如下列图〕,电容应该尽量与芯片的VDD引脚靠近,电容的接线尽量短,并且优先和电容外表相连。此处电容一般选用0.1μF的陶瓷电容。电源电源VDDMEMSIC图3-4电源隔噪电路〔2〕应该使用鲁棒小电感地面布线。〔3〕必须采取措施保证MEMSIC芯片所在的PCB板周围热平衡且附近较大热源。实验说明,在离MEMSIC11MM的地方有120degC热源偏差将在5mg内。〔4〕芯片下面要置放一块与芯片大小相当的金属底层,底层要尽量厚。〔5〕均匀的焊接在底线上,这些焊点将会增加芯片与PCB的绝沿并且有助于运行。图3-5加速度传感器电路3.2.2超声波模块电路设计超声波模块M0总共有5个管脚,除了VCC电和GND地以外还有三个脚,NC是空脚〔不接任何IO口〕,还剩下TRIG使能脚和ECHO检测脚两个脚。TRIG和ECHO分别接单片机的IO口,单片机给模块的TRIG脚一段时间的高电平,模块就工作一次。根据时序图,当单片机IO口给TRIG高于10uS的高电平,给完后单片机拉低。TRIG被拉低以后,模块控制发射探头发送8个40K的声波出去,并且ECHO被硬件自动拉高,当发出的声波被障碍物发射回来,模块接收探头接收到这8个声波,ECHO脚又自动拉低。ECHO脚高电平的时间就是声波在空气中传播的时间T,时间T乘以声速V除以2就是需要检测的距离S。距离计算公式:S=(T*V)/2V=340M/S〔或者当时温度下的声速〕图3-6超声波测距时序图图3-7超声波模块接线图3.2.3霍尔传感器的电路设计图3-8霍尔传感器使用示意图图3-9检测脉冲产生模块霍尔传感器外形图和与磁场的作用关系如图3-8所示。磁场由磁钢提供,所以霍尔传感器和磁钢需要配对使用。在非磁材料的圆盘边上粘贴一块磁钢,霍尔传感器固定在圆盘外缘附近。通过单片机测量产生脉冲的频率就可以得出圆盘的转速。提醒:没有磁钢时输出高电平,有磁钢时输出低电平。检测脉冲产生模块如图3-9所示,将电机的转动轴上装上小磁钢,每当小磁钢经过霍尔传感器时,就会引起传感器输出电压发生变化。本设计选用连续型比例式线性霍尔传感器,具有低噪声输出,灵敏度高,快速上电,温度稳定性好,寿命长,高可靠性等优点,非常适合用在线性目标移动和旋转目标移动的位置检测系统中。这是霍尔传感器的原理局部,而整个测速器就是用到单片机与一个电磁感应器用来计算行进中车轮所转动的圈数。输入车轮的外径,计算单位时间内车轮所转圈数即得。图3-10霍尔传感器电路图3.3电机驱动电路设计采用双三极管构成的H桥电路驱动。通过单片机控制三极管的通断,单片机输出不同占空比的PWM即可调节电机的速度。由于这种电路工作在管子的饱和截止模式下,效率非常高,电子开关的速度很快,稳定性也极佳。并且由于三极管和二极管本钱低,使得驱动电路本钱低。图3-11中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路〞是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠〔注意:图3-11及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来〕。如下图,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。图3-11H桥驱动电路要使电机运转,必须使对角线上的一对三极管导通。例如,如图3-12所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动〔电机周围的箭头指示为顺时针方向〕。
图3-12H桥电路驱动电机顺时针转动图3-13所示为另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动〔电机周围的箭头表示为逆时针方向〕。
图3-13H桥驱动电机逆时针转动下面为系统所用的具体驱动电路:图3-14H桥直流电机驱动电路3.4显示模块电路设计采用七段数码管作为本系统的显示器。其优点是控制简单、亮度大、价格廉价、亮度也比拟高。图3-15数码管显示电路3.5报警电路设计倒车提醒电路倒车提醒采用蜂鸣器鸣叫到达提醒目的。图3-16蜂鸣器电路防盗报警电路单片机控制继电器工作进而控制报警芯片。图3-17防盗报警电路3.6电源电路设计220V交流电通过变压器转换成12V交流电,再进过整流桥整流,C7起滤波作用,C8、C9防止自激,7805为稳压芯片。图3-18电源电路4系统软件设计在单片机软件编程时,应运用模块化编程思想,按照先粗后细的方法把整个系统的软件划分成多个功能独立、大小适当的模块。本设计软件可分为超声波测距子程序、加速度传感器测加速度信息子程序、LED数码管显示子程序、电机正反停控制和测速子程序、双机通信工序五个局部。软件功能是在KeiluVision4中编写C语言来实现的。4.1系统主程序流程图主机程序流程图图4-1主机程序流程图从机程序流程图图4-2从机程序流程图4.2各子程序单元流程图及设计电机控制和测速单元软件设计本系统使用T0、T2来测量电机转速:T0工作在定时模式,T2工作在计数模式,在一定时间内测量出脉冲数就可以计算出电机的转速。按键可以控制电机的正反转、停机和加减速:通过调节PWM波的占空比来调节电机的转速。下面是子程序流程图:图4-3电机控制和测速度单元程序流程图倒车提醒单元软件设计超声波测距采用定时器2和外部中断0来共同完成。当测量的距离小于30cm时蜂鸣器鸣叫提醒用户。下面是子程序流程图:图4-4倒车提醒单元程序流程图加速度检测单元软件设计加速度传感器利用I2C总线来测量加速度信息。I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。图4-5I2C总线起始、终止和工作时序图起始和终止信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。数据传送格式〔1〕字节传送与应答:每一个字节必须保证是8位长度。数据传送时,先传送最高位〔MSB〕,每一个被传送的字节后面都必须跟随一位应答位〔即一帧共有9位〕。如果一段时间内没有收到从机的应答信号,那么自动认为从机已正确接收到数据。图4-6I2C总线传送数据时序图双机串行通信软件设计某加速度数据采集系统有主、从机进行串行通讯,假定双机的系统时钟频率fosc=11.0592MHz,通讯速率9600bps,主机每次将加速度数据jiasudu的值发送给从机,从机那么将收到的数据送到显示器上显示,试完成双机通信程序设计。主机采集数据,并发送给从机的子程序如下〔这里没有考虑通信协议〕:#include<reg51.h>#defineucharunsignedcharucharjiasudu;voidInitSystem(void);voidDelay(void);voidInitSystem(void){TMOD=0x20;/*T1工作于方式2*/TH1=0xfd;/*通信速率2400bps*/TL1=0xfd;PCON=0x00;/*SMOD=0*/SCON=0x50;/*允许接收*/ES=0;/*开串口中断*/ET1=0;TR1=1;/*启动定时器1*/RI=0;TI=0;}voidDelay()/*延时子程序*/{inti;for(i=0;i<10000;i++);}voidmain(void){InitSystem();while(1){ Delay(); SBUF=jiasudu; while(!TI); TI=0; CollectData();//测量数据}}从机程序如下:#include<reg51.h>#defineucharunsignedcharucharjiasudu;voidInitSystem(void);voidDisplay(void);voidInitSystem(void)/*系统初始化程序*/{TMOD=0x20;/*T1工作于方式2*/TH1=0xfd;/*通信速率2400bps*/TL1=0xfd;PCON=0x00;/*SMOD=0*/SCON=0x50;/*允许接收*/EA=1;ES=1;/*开串口中断*/ET1=0;TR1=1;/*启动定时器1*/RI=0;TI=0;}voidComm(void)interrupt4using0/*串行中断效劳程序*/{jiasudu=SBUF;/*保存数据*/RI=0;/*清中断标志*/}voidmain(void){InitSystem();while(1){ Display();//显示}}5实验结果分析5.1硬件调试在设计系统时,首先应该设计系统的硬件电路然后再调试系统所需要的软件。我先把各个模块电路在万用板上焊接出来,再此根底上把各个模块的软件调试完成。最后把系统所需要的硬件电路做一个PCB板。实验焊接完毕后根据设计线路图进行调试,以便检测其实际的性能。调试过程经过以下三个过程:不通电检查电路安装:认真检查接线是否正确,如多线,少线或错线,尤其是电源线不能接错或接反。使用外用表,按照设计电路接线图检查安装电路,在安装好的电路中按电路图一一对照检查连线,并在检查中要对已经检查过的连线做标记。直观检查电源:地线,信号线,元器件接线端之间有无短路,联线处有无接触不良,有极性元器件引线短有无接错,反接等,集成块是否插对。通电观察:把经过准确测量的电源电压参加电路,但暂不接入信号源信号。电源接通后,首先观察有无异常现象,包括有无冒烟,异常气味。触摸元件是否发烫,电源是否短路等。在此过程中出现一些问题:报警模块一直工作不稳定,经过我的仔细检查发现加速度传感器忘记加上拉电阻,因为此传感器所用的是I2C总线,在时钟线和数据线上必须要加上拉电阻,否那么会对测量数据有干扰;H桥直流电机驱动电路在腐蚀板上的驱动能力变弱,后来经过不断尝试基极电阻调大以后驱动能力有所提高,但是H桥驱动电路工作还是不尽如人意。单片机刚上电时,引脚瞬间为高电平,这一点很重要。以前不以为然,这次在用单片机控制三极管驱动继电器时遇到了麻烦,刚开始用NPN型三极管驱动继电器,这样单片机刚上电三极管基极就为高电平,三极管导通喇叭就开始响。在软件中给单片机引脚初始化为低电平也不能解决问题,最后只得改用PNP型三极管。所以我们不能光凭理论知识去解决问题,有些时候经验很重要。由于腐蚀的是单层板,所以布线会很麻烦。经过几天的耐心布线,最终还是比拟满意,用了13跟跳线,系统整体看上去简洁美观。在自己做单程腐蚀板的过程中,对PCB有了更加深刻的了解,虽然比拟麻烦但是学到了很多实实在在的东西,为以后做PCB板打下很好的根底。下面为系统的硬件实物图:图5-1系统实物图5.2软件调试在单片机软件编程时,应运用模块化编程思想,按照先粗后细的方法把整个系统的软件划分成多个功能独立、大小适当的模块。本设计软件可分为超声波测距子程序、加速度传感器测加速度信息子程序、LED数码管显示子程序、电机正反停控制和测速子程序、双机通信工序五个局部。软件功能是在KeiluVision4中编写C语言来实现的。由于本系统所使用的定时器/计数器比拟多,所以我学习了定时器2的使用方法,在此条件下我又扩充了另一块单片机,实现了双机串行通信,这些主要还是为了增加定时器/计数器。编程的时候我主要是对加速度传感器I2C的时序不是很了解,所以我查阅了大量的资料,了解了相关内容。另外加速度传感器的误差补偿算法经过我仔细地研究芯片资料准确的了解了算法的内容。双击串行通信时,从机一直接收不到主机发送的数据,经过仔细检查发现数据类型定义有问题,经接受数据类型改为字符型后可以正常工作。在将各个子程序组成主程序时,最大的麻烦就是延时问题。因为数码管动态显示的原因,每改动一次亮度都会有所改变,最后经过屡次更改比对选择了比拟适宜的数据。结论毕业设计是本科学习阶段的最后一个环节,是对所学根底知识和专业知识的一种综合应用,是一种综合的再学习、再提高的过程,这一过程对学生的学习能力和独立思考及工作能力也是一个培养,同时毕业设计的水平也反映了大学教育的综合水平,因此学校十分重视毕业设计这一环节,加强了对毕业设计工作的指导和发动教育。在大学的学习过程中,毕业设计是一个重要的环节,是我们步入社会参与实际工作的一次极好的演示,也是对我们自学能力和解决问题能力的一次考验,是学校生活与社会生活间的过渡。在完成毕业设计的时候,我尽量的把毕业设计和实际工作有机的结合起来,实践与理论相结合。这样更有利于自己能力的提高。通过这次设计汽车测速和防盗报警系统,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业根底知识的能力和解决实际工程问题的能力。同时也提高了我查阅文献资料、设计标准、电脑制图以及PCB制作等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,抗压能力及耐力也都得到了不同程度的提升。很好的锻炼了理论联系实际,与具体工程、课题相结合,开发、设计产品的能力的进一步在课程设计中使我学会了很多,也对自己的能力有了进一步的提高,为以后的学习和工作加强。在设计过程中,总是遇到这样或那样的问题。有时发现一个问题的时候,需要做大量的工作,花大量的时间才能解决。为以后的工作积累了经验,增强了信心。既让我们懂得了怎样把理论应用于实际,又让我们懂得了在实践中遇到的问题怎样用理论去解决,它更是自己综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节。这是我们都希望看到的也正是我们进行毕业设计的目的所在。任何事情都是一分为二的,在毕业设计过程中也暴露出自己专业根底的很多缺乏之处。例如对知识综合运用的技巧的缺乏,对材料了解的不够透彻等等。感觉自己所学习的只是冰山一角,面对稍微复杂的东西还是没能得心应手,再一次体会到学无止境的意义了。尽管本次设计中还有很多需要完善的地方,比方实际硬件电路的不稳定,排线布局的不合理等,但我想随着自己专业知识的不断加强、综合能力的不断提高,这些问题最终是可以解决的从对根底知识认识的薄弱到顺利如期的完本钱次毕业设计,这也给了我很大的鼓舞和信心,让我明白了一个道理:世上无难事,只要肯登攀,遇到任何困难都不可怕,坚决信心,努力钻研,就有解决的方法。前方的路依然漫长,我会更加努力!致谢毕业设计是对我们知识运用能力的一次全面的考核,也是对我们进行科学研究根本功的训练,培养我们综合运用所学知识独立地分析问题和解决问题的能力,为以后撰写专业学术论文和工作打下良好的根底。本次设计能够顺利完成,首先我要感谢我的母校,是她为我们提供了学习知识的土壤,使我们在这里茁壮成长;其次我要感谢电气工程与自动化学院的老师们,他们不仅教会我们专业方面的知识,而且教会我们做人做事的道理;尤其要感谢在本次设计中给与我大力支持和帮助的王新环老师。在王老师的耐心指导和热情帮助下,本设计已经完成。在这段时间里,王老师严谨的治学态度和热忱的工作作风令我十分钦佩,她的指导使我受益非浅。通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学四年的学习成果。毕业设计,是大学生涯中的最后一份答卷,四年的大学生活将因此划上一个句号,但对于我的人生却只是一个逗号,我将面对又一次征程的开始。四年的求学生涯走得辛苦却也收获满囊。在论文终于完工的时候,我的心里百感交集,思绪万千,不禁想起了很多人,因为本设计能得以顺利完成,离不开他们的支持和帮助。尤其是在设计过程中,王老师给予我解决问题的思路和方法,并且在设计思路方面给予了大力的帮助和支持,在此,我对她表示最真挚的感谢!时光匆匆如流水,转眼便是大学毕业时节,春梦秋云,聚散真容易。离校日期已日趋临近,毕业论文的的完成也随之进入了尾声。从开始进入课题到论文的顺利完成,一直都离不开老师、同学、朋友给我热情的帮助,在这里请接受我诚挚的谢意!
感谢我的所有朋友,多年来一直对我进行鼓励和支持,使我端正了学习和生活的态度,使我有恒心有毅力在学习和科研的道路上不断进步。感谢自动化08-8班所有的同学,四年来对我无微不至的照顾和的关心,伴我度过充实而美好的大学时光。最后,深深感谢我的亲人对我的一贯关心、保护和帮助,他们的支持、理解和鼓励是我努力完成学业的精神支柱,父母的殷切期望是我前进的最大动力。参考文献[1]孙涵芳,徐爱卿.MCS-51/96系列单片机原理及应用.北京:北京航空航天大学出版社,1996.159-169[2]余发山,王福忠.单片机原理及应用技术.中国矿业大学出版社,2023.76-105[3]江晓安,董秀峰.模拟电子计术.西安:西安电子科技大学出版社,2023.15-50[4]李朝青.单片机原理及接口技术.北京:北京航天航空大学出版社,2005.147-191[5]胡汉才.单片机原理及其接口技术.北京:清华大学出版社,2004.311-340[6]徐科军主编.传感器与检测技术.北京:电子工业出版社,2004.139-148[7]胡向东,刘京诚,余成波.传感器与检测技术.北京:机械工业出版社,2023.87-100[8]史久贵编著.基于AltiumDesigner的原理图与PCB设计.北京:机械工业出版社,2023.75-100[9]鲁捷,焦振宇,孟凡文.Protel2004电路设计.清华大学出版社,2006.162-251[10]路锦正,王建勤等.超声波测距仪的设计[J].传感器技术,2002,21〔8〕:29-34[11]王万清.智能检测技术.北京:科学普及出版社,2005,30-35[12]吴正毅.测试技术与测试信号处理.北京:清华大学出版社,2003,65-72[13]苏铁力,关振海.传感器及接口技术.北京:中国石化出版社,2023,67-73[14]孙传友,孙晓斌.感测技术根底.北京:电子工业出版社,2001,55-58[15]胡乾斌,李光斌.单片微型计算机原理与应用.武昌:华中理工大学出版社2002,112-118[16]何立民单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,2007,89-96[17]李华.MCS-51系列单片机实用接口技术.北京:北京航空航天大学出版社,2002,78-82[18]唐荣耀,李九龄,邓丽曼.微型计算机应用技术(上).北京:清华大学出版社,2006,66-72[19]何希才.传感器及其应用电路.北京:电子工业出版社,2003,33-42附一:系统原理图附二:源程序代码主机://最终主机#include<reg52.h>#include<math.h>//需要用到求绝对值函数#defineucharunsignedchar#defineuintunsignedintsfrT2MOD=0xc9;uintmm=0,tt=0,a1=0,a2=0,a3=0,x=1,y=8;sbitWE0=P2^4;sbitWE1=P2^5;sbitWE2=P2^6;sbitWE3=P2^7;sbitm1=P2^0; //zhangkongbisbitm2=P2^1;sbitzheng=P1^4; //手动按键sbitfan=P3^6;sbitting=P3^7;sbitjia=P1^2;sbitjian=P1^3;floatxg,yg;uintk=0;ucharz=0;//注意必须这样定义uchars[]={"0123"};sbitsda=P2^2;sbitscl=P2^3;voidInitSystem(void);voidCollectData(void);ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};shou();shou1(); shou2();voidJia();voidJian();voiddelay(uintm){ uinti,j; for(i=m;i>0;i--) for(j=60;j>0;j--);}voiddelay1(uchara){ ucharc,d; for(c=a;c>0;c--) for(d=110;d>0;d--);}voidxian_shi(){ucharge,shi,bai,qian; uintjj; jj=mm; jj*=60; //每秒转速 qian=jj/1000;bai=(jj%1000)/100;shi=(jj%100)/10;ge=jj%10;WE0=0;P0=table[qian]; delay(2);WE0=1;P0=0xff;//关位码 WE1=0;P0=table[bai];delay(2); WE1=1;P0=0xff;//关位码 WE2=0;P0=table[shi];delay(2);WE2=1;P0=0xff;//关位码 WE3=0;P0=table[ge];delay(2); WE3=1;P0=0xff;//关位码}voidtimer_init()//定时器计数器初始化函数{ EA=1; ET0=1; ET2=1; TMOD=0x21; TH0=(65535-50000)/256; TL0=(65535-50000)%256; T2MOD=0x00; T2CON=0x06; RCAP2H=0;RCAP2L=0; TH2=RCAP2H; TL2=RCAP2L; TR0=1;}/*系统初始化*/voidInitSystem(void){TMOD=0x21;/*T1工作于方式2*/TH1=0xfd;/*通信速率2400bps*/TL1=0xfd;PCON=0x00;/*SMOD=0*/SCON=0x50;/*允许接收*/ES=0;/*开串口中断*/ET1=0;TR1=1;/*启动定时器1*/}/***************************************************************//***********定义两个延时函数,一个微妙级,一个毫秒级************/voiddelayjia(){;;}voiddelaymsjia(uintz){uinti,j;for(i=z;i>0;i--)for(j=115;j>0;j--);}voiddelay1jia(uintr){uintf,g;for(f=r;f>0;f--)for(g=100;g>0;g--);}voidstart()//起始{sda=1;delayjia();scl=1;delayjia();sda=0;delayjia();}voidstop() //停止{sda=0;delayjia();scl=1;delayjia();sda=1;delayjia();}voidack() //yingda{uchari;scl=1;delayjia();while((sda==1)&&(i<250))i++;scl=0;delayjia();}voidwrite_byte(uchardate) //写{uchari,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;scl=0;delayjia();sda=CY;delayjia();scl=1;delayjia();scl=0;}scl=0;delayjia();sda=1;delayjia();}ucharread_byte() //读{uchari,k;scl=0;delayjia();sda=1;delayjia();for(i=0;i<8;i++){scl=1;delayjia();k=(k<<1)|sda;scl=0;delayjia();}returnk;}voidacknowledge(uchara)/*主机应答程序acknowledge〔0〕为应答,acknowledge〔1〕为非应答*/{if(a==0)sda=0;elsesda=1;delayjia();scl=1;delayjia();scl=0;delayjia();}voidMXC_init(){start();/*对应数据通信例如的第一至第三周期*/write_byte(0x20);ack();write_byte(0x00);ack();write_byte(0x00);ack();stop();delaymsjia(75);}/***************************************************************//*********获取4个字节的数据*************************************/voidreceive5bytes(){uchari;start();write_byte(0x20);//对应数据通信例如的第四周期ack();write_byte(0x01);//第五周期ack();start();write_byte(0x21);//第六周期ack();for(i=0;i<3;i++)//第八至十周期〔第七周期省略〕{s[i]=read_byte();acknowledge(0);}s[3]=read_byte();//第十一周期acknowledge(1);stop();}voidII2(){uintx=0,y=0,k=0;receive5bytes();x=s[0]*256+s[1];xg=x/512.0-4;//数据的处理,C6202量程为-2g至+2g,G型号分辨率512counts/g,0g对应x值是2048,xg=fabs(xg); //求浮点数绝对值z=(int)(xg);y=s[2]*256+s[3];yg=y/512.0-4; yg=fabs(yg);}voidfasongjiadisplay(){ II2();SBUF=z; while(!TI); TI=0; delay1jia(10);} voidmain(){ P0=0; //开始数码管不显示 timer_init(); InitSystem();MXC_init(); WE0=1; WE1=1; WE2=1; WE3=1; m1=1; m2=1;zheng=1;fan=1; ting=1; jia=1; jian=1;while(1){fasongjiadisplay(); mm=0; shou(); shou1(); xian_shi(); if(a1==1)//正 { while(a1==1&&a3==0) { Jia();Jian(); m1=1; m2=0; delay1(y); m1=0; m2=1; delay1(x); xian_shi(); shou2(); } z=0; a3=0; m1=1; m2=1; a1=0; } elseif(a2==1)//反 { while(a2==1&&a3==0) { Jia();Jian(); m2=1; m1=0; delay1(y);m2=0; m1=1;delay1(x); xian_shi(); shou2(); } z=0; a3=0; m2=1; m1=1;a2=0; }}}shou() //手动控制正反转扫描{ if(zheng==0) { delay1(8); if(zheng==0) { a1=1; } } returna1;}shou1(){ if(fan==0) { delay1(8); if(fan==0) { a2=1; } } returna2;}shou2(){ if(ting==0) { delay1(8); if(ting==0) { a3=1; } } returna3;}voidJia(){ if(jia==0) { delay1(8); if(jia==0) { x+=1; } }}voidJian(){ if(jian==0) { delay1(8); if(jian==0) { y+=1; } }}voidtimer0()interrupt1{ TH0=(65535-50000)/256; TL0=(65535-50000)%256; tt++; if(tt==5) { tt=0; TR0=0; TR2=0; mm=0; mm|=TH2; mm=(mm<<8)|TL2; RCAP2H=0; RCAP2L=0; TH2=RCAP2H; TL2=RCAP2L; TR0=1; TR2=1; }}voidtimer2()interrupt5//显示0000说明出错{TF2=0;//!!!注意!!!定时器2必须由软件对溢出标志位清零,硬件不能清零,这与定时器0和定时器1不同!!! TR2=0; TR0=0; mm=0;}从机://最终从机#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#def
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论