版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 microcomputer; ultrasonic measure 引言引言 本设计是基于单片机的倒车雷达系统,属于嵌入式设计。论文共分为五个部分, 主要阐述倒车雷达系统的设计背景、应用现状、总体设计、基本原理、软件设计、 硬件设计以及最终设计结果。紧紧围绕着单片机嵌入式系统的设计思想, “软件跟着 硬件走,硬件跟着功能走” ,在充分理解基本原理的基础上,通过阅读文献比较其他 人的设计,总结得出一种最优的设计方案。结合系统的需求和可行性,对系统进行 模块化的拆分,分成多个基本模块。然后在每个模块中进行元件的选择与比较,选 出性价比最高的元件,并且进行硬件电路的连接和软件设计。当然也要同时兼本
2、模 块与其他模块之间在尺寸、位置及连接上的协调。设计中注意软硬件合理性、灵活 性和稳定性。 第一章中主要介绍了倒车雷达的国内外应用现状,以及本设计突出的特点。第 二章中主要阐述了整体设计、模块划分、基本原理以及元件的选择。第三章以总分 的结构介绍了系统的硬件设计。第四章阐述了程序设计的原理以及程序流程。第五 章比较零散的展示了本次设计的结果,包括一些重要的仿真、测试、调试过程以及 最终的功能演示和 pcb 图。 除此之外,我也在论文中把自己大学四年里所学到的一些实用的单片机设计技 巧与大家分享,希望本设计不仅可以让各位老师喜欢,也会有真正实际应用的价值。 1 绪论绪论 1.1 设计倒车雷达的目
3、的和意义设计倒车雷达的目的和意义 倒车雷达这些年来逐渐的深入人心,如今的司机已经不再是一个特定的职业, 开车已成为人们普遍具备的一项基本技能。但是城市交通压力越来越大,如何在狭 小的地方安全的停车倒车成为人们日益关心的一个话题,倒车雷达应运而生,它的 出现可以帮助司机观察车后的视觉盲区,确保倒车的安全。倒车雷达本身也成为衡 量一辆好车的标准。因此对它的深入研究具有很强实用性。 1.2 国内外应用现状国内外应用现状 如今的倒车雷达已经脱离早期的“倒车!请注意!”和红外测距,现在一些基础 级的倒车雷达是通过判断距离发出不同程度的“嘀嘀嘀”声音,高端的一些具有摄 像头的后视功能,但是需要自己判断距离
4、远近,当然还有更高端的倒车雷达具有 gps 定位无死角全车监控,不过价格也会更高昂。 1.3 本设计的特点本设计的特点 本次的设计结合以前的很多设计方案,加上自己开车的亲身体会,即保留原本 的“嘀嘀”声,还加上三色 led 灯报警,并且通过 lcd1602 液晶屏和 syn6288 语 音芯片实时显示和播报距离,使距离数字化,更加人性化。为了解决超声波测距存 在的内部缺陷,使用 dht11 温湿度传感器,对距离数据进行温湿度校正,以应对汽 车在高温或大雾天气的倒车。还有最重要的一点,本设计十分严格的控制成本,主 要元件的成本价仅需 86 元,远远低于市场上的同类产品,不仅做到测距精准、使用 方
5、便而且物美价廉。 2 总体设计及基本原理总体设计及基本原理 2.1 系统的设计要求系统的设计要求 本次的设计是基于单片机的倒车雷达设计,要实现的基本功能是在汽车挂倒档 后,帮助司机监测车身周围视觉盲区内的障碍物,及时警示司机,方便倒车的顺利 进行。 其中:有基本的测距功能,用于最初的距离数据获取,是最基础最主要的数据 来源;有对距离数据的校正功能,通过获取周围的温湿度数据对测量的距离数据进 行校正,是数据准确性的关键;有显示功能,通过实时显示计算后的距离数据对司 机师傅进行提示;有语音功能,通过语音播报距离数据对司机师傅进行再次提示, 与显示功能一起灵活组合方便司机对倒车时周围障碍物距离的感知
6、;有报警功能, 通过与内设阈值的比较对司机倒车做出警示,提醒司机的注意;当然还有电源与程 序更新功能,为单片机的正常工作提供支持。 除此之外,还要考虑到成本、硬件成品的尺寸、编程的难易程度、硬件的可扩 展性、稳定性等问题,从多个方面考虑选用最合理的设计方案以及最合适的元器件。 2.2 整体方案的设计整体方案的设计 2.2.1 基本原理基本原理 超声波测距的基本原理8是基于超声波在空气中的传播特性来实现的。超声波 发射器向某一方向发出超声波信号,与此同时,打开计时单元开始计时,超声波在 空气中传播,遇到障碍物后被反射回来,超声波接收器接收到反射波就关闭计时单 元停止计时,记录超声波传播的时间为
7、t(s),利用公式2/cts ,求距离 s,其中 c 为声速11。 障碍物 发射 接收 距离 超 声 波 图 2-1 超声波测距示意图 超声波是声波的一种可以在固体、液体、气体等介质中传播,介质密度越大, 声速则越快。在空气中,声速湿度、温度、密度等不同因素的影响。本设计的应用 场景是在空气中,因此密度对声速的影响可以忽略,但是温度和湿度对声速仍然具 有不可忽视的影响,如零摄氏度海平面的声速约为 331.5m/s(1193 km/h);而当上升 到万米高空时,声速就变为 295m/s(1062km/h);与此同时若温度每升高 1 摄氏度, 声速就增加 0.607m/s。水蒸气分压每上升 133
8、.322pa,声速将提高 0.0021m/s10。温 度越高,声速越大。温度湿度对空气的影响详见附录。通过阅读研究以前的一些文 献,可以得出声速与温度湿度的关系如公式 2-1: (2-1) p pwt v32. 01 15.273 145.331 其中 pw 是空气中水蒸气的分压强,等于水的饱和蒸汽压乘以相对湿度,t 是 摄氏温度,p 是大气压强。通过校正声速,使测出的距离数据更加准确,使系统可 以灵活的适用于各种不同温湿度的外界条件,增强了系统的准确性和稳定性。 2.2.2 整体设计整体设计 通过分析系统的设计要求并且综合各个方面的因素,本系统主要按模块化的方 式进行设计。单片机主控系统负责
9、程序的是顺序进行和主要数据处理;测距模块通 过超声波的收发以及对单片机定时器的控制,测量出从发射超声波到接收到回波的 时间 t,从而进一步计算初次测量出来的障碍物距离(并非最终距离);通过温湿度传 感器,获取周围环境中的温湿度数据,再将数据代入公式,校正测出的距离数据, 得到准确的障碍物距离;将数据送至显示模块和语音模块对司机进行提示;通过检 测是否超出阈值,对数据进行报警。由于是车载系统,所以供电单元采用 usb 供电, 烧写模块也使用 usb 转 rs-232 串口进行程序的更新和下载。 单片机主控系统 测温模块 语音模块 显示模块 电源及烧写模块 测距模块 报警模块 图 2-2 倒车雷达
10、系统框图 2.3 模块的选用与设计模块的选用与设计 2.3.1 单片机的选用与论证单片机的选用与论证 本设计中选用的是 51 系列单片机,型号使用的时 stc89c52rc。该单片机是 stc(宏晶科技)公司生产的一款运算速率高、功耗地、抗干扰能力强的增强型 51 单 片机,代码兼容早期的 51 单片机,片上集成 512 字节的 ram,用户应用程序空间 有 8k 字节,方便编程,有 3 个 16 位定时器/计数器,方便用于超声波回波时间的测 量,具有看门狗功能,有四组 32 个通用 i/o 端口,方便外部设备的连接,具有 isp/iap(即在系统可编程/在应用可编程)功能,不需要专门的编程软
11、件和仿真软件, 可以直接通过串口(rxd/p3.0,txd/p3.1)与上位机相连接,使用 stc 提供的 stc- isp.exe 工具可以下载用户代码还可以进行串口的调试。 图 2-3 stc89c52rc 单片机实物图 2.3.2 测距模块元件的选用与论证测距模块元件的选用与论证 本设计中选用的 hc_sr04 超声波收发模块,是在多个可选的超声波测距模块选 择出来的,具有不可替代的优点。与同类型的超声波测距模块 ks103 相比,虽然 ks103 的精度高 1mm,量程大 1cm-800cm,但功耗大,价格高昂,至少要 100 元, 并不适合车载系统使用,而 hc_sr04 精度 3m
12、m,量程 2cm-400cm,功耗小9,仅 需 5 元,量程和精度也可以完全满足倒车雷达系统的需要,经济又实用,同时它的 驱动简单且迅速,也满足车载倒车雷达对程序运行速率的要求。 图 2-4 hc_sr04 超声波收发模块实物图 2.3.3 温湿度模块元件的选用与论证温湿度模块元件的选用与论证 本设计中选用的是 dht11 来组成温湿度测量模块。以往的设计中常常会使用到 ds18b20 但是由于 ds18b20 仅有温度传感器,而本设计中需要用到温度和湿度的 数据,所以优先选用 dht11。dht11 不仅具有温度传感器还具有湿度传感器,可以 同时获取温度和湿度的数据,用来校正测量的距离数据。
13、而且价格低廉,仅需 5 元, 节约成本。dht11 实物图如下: 图 2-5 dht11 温湿度传感器实物图 2.3.4 显示模块元件的选用与论证显示模块元件的选用与论证 本设计中选用的是 lcd1602 液晶屏显示距离数据,lcd1602 是一种广泛使用 在工业中的字符型液晶显示屏,能够同时显示 16 列 2 行即 32 个字符。而且 1602 中 不仅有 160 个内建的字符发生器 cgrom,集成常用字型,可以完全满足用于所需 的基本字符(不包括中文) ,还有 8 个字符发生器 cgram,可以凭借自己的喜好和 程序需要定义一些简单的汉字,在点数允许的情况下。价格 7 元。1602 液晶
14、显示屏 的实物图如下: 图 2-6 qc1602a 液晶显示屏实物图 2.3.5 语音模块元件的选用与论证语音模块元件的选用与论证 本设计选用的是宇音天下生产的芯片 syn6288。isd400 x 系列的语音芯片是现 在最常见的语音芯片,这一类芯片需要先将要播放的信息由录音部分录入到芯片中, 再由播音部分播出,声音保真,抗干扰能力强,功耗小,以其广泛的应用可以说明 它的优点毋庸置疑,但是以 8 位的为例,如果使用半集成的语音录放模块,价格在 60 元以上而且元件的尺寸比较大,不适合本次的系统设计。与 isd400 x 系列的芯片 相比,宇音天下公司生产的芯片更适合本次的设计,不论是早期的 o
15、syno6188 还 是本设计中使用的 syn6288 都迅速的赢得了业界内大批忠实的粉丝,syn6288 拥 有简单的接口方便硬件连接使用,可以智能识别中文文本数字机常见的符号,通过 上位机的串口可以直接发送需要播放的内容,可以大大减小软件编程的工作量,除 此之外,它的功耗低、封装尺寸小,半集成的语音模块仅仅只有硬币大小,价格仅 需 50 元,加适合车载系统使用即节约成本也节约体积。syn6288 语音模块实物图 如下: 图 2-7 syn6288 实物图 图 2-8 喇叭的实物图 2.3.6 报警模块元件的选用与论证报警模块元件的选用与论证 本设计中报警模块使用三色 led 和蜂鸣器进行报
16、警。当距离障碍物 100cm 及 以上时绿色灯亮,蜂鸣器不发生鸣叫;当距离障碍物 50cm-100cm 时黄色灯低频率 闪烁,蜂鸣器发出频率较低的鸣叫;当距离障碍物在 50cm 以内时红色等高频率闪 烁,蜂鸣器发出频率较高的鸣叫。 图 2-9 蜂鸣器及 led 灯实物图 2.3.7 电源及烧写模块元件的选用及论证电源及烧写模块元件的选用及论证 本设计选用的是集成好的 usb 下载器同时供电和更新程序,由于本设计是针对 车载系统开发,所以电源部分使用 usb 供电,但是由于在板上设计单独的串口来更 新程序明显不实用,所以选择集成好的 usb 下载器,既可以供电,也可以用来烧写 程序。价格 12
17、元。 图 2-10 usb 下载器实物图 3 系统的硬件设计系统的硬件设计 3.1 整体的硬件设计整体的硬件设计 通过分析上文中的系统的功能以及每部分的设计可以得出硬件部分的设计。单 片机是整个系统的核心,外围有 6 个模块要与之相连,其中每个模块的 vcc 和 gnd 端都与系统的高电平和低电平相连,除此以外,还有 1602 的根数据线,rs 寄 存器选择端、e 使能端和 rw 读写信号线,有 dht11 的单总线数据端 data,有 hc_sr04 的触发控制信号输入端 trig 和回响信号输出端 echo,有 syn6288 的 rxd、txd、busy 和直接驱动喇叭的两个 spk 端
18、以及 led 灯和蜂鸣器端等。 对于 51 系列单片机来说,p0 口为开漏输出,内部并没有集成上拉电阻7,所以 若要使用 p0 作为普通的 i/o 端口输出数据时,就必须外接 8 个上拉电阻,保证高电 平的正确输出,而很巧的是显示模块所使用的 1602 在内部的 8 根数据总线 db0- db7 上已经集成了上拉电阻,所以将单片机的管脚中 p0.0-p0.7 与 1602 的 db0-db7 端顺序相连,p0 口和 p2 口位于同一侧,所以为了连线方便 1602 的另外三个控制端 占用 p2 口的三个端口。又因为在功能上 led 灯和蜂鸣器的报警模块也属于数据输 出端,在成品中的位置尽量靠近
19、1602,所以报警模块的 4 个端口也与 p2 口的端口 相连。从功能上看,hc_sr04 和 dht11 属于数据的输入端,而且位置应处于板的 边缘,同时两者应该距离较近,所以将 hc_sr04 的 echo 和 trig 以及 dht11 的 data 端连到 p1 口上。语音模块使用的是上位机固定的串口 rxd/p3.0,txd/p3.1 上,同时由于程序下载也需要固定的串口端,所以这两个端口复用。当然为了保证 单片机的正常工作还需要将它的 vcc(第 40 管脚)接高电平,gnd(第 20 管脚)接低 电平,rst(第 9 管脚)接复位电路,xtal1(第 19 管脚)、xtal2(第
20、 20 管脚)接时钟 电路,ea/vpp(第 31 管脚)直接接高电平,选择内部程序存储器1。 本次硬件设计使用的软件是 protel99se,这个软件集成了丰富的元件封装,常用 的器件基本都可以直接使用,当遇到没有封装的元件时,protel 也提供了原理图库 文件和 pcb 的库文件可以自己制作元件的封装。而且还可以对绘制的电路图进行电 气检查、列出元件清单,当然它最强大的功能还是印刷电路板的设计,可以帮助使 用者对硬件进行排线等,虽然 dxp2004 比 protel99se 更加先进,但是运行所需内存 较大,电脑运行慢,所以还是选择 protel99se。 3.2 每个模块的硬件设计每个
21、模块的硬件设计 3.2.1 测距模块的硬件特点及外围电路测距模块的硬件特点及外围电路 对于 hc_sr04 超声波测距模块来说,它的硬件设计非常简单,外部没有什么特 别需要添加的元件,采用高电平触发 trig 发射超声波信号,然后通过检测 echo 的高电平持续时间计算距离。所以只需将它的 vcc 接高电平(5v) ,gnd 接地, trig、echo 分别接单片机的 p1.0、p1.1 即可。 图 3-1 hc_sr04 引脚图 3.2.2 温湿度模块的硬件特点及外围电路温湿度模块的硬件特点及外围电路 dht11 温湿度传感器外部共有 4 个引脚,但是 nc 引脚悬空不接,所以在电路 图中只
22、画出了其中 3 个引脚。它的 vcc 需提供 3-5.5v 的电压,为了增强它的稳定 性要在它的 vcc 和 gnd 之间接一个 100nf 的电容,用以去耦滤波。为了保证高低 电平的正确输入输出,当连接线少于 20 米时要在 data 端接一个 5k 大小的上拉电 阻。 图 3-2 dht11 引脚及外围电路连接图 3.2.3 显示模块的硬件特点及外围电路显示模块的硬件特点及外围电路 在整体的硬件连接中已经分析过 1602 的位置与占用端口的原因,由于自带的排 阻和端口在实物上的靠近,1602 的第 4 到第 14 引脚与单片机直接相连。将第 15 引 脚 a 即背光电源正接高电平,第 16
23、 引脚 k 即背光电源负接地,将第 1 引脚 vss 地 电源接地,第 2 引脚 vdd 接高电平,比较复杂的是第 3 引脚 v0,它是液晶显示屏 的对比度调整端,使用时应该通过 10k 大小的电位器接。当电位器阻值变化时,效 果如下图: 图 3-3 对比度过低 图 3-4 对比度过高 图 3-5 对比度合理 图 3-6 lcd1602 引脚及外围电路连接图 3.2.4 语音模块的硬件特点及外围电路语音模块的硬件特点及外围电路 语音模块集成度比较高基本不用连接外部电路,只需将喇叭的两端接到 spk1 和 spk2 上,vcc 接高,gnd 接地,busy 可接可不接,rxd 接单片机 txd
24、端, txd 也是可接可不接(不接是因为本系统中语音芯片有些功能没有使用) 。电路图 如下: 图 3-7 语音模块引脚及外围电路连接图 3.2.5 报警模块的硬件特点及外围电路报警模块的硬件特点及外围电路 由于所使用的单片机 stc89c52 的端口做普通的输入输出时,拉电流的能力是 微安级别,灌电流的能力是 10 倍的毫安级别,要点亮 led 灯微安级别的电流是远 远不够的,所以通常使用的灌电流连接方式电亮 led,即 led 的正极直接接高电 平,负极接保护电阻后接单片机的输入输出口。 同样,蜂鸣器也采用灌电流的连接方式连接,但是在实验中发现,这样连接并 不能让蜂鸣器发出比较高的声音,再一
25、次修改了蜂鸣器的连接方式,蜂鸣器的正极 直接接高电平,负极接三极管 npn 的集电极,三极管的发射极接地,基极接保护电 阻后接到单片机的输入输出口。 图 3-8 报警模块引脚及外围电路连接图 4 系统的软件设计系统的软件设计 4.1 整体的软件设计整体的软件设计 本设计的核心使用的 51 系列的单片机,在内存上是无法与计算机相比的,所以 要在数据空间的使用和程序的复杂度上尽量节省,最大限度的使用单片机已经集成 好的比如中断、定时器、看门狗等功能,防止程序空间以及数据空间过大溢出。在 编程的过程中尽量提高程序的模块化,增加复用率。 使用的编程语言是基于 51 单片机的 c 语言,编程难度小,理解
26、方便,已有一 些集成的函数方便调用,与计算机的 c 语言相比,它更接近底层,可以按位定义和 运算,十分灵活,与对应单片机的汇编语言相比他的优点在于可读性强,更接近人 的语言,维护、更新、扩展都更加的方便。 使用 keil4 进行软件的编程,这个软件界面简单使用方便,内部包含了 c 的编 译器还集成了大量的库函数,当然最喜实用的时它强大的 debug 功能,可以将整个 程序逐步运行出来,可以减小当程序直接烧写到板子上风险,也比普通的仿真软件 更容易看到每一步的结果和内部的如定时器、寄存器、内存等的实时状态,是单片 机软件开发必备的帮手。 图 4-1 keil4 的 debug 图 除了软件编程工
27、具外还使用 protues7.8 进行硬件仿真4,可以在电脑上直接观看 到程序的运行结果,还有一些比如示波器等测量仪器,比上面的 debug 更加的直观, 方便对外围电路的设计。缺点就是本次设计中使用的版本有些低有一些元件没有对 应的仿真,只能采用模拟的方式。 图 4-2 倒车雷达系统仿真图 在仿真图中 hc_sr04 用两个按键模拟,syn6288 用示波器模拟,dht11 使用 atmega16 模拟。其余的元件都有自己的仿真库文件。 4.2 每个模块的软件设计每个模块的软件设计 4.2.1 主程序主程序 主程序是系统函数的入口,起总体协调的功能,主程序中尽量少出现具体的处 理过程,采用函
28、数调用及返回的方式对系统的其他模块进行调度,合理安排每个模 块的先后顺序。 程序开始运行时先对各个模块进行初始化,先初始化液晶屏,并且延时一段时 间使其稳定,然后清屏,紧接着初始化测距模块和语音模块。然后对单片机的定时 器进行设定,程序中使用了定时器 0 和定时器 1,并且对系统的中断进行设定。再 然后显示欢迎界面,并且播报程序开始运行。 紧接着就进入主程序大循环部分,调用 hc_sr04 的 sr04_read_data 函数读取 距离数据,调用 dht11 的 getdht11 函数读取温度湿度数据,检测这两组数据是否 正确,是否超出边界。如果没有问题那么使用温度湿度数据对距离数据进行校正
29、, 得到比较准确的距离数据,然后将数据都转换成字符串格式,调用 syn6288 的 speech 函数播报距离数据,调用 1602 的 lcd_write_string 函数显示到液晶屏上, 将距离与内设阈值进行比较更新标志,接着调用报警函数并传递标志,按级别发出 警报,最后延时防止超声波的信号干扰,并且利于语音播报的完成。然后返回循环 开始的地方,再次获取数据。 开始 各模块初始化 定时器设定 中断设置 欢迎界面及语音 1 读取距离数据 读取温湿度数据 距离数据处理 语音播报距离 液晶显示数据 led与蜂鸣器警报 图 4-3 主程序程序流程图 4.2.2 基础函数库基础函数库 基础函数库是存
30、放一些常被其它模块的函数多次调用的函数,比如延时函数。 基础函数库中有两个延时函数,是使用软件延时来实现的,但是准确的延时还是需 要单片机的定时器来实现。这两个函数一个是微妙级的一个是毫秒级,可以基本满 足程序大致延时使用。这样写可以大大减小代码的重复率。 4.2.3 测距模块的软件设计测距模块的软件设计 测距模块中包含了与距离测量有关的所有函数,包括 hc_sr04 的初始化,距离 数据的读取,以及启动模块的函数。每个函数的设计都离不开 hc_sr04 的工作特性, 它的时序图如下: 图 4-4 超声波测距时序图 由时序图可以得出,上位机需要通过 trig 向模块发送一段 tts 高电平,不
31、少 于 10us,用来触发超声波模块开始测距。函数 startmodule 就实现了这一功能,先 将 trig 电位拉高,然后软件延时大于 10us,然后再将它的电位拉低。然后在软件 中等待 echo 的电平变高,一旦变高就打开定时器 0,以工作方式 1 开始计数,初 值为 0,等待 echo 电平变低,一旦变低就停止计数,并读取 th0 和 tl0 的值,计 算 echo 高电平持续时间,然后进一步计算出距离,并将测量的距离值返回。 其中定时器的工作方式是在初始化时进行定义的,由于本次设计中要用到多次 定时计数器,所以在设置 tcon 时要使用按位或:tmod|=0 x01,这样就不会影响
32、到另外一个定时器的工作。因为要给定时器选择 16 位定时器所以让它工作在工作方 式 1,,计数脉冲来自内部而不是外部,所以 c/t 位为 0,仅需软件启动所以 gate=0,所以 tmod 定义为 0 x01。 向trig发送10us高电平 开计时器 echo为低电平 echo为高电平 关计时器 计算距离 重置计时器 返回 开始 是 否 是 否 图 4-5 测距模块程序流程图 4.2.4 温湿模块的软件设计温湿模块的软件设计 该模块的软件设计主要是用来获取当前环境的温度和湿度。包含两个基本函数, 其中 getdht11 是主函数,负责获取数据时对输入输出端口的控制以及对获取的数 据进行基本的处
33、理,而 com 函数是它的子函数,负责每 8 位数据的读取。dht11 的时序图比较复杂,对应的驱动部分也比 sr04 的更加麻烦。而且 dht11 数据格式 特殊,读取方式也比较特殊,见图 4-7 和图 4-8. 图 4-6 dht11 时序图 图 4-7 dht11“0”数据的信号表示图 图 4-8 dht11“1”数据的信号表示图 通过观察图 4-6,可以很清楚的看到 dht11 的向上位机发送数据的全过程。首 先,通过软件定义,将单片机与 dht11 连接的端口置 0 并保持 18 毫秒以上,向 dht11 发送开始信号,保证 dht11 可以检测到开始信号,然后单片机端口由软件 拉高
34、,等待 dht11 的响应这个过程持续 20 到 40 微秒,此时的 dht11 在检测到单 片机发来的开始信号后自动等待电平拉高(不需要人为控制,dht11 自动实现) , 一旦电平变高,dht11 就发送自己的回响信号,将端口电平拉低并且延时 80 微秒, 然后再将电平拉高 80 微秒,告诉单片机,准备发送数据了,此时的单片机由软件循 环检测电平的高低,并且准备接收数据。接收数据将调用 com 函数。dht11 的数 据由 5 组 8bit 的数据组成,需要调用 com5 次,数据包括湿度的整数小数温度的整 数小数以及校验和,当单片机接收完数据后,利用发送的校验和对数据进行校验, 如果正确
35、无误则将数据拼接完成后返回主程序。大致的流程图如下: 开始 电平拉低 电平拉高 延时大于18毫秒 延时20微秒 电平是否变低 电平是否变高 电平是否变低 调用5次com函数接收数据 校验数据是否正确 处理数据 返回 是 是 否 否 否 是 否 是 图 4-9 dht11 主函数流程图 4.2.5 显示模块的软件设计显示模块的软件设计 显示模块软件设计中所包含的子函数非常多,有初始化函数、判忙函数、清屏函数、 写指令函数、写数据函数以及写入字符串函数。其中初始化函数是在主程序一开始 就调用用来初始化液晶显示屏,通过调用写指令函数对显示屏进行基本的模式设定、 光标设定以及清屏。判忙函数是通过对 1
36、602 当前状态的读取判断是否处于忙状态。 写指令和写数据是最基本的两个函数,都是通过数据总线向 1602 发送信息,不同的 是选择寄存器,通过将 rs 端置高电平选择数据寄存器,此时通过数据总线接收的 消息将被认定为数据,将 rs 端置低电平选择指令寄存器,此时通过数据总线接收 的消息将被认定为指令。 表 4-1 1602 液晶基本指令表 指令rsrwd7d6d5d4d3d2d1d0 1清屏0000000001 2光标返回000000001* 3输入模式00000001i/ds 4显示控制0000001dcb 5光标/字符移位000001s/cr/l* 6功能00001dlnf* 7 置字符
37、 发生器地址 0001字符发生存储器器地址 8 置数据 存储器地址 001显示数据存储器地址 9 读忙标志 和地址 01bf计数器地址 10 写数据到指令 7.8 所设地址 10要写的数据 11 从指令 7.8 所设 的地址读数据 11读出的数据 写指令和写数据的基本方式一样,仅有传递的参数和修改的内容不同,用同一 个流程图来表示: 开始 是否忙 rs置1(数据) 或清0(指令) rw清0进行写操作 e使能端置1 向数据总线发送数据 延时 返回 e使能端清0 是 否 图 4-10 写指令和写数据的程序流程图 写入字符串函数则是先确定字符串的起始位置,然后调用写数据函数并传递位 置信息,通过写数
38、据函数的处理,将字符串信息显示到 1602 屏幕上,然后将位置加 1,判断是否已到字符串尾部,如果没到进入下次循环,如果已经到字符串尾则返回 主函数。 确定字符串起始位置 开始 结束 调用写数据函数 是否是最后一个字符 位置+1 否 是 图 4-11 写字符串的程序流程图 4.2.6 语音模块的软件设计语音模块的软件设计 语音模块的软件也比较复杂,包含了 4 个函数,其中 syn6288_init 是初始化函 数,发送数据函数 sendchar,背景音乐控制函数 bkmusic,以及调用最多的发生程 序 speech。主要实现了对语音模块的控制及调用。并且为了程序书写的方便以及可 读性的提高,
39、将语音芯片一些内置的常数先进行宏定义。又由于该芯片的通信使用 固定的帧格式,为了方便使用需要自己定义数据包头,包括帧头、数据区长度以及 命令字、命令参数。帧结构如下表: 表 4-2 syn6288 帧结构表 数据区 (小于等于 203 字节) 帧 结 构 帧头 (1 字节) 数据区 长度 (2 字节) 命令字 (1 字节) 命令 参数 (1 字节) 待发送文本 (小于等于 200 字节) 异或校验 (1 字节) 数 据 0 xfd 0 xxx 0 xxx 0 xxx0 xxx 0 xxx 0 xxx 说 明 波特率 高字节在前 低字节在后 长度与前面的“数据区长度”保持一致 语音模块的初始化非
40、常重要,首先要定义串行口的工作方式,本设计选用 11 位 异步收发器(即 9 位数据),波特率可变(工作方式 3,sm0=1,sm1=1),除了起始位 和停止位外,将发送数据的第九位用软件规定其为奇偶校验位(tb8=1),允许串行接 收(ren=1),而 ri 和 ti 分别为接收和发送的中断标志位,须由硬件置 1,申请中断, 软件清 0,响应中断,所以串口控制寄存器 scon 被设置为 0 xd8。其次需要定义串 行口工作的波特率,虽然工作方式 3 的波特率是可变的但是语音芯片默认的波特率 是 9600bit/s,所以设置定时器 1 为工作方式 2,,可以实现自动重装的 8 位定时计数 器,
41、将初值装入 th1 中,开启定时器后 tl1 计数,一旦溢出则将 th1 中保存的初 始值自动装入 tl1,节省了人为操作的时间,得到更精准的波特率,由于单片机的 晶振为 11.059mhz,所以装入 th1 的初值为 0 xfd,设置 pcon 的第一位 smod 为 0,不倍频。 void syn6288_init() scon =0 xd8; tmod|=0 x20; /按位或,防止修改 t0 的设置 pcon =0 x00; th1 =0 xfd; tr1 =1;/开定时器 发声函数是模块的主要函数,实现播报字符串语音的功能。由于帧格式的要求, 先将计算主程序传递来的字符串的长度,然后
42、根据程序需求合成数据帧的数据包头, 同时调用 sendchar 函数发送数据包头,紧接着调用该函数发送字符串的内容,最后 发送校验位,延时返回。 开始 数据包头是否发送完 更新数据包头内容 发送数据 字符串是否发送完 发送字符 发送校验位 返回 延时 字符串长度加1 是否字符串尾部 否 否 否 是 是 是 图 4-12 发声字符串函数程序流程图 5 系统的仿真、调试结果系统的仿真、调试结果 5.1 系统仿真结果系统仿真结果 使用 protues 进行仿真时,有一些元件没有仿真,使用其它元件代替,但是由于 按键速度达不到,所以超声波测距模块测出的距离就比较远。 图 5-1 仿真结果图 图 5-2
43、 tirg 触发电平图 图 5-3 echo 回响电平图 图 5-4 syn6288 数据波形图 由于 dht11 在仿真中无法实现,所以一直显示是温度 0 摄氏度,湿度也是 0%,所以也无法在仿真中看出温度和湿度对距离的影响。 5.2 系统软件调试结果系统软件调试结果 使用 keil 软件 debug 进行调试主要是观察单片机内部的内存、定时器、特殊状 态寄存器以及自己定义的变量的值,是普通仿真不能替代的。 以下是初始化完成后,系统的设置。 图 5-5 timer0、timer1、串行口初始设置 图 5-6 中断系统初始设置 图 5-7 系统运行中自定义数据结果图 5.3 系统硬件调试结果系
44、统硬件调试结果 当然对硬件作品来说,硬件调试是必不可少的。所以先使用面包板和杜邦线将 基本元件连接起来进行硬件调试,硬件调试成功后再焊接元件。 以下是硬件实物结果图,实测距离 5.5cm,显示屏可以正确显示,当然如果角 度有问题测出来的数据也会不同: 图 5-8 测量实物示意图 图 5-9 测量实物液晶屏显示图 以下三张图是用来检测报警电路是否正常工作的,红灯亮表示距离在 50 厘米以 内,黄灯亮表示距离在 50 厘米到 100 厘米,绿灯亮表示距离在 100 厘米以外比较安 全。 图 5-10 距离小于 50 厘米 图 5-11 距离大于 50 厘米小于 100 厘米 图 5-12 距离大于
45、 100 厘米 虽然听不到喇叭的鸣叫声,但是可以由芯片外围的信号灯来指示,红灯亮表示 上电工作状态,而绿灯亮表示芯片忙,即芯片正在发声。 图 5-13 工作状态 当湿度相同时,温度越高,声速越快,假设实际距离不变,则测出来的距离就 会变短。反之亦然。 图 5-14 湿度一定时温度略低 图 5-15 湿度一定时温度略高 当温度相同时,湿度越高,声速越快,假设实际距离不变,则测出来的距离就 会变短。反之亦然。 图 5-16 温度一定时湿度略高 图 5-17 温度一定时湿度略低 但是由于显示出来的温度和湿度数据都有进行四舍五入,所以以上的图片仅供 测试用。 图 5-18 硬件连接图全貌 为了方便在板
46、子上的连接,先画出了 pcb 板,可以帮助合理摆放实物位置和快 速连线。pcb 图见附录。 图 5-19 pcb 图 3d 视图正面 图 5-20 pcb 图 3d 视图背面 有些器件没有对应的 pcb 封装,所以自己制作 pcb 库文件。 图 5-21 自制元件的 pcb 封装图 虽然像 1602 之类的也没有对应的封装,但是焊板子的时候可以给他们加一个座, 所以封装统一使用 spixx 类型。 图 5-22 倒车雷达实物图 结论结论 这次设计中,我完成了初期预计的所有功能,还新增了湿度对声速的校正以及 语音播报。为了毕设的顺利完成,我准备资料 450m,查阅文献多篇包括三篇英文 文献,使用
47、辅助软件 5 个,代码量 470 行,占用 4525 字节,数据空间 118 字节,主 要元件 16 种。 在这次的毕业设计中,我不仅学到了使用超声波测距的基本原理,也了解了更 多超声波的在通信中的应用。通过动手设计电路、进行软件编程,我可以更加灵活 的使用嵌入式的系统进行开发。而本次的实践也让我了解到通信在交通中扮演的重 要角色,对我以后研究生阶段的学习会有很大的帮助。 当然,由于个人的能力有限,在我的设计中还存在很多不足之处,而且由于成 本的限制和主控芯片的限制,我所设计的倒车雷达系统并没有连接摄像头的后视功 能,也没有使用 gps 导航对车身全方位监控,而这一功能在很多高端车中都已经具
48、备。当然经过这次设计我还有一个更大胆的提议,针对后轮驱动的汽车,可以在车 身后可视的基础上加上对电机驱动的切换,使司机可以用正常向前行驶的方式进行 倒车。希望我以后也可以将这一功能实现。 致谢致谢 这次毕业设计的完成,我首先要感谢我的指导老师*老师,王老师对我的帮 助最大,从刚开始的选题到之后系统的总体设计,都离不开老师指点,在毕设中遇 到的问题也是老师帮我耐心解答,王老师渊博的知识和丰富的实践经验也给我很大 的启迪。此外,我还要感谢帮助过我的同学们,是他们和我一起奋斗让我更有动力。 最后还要感谢我的母校和大学中教导过我的各位老师,使他们为我之后的发展打下 坚实的基础。感谢对本文进行评审的各位
49、老师,恳请您提出宝贵的意见。 参考文献参考文献 (1)郭天祥. 新概念 51 单片机 c 语言教程: 入门、提高、开发、拓展全攻略m. 北京: 电子工业 出版社, 2009. (2)周立功等. 增强型 80c51 单片机速成与实践m. 北京: 北京航空航天大学出版社, 2003. (3)刘同法等. 单片机外围接口电路与工程实践m. 北京: 北京航空航天大学出版社, 2009. (4)周灵彬. 单片机系统的 proteus 设计与仿真m. 北京: 电子工业出版社, 2007. (5)南建辉等. mcs-51 单片机原理及应用实例m. 北京: 清华大学出版社, 2004. (6)肖金球. 单片机原
50、理与接口技术m. 北京: 清华大学出版社, 2004. (7)赵亮. 跟我学 51 单片机(一)单片机最小系统组成与 i/o 输出控制j. 电子制作, 2011, 1: 73-77. (8)刘鑫等. 基于单片机的倒车雷达的设计j. 电子设计工程, 2012, 1. (9)张波, 王朋亮. 基于 stc89c51 单片机超声波测距系统的设计j.机床与液压, 2010, 18: 56-58. (10)张燕, 陈爱国, 高荣贵. 声速的温湿度修正研究j. 压电与声光, 2011, 1. (11)盛春明. 超声波测距仪j. 电子制作, 2010, 5. (12)bradford. ultrasonic
51、 ranging system designj. sensor review, 1993, 13. (13)tomasz j, licznerski, dariusz kosz. ultrasonic system for accurate distance measurement in the airj. 2011, 12: 960-965. 附录附录 程序程序 /主程序 #include #include #include #include #include 1602.h #include basic.h #include dht11.h #include sr04.h #include
52、syn6288.h int flag=0; /距离级别 1 表示禁止,2 表示警告,3 表示通行,4 表示数据过大 sbit led_r = p23; sbit led_y = p22; sbit led_g = p21; sbit bell = p20; float s_data=0; /距离数据,单位厘米 float temperature=0;/温度数据,单位摄氏度 float humidity=0;/湿度数据 char s_str10; char sp_str20; char t_str8; char h_str8; /报警函数,根据级别发生警报 void warning() int
53、i; switch(flag) case 1:/红色警告 led_g=1;led_y=1; for(i=0;i25;i+)led_r=0;bell=0;delayms(20);led_r=1;bell=1;delayms(20); break; case 2:/黄色警告 led_g=1;led_r=1; for(i=0;i100.0)flag=3; else if(s_data50.0) flag=2; else flag=1; /警报 warning(); bell=0; /显示模块 #include #include #include basic.h sbit rs=p26; /寄存器选择
54、位,将 rs 位定义为 p2.0 引脚 sbit rw=p25; /读写选择位,将 rw 位定义为 p2.1 引脚 sbit en=p24; /使能信号位,将 e 位定义为 p2.2 引脚 sbit bf=p07; /忙碌标志位, ,将 bf 位定义为 p0.7 引脚 #define rs_clr rs=0 #define rs_set rs=1 #define rw_clr rw=0 #define rw_set rw=1 #define en_clr en=0 #define en_set en=1 #define dataport p0 /判忙函数 bit lcd_check_busy(
55、) bit result; rs_clr; rw_set; en_set; _nop_(); result=(bit)(dataport en_clr; return result; /写入指令函数 void lcd_write_com(unsigned char com) while(lcd_check_busy(); /忙则等待 rs_clr; rw_clr; en_set; dataport= com; _nop_(); en_clr; /写入数据函数 void lcd_write_data(unsigned char data) while(lcd_check_busy(); /忙则等待 rs_set; rw_clr; en_set; dataport= data; _nop_(); en_clr; /清屏函数 void lcd_clear() lcd_write_com(0 x01); del
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届江苏省南通市通州区金沙中学高三下学期调研测试历史试题(含答案)
- 2026年初中历史综合题专项训练试卷
- 教师个人年度思想工作总结2026(3篇)
- 医疗废物基础考试题及答案
- 法医DNA专业试题及答案分享
- 五年级下册数学北师大含答案 体积单位2
- 分级照护专项试题与对应答案
- 临时设施施工设计方案
- 2026中国新能源汽车行业市场现状供需分析及投资评估规划合理研究报告
- 2026中国数码相机行业现状分析供需趋势调研及投资发展评估策划报告
- 制浆造纸工艺课件
- 三级医院耳鼻喉科运行管理规范
- 民用建筑方案设计工作量比例
- 2025数据基础设施参考架构
- 审计合同补充协议范本
- 危险性较大的分部分项工程专项施工方案严重缺陷清单(试行)
- 超导材料制备与特性-深度研究
- 胎盘、死婴、死胎处理管理制度及处置流程
- 食品加工安全生产管理制度
- 2024年江西省中考英语试卷试题真题及答案详解(精校打印)
- 电工管理制度电工管理制度办法
评论
0/150
提交评论