首页 超声波倒车防撞雷达 毕业设计

超声波倒车防撞雷达 毕业设计

举报
开通vip

超声波倒车防撞雷达 毕业设计超声波倒车防撞雷达 毕业设计 摘 要 随着我国经济飞速发展,越来越多的人拥有了自己的汽车,同时由泊车和倒车所引发的事故也越来越多。这些事故常常给驾驶员带来许多的麻烦,因此,有助于驾驶员泊车和倒车的倒车雷达应运而生。 倒车雷达全称叫“倒车防撞雷达”,也叫“泊车辅助装置”,是汽车泊车安全辅助装置,能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员泊车和启动车俩时前后左右探视所引起的困扰,并帮助驾驶员扫除视野的死角和视线模糊的缺陷。一般由超声波传感器(俗称探头)、控制器和显示器等部分组成,现在市场上...

超声波倒车防撞雷达  毕业设计
超声波倒车防撞雷达 毕业 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 摘 要 随着我国经济飞速发展,越来越多的人拥有了自己的汽车,同时由泊车和倒车所引发的事故也越来越多。这些事故常常给驾驶员带来许多的麻烦,因此,有助于驾驶员泊车和倒车的倒车雷达应运而生。 倒车雷达全称叫“倒车防撞雷达”,也叫“泊车辅助装置”,是汽车泊车安全辅助装置,能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员泊车和启动车俩时前后左右探视所引起的困扰,并帮助驾驶员扫除视野的死角和视线模糊的缺陷。一般由超声波传感器(俗称探头)、控制器和显示器等部分组成,现在市场上的倒车雷达大多采用超声波测距原理,驾驶者在倒车时,启动倒车雷达,在控制器的控制下,由装置于车尾保险杠上的探头发送超声波,遇到障碍物,产生回波信号,传感器接收到回波信号后经控制器进行数据处理,判断出障碍物的位置,由显示器显示距离并发出警示信号,得到及时警示,从而使驾驶者倒 车时做到心中有数,使倒车变得更轻松。倒车雷达的提示方式可分为液晶、语言和声音三种;接收方式有无线传输和有线传输等。本文描述了一个由三个超声波测距模块构成的,提供语音报警功能的超声波倒车雷达系统。该系统采用凌阳16位单片机SPCE061A为核心,分别控制三个超声波模块,每一个超声波测距模块都被设定面向不同方向,以探测不同方向的障碍物。本系统采用单片机控制时间计数和超声波的发射和接收,利用超声波回波的间隔时间,得出实测距离。结果表明该系统具有结构简单、工作可靠、精度高等特点。 关键词:倒车雷达;SPCE061A单片机;超声波测距;语音提示;LCD显示 Abstract With the rapid development of China's economy, more and more people have their own cars, at the same time, more and more accidents occur because of paring and reversing.The car reserving aid system which can help drivers parking is invented. The car reserving radar system is also called "parking auxiliary unit ",it is the automobile safe parking auxiliary unit,which can use sound or a more direct demonstration to show the driver the obstacle situation around.Thus relieve the difficulty of looking ahead and back when parking or starting vehicles,and help the drive to eliminate the dead angle of the field of vision and the flaw of sight. It is usually by the ultrasonic sensors (commonly known as probes), controllers and monitors and other components, reversing radar on the market today are mostly using ultrasonic ranging principle, the driver in reverse, start reversing radar, under the control of the controller, the device in the rear bumper send ultrasonic probe encountered obstacles, resulting echo signals, the sensor receives the echo signal by the controller for data processing, determine the location of obstructions, the distance from the display and send warning signals , a timely warning, so be aware of the The tips for reversing radar can be driver when reversing to make reversing easier. divided into LCD, language and sound three; receive mode wireless transmission and wired transmission. This paper describes a three ultrasonic ranging modules, providing the voice alarm system, ultrasonic parking sensor. The system uses SPCE061A Sunplus 16-bit microcontroller core, respectively, the three ultrasonic control modules, each ultrasonic distance measuring module have been set for the different directions in order to detect obstacles in different directions. The system uses a microcontroller to control the time count and the transmitting and receiving ultrasound, the use of ultrasonic echo interval, obtained the measured distance. The results show that the system is simple, reliable, high accuracy. Parking sensor; SPCE061A SCM; ultrasonic ranging; voice prompts; Keywords: LCD display 目 录 第一章 绪 论 .............................................. 1 1.1 课 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 背景 ............................................... 1 1.1.1 倒车雷达的发展历史 ................................. 1 1.1.2 倒车雷达的发展方向与展望 ........................... 2 1.2 课题任务及要求......................................... 2 1.3 课题的主要内容及目的 .................................. 3 第二章 系统主要器件简介 .................................... 3 2.1 SPCE061A芯片特性 ...................................... 3 2.1.1 SPCE061A简介 ....................................... 3 2.1.2 芯片特性............................................ 4 2.2 SPCE061A精简开发板 .................................... 5 2.3 超声波测距模组......................................... 5 2.4 转接板 ................................................. 8 2.5 液晶显示模块LCM1062A .................................. 9 第三章 超声波倒车雷达系统的总体方案设计 ................... 12 3.1 超声波测距PWM信号方案论证 ........................... 12 3.1.1 超声波测距PWM信号硬件实施方案 .................... 12 3.1.2 超声波测距PWM信号软件实施方案 .................... 13 3.1.3 超声波测距PWM信号实施方案比较 .................... 13 3.2 超声波倒车雷达系统硬件方案论证 ....................... 13 3.3 超声波倒车雷达系统软件方案论证 ....................... 15 第四章 超声波倒车雷达系统的硬件设计 ....................... 16 4.1 SPCE061A精简开发板电路原理 ........................... 16 4.1.1 SPCE061A最小系统 .................................. 16 4.1.2 电源模块........................................... 17 I 4.1.3 放音模块........................................... 17 4.2 超声波测距模块电路的设计 ............................. 18 4.2.1 超声波谐振频率调理电路的设计 ...................... 18 4.2.2 超声波回波信号处理电路的设计 ...................... 19 4.2.3 超声波测距模组电源接口选择 ........................ 20 4.2.4 超声波测距模式选择电路的设计 ...................... 20 4.3 转接板电路的设计...................................... 20 4.4 显示电路的设计........................................ 21 4.4.1 二极管闪烁报警电路的设计 .......................... 21 4.4.2 LCD显示报警电路的设计 ............................. 22 4.5 各模块接口分配........................................ 22 第五章 超声波倒车雷达系统的软件设计 ....................... 22 5.1 超声波测距原理........................................ 22 5.2 μ'nSP IDE的项目文件管理的组织结构 ................... 23 5.3 软件构架 .............................................. 24 5.4 各模块程序的设计...................................... 25 5.4.1 主程序的设计 ...................................... 25 5.4.2 超声波测距程序的设计 .............................. 25 5.4.3 语音播放程序的设计 ................................ 28 5.4.4 二极管闪烁程序的设计 .............................. 28 5.4.5 LCD初始化及驱动程序的设计 ......................... 29 第六章 超声波倒车雷达系统的整体调试 ...................... 30 6.1 故障调试及解决方式 ................................... 30 结 论 ...................................................... 33 社会经济效益 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 ........................................... 34 致 谢 ...................................................... 35 参考文献 ................................................... 36 II 外文翻译 ................................................... 37 附录? 程序清单 ............................................ 44 附录? 元器件清单.......................................... 58 III 第一章 绪 论 超声波雷达又称泊车辅助系统,是一种利用超声波原理,由装置于车尾保险杠上的探头发送超声波撞击障碍物后,反射此声波探头,从而计算出车体与障碍物之间的距离。 一般由超声波传感器、控制器、显示器等部分组成。它能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员泊车、倒车和启动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了视野死角和视线模糊的缺陷。现在市场上的倒车雷达大多采用超声波测距原理,驾驶者在倒车时,启动倒车雷达,在控制器的控制下,由装置于车尾保险杠上的探头发送超声波,遇到障碍物。产生回波信号,传感器接收到回波信号后经控制器进行数据处理,判断出障碍物的位置,由显示器显示距离并发出警示信号,得到及时的警示。 给汽车安装超声波雷达大大提高了行车的安全性。从而使驾驶者倒车时做到心中有数,使倒车变得更轻松。 1.1 课题背景 随着生活质量的提高,工作的需要,科技的发展,人们将越来越多的在生活中和工作中将汽车作为其日常的生活工具。当汽车进入百姓家庭,倒车雷达自然而然的走进了人们的视野中,保障行车安全的各个细节,越来越受到车主的重视;虽然每辆车都有后视镜,但不可避免地都存在一个后视盲区。同样随着经济技术的不断进步,倒车雷达无论是在外型还是在功能上都发生了巨大的变化。从记忆中的“倒车请注意”到现在可以在一块LCD屏幕上显示障碍物的各种信息,每一次的变革都让人耳目一新。 1.1.1 倒车雷达的发展历史 在几年的时间里,随着技术发展和用户需求的变化,倒车雷达经过了大致六代的技术改良和发展。不管从结构外观上,还是从性能价格上,这六代产品都各有特点,使用较多的是数码显示、荧屏显示和魔幻镜倒车雷达这三种。 第一代倒车喇叭提醒 “倒车请注意”想必不少人还记得这种声音,这就是倒车雷达的第一代产品,现在只有小部分商用车还在使用。只要司机挂上倒档,它就会响起,提醒周围的人注意。从某种意义上说,它对司机并没有直接的帮助,不是真正的倒车雷达。价格便宜,基本属于淘汰产品。 第二代蜂鸣器提示 这是倒车雷达系统的真正开始。倒车时,如果车后1.8米~1.5米处有障碍物,蜂鸣器就会开始工作。蜂鸣声越急,表示车辆离障碍物越近。这种倒车雷达没有语音提示,也没有距离显示,虽然司机知道有障碍物,但不能确定障碍物离车有多远,对驾驶员帮助不大。 第三代数码波段显示 比第二代先进很多,可以显示车后障碍物离车体的距离。如果是物体,在1.8米开始显示;如果是人,在0.9米左右的距离开始显示。这一代产品有两种显示方式,数码显示产品显示距离数字,而波段显示产品由三种颜色来区别:绿 - 1 - 色代表安全距离,表示障碍物离车体距离有0.8米以上;黄色代表警告距离,表示离障碍物的距离只有0.3~0.8米;红色代表危险距离,表示离障碍物只有不到0.3~0.1米的距离。在安全区,你可正常倒泊,在警告区,你要减速倒泊,在危险区,你则要停止倒泊。第三代产品把数码和波段组合在一起,但比较实用,但安装在车内不太美观。 第四代液晶荧屏动态显示 这一代产品有一个质的飞跃,特别是荧屏显示开始出现动态显示系统。不用挂倒档,只要发动汽车,显示器上就会出现汽车图案以及车辆周围障碍物的距离。LCD动态显示,色彩清晰漂亮,外表美观,可以直接粘贴在仪表盘上,安装很方便。不过液晶显示器外观虽精巧,但灵敏度较高,抗干扰能力不强,所以误报也较多。 第五代魔幻镜倒车雷达 结合了前几代产品的优点,采用了最新仿生超声雷达技术,配以高速电脑控制,可全天候准确地测知2米以内的障碍物,并以不同等级的声音提示和直观的显示提醒驾驶员。魔幻镜倒车雷达把后视镜、倒车雷达、免提电话、温度显示和车内空气污染显示等多项功能整合在一起,并设计了语音功能。因为其外形就是一块倒车镜,所以可以不占用车内空间,直接安装在车内后视镜的位置。而且颜色款式多样,可以按照个人需求和车内装饰选配。 第六代:整合影音系统 它在第五代产品的基础上新增了很多功能,属于第六代产品,是专门为高档轿车生产的。从外观上来看,这套系统比第五代产品更为精致典雅;从功能上来看,它除了具备第五代产品的所有功能之外,还整合了高档轿车具备的影音系统,可以在显示器上观看DVD影像,是目前市面上最先进的倒车雷达系统。 1.1.2 倒车雷达的发展方向与展望 经过多年的研究与生产实践,倒车雷达逐渐摆脱了以往功能单一,报警不准确的问题。目前倒车雷达主要有两个方向发展。一、与其他车内娱乐设备的集成;二、提高报警的准确性。越来越多的倒车雷达已经不再仅限于提供倒车报警的单一功能,集成多种报警娱乐等功能的倒车雷达已经成为一种现实。军用技术的民用化,使的倒车雷达预警范围,报警精度都有极大的提高。仿生学、声学、电磁学等科学技术的进步,都将会倒车雷达推向一个新的阶段。随着卫星定位技术的成熟,以车载卫星定位系统(GPS)作为倒车雷达,也离实用化越来越近。 1.2 课题任务及要求 本次设计的超声波倒车雷达系统是以SPCE061A单片机为控制器,搭配3个超声波测距模块及LCD、二极管、语音3部分组成的报警模块所构成。其测量结果应符合以下 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 : (1)语音提示可指明哪一个方向(或区域)在范围内(0.35m~1.5m)有障碍物在探测范围内。 (2)利用三个LED发光二极管表示三个传感器探测范围内是否有障碍物,当在探测范围内有障碍物时,发光二极管以一定频率闪烁,闪烁的频率以距离定, - 2 - 距离越近频率越。 (3)利用LCD显示距离等信息。 1.3 课题的主要内容及目的 本文对超声波倒车雷达系统的设计进行了详细的介绍,共分六章。第一章简要介绍了整个课题的研究背景、目的、意义及整个任务的要求安排;第二章对整个系统的主要器件进行介绍;第三章是针对此次课题的任务进行方案论证,尤其重要的对SPCE061A单片机其16位的处理能力及内嵌的语音对本设计的影响进行详细的阐述;第四章具体介绍了超声波倒车雷达系统的硬件设计,包括超声波测距模块电路,转接板电路,显示电路的设计;第五章阐述了超声波倒车雷达的软件设计,包括超声波测距子程序,数据处理子程序,显示子程序,语音子程序的设计。第六章是针对硬件调试、软件调试和整机连调的结果进行了具体的分析和说明。 目的是研究一个超声波倒车雷达,要求在倒车时,启动倒车雷达,在控制器的控制下,由传感器发送超声波,遇到障碍物,产生回波信号,传感器接收到回波信号后经控制器进行数据处理,判断出障碍物的位置,由显示器显示距离并发出警示信号,来提示司机车后有障碍物,得以使泊车和倒车更加方便个安全。 本设计的核心是测距。测距的方法有很多种,我采用的是脉冲测量法,其实质就是测量发射超声波的时刻与接收到反射回波信号的时刻之间的时差,利用超声波在空气中传播速度已知的条件,计算出被测目标与传感器之间的距离。 第二章 系统主要器件简介 本系统采用SPCE061A单片机作为主控制器,传感器模块采用凌阳大学计划的“超声波测距模组”。另外,为了使这三个传感器模块能够组合在一起,并且可靠的工作,还需要一个转接板,可以利用CD4052模拟开关器件制作;显示方面,采用LCM1602液晶显示模块,还需要外接三个发光二极管用了报警显示。下面分别介绍这些模块的特性。 2.1 SPCE061A芯片特性 2.1.1 SPCE061A简介 SPCE061A是凌阳科技研发生产的性价比很高的一款十六位单片机,具有易学易用、效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用,并且,提供了语音录放和语音识别的库函数,只要了解库函数的使用,就会很容易完成语音录放,这些都为软件开发提供了方便的条件: SPCE061A片内还集成了一个ICE(在线仿真电路)接口,使得对该芯片的编程、仿真都变得非常方便,而ICE接口不占用芯片上的硬件资源,结合凌阳科技提供的集成开发环境(unSP IDE),用户可以利用它对芯片进行真实的仿真;而程序的下载(烧写)也是通过该接口实现。 下图为SPCE061A单片机的内部结构框图: - 3 - 图2-1 SPCE061A内部结构图 2.1.2 芯片特性 ? 16位μ’nSP微处理器; ? 工作电压:内核工作电压VDD为3.0~3.6V(CPU),IO口工作电压VDDH为 VDD~5.5V(I/O); ? CPU时钟:0.32MHz~49.152MHz; ? 内置2K字SRAM; ? 内置32K闪存ROM; ? 可编程音频处理; ? 晶体振荡器; ? 系统处于备用状态下(时钟处于停止状态),耗电小于2μA@3.6V; ? 2个16位可编程定时器/计数器(可自动预置初始计数值); ? 2个10位DAC(数-模转换)输出通道; ? 32位通用可编程输入/输出端口; ? 14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒; ? 具备触键唤醒的功能; ? 使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据; ? 锁相环PLL振荡器提供系统时钟信号; ? 32768Hz实时时钟; ? 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器; ? 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能; ? 具备串行设备接口; - 4 - ? 低电压复位(LVR)功和低电压监测(LVD)功能; ? 内置在线仿真(ICE,In- Circuit Emulator)接口。 2.2 SPCE061A精简开发板 SPCE061A精简开发板(简称61板),是以凌阳16位单片机SPCE061A为核心的精简开发,仿真,实验板,大小相当于一张扑克牌,是“凌阳科技大学计划”专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作及电子竞赛所设计的,也可作为单片机项目初期研发使用。61板除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含MIC输入部分和DAC音频输出部分)、复位电路等,采用电池供电,方便学生随身携带~~~使学生在掌握软件的同时,熟悉单片机硬件的设计制作,锻炼学生的动手能力,也为单片机学习者和开发者创造了一个良好的学习条件和开发新产品的机会~ 61板上有调试器接口(Probe接口)以及下载线(EZ_Probe)接口,分别可接凌阳科技的在线调试器、简易下载线,配合unSP IDE,可方便地在板上实现程序的下载、在线仿真调试。 61板上的主要功能模块如下: ? SPCE061A单片机最小系统外围电路模块; ? 电源输入模块; ? 音频电路(包含MIC输入、DAC音频功放输出)模块; ? 按键模块; ? I/O端口接口模块; ? 调试、下载接口模块; 2.3 超声波测距模组 超声波测距模组是为方便学生进行单片机接口方面的学习专门设计的模块,超声波测距模组可以方便地和61板连接,可应用在小距离测距、机器人检测、障碍物检测等方面,可用于验证方车辆倒车雷达以及家居安防系统等应用方案验证。下图为超声波测距模组的结构框图: 图2-2 超声波测距模组结构图 - 5 - 主要功能 三种测距模式选择跳线J1(短距、中距、可调距): 短距:10cm~80cm左右(根据被测物表面材料决定); 中距:80cm~400cm左右(根据被测物表面材料决定); 可调:范围由可调节参数确定; 使用方法 一般应用时,只需要用10PIN排线把J8与SPCE061A的IOB低八位接口接起来,同时设置好J7、J1、J2跳线就完成硬件的连接了。不同测距模式的选择只需改变测距模式跳线J1的连接方法即可。提供给模组的电源必须在4.5V以上,而且尽量保持电源电压的稳定。模组工作的性能与被测物表面材料有很大关系,如毛料、布料对超声波的反射率很小,会严重影响测量结果。 电源输入 模组提供了两种电源输入方式,一为用61板通过10PIN排线为模组供电(61板上J5选择5V要求最好不要低于4.5V),此时要把J9跳到5V的一端;另一为直接为模组供电,通过模组上的电源输入口J7引入,此时需要把J9跳线跳到IN的一端。外接电源仅是为了给模组提高超声波发射功率、提高后级运放性能用,最高不要超过12V。 模组外接电源接口(J7)以及供电方式选择跳线(J9)如图2-3所示: 图2-3 模组外接电源接口及供电方式选择跳线 - 6 - 测距模式选择 超声波测距时,存在余波干扰问题,所以针对不同测距范围会有不同的处理方法。模组提供了测距模式选择跳线(J1),可以选择短距测量模式、中距测量模式,或距离可调模式。而针对前两种测量模式,提供了不同参数的范例程序,跳线选择不同的模式时,要选用相对应的程序进行测量;跳线选择LOW时为近距测量模式,选择HIG时为中距测量例程,选择SET时为距离可调模式;凌阳科技大学计划网站上提供了短距测量模式和中距测量模式的完整源程序。如果用户对超声波测量原理有较深的了解,可以选用距离可调(SET)模式。 -4所示: 模组测距模式(测量距离范围)选择跳线J1如图2 图2-4 模组测距模式选择跳线 使用方式 使用时,用户需把前面的电源输入跳线J7、模式选择跳线J1设置好后,还要把跳线J2短接起来,然后利用排线把J8与SPCE061A的IOB口低八位端口相接,即可使用了。使用时J2跳线和J8跳线的连接方法如下图2-5所示: - 7 - 图2-5 J2跳线和J8接口的位置示意图 2.4 转接板 因为使用多组超声波模组,本方案需要使用一块CD4052模拟开关制作的转接板。 本方案设计,会涉及到多路传感器选通控制,所以为了可靠地实现硬件的连接,需要制作一个利用模拟开关设计的转接板。超声波测距模组在使用时,只需要两个端口就可完成测距,一个控制超声波的发射,一个是检测超声波信号的接收信号;而在超声波测距模组中,这两个信号都为数字信号,对模拟开关的要求并不严格,所以选用CD4052作为模拟开关器件。 CD4052相当于一个双刀四掷开关,开关接通哪一通道,由输入的2位地址码A0、A1来决定。其真值表见下表。“/E”是禁止端,当“/E”=1时,各通道均不接通。此外,CD4051还设有另外一个电源端VEE,以作为电平位移时使用,从而使得通常在单组电源供电条件下工作的CMOS电路所提供的数字信号能直接控制这种多路开关,并使这种多路开关可传输峰,峰值达15V的交流信号。例如,若模拟开关的供电电源VDD=,5V,VSS=0V,当VEE=,5V时,只要对此模拟开关施加0,5V的数字控制信号,就可控制幅度范围为,5V,,5V的模拟信号。图2-6为CD4052内部结构图,图2-7为CD4052的引脚图。 - 8 - 图2-6 CD4052内部结构图 图2-7 为CD4052的引脚图 2.5 液晶显示模块LCM1062A 工业字符型液晶,能够同时显示16x02即32个字符。由于使用的LCM1602A液晶模块已经模块化,外围电路较为简单,不再给出。1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线 VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样。 LCM1602A各引脚定义见表2-1所示: 表2-1 LCM1602A引脚定义表 引脚号 引脚名 电平 输入/输出 功能说明 - 9 - 1 Vss 电源地 2 Vcc 电源(+5V) 液晶显示器对比度调整端,接正电源时对比度最弱,接地3 V0 电源时对比度最高。 寄存器选择,高电平1时选择数据寄存器、低电平0时选4 RS 0/1 输入 择指令寄存器。 读写信号线,高电平(1)时进行读操作,低电平(0)时进行5 R/W 0/1 输入 写操作。 6 E 1,1--0 输入 E(或EN)端为使能(enable)端,下降沿使能。 7 DB0 0/1 输入/输出 低4位三态、双向数据总线0位(最低位) 8 DB1 0/1 输入/输出 低4位三态、双向数据总线 1位 9 DB2 0/1 输入/输出 低4位三态、双向数据总线 2位 10 DB3 0/1 输入/输出 低4位三态、双向数据总线 3位 11 DB4 0/1 输入/输出 高4位三态、双向数据总线 4位 12 DB5 0/1 输入/输出 高4位三态、双向数据总线 5位 13 DB6 0/1 输入/输出 高4位三态、 双向数据总线 6位 高4位三态、 双向数据总线 7位(最高位)(也是busy 14 DB7 0/1 输入/输出 flag) 15 BLA +Vcc 背光电源正极 16 BLK 接地 背光电源负极 表2-2寄存器选择控制表 RS R/W 操作说明 0 0 写入指令寄存器(清除屏等) 读busy flag(DB7),以及读取位址计数器(DB0~DB6)值 0 1 1 0 写入数据寄存器(显示各字型等) 1 1 从数据寄存器读取数据 注:关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0。 busy flag(DB7):在此位为被清除为0时,LCD将无法再处理其他的指令要求。 字符集 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。 因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。 以下是1602的16进制ASCII码表,读的时候,先读左边那行,再读上面那列,如:感叹号~的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。 表2-3 1602的16进制ASCII码表 - 10 - 1602的指令说明及时序 1602液晶模块内部的控制器共有11条控制指令,如表2-4所示: 表2-4 控制命令表 序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开/关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 置字符发生存贮器地址 7 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 写数到CGRAM或DDRAM) 10 1 0 要写的数据内容 从CGRAM或DDRAM读数 11 1 1 读出的数据内容 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 - 11 - ?指令1:清显示,指令码01H,光标复位到地址00H位置。 ?指令2:光标复位,光标返回到地址00H。 ?指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S: 屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 ?指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低 电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平 表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 ?指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 ?指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N: 低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点 阵字符,高电平时显示5x10的点阵字符。 ?指令7:字符发生器RAM地址设置。 ?指令8:DDRAM地址设置。 ?指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不 能接收命令或者数据,如果为低电平表示不忙。 ?指令10:写数据。 ?指令11:读数据。 第三章 超声波倒车雷达系统的总体方案设计 超声波倒车雷达系统的整个设计中最重要的部分是超声波测距质量的处理,虽然超声波测距很早就开始研究应用,但如何实现测量的快速性和准确性至今仍是生产和科研的课题。随着微电子技术的发展及普及,更多高性能的单片机应用使得超声波测距的快速性和准确性都有了极大的提高。超声波测距的关键在于发射信号的脉冲时长,接收信号的数据处理,及消除其本身的余波干扰。本设计使用凌阳16位单片机SPCE061A(后文简称为SPCE061A)为超声波测距的控制器,其较高的数据处理能力和丰富的指令系统,从硬件和软件两部分来改善系统性能,使研制成的超声波倒车雷达系统具有很好的快速性和准确性,且具有较高的抗干扰能力,很符合要求。 3.1 超声波测距PWM信号方案论证 3.1.1 超声波测距PWM信号硬件实施方案 为了符合探测障碍物所需要的测量精度的设计要求,超声波发射探头需要一个稳定的PWM信号,驱动发射脉冲信号。此PWM信号可由集成芯片NE555搭配合适的外围电路构成。其电路如下图3-1所示: 此硬件实施方案具有如下特点: (1) NE555外围电路容易搭建,驱动电压与SPCE061A一致,无需另接电源; (2) 硬件电路输出稳定,不易受干扰。 - 12 - 图3-1 NE555构成的PWM信号提供电路 上图显示的是由NE555构成的40KHz PWM驱动信号电路,该电路最大特点是与SPCE061A具有较好的兼容性及较高抗干扰性,且软件编写较为便利,符 合整个设计对测量精度的要求。 3.1.2 超声波测距PWM信号软件实施方案 除了直接用硬件来提供超声波测距所需要的PWM信号以外,也可以用SPCE061A提供的PWM脉宽调制输出功能,用软件进行处理。用软件进行处理的优势在于,发射超声波所需要的PWM信号和其反射信号的计算都是由同一个单片机完成,可以利用程序编写的灵活性,极大的削弱发射与接收之间的余波干扰,使测距更加精确。它与.硬件实现电路相比有以下几个优点: (1)PWM信号是用程序实现的,减少了整个设计的成本; (2)SPCE061A具有16位的处理能力,其输出的PWM信号无论是在频率的精度,或是持续输出的稳定性上,都具有极佳的表现; 由SPCE061A同时控制PWM信号输出和反射信号的计算,具有更好的灵活性,容易实现高精度的测量。 3.1.3 超声波测距PWM信号实施方案比较 综合比较软件和硬件方案的优劣,选择软件提供超声波测距所需要的PWM信号,主要原因有如下几点: (1)超声波测距的精度与给予的PWM信号质量有很大的关联,使用软件提供PWM信号除了能提供更高品质的信号外,又没有增加设计的成本,很适合毕业设计的要求。 (2)使用软件提供PWM信号虽然会增加代码编写的工作量,但从整个系统的角度来看,超声波信号的发射与接收都使用软件实现,会更易于综合调试,整个测距过程也更易于控制。 3.2 超声波倒车雷达系统硬件方案论证 倒车雷达实现的功能就是探测可能存在的障碍物,通过数据处理将障碍物的 - 13 - 位置信息显示出来。要实现这一功能,就必须把障碍物相对测量系统的位置量转换成单片机所能识别的电量。当超声波测距模块探测到障碍物的存在时,会接收到若干脉冲数目的反射信号,信号脉冲个数即反映了障碍物与测试系统的位置关系。返回的信号经过SPCE061A进行相应的数据运算,便可将障碍物的位置信息通过语音、二极管、LCD的方式显示出来,其硬件总体方案设计框图如图2-2所示: 语音报警 传感器 转 SPCE061接 A LCD显示 传感器 板 传感器 LED报警 图2-2 超声波倒车雷达系统的结构框图 1. 超声波测距模块 传感器就是超声波测距模块,它是整个倒车雷达系统的核心。本设计方案拟使用3个相同的超声波测距模块依次排布,组成一个传感器阵,来检测车后的障碍物位于车的左后,右后还是正后边。 图2-3 超声波测距原理 超声波距离的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。单片机SPCE061A的定时器B产生40KHz的的信号为超声波测距模组的提供超声波信号,当信号发出遇到障碍物后,信号将按原路返回,这时在车尾的传感器将检测出返回来的超声波信号。用发射超声波的时刻与接收到反射回波信号的时刻之间的时差与超声波在空气中的传播速度相乘就可得出障碍物跟车尾的距离。 2. 转接板 由于使用3个超声波测距模块,而SPCE061A的I/O口数目不满足3个测距模块同时直接相接,故使用集成芯片CD4052实现软件对不同传感器的选通与屏蔽。这样只需要两个端口就可完成测距,一个控制超声波的发射,一个是检测超声波信号的接收信号。 3. SPCE061A - 14 - 凌阳16位单片机SPCE061A是本倒车雷达系统的控制器,也是数据处理的中心。它直接控制超声波测距模块进行测距、处理模块返回值并控制实现对外的报警功能 4. 语音报警 SPCE061A作为16位单片机,其具有较强的运算能力,可以通过其内置的DAC及自动增益控制(AGC)功能,实现对外的语音报警。该部分电路已集成于SPCE061A精简开发板上。它所具备的单芯片语音功能采用语音提示的方式来指明在探测范围内哪一个方向有障碍物. 只要距离在0.35~1.5m之内,就会有语音提示。超声波测距模组分别在左后方,右后方和正后方,当超声波测距模组的探头探测出有障碍物时,就会有以下语音提示: 表2-1 语音报警表 情况一 情况二 情况三 正后方和左后方与右后左后方有障碍物 左后方有障碍物 情况 方同时有障碍物 语音提示 后方 左后方 右后方 5. LCD显示电路 使用LCM1602A液晶显示模块实现LCD显示。由于LCM1062A仅能显示2行共32个字符,故实际显示为3个超声波测距模块中,测得距离最近的那个值。 6. 发光二极管(LED)闪烁报警电路 三个发光二极管分别对应三个超声波测距模块。当对应的超声波测距模块探测到障碍物存在时,障碍物距离测距模块越近,发光二极管闪烁的频率就会越高。 3.3 超声波倒车雷达系统软件方案论证 软件设计是超声波倒车雷达系统设计中最关键的部分。由于本系统使用凌阳SPCE061A单片机,故整个软件架构需要遵循凌阳 μ'nSP IDE 2.0.0编译环境和对应的单片机指令。软件设计分为超声波测距程序、语音播报程序、中断程序、系统程序、LCD驱动程序、主程序六部分。各个部分函数都可相互调用又相对独立可调,保证调试的便利与程序的可读性。整个超声波倒车雷达系统软件流程图如图2-4所示: - 15 - 开始 初始化 超声波测距子程序 数据处理子程序 显示及报警子程序 结束 图2-4软件原理流程框图 第四章 超声波倒车雷达系统的硬件设计 硬件设计是本设计的的一个重要部分。本章将详细叙述超声波倒车雷达系统各部分硬件设计内容、元器件选择及所设计的硬件电路实现的各项功能。 4.1 SPCE061A精简开发板电路原理 4.1.1 SPCE061A最小系统 SPCE061A最小系统包括SPCE061A芯片及其外围基本模块,外围基本模块有:晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如图4-1所示。 本系统,有关SPCE061A单片机最小系统的各个模块都做在61板中,读者可以查阅61板的电路原理图。 - 16 - 图4-1 SPCEA061A最小系统 4.1.2 电源模块 SPCE061A的内核供电电压为3.3V,而I/O端口可接3.3V也可接5V,考虑到超声波测距模块需要供电电压在4.5V以上时才能正常工作,故使用精简开发板上提供的5V电源。电源模块的电路原理图见图4-2所示: 图4-2 61板电源模块的电路原理图 4.1.3 放音模块 由于本倒车雷达需要实现语音提示障碍物的方向,故放音模块便不可缺少。在SPCE061A精简开发板上便集成了以下放音模块。 - 17 - 图4-3 放音模块的电路原理图 本设计的放音是利用SPCE061A内部的DAC,图中的SPY0030是凌阳公司的产品。与LM386相比,SPY0030有明显的优势。如LM386的工作电压在4V以上,输出功率低于100mW,而SPY0030的工作电压仅需2.4V,且输出功率能达到700mW左右,较低的工作电压,又能有很好的输出效果,这使得本系统即使脱离固定电源,仅使用电池供电,也能完全正常工作。 4.2 超声波测距模块电路的设计 4.2.1 超声波谐振频率调理电路的设计 超声波谐振频率调理电路原理图如图4-4所示: 图4-4 超声波谐振频率调理电路原理图 本电路工作所需要的40KHz方波由SPCE061A提供,该信号经CD4049进行频率调理,以使超声波传感器发生谐振。从电路图可以看出CD4049是由6个非门构成的六反相缓冲器/变换器,其引脚图如图4-5所示。由于超声波的传播距离与它的振幅成正比,使用CD4049能使由SPCE061A发出的振荡信号的幅度增大一倍使超声波传播距离明显的增长,测距的范围得到扩大。 - 18 - 图4-5 CD4049引脚图 为了防止绝缘电阻下降而导致超声波转换性能的下降,在超声波传感器与信号调理电路之间需要串如一个耦合电容。通过它可以将直流电压转换为等幅的交变电压,保证了超声波发射电路能够长时间稳定可靠的工作。 4.2.2 超声波回波信号处理电路的设计 超声波回波信号处理电路原理图如图4-6所示: 图4-6超声波回波信号处理电路原理图 由于超声波在空气中传播时,其能量的衰减程度与传播距离成正比,其接收到的回波信号的幅值的单位通常在毫伏级甚至更小,所以超声波回波信号处理电路的前级就需要提供很高的放大信号,使单片机能够正常工作。本体统采用NE5532搭配外围电路构成10000倍放大器来对接收到的信号进行放大处理。经过处理的信号输入至LM311的正端与3脚提供的基准电压相比较然后输出,若输出为低电平,则说明无回波信号或信号太小,若输出为高电平,则会被SPCE061A所接收然后做数据处理。 在放大器与比较器之间用PNP三极管(8550)作为通路选择,本方案需要将此通路选择跳线短接上,即把J2短接,固定使三极管导通即可。 - 19 - 4.2.3 超声波测距模组电源接口选择 J7为超声波测距模组的外部电源接口,最高电压不要超过12V,J9为电源选择跳线,VCC_5即为由61板通过10PIN排线引入模组的电源;VCC即为模组的放大器、调理电路供电电源。当用户使用61板为其供电时,要把VCC与VCC_5V短接(本方案的用法);而使用外部电源时要把VCC与VCC_IN短接。 图4-7 外部单独电源输入接口及选择跳线 4.2.4 超声波测距模式选择电路的设计 超声波测距模式选择电路的作用是为回波信号处理电路中LM331提供电压比较的基准电压,其电路原理图如图4-8所示。 如图4-8 超声波测距模式选择电路原理图 由电路图可知,该电路可为LM331提供3组不同的电压,分别对应短距离测距,中距离测距和可调测距三种不同的测距模式。虽然本系统只需工作在短距离测试模式即可满足设计的性能指标,但为了软件标定的便利,及其他场合的应用,该模块依旧保留其他两种模式测距的选择跳线。 4.3 转接板电路的设计 文前已说明转接板是在SPCE061A I/O数目不足,传感器数量较多的情况下,针对超声波测距模块的输入输出信号都是数字信号这一特点,没有选择扩展 - 20 - SPCE061A的口线,而是使用CD4052模拟开关来控制三个传感器的选通与否。该部分电路图见图4-9所示。 图4-9 转接板电路原理图 CD4052是一个2通道4选1开关,由于本系统中只有3路超声波信号,故只需要其中的一个通道即可。CD4052的引脚图已在上文给出,其真值表如图4-10所示。A1和A0控制输出选择,A1和A0的信号由单片机程序控制。 图4-10 CD4052的真值表 4.4 显示电路的设计 4.4.1 二极管闪烁报警电路的设计 二极管闪烁报警电路结构比较简单,二极管直接与SPCE061A的I/O口相连,串联一个限流电阻即可完成设计要求,该部分电路见图4-11。 - 21 - 图4-11 二极管闪烁报警电路原理图 4.4.2 LCD显示报警电路的设计 LCM1062A液晶显示模块的详细资料已经在第三章详细介绍,这里不再介绍。液晶屏供电由61班10PIN排线提供,液晶屏的背光由单片机电源直接提供。现给出液晶屏各引脚的接线图,如图4-12所示。 图4-12 液晶屏引脚接线图 4.5 各模块接口分配 本系统是以SPCE061A为控制器,故以其为中心进行接口分配。SPCE061A共有两个I/O口,共32位。其中IOB8,IOB9两口具有PWM脉宽调制输出的特殊功能,IOB2,IOB3具有外部中断源输入的特殊功能,故设计B口的IOB2,IOB9作为超声波测距模块外部中断输入和PWM信号输出接口。同时IOA1,IOA2,IOA3分别与LCD显示模块的三根控制线RS,R/W,E连接。IOB1,IOB2两口与转接板CD4052的A0,A1相连,用于传感器测量通道的选通。A口的高8位作为LCD显示模块的数据口,IOB12,IOB13,IOB14三口与二极管闪烁报警模块的接口相连。 第五章 超声波倒车雷达系统的软件设计 5.1 超声波测距原理 本设计使用超声波脉冲法测距。声波在其传播介质中被定义为纵波。当声波受到尺寸大于其波长的目标物体阻挡时就会发生反射;反射波称为回声。假如声 - 22 - 波在介质中传播的速度是已知的,而且声波从声源到达目标然后返回声源的时间可以测量得到,那么就可以计算出从声波到目标的距离。这就是本系统的测量原理。这里声波传播的介质为空气。 超声波发射器发射信号后,计数器开始计数,当获得反射信号时,停止计数,并查看计数值N,通过计数值N得到超声波信号的传播时间t,则距离S可由如下公式获得: 1S,v,t(4.1) 2 其中速度V即超声波的传播速度可用下列式计算: (4.2) V,331.5,0.6T T---环境温度(?) 因为本次设计的超声波倒车雷达对环境温度的要求不高,故在本系统中无须添加温度补偿单元。 假设室温下声波在空气中的传播速度是335.5m/s,测量得到的声波从声源到达目标然后返回声源的时间是t秒,则距离d可以由下列公式计算: d,33550(cm/s),t(s)(4.3) 由于声波经过的距离是声源与目标之间的两倍,声源与目标之间的距离应该是d/2。 软件控制脉冲发射、检测回波信号: 程序设计时需要采用脉冲测量法,由SPCE061A控制模组发生40KHz的脉冲信号,每次测量发射的脉冲数至少要12个完整的40KHz脉冲(程序中为20个左右)。同时发射信号前要打开计数器,进行计时;等计时到达一定值后再开启检测回波信号,以避免余波信号的干扰。 采用外部中断对回波信号进行检测(回波信号送到单片机的为一序列方波脉冲)。接收到回波信号后,马上读取计数器中的数值,此数据即为需要测量的时间差数据。为避免测量数据的误差,程序中对测距数据的处理方法是:每进行一次测距,利用时基中断测量4次,即取得4组数据,经过处理后得到这一次测距值。然后对数据进行显示和播报。 5.2 μ'nSP IDE的项目文件管理的组织结构 本设计使用的凌阳16位SPCE061A单片机,故软件的设计及调试都需要在SUNPLUS μ'nSP IDE软件环境里实现。了解μ'nSP IDE的项目文件管理的组织结构,无论是编写还是阅读代码,都会更为便利。 如图5-1所示,IDE项目文件可分为源文件、头文件和外部支持文件。一般代码编写工作是在汇编源文件或C语言源文件进行的。当需要编写某写硬件驱动时,可能会需要编写C语言头文件,而其他文件一般不需要作变动。 - 23 - IDE项目文件管理组织结构 *.asm *.c 源文件 *.rc r Resource.asm *.inc in 头文件 *.h h Resource.inc *.txt *.bin 外部支持文件 bi makefile 图5-1 μ'nSP IDE的项目文件管理的组织结构图 5.3 软件构架 本系统的软件部分拟包含以下几个模块来实现设计所需要的功能。 主程序:主程序主要负责控制整个系统的工作流程,完成各函数的正常调用。功能上,该部分仅有超声波传感器通道选通功能,这样主程序较为简洁,便于阅读与调试。 系统程序:主要包括system.c文件。其完成的功能有:系统端口初始化、测量结果处理、二极管闪烁刷新及LCD输出显示。 超声波测距程序:该部分程序主要包括ultrsonic_App.c和IRQ.c的部分文件。该部分主要完成超声波测距的控制,输出结果处理等功能。 中断程序:主要包括IRQ.c和isr.asm文件,前者包括超声波测距所需要的外部中断服务代码,显示刷新服务代码等。后者包括语音播放程序中断服务代码。 语音播放程序:主要包括Speech.c文件。该部分主要用于实现对外的语音播放功能。 LCD初始化及驱动程序:主要包括1062LCD.asm和LCD1602_User.h文件。该部分实现LCD初始化和LCD读写命令等功能。 - 24 - 5.4 各模块程序设计 5.4.1 主程序设计 主程序流程图以及相关的程序流程图如图5-2所示。 开始 系统初始化 通道选择(ch) 完成一次测距 测距数据处理 N ch>2? Y 通道清零(ch=0) 延时20ms 图5-2 主程序流程图 如图4.2所示为主程序流程图。由于系统的各功能基本由各模块完成,所以主程序的流程并不复杂。图中,延时部分由系统提供的IRQ4的1KHz中断来提供,通道选择即由IOB1、IOB2两个I/O端口的输出状态选通CD4052的通道,以决定当前将进行哪个模块的测距工作,三个超声波测距模块将不断地交替探测障碍物的存在与否。 5.4.2 超声波测距程序的设计 超声波测距程序的设计,是整个系统最为重要的部分。考虑到三个超声波测距模块的选通工作已由主程序完成,故这部分主要叙述一个超声波测距模块测距程序的设计。 为了保证超声波测距结果的准确性,每一个由回波信号获得的测量值将经过两次参数不同的测距得到,而对同一个障碍物将六次进行测距,获得的六个测量值中非零值的平均数才会最终返回到单片机供输出部分调用。该部分的流程图见图5-3所示。 - 25 - 当调用测距函数进行测距时,IOB9口将输出由TimerB产生的40KHz的PWM信号,对于短距离测距,该信号将持续0.5毫秒左右,发出20个以上40KHz的脉冲信号。此时关闭系统中断,将TimerB设置为计数模式,用于计量超声波信号从发射到接收的间隔时间;将TimerA设置为计时模式,提供避开余波开扰的延时,该部分的延时时间将由测试距离和PWM信号发射信号的持续时间来决定,对与短距离测距,本系统的延时时间在0.3毫秒左右。经过延时,打开EXT1外部中断,TimerB开始对回波信号的脉冲数进行计数。当EXT1检测到回波信号的脉冲时,会在中断服务程序中读取TimerB的计数值。该计数值经过处理换算即可得到相对于障碍物距离。若EXT1没有接收到回波信号会重新设置参数,再进行一次较远距离的测试,其工作流程与短距离测距完全一致。若两次测试EXT1都没有接收到回波信号则表明系统工作范围内无障碍物。 - 26 - 开始 测距参数设定 TimerB产生PWM波 延时 设置TimerB用计时 延时 开EXT1外部中断 N 测距是否完成, Exit_flag=1? Y Y 是否接收到回波信测距结果处理 号,Exit_IRQ_flag=1? Exit_flag=0 N Y 测距是否超时, 进行一次远距离测距 Exit_flag=0 N 结束 图5-3超声波测距程序流程图 - 27 - 5.4.3 语音播放程序的设计 语音播放程序采用凌阳A2000语音压缩算法来满足设计要求。A2000语音压缩算法具有高质量、高码率等特点,适用于播放高保真语音/音乐。本系统所需要播放的语音资料总容量不大,可直接保存来SPCE061A的内部FLASH上,无须外接存储芯片,使用A2000语音算法非常合适。由于语音部分已由凌阳公司提供相应的语音库函数,播放语音时直接调用对应的接口函数(API)即可实现 -4所示。 该部分的功能。该部分的程序流程图见图5 开始 N 是否超过3 秒 Y 开语音中断 中断初始化 语音播放初始化 当前播放结Y 束, N 播放服务程序 停止播放 结束 图5-4 语音播放程序流程图 从流程图上可以看出,为了避免多次语音播放重复和播放过于频繁,在语音播放之间添加了基于IRQ5的2Hz中断来进行延时。只有当距离上次语音播放的时间间隔超过3秒时,下一次的语音播放才会被系统允许。 5.4.4 二极管闪烁程序的设计 二极管闪烁报警模块的三个发光二极管是直接与SPCE061A的IOB12、 - 28 - IOB13、IOB14三个口相连的。为了实现设计所要求的当探测到障碍物时,二极管以一定频率闪烁,且距离越近闪烁频率越高的这一功能,该部分设置了用于保存对应超声波测距模块频率设置初值的三个变量及三个用于控制输出反转的计数器。当输入的频率初值不为零时,该计数器就会不断地计数,当计数器中的计数值溢出时,对输出的状态取反,重新送初值,如此周而复始即可满足该部分的设计要求。该部分的程序流程图见图5-5所示。 开始 Y 初值是否为 0, N 计数器开始计数 N 是否溢出, Y 输出状态取反 结束 图5-5 二极管闪烁程序流程图 5.4.5 LCD初始化及驱动程序的设计 LCM1602A液晶显示模块共有3根控制线,LCD初始化及驱动程序的设计便是在参考该部分时序图的基础上,对这3根控制线进行操作来完成的。LCD初始化流程图见图5-6所示,LCDM1602A的读写时序见图4.7所示。 - 29 - 开始 延时 显示模式选择 延时 显示开 延时 刷屏 延时>1.53ms 结束 图5-6 初始化及驱动程序流程图 第六章 超声波倒车雷达系统的整体调试 6.1 故障调试及解决方式 一、SPCE061A接收不到超声波回波信号。 首先检查超声波模块上使用的各电容电阻值是否符合设计要求,若部分没有问题,则问题可能出之以下几点: 1(超声波发射头与接收头安装位置不合适。 安装位置不合适也存在两种不同的情况,如图6-1所示。即发射头与接收头没有安装在同一个平面,发射头与接收头之间的间距不合适。与一般的声波信号不同,超声波具有束射特性,其发出的声波具有较强的方向性,若发射头与接收头安装位置不合理,很容易发生无法接收到回波信号的问题。 - 30 - 错误 障碍物 错误 发射头 接收头 正确 障碍物 正确 发射头 接收头 图6-1 超声波探头安装示意图 2(反射面材质不合适 不同的材料对于超声波的吸收率是不同的,毛料及皮制品对超声波信号的吸收最为明显,应该避免使用此类材料构成的反射面。 3(用于避免余波干扰的延时过长 如文前所述,超声波测距程序中,当发射头发出脉冲信号后,是要经过一个延迟时间后才开始接收反射信号的。即当程序在延时过程中,即便返回了反射信号,系统也不会接收。当其他部分工作正常的情况下,可适当的减小该延时时间,不可太小,不然容易引起较大的测量误差。 4(发射头发出的脉冲个数不够 这也是可能导致无法接收到回波信号的一个原因。这是在系统调试中发现的一个原因。一个能正常使用的超声波测距模块,当发出的脉冲个数少于10个左右,系统就认为没有接收到回波信号的返回。这是由于回波信号能量太弱,在与LM311进行电压比较时,输出依旧为低电平造成的。适当增加发出的脉冲个数能有效改善系统性能。 二、二极管闪烁报警模块在没有障碍物的情况下依旧以一定频率闪烁。 首先检查程序中,无障碍物时,寄存器赋的初值是否为零。若程序无问题,则很有可能是由于超声波传感器具有压电式电声传感器易受干扰的特点造成的。按设计电路良好接地,以及将电路板部分接地能够有效改善这种情况。 三、LCD无显示或显示全乱码。 由于本设计方案使用的LCM1602A并非凌阳公司的配套产品,需要自己编写相应的初始化及底层驱动程序。由于问题的征状为无显示,则说明LCD并没有成功的完成初始化工作,需要修改或重新编写LCD初始化工作,并检查对应的控制口线是否连接正确。显示全乱码则说明SPCD061A对LCM1602A的读写 - 31 - 控制有问题,有必要修改或重新编写低层驱动程序。 四、语音播放时,LCD不能实现实时显示。 这种现象是正常的。造成一个现象的原因是由于语音播放是通过FIQ中断调用的,在SPCE061A中断系统中,FIQ具有最高的中断优先级,故SPCE061A只会进行语音播放,当语音播放完毕后才会开放中断,继续进行测距显示。 - 32 - 结 论 本文设计的超声波倒车雷达系统是在SPCE061A最小精简开发板上的一个应用。设计的各项功能都能够实现。且完成的各功能各具特点,语音报警系统具有很高的人性化,二极管闪烁报警能够对3个方面的障碍物距离有统一的控制,LCD能准确的显示距离最近的障碍物的确切距离,可以给驾驶者多角度的去把握障碍物的实际存在。通过以上论述可以发现,整个设计的实用性较高,是可以真正应用到实际生活中去的。但本设计限于时间和个人认识的不足,该系统还是有一定的缺陷,如语音播放时,LCD无法实现实时显示;对于在16位平台上的应用,测量精度也显的不够。希望可以在之后的设计中,将系统变的更为完善。 - 33 - 社会经济效益分析 本文所设计的超声波倒车雷达系统具有体积小、精度高、实时测量显示直观迅速、语音提示较人性化、运行操作简单、成本较低。由于采用的器件都是已经非常普遍的器件,并且价格也容易令人接受。使用的16位单片机SPCE061A功能强大,用户甚至可以根据自己的实际需要,加以功能的扩展。而搭建的超声波测距模块,较市场上动辄数百的价格,有很明显的优势,且该模块留有外部电源接口及测距模式选择接口,适用性与可扩展性很强。软件方面,主要的代码都是由C语言编写,程序的可读性很强,并且留有了部分扩展功能的接口函数,可以很容易的修改。故本倒车雷达系统除了作为倒车雷达的存在,稍加改进亦可用于构建超声波阵列完成边缘探测、机器人视觉系统等工作,具有很高的经济效益。 - 34 - 致 谢 整个毕业设计的过程,感觉上是比较漫长的。由于使用的SPCE061A 16位单片机以往不曾学过,无论是在硬件设计还是在软件编写上都困难重重。尤其是LCD部分,因为缺少相应的驱动,只能自己尝试在新的编译环境中,对不熟悉的硬件编写代码。而超声波参数的标定也因为相应仪器的测量精度的问题,很多东西都是反复测距,由实验结果推测出来的。不过最终还是完成了毕业设计。 本次我的毕业设计能顺利完成,很大部分都得归功于各位老师,是他们耐心的帮助与指导起了推波助澜的巨大功效,特别是指导教师张庆新老师,对于多次设计上的困境都给予了悉心的指导,对此我衷心的表示感谢。 - 35 - 参考文献 [1] 罗亚非. 凌阳16位单片机应用基础. 北京: 北京航空航天大学出版社, 2003年12月:32-213 [2] 薛钧义等. 凌阳十六位单片机原理及应用. 北京: 北京航空航天大学出版 社, 2003年2月:143-175 [3] 谭浩强. C程序设计. 北京: 清华大学出版社,1999年12月第2版:33-121 [4] 沈美明,温冬蝉. IBM-PC汇编语言程序设计[M].北京:清华大学出版 社.2001年8月第2版:47-78 [5] 赵茂泰. 智能仪器原理及应用. 电子工业出版社, 2004: 11-12 [6] 阎石. 数字电子技术基础. 北京:高等教育出版社, 2006年5月第5 版:67-121 [7] 孙添福. 新型传感器技术. 机械工业出版社, 2002年3月:118-121 [8] 张丹等. 凌阳SPCE061A单片机超声测距系统测距. 陕西师范大学学报 (自然科学版), 2007: 35-4 [9] 柴政等. 基于单片机的超声波测距设计与研究. 科技信息, 2007:26 [10] 王进花等. 一种多方位超声波测距仪的设计. 甘肃联合大学学报(自然科 学版), 2007: 21-6 [11] 童师白. 模拟电子技术基础. 高等教育出版社, 2001: 171-174 [12] 王伟等.低噪声回波测距系统的电路设计与系统分析.北京科技大学学 报,2005.27;488 [13] GHIDARY S S,TANI T,TAKAMORI T,HATTORI M. A new home robot positioning system (HRPS) using IR switched multi ultrasonic sensors[J]. Systems, Man, and Cybernetics,1999. IEEE SMC' 99 Conference Proceedings. 1999 IEEE International Conference on Volume 4,12-15 Oct, 1999(4):737-741. [14] Wilatzen,M. Ultrasonic flowmeters; temperature gradients and tranducer- geometry effects.Ultrasonics,2003,14(2):105 [15] 凌阳大学计划网站 www.unsp.com - 36 - 外文翻译 Ultrasonic and radar First, the ultrasound: Generally the sound wave frequency sound waves over 20kHz as ultrasound, ultrasound is a mechanical wave, that is, mechanical vibrations in elastic media in a kind of communication process. It is characterized by a high frequency, wave length, diffraction is small, another direction is good, to be the ray and the orientation spread. Of ultrasound in liquid, solid in the attenuation is very small, thus penetrating ability, particularly in the light opaque solids, ultrasound can penetrate tens of meters in length, impurities or interface will encounter significant reflection, ultrasonic measurement Level is its use of this feature. In the ultrasonic inspection technique, regardless of the kind of ultrasound equipment, ultrasound must be converted to electrical energy is transmitted out to receive back converted into electrical signals, to accomplish this function is called ultrasonic transducer device, also known as probe. The ultrasonic transducer placed above the liquid under test, downward firing ultrasound, ultrasound through the air medium, in the face when the water is reflected back, and be received by the transducer and converted to electrical signals, electronic detection part detected This signal will turn it into the display and output signal level. By the principle of ultrasonic wave propagation in the medium shows that, if the medium pressure, temperature, density, humidity and other conditions are fixed, then the ultrasonic wave propagation in the medium speed is a constant. Thus, when measured by ultrasound reflection from the surface to be transmitted to meet the time required to receive, you can convert the ultrasound through the journey, which has been level data. Ultrasonic testing is the use of ultrasound to detect materials and artifacts, and display of ultrasonic detector as a non-destructive testing methods. NDT is the industry one of the methods. Defects encountered in ultrasound into the body, part of the sound waves will produce reflection, transmission and receiver can analyze the reflected waves, we can accurately measure defect exception to. And can show the location and size of internal defects to determine material thickness. Ultrasound has blind spots, the installation must be set aside out of the sensor mounting position calculating and measuring the distance between the liquid. Second, the radar: Radar level gauge with emission - reflection - reception mode. Using radio detection and ranging, is the use of electromagnetic detection of target microwave band of electronic equipment. A variety of radar, specific purpose and structure vary, but the basic form is the same, including the five basic components: transmitter, transmitting antenna, receiver, receiver antenna and the monitor. There are power equipment, data recording devices, jamming equipment and auxiliary equipment. Measuring distance is a measure of the actual transmit pulse and the echo time - 37 - difference between pulses, because the speed of light propagation of electromagnetic waves, whereby goals can be converted into the exact distance. Radar level meter antenna emits electromagnetic waves, these waves reflected by the surface of the measured object, and then received by the antenna, electromagnetic waves from the transmitter to the receiver time and proportional to the distance to the surface, relations are as follows: D = CT / 2 Where D - radar level gauge the distance to the surface C - the speed of light T - wave run-time Pulse wave radar level gauge records the elapsed time, while the electromagnetic wave transmission speed is constant, you can calculate the distance from surface to the radar antenna, thereby to know the level surface. In practice, the radar level gauge, there are two ways that pulse frequency modulation continuous wave type and wave type. Using frequency modulation continuous wave technology, liquid level, power consumption, most of a four-wire, complex electronic circuits. But lower than the continuous wave has the following characteristics: 1, reflecting stronger, 2, quieter, 3, a smaller beam angle, 4, strong anti-interference, 5, the same smaller size range speaker The use of radar level meter pulse technology, low power consumption, available in 24V DC power supply wire, easy to implement intrinsically safe, high accuracy, applies more broadly. Third, the difference between ultrasonic and radar: 1. radar measuring range is much larger than the ultrasound. 2. radars have flared, rod, cable, and the relative ultrasound can be used in more complex conditions. 3. ultrasound accuracy than radar. 4. radars relatively higher price. 5. use the radar to be considered when the dielectric constant of the media. 6. ultrasound can not be used in a vacuum, steam, or liquid has high levels of foam and other conditions. 7. the radar over a wide range of ultrasound with high precision, the failure rate is small relative to maintaining a small amount. 8. ultrasonic cheaper than the radar, can not be used in a vacuum. 9. Ultrasonic affected by temperature, generally above 50 degrees Celsius temperature measurement is not easy to use media, must not exceed 60 degrees Celsius. 10, using ultrasonic sound waves, the radar uses electromagnetic waves, which is the biggest difference between the two. Parking sensor introduced Reversing radar is car parking or reversing the safety of assistive devices, able to voice or tell the driver a more intuitive display cases around the obstacle, to lift the driver parking, reversing around, and start to visit the vehicle caused Problems, and to help the driver to remove the dead and blurred vision defects, improve driving safety. - 38 - Parking sensor system works PDC is usually in the car or the front and rear bumper rear bumper set of radar detectors to detect obstacles in front and back, to help drivers "see" around the side of the barrier, or Stopping distance with its cars, in addition to convenient parking outside the device can also protect the body from virtually scratch. PDC is the ultrasonic sensor to detect the nearest obstacle distance from the vehicle, and issued siren to warn drivers. The siren sound control is usually divided into two stages, when the vehicle reaches a certain distance from start to detect the distance, sirens begin to sound the siren of a high-frequency chirping sound, and when reaching the distance of a closer , Then the siren changed to a continuous siren sound, to inform drivers. PDC has the advantage of reversing radar, pilots can use hearing to obtain information about obstacles, or its vehicles from the glass. PDC system is to assist parking, so when the speed reaches or exceeds a certain function when the system will be shut down. Now the car has started using a digital video parking sensor system, without blind spots, such as the Nissan Teana this year, the recently-adopted the reverse image on the design, genuinely blind spot detection, sound and image, reversing the display shows. No blind PDC digital parking sensor works is that when after hanging into reverse gear, PDC system automatically starts, embedded in the rear bumper of the four or six ultrasonic rear obstacle detection sensors started. Obstacle when the distance of 1.5 meters, the alarm system will issue a "Didi"sound, as close to obstacles, "Didi"sound frequency increases, when the distance between car and obstacles less than 0.3 meters, "Didi Sound "will be transformed into a continuous tone. The main technical indicators reversing radar While each vehicle has a rear-view mirror, but there will always be because of the visual blind, vehicle scratches occur bump occurred. And a suitable parking sensor can help owners solve this problem. Reversing radar can improve safety when reversing 2-4 parking sensor probe installed above the rear bumper of the car,6-8, reversing radar sensor is installed as the first 2 normally after 4 or after the first 4 4. In general, the probe determines the number of reversing radar detection coverage, can reduce the blind spot detection. More than 6 in the reverse parking sensor probe, can detect the front left, right corner. Now the market more than reversing radar signal detection using ultrasonic rear obstacle, the micro-computer processing, computation out of the bus and the back of the obstacle distance and direction, and then sent to the display; and through the digital display and different way to remind motorists frequency sounds alarm Rear obstacle with care. Usually when the car into the "R" block, reversing lamp light, the radar system will automatically boot into the reverse state. Probe a few more, the stronger detection capability Now the market reversing radar sensor were 2, 3, probe, probe 4, 6 and 8 of the probe the probe. - 39 - Function is complete, there should be away from reversing radar display, voice prompt alarm, position instruction and other functions. According to the basic scope of exploration in between 1.5 to 3 meters. But to remind the sales staff, although the instructions on the label about the same distance, but some brands of reversing radar, not because of the sensitivity, detection range is limited, but the driver's discretion and will take measures to bring some difficulties, so to choose a brand reputation Products. Mainstream price per 200 -500 Sales personnel, the probe more, the price the more expensive side. Most buyers will choose 2 to 4 probes of the probe. The set is equipped with 4-way reversing radar sensor in the 600-800 yuan price. With voice prompts and display (including LCD screen, normal screen) function of reversing radar hundred dollars more expensive than ordinary products around. Parking sensor on the market include: PLC, parking Po :300-500; Iron boss, Bao Shi, car Lu, windstone :200-400. Wired reversing the mainstream radar Parking sensor embedded main installation, the probe will be installed through the openings to the bumper. The products come out at the beginning, the probe is directly attached to the bumper, as pretty, is no longer used. Parking sensor auto supply store will usually installed by technicians, according to the owner of the vehicle subject to different fees. Parking sensor from the connection, and can be divided into two types of wired and wireless. It is reported that the wireless parking sensor and parking sensor cable has the same function. Compared with wired reversing radar, wireless parking sensor, and display host connection using wireless communication technology to prevent the demolition of car interiors. However, because wireless parking sensor may face mobile phone signals, radio stations and other radio interference affect its function, the wireless parking sensor has not spread a large area. Ray Price and wireless cable type parking is no big difference. - 40 - 超声波与雷达 一、 超声波: 一般把声波频率超过20kHz的声波称为超声波,超声波是机械波的一种,即是机械振动在弹性介质中的一种传播过程。 它的特征是频率高、波长短、绕射现象小,另外方向性好,能够成为射线而定向传播。超声波在液体、固体中衰减很小,因而穿透能力强,尤其是在对光不透明的固体中,超声波可穿透几十米的长度,碰到杂质或界面就会有显著的反射,超声波测量物位就是利用了它的这一特征。 在超声波检测技术中,不管那种超声波仪器,都必须把电能转换超声波发射出去,再接收回来变换成电信号,完成这项功能的装置就叫超声波换能器,也称探头。将超声波换能器置于被测液体上方,向下发射超声波,超声波穿过空气介质,在遇到水面时被反射回来,又被换能器所接收并转换为电信号,电子检测部分检测到这一信号后将其变成液位信号进行显示并输出。 由超声波在介质中传播原理可知,若介质压力、温度、密度、湿度等条件一定,则超声波在该介质中传播速度是一个常数。因此,当测出超声波由发射到遇到液面反射被接收所需要的时间,则可换算出超声波通过的路程,即得到了液位的数据。 超声波检测是指用超声波来检测材料和工件、并以超声波检测仪作为显示方式的一种无损检测方法。是工业上无损检测的方法之一。超声波进入物体遇到缺陷时,一部分声波会产生反射,发射和接收器可对反射波进行分析,就能异常精确地测出缺陷来(并且能显示内部缺陷的位置和大小,测定材料厚度等。 超声波有盲区,安装时必须计算预留出传感器安装位置与测量液体之间的距离。 二、 雷达: 雷达液位计采用发射—反射—接收的工作模式。采用无线电检测和测距,是利用微波波段电磁波探测目标的电子设备。各种雷达的具体用途和结构不尽相同,但基本形式是一致的,包括五个基本组成部分:发射机、发射天线、接收机、接收天线以及显示器。还有电源设备、数据录取设备、抗干扰设备等辅助设备。测量距离实际是测量发射脉冲与回波脉冲之间的时间差,因电磁波以光速传播,据此就能换算成目标的精确距离。 雷达液位计的天线发射出电磁波,这些波经被测对象表面反射后,再被天线接收,电磁波从发射到接收的时间与到液面的距离成正比,关系式如下:D=CT/2 式中 D——雷达液位计到液面的距离 C——光速 T——电磁波运行时间 雷达液位计记录脉冲波经历的时间,而电磁波的传输速度为常数,则可算出液面到雷达天线的距离,从而知道液面的液位。 在实际运用中,雷达液位计有两种方式即调频连续波式和脉冲波式。 采用调频连续波技术的液位计,功耗大,大部分都采用四线制,电子电路复杂。但较以连续波具有以下特点: 1、反射更强,2、噪音更小,3、波束角更小,4、抗干扰强,5、相同量程喇叭尺寸更小 - 41 - 而采用雷达脉冲波技术的液位计,功耗低,可用二线制的24V DC供电,容易实现本质安全,精确度高,适用范围更广。 三、 超声波与雷达的区别: 1.雷达测量范围要比超声波大很多。 2.雷达有喇叭式、杆式、缆式,相对超声波能够应用于更复杂的工况。 3.超声波精度不如雷达。 4.雷达相对价位较高。 5.用雷达的时候要考虑介质的介电常数。 6.超声波不能应用于真空、蒸汽含量过高或液面有泡沫等工况。 7.雷达较超声波使用范围广、精度较高,故障率小相对维护量小。 8.超声波较雷达价格便宜,在真空中不能使用。 9.超声波受温度影响,一般测50摄氏度以上温度的介质就不好用,绝不能 超过60摄氏度。 10.超声波用的是声波,雷达用的是电磁波,这是两者最大的区别。 倒车雷达介绍 倒车雷达是汽车泊车或者倒车时的安全辅助装置,能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员泊车、倒车和起动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了视野死角和视线模糊的缺陷,提高驾驶的安全性。 倒车雷达PDC系统的工作原理就是通常是在车的后保险杠或前后保险杠设 用以侦测前后方的障碍物,帮助驾驶员“看到”前后方的障碍置雷达侦测器, 物,或停车时与它车的距离,此装置除了方便停车外更可以保护车身不受刮蹭。PDC是以超音波感应器来侦测出离车最近的障碍物距离, 并发出警笛声来警告驾驶者。而警笛声音的控制通常分为两个阶段,当车辆的距离达到某一开始侦测的距离时,警笛声音开始以某一高频的警笛声鸣叫, 而当车行至更近的某一距离时,则警笛声改以连续的警笛声,来告知驾驶者。 倒车雷达PDC的优点在于驾驶员可以用听觉获得有关障碍物的信息,或它车的距璃。PDC系统主要是协助停车的, 所以当达到或超过某一车速时系统功能将会关闭。 现在的新车已经开始使用了数字无盲区可视倒车雷达系统,比如今年上市不久的尼桑天籁就采用了倒车影像设计,做到真正无盲区探测,声音和图像,倒车显示屏显示。 数字式无盲区PDC倒车雷达的工作原理就是当挂入倒挡后,PDC系统即自动启动,内嵌在车后保险杠上的四个或6个超声波传感器开始探测后方的障碍物。当距离障碍物1.5米时,报警系统就会发出“嘀嘀”声,随着障碍物地靠近,“嘀嘀”声的频率增加,当汽车与障碍物间距小于0.3米时,“嘀嘀声”将转变成连续音。 倒车雷达的主要技术指标 虽然每辆车都有后视镜,但由于视觉盲区总会存在,车辆发生磕碰刮伤时有发生。而一款适合的倒车雷达可以帮车主解决这一难题。 安装倒车雷达可以提高倒车时的安全性 2-4探头的倒车雷达安装在汽车的后保险杠上面,6-8探头的倒车雷达一般安装为前2后4,或前4后4。通常来说,探头数量决定了倒车雷达的探测覆盖能力,能减少探测盲区。6个以上探头的倒车雷达在倒车时,可探测前左、右角。 - 42 - 现在市面上的倒车雷达多利用超声波信号探测车后障碍物,经微电脑处理,计算出车与后部障碍物的距离和方位,再送至显示器;并通过数码显示及不同频率声音告警方式提醒驾车者小心车后障碍物。一般当车进入“R”挡,倒车灯亮,雷达系统便自动开机,进入倒车状态。 探头数越多,探测能力越强 现在市面上的倒车雷达分别有2探头、3探头、4探头、6探头及8探头。 功能较齐全的倒车雷达应该有距离显示、声音提示报警、方位指示等功能。 探照范围基本在1.5米至3米之间。不过销售人员提醒,虽然说明 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 上标注的距离大致相同,但一些品牌的倒车雷达因敏感度不够,探测距离有限,反而会给司机的判断和采取措施带来一定困难,所以要选用有品牌美誉度的产品。 主流产品价格200元—500元 销售人员介绍,探头越多,价格越偏贵。购买者大多会选择2探头至4探头的。 而一套配有4路传感器的倒车雷达价格会在600—800元。具有语音提示及显示屏(包括液晶屏、普通屏)功能等的倒车雷达较普通产品要贵百元左右。 市场上的倒车雷达主要包括:PLC、泊车宝:300—500元;铁老大、宝仕、车侣、赢时通:200—400元。 有线倒车雷达是主流 倒车雷达主要为内嵌式安装,即将探头通过开孔的方式安装到保险杠上。而产品问世之初,是将探头直接贴在保险杠上,由于不美观,已经不再使用。倒车雷达一般会在汽车用品店由技术人员安装,根据车主的车型来加收不同的费用。 倒车雷达从连接方式上,还可分为有线和无线两类。据悉,无线倒车雷达与有线倒车雷达拥有同样功能。与有线倒车雷达相比,无线倒车雷达的主机和显示器采用无线传播技术连接,避免了对车内饰进行拆卸。 不过由于无线倒车雷达可能面临手机信号、电台收音等无线电干扰影响其功能,使得无线倒车雷达还没有大面积普及。无线倒车雷价格与有线型无太大差异。 - 43 - 附录? 程序清单 //======================================================== // main.c //======================================================== #include "SPCE061A.h" #include "ultrasonic_App.h" extern void Initial_IO(void); extern void Channel_Sel(unsigned int ch); extern void Result_Check(unsigned int ch,unsigned int Result[3]); //============================================================== // void Delay_1ms(unsigned int Timers) //============================================================== unsigned int Counter_1KHz = 0; void Delay_1ms(unsigned int Timers) { Counter_1KHz = 0; while(Counter_1KHz2) ch_Sel = 0; Delay_1ms(20); *P_Watchdog_Clear = 0x0001; } } //======================================================== - 44 - // 文件名称: system.c //======================================================== #include "SPCE061A.h" extern void PlaySnd_Auto(unsigned int uiSndIndex,unsigned int uiDAC_Channel); unsigned int Show_Freq_Set[3] = {0,0,0}; unsigned int Show_Counter_1KHz[3] = {0,0,0}; //============================================================== // void Initial_IO(void) //============================================================== void Initial_IO(void) { *P_IOA_Dir = *P_IOA_Dir|0xff00; *P_IOA_Attrib = *P_IOA_Attrib|0xff00; *P_IOA_Data = *P_IOA_Buffer&0x00ff; *P_IOB_Dir = *P_IOB_Dir|0xF003; *P_IOB_Attrib = *P_IOB_Attrib|0xF003; *P_IOB_Data = *P_IOB_Buffer&0x0FFc; } //============================================================== // void Channel_Sel(unsigned int ch) //============================================================== void Channel_Sel(unsigned int ch) { unsigned int uiTemp; ch = ch&0x0003; uiTemp = *P_IOB_Buffer; uiTemp = uiTemp&0xfffc; uiTemp = uiTemp|ch; *P_IOB_Data = uiTemp; } //============================================================== // void Result_Check(unsigned int ch,unsigned int Result[3]) //============================================================== void Result_Check(unsigned int ch,unsigned int Result[3]) { if(Result[ch]<150) { if(Result[ch]==0) Result[ch] = 155; if(Result[ch]>40) Show_Freq_Set[ch] = Result[ch]*6; else Show_Freq_Set[ch] = 100; } else { - 45 - Show_Freq_Set[ch] = 0; switch(ch) { case 0:*P_IOB_Data = *P_IOB_Buffer&(~0x1000); break; case 1:*P_IOB_Data = *P_IOB_Buffer&(~0x2000); break; case 2:*P_IOB_Data = *P_IOB_Buffer&(~0x4000); break; default: break; } } if(Result[1]<150||(Result[0]<150&&Result[2]<150)) { LCD_dsp_string(1,1,"WELLCOM"); LCD_dsp_string(10,1,"B"); LCD_dsp_string(1,2,"DISTANCE"); LCD_disp_char(9,2,':'); LCD_disp_char(11,2,'.'); LCD_disp_char(14,2,'m'); display_number(Result[1]); PlaySnd_Auto(1,3); } else if(Result[0]<150) {LCD_dsp_string(1,1,"WELLCOM"); LCD_dsp_string(10,1,"LB"); LCD_dsp_string(1,2,"DISTANCE"); LCD_disp_char(9,2,':'); LCD_disp_char(11,2,'.'); LCD_disp_char(14,2,'m'); display_number(Result[0]); PlaySnd_Auto(0,3); } else if(Result[2]<150) { LCD_dsp_string(1,1,"WELLCOM"); LCD_dsp_string(10,1,"RB"); LCD_dsp_string(1,2,"DISTANCE"); LCD_disp_char(9,2,':'); LCD_disp_char(11,2,'.'); LCD_disp_char(14,2,'m'); display_number(Result[2]); PlaySnd_Auto(2,3); } } //============================================================== // void Show_Flag(void) - 46 - //============================================================== void Show_Flag(void) { if(Show_Freq_Set[0]!=0) { Show_Counter_1KHz[0] = Show_Counter_1KHz[0]+1; if(Show_Counter_1KHz[0]>Show_Freq_Set[0]) { Show_Counter_1KHz[0] = 0; *P_IOB_Data = *P_IOB_Buffer^0x1000; } } if(Show_Freq_Set[1]!=0) { Show_Counter_1KHz[1] = Show_Counter_1KHz[1]+1; if(Show_Counter_1KHz[1]>Show_Freq_Set[1]) { Show_Counter_1KHz[1] = 0; *P_IOB_Data = *P_IOB_Buffer^0x2000; } } if(Show_Freq_Set[2]!=0) { Show_Counter_1KHz[2] = Show_Counter_1KHz[2]+1; if(Show_Counter_1KHz[2]>Show_Freq_Set[2]) { Show_Counter_1KHz[2] = 0; *P_IOB_Data = *P_IOB_Buffer^0x4000; } } } //======================================================== // Speech.c //======================================================== #include "SPCE061A.h" #include "A2000.h" extern void Save_INTSetting(void); unsigned int Counter_2Hz = 7; //============================================================== // void PlaySnd_Auto(unsigned int uiSndIndex, //============================================================== void PlaySnd_Auto(unsigned int uiSndIndex,unsigned int uiDAC_Channel) { - 47 - if(Counter_2Hz>6) { Counter_2Hz = 0; *P_INT_Ctrl = *P_INT_Ctrl_New|0x0008; Save_INTSetting(); SACM_A2000_Initial(1); SACM_A2000_Play(uiSndIndex,uiDAC_Channel,3); while((SACM_A2000_Status() & 0x0001) != 0) { SACM_A2000_ServiceLoop(); *P_Watchdog_Clear = 0x0001; } SACM_A2000_Stop(); } } //======================================================== // isr.asm //======================================================== .INCLUDE a2000.inc .INCLUDE hardware.inc .TEXT .PUBLIC _FIQ _FIQ: push r1,r5 to [sp] r1 = C_FIQ_TMA test r1,[P_INT_Ctrl] jnz L_FIQ_TimerA r1 = C_FIQ_TMB test r1,[P_INT_Ctrl] jnz L_FIQ_TimerB L_FIQ_PWM: r1 = C_FIQ_PWM [P_INT_Clear] = r1 pop r1,r5 from [sp] reti L_FIQ_TimerA: [P_INT_Clear] = r1 call F_FIQ_Service_SACM_A2000 pop r1,r5 from [sp] reti L_FIQ_TimerB: [P_INT_Clear] = r1 pop r1,r5 from [sp] - 48 - reti .CODE //============================================================== // 汇编格式: _Save_INTSetting //============================================================== .DEFINE P_INT_Ctrl_New 0x702D // Same as P_INT_Mask .PUBLIC _Save_INTSetting _Save_INTSetting: r1 = [P_INT_Ctrl_New] [R_InterruptStatus] = r1 retf //============================================================== // IRQ.c //============================================================== #include "SPCE061A.h" #include "ultrasonic_App.h" void IRQ3(void)__attribute__((ISR)); void IRQ3(void) { *P_INT_Clear = 0x0100; EXT1_IRQ_ult(); } //============================================================= // 函数名称: void IRQ4(void) //============================================================= extern void Show_Flag(void); extern unsigned int Counter_1KHz; void IRQ4(void)__attribute__((ISR)); void IRQ4(void) { Counter_1KHz++; Show_Flag(); *P_INT_Clear=0x0020; } //============================================================= // void IRQ5(void) //============================================================= extern unsigned int Counter_2Hz; void IRQ5(void)__attribute__((ISR)); void IRQ5(void) { Counter_2Hz++; if(Counter_2Hz>6) *P_INT_Ctrl = *P_INT_Ctrl_New&0xfff7; - 49 - *P_INT_Clear=0x0008; } //============================================================== // 文件名称: ultrasonic_App.c //============================================================== #include "SPCE061A.h" #define LONG_SEND_TIMER 1000 #define LONG_SEND_TIMER2 3000 #define LONG_WAIT_DELAY 600 #define LONG_WAIT_DELAY2 1500 #define LONG_RES_ADD 0x00B0 #define LONG_RES_ADD2 0x0220 #define LOW_SEND_TIMER 250 #define LOW_SEND_TIMER2 1000 #define LOW_WAIT_DELAY 180 #define LOW_WAIT_DELAY2 400 #define LOW_RES_ADD 0x0034 #define LOW_RES_ADD2 0x00B0 unsigned int Counter_buf; unsigned int EXT1_IRQ_flag=0; //============================================================== // void Initial_ult(void) //============================================================== void Initial_ult(void) { unsigned int uiTemp; uiTemp = *P_IOB_Dir; uiTemp = uiTemp|0x0200; uiTemp = uiTemp&0xfeff; *P_IOB_Dir = uiTemp; uiTemp = *P_IOB_Attrib; uiTemp = uiTemp|0x0200; uiTemp = uiTemp&0xfeff; *P_IOB_Attrib = uiTemp; uiTemp = *P_IOB_Buffer; uiTemp = uiTemp|0x0300; *P_IOB_Data = uiTemp; } //============================================================== // void Delay_ult(unsigned int timers) //============================================================== void Delay_ult(unsigned int timers) { unsigned int i; - 50 - for(i=0;i>1; uiTemp = (unsigned int)ulTemp; return uiTemp; } //============================================================== // unsigned int measure_ult(unsigned int type) //============================================================== unsigned int measure2_ult(unsigned int type); unsigned int measure_ult(unsigned int type) { unsigned int Exit_flag = 1; unsigned int uiTemp; unsigned int uiResoult; unsigned int uiSend_Timer,uiWait_Timer,uiRes_Add; unsigned int uiSystem_Clock; uiSystem_Clock = *P_SystemClock; *P_SystemClock = 0x0088; if(type) { uiSend_Timer = LONG_SEND_TIMER; uiWait_Timer = LONG_WAIT_DELAY; uiRes_Add = LONG_RES_ADD; } else { uiSend_Timer = LOW_SEND_TIMER; uiWait_Timer = LOW_WAIT_DELAY; uiRes_Add = LOW_RES_ADD; } *P_TimerB_Data = 0xfed2; - 51 - *P_TimerB_Ctrl = 0x03c0; Delay_ult(uiSend_Timer); *P_TimerB_Ctrl = 0x0006; *P_TimerB_Data = 0x0000; *P_TimerB_Ctrl = 0x0001; while(*P_TimerB_Data10000) { Exit_flag = 0; uiResoult = measure2_ult(type); *P_TimerB_Ctrl = 0x0006; } uiTemp = *P_TimerB_Data; *P_Watchdog_Clear = 0x0001; } *P_INT_Ctrl = *P_INT_Ctrl_New&(~0x0100); __asm("IRQ OFF"); *P_SystemClock = uiSystem_Clock; return uiResoult; } //============================================================== // void EXT1_IRQ_ult(void) //============================================================== void EXT1_IRQ_ult(void) { Counter_buf = *P_TimerB_Data; *P_TimerB_Ctrl = 0x0006; *P_INT_Ctrl = *P_INT_Ctrl_New&(~0x0100); - 52 - *P_INT_Clear = 0xffff; EXT1_IRQ_flag = 1; } //============================================================== // unsigned int measure2_ult(void) //============================================================== unsigned int measure2_ult(unsigned int type) { unsigned int Exit_flag = 1; unsigned int uiResoult; unsigned int uiSend_Timer,uiWait_Timer,uiRes_Add; *P_TimerA_Ctrl = 0x0006; *P_INT_Ctrl = *P_INT_Ctrl_New&(~0x0100); __asm("IRQ OFF"); *P_INT_Clear = 0xffff; if(type) { uiSend_Timer = LONG_SEND_TIMER2; uiWait_Timer = LONG_WAIT_DELAY2; uiRes_Add = LONG_RES_ADD2; } else { uiSend_Timer = LOW_SEND_TIMER2; uiWait_Timer = LOW_WAIT_DELAY2; uiRes_Add = LOW_RES_ADD2; } *P_TimerB_Data = 0xfed2; *P_TimerB_Ctrl = 0x03c0; Delay_ult(uiSend_Timer); *P_TimerB_Ctrl = 0x0006; *P_TimerB_Data = 0x0000; *P_TimerB_Ctrl = 0x0001; while(*P_TimerB_Data10000) { Exit_flag = 0; uiResoult = 0; *P_TimerB_Ctrl = 0x0006; } } return uiResoult; } //============================================================== // unsigned int measure_Times(unsigned int type) //============================================================== unsigned int measure_Times(unsigned int type) { unsigned int uiResoult=0,uiMeasure_Index=0,i; unsigned int uiTemp_buf[6],uiTemp; unsigned int uiSystem_Clock; for(;uiMeasure_Index<6;uiMeasure_Index++) { uiTemp = measure_ult(type); if(uiMeasure_Index==0) uiTemp_buf[0] = uiTemp; else { i = uiMeasure_Index; while(i) { if(uiTemp>uiTemp_buf[i-1]) { uiTemp_buf[i] = uiTemp_buf[i-1]; uiTemp_buf[i-1] = uiTemp; } else { uiTemp_buf[i] = uiTemp; break; } i--; - 54 - } } uiSystem_Clock = *P_SystemClock; *P_SystemClock = 0x000b; for(i=0;i<5;i++) { Delay_ult(1000); *P_Watchdog_Clear = 0x0001; } *P_SystemClock = uiSystem_Clock; } if(uiTemp_buf[5]==0) { uiResoult = uiTemp_buf[1]+uiTemp_buf[2]+uiTemp_buf[3]+uiTemp_buf[4]; uiResoult = uiResoult/4; } else { uiResoult = uiTemp_buf[1]+uiTemp_buf[2]+uiTemp_buf[3]+uiTemp_buf[4]+uiTemp_buf[5]; uiResoult = uiResoult/5; } return uiResoult; } #include "SPCE061A.h" # define uchar unsigned char # define uint unsigned int void LCD_init(void); extern void LCD_write_command(uchar command); extern void LCD_write_data(uchar dat); extern void LCD_disp_char(uchar x,uchar y,uchar dat); extern void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s); extern void LCD_set_xy( unsigned char x, unsigned char y ); extern void LCD_check_busy(void); extern void delay_n40us(uint n); extern void display_number(uint tvalue) ; unsigned char data_num[5]; //*******初始化函数*************** void LCD_init(void) { LCD_write_command(0x0001); delay_n40us(100); LCD_write_command(0x0002); LCD_write_command(0x0006); - 55 - LCD_write_command(0x000e); LCD_write_command(0x0014); LCD_write_command(0x0038); LCD_write_command(0x0001); delay_n40us(300);。 } //********写指令函数************ void LCD_write_command(uchar dat) {char shuma; *P_IOA_Attrib = 0xffff; *P_IOA_Dir = 0xffff; *P_IOA_Data = 0x0000; shuma=0x2000+dat; *P_IOA_Data=shuma; *P_IOA_Data=*P_IOA_Buffer&0x00ff; /*LCD_DB=dat; LCD_RS=0; LCD_RW=0; LCD_E=1; LCD_E=0; delay_n40us(100);/ } //********写数据函数************* void LCD_write_data(uchar dat) {char shuma; *P_IOA_Attrib = 0xffff; *P_IOA_Dir = 0xffff; *P_IOA_Data = 0x0000; shuma=0x2800+dat; *P_IOA_Data=shuma; *P_IOA_Data=*P_IOA_Buffer&0x08ff; /*LCD_DB=dat; LCD_RS=1; LCD_RW=0; LCD_E=1; LCD_E=0; delay_n40us(100); } //*******选择位置********* void LCD_set_xy( unsigned char x, unsigned char y ) { unsigned char address; if (y == 1) address = 0x80 + x; - 56 - else address =0xC0+ x; LCD_write_command(address); } //*******显示一个字符函数********* void LCD_disp_char(uchar x,uchar y,uchar dat) { LCD_set_xy( x, y ); LCD_write_data(dat); } /***************显示字符串函数***************/ void LCD_dsp_string(unsigned char X,unsigned char Y,unsigned char *s) { LCD_set_xy( X, Y ); while (*s) { LCD_write_data(*s); s ++; } } //********延时函数*************** void delay_n40us(uint n) { uint i; uchar j; for(i=n;i>0;i--) for(j=0;j<2;j++); } //********显示数字*************** void display_number(uint tvalue) { data_num[0]=tvalue/100+0x30; data_num[1]=tvalue%100/10+0x30; data_num[2]=tvalue%10+0x30; //data_num[3]=tvalue%10+0x30; LCD_disp_char(10,2,data_num[0]); LCD_disp_char(12,2, data_num[1]); LCD_disp_char(13,2,data_num[2]); delay_n40us(4000); } - 57 - 附录? 元器件清单 型号 器件 数量 序号 CD4052 1 1个 CD4049 2 2个 集成芯片 NE5532 3 2个 LM311 4 2个 SPCE061A 5 单片机精简系统 1个 ------ 6 发光二极管 3个 LCM1062A 7 LCD 1个 300 8 4个 224 9 电容 6个 104 10 4个 22uF 11 电解电容 2个 ,1M 12 6个 ,10K 13 16个 ,5.1K 14 2个 电阻 ,11K 15 2个 ,20K 16 4个 ----------- 17 超声波发射头 3个 18 超声波接收头 ----------- 3个 - 58 -
本文档为【超声波倒车防撞雷达 毕业设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_554469
暂无简介~
格式:doc
大小:536KB
软件:Word
页数:0
分类:生活休闲
上传时间:2018-08-23
浏览量:25