首页 毕业设计(论文)-基于单片机的超声波倒车雷达系统的设计

毕业设计(论文)-基于单片机的超声波倒车雷达系统的设计

举报
开通vip

毕业设计(论文)-基于单片机的超声波倒车雷达系统的设计毕业设计(论文)-基于单片机的超声波倒车雷达系统的设计 超声波倒车雷达系统的设计 工 学 部 工学一部 专 业 自动化 班 级 学 号 姓 名 指导教师 负责教师 沈阳航空工业学院北方科技学院 2009年7月 沈阳航空工业学院北方科技学院毕业设计,论文, 摘 要 倒车雷达是针对日益拥挤的道路交通状况、以及在停车场、车库、街道等比较狭窄区域,避免车与车,车与人以及车与墙壁等障碍物发生碰撞,摩擦而出现的一种着眼于倒车防护的汽车防撞系统。随着越来越多的高科技产品逐渐融入了日常生活中,倒车雷达系统发生了...

毕业设计(论文)-基于单片机的超声波倒车雷达系统的设计
毕业设计(论文)-基于单片机的超声波倒车雷达系统的设计 超声波倒车雷达系统的设计 工 学 部 工学一部 专 业 自动化 班 级 学 号 姓 名 指导教师 负责教师 沈阳航空工业学院北方科技学院 2009年7月 沈阳航空工业学院北方科技学院毕业设计,论文, 摘 要 倒车雷达是针对日益拥挤的道路交通状况、以及在停车场、车库、街道等比较狭窄区域,避免车与车,车与人以及车与墙壁等障碍物发生碰撞,摩擦而出现的一种着眼于倒车防护的汽车防撞系统。随着越来越多的高科技产品逐渐融入了日常生活中,倒车雷达系统发生了巨大的变化。仿生学、声学等前沿学科的技术的日趋成熟与实用化,赋予了倒车雷达系统新的的研究方向与意义。本文描述了一个由三个超声波测距模块构成的,提供语音报警功能的超声波倒车雷达系统。该系统采用凌阳16位单片机SPCE061A为核心,分别控制三个超声波模块,每一个超声波测距模块都被设定面向不同方向,以探测不同方向的障碍物。本系统采用单片机控制时间计数和超声波的发射和接收,利用超声波回波的间隔时间,得出实测距离。结果 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 明该系统具有结构简单、工作可靠、精度高等特点。 关键词:SPCE061A单片机;超声波测距;语音提示;LCD显示 I 沈阳航空工业学院北方科技学院毕业设计,论文, Abstract The back-draft radar is aims at day by day the crowded road traffic condition, as well as in the parking lot, the garage, the street and so on the quite narrow region, avoids automobile and automobile, obstacle and so on Automobile and person as well as vehicle and wall has the collision, one kind which the friction appears focuses to the back-draft protection automobile collision avoidance system.As well as the high-tech products gradually integrated into the daily life, the Parking Distance Control system has undergone tremendous changes. The Parking Distance Control system has been given the new direction of the research and significance by the developed of the Bionics, Acoustic, etc. This article describes a Parking Distance Control system which contains three ultrasonic ranging modules and the results can be pronounced in real-time. The three ultrasonic ranging modules are set to three different directions to detect the roadblock .This three modules are control by the system which is based on sunplus SPCE061A microprocessor. The time counting and both the transmitting and receiving of the ultrasonic wave are controlled by the microprocessor. The measured distance can be calculated and displayed by the echo time by the code. The features of the simple hardware, stable operation and high precision are incarnated in the proposed system. Keywords: SPCE061A microprocessor; ultrasonic ranging; voice prompts; LCD display II 沈阳航空工业学院北方科技学院毕业设计,论文, 目 录 1 绪 论 ...........................................................................................................................1 1.1 课题背景 .................................................................................................................1 1.1.1 倒车雷达的发展历史 .......................................................................................1 1.1.2 倒车雷达的发展方向与展望 ...........................................................................3 1.2 课题任务及要求 .....................................................................................................3 1.3 课题的主要内容及目的 .........................................................................................4 2 超声波倒车雷达系统的总体 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 论证 ........................................................................5 2.1 超声波测距PWM信号方案论证 ..........................................................................5 2.1.1 超声波测距PWM信号硬件实施方案 ............................................................5 2.1.2 超声波测距PWM信号软件实施方案 ............................................................6 2.1.3 超声波测距PWM信号实施方案比较 ............................................................6 2.2 超声波倒车雷达系统硬件方案论证 ......................................................................7 2.3 超声波倒车雷达系统软件方案论证 ......................................................................9 3 超声波倒车雷达系统的硬件设计 .............................................................................. 10 3.1 SPCE061A精简开发板电路原理 ......................................................................... 10 3.1.1 SPCE061A简介 .............................................................................................. 10 3.1.3 电源模块 ........................................................................................................ 10 3.1.4 放音模块 ........................................................................................................ 11 3.2 超声波测距模块电路的设计 ................................................................................ 11 3.2.1 超声波谐振频率调理电路的设计.................................................................. 11 3.2.2 超声波回波信号处理电路的设计.................................................................. 12 3.2.3 超声波测距模式选择电路的设计.................................................................. 13 3.3 转接板电路的设计 ............................................................................................... 14 3.4 显示电路的设计 ................................................................................................... 15 3.4.1 二极管闪烁报警电路的设计 ......................................................................... 15 3.4.2 LCD显示报警电路的设计 ............................................................................. 15 3.5 各模块接口分配 ................................................................................................... 16 III 沈阳航空工业学院北方科技学院毕业设计,论文, 4 超声波倒车雷达系统的软件设计 .............................................................................. 17 4.1 超声波测距原理 ................................................................................................... 17 4.2 μ'nSP IDE的项目文件管理的组织结构 ............................................................... 17 4.3 软件架构 ............................................................................................................... 18 4.4 各模块程序的设计 ............................................................................................... 19 4.4.1 主程序的设计................................................................................................. 19 4.4.2 超声波测距程序的设计 ................................................................................. 20 4.4.3 语音播放程序的设计 ..................................................................................... 22 4.4.4 二极管闪烁程序的设计 ................................................................................. 23 4.4.5 LCD初始化及驱动程序的设计 ..................................................................... 24 5 超声波倒车雷达系统的整体调试 .............................................................................. 25 5.1 故障调试及解决方式 ........................................................................................... 25 5.2 联调结果 ............................................................................................................... 27 结 论 ............................................................................................................................. 29 社会经济效益分析 ......................................................................................................... 30 致 谢 ............................................................................................................................. 31 参考文献 ......................................................................................................................... 32 附录? 程序清单 ........................................................................................................... 33 附录? 元器件清单 ....................................................................................................... 45 IV 沈阳航空工业学院北方科技学院毕业设计,论文, 1 绪 论 超声波雷达又称泊车辅助系统,是一种利用超声波原理,由装置于车尾保险杠上的探头发送超声波撞击障碍物后,反射此声波探头,从而计算出车体与障碍物之间的距离。一般由超声波传感器、控制器、显示器等部分组成。它能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员泊车、倒车和启动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了视野死角和视线模糊的缺陷。现在市场上的倒车雷达大多采用超声波测距原理,驾驶者在倒车时,启动倒车雷达,在控制器的控制下,由装置于车尾保险杠上的探头发送超声波,遇到障碍物。产生回波信号,传感器接收到回波信号后经控制器进行数据处理,判断出障碍物的位置,由显示器显示距离并发出警示信号,得到及时的警示。给汽车安装超声波雷达大大提高了行车的安全性。从而使驾驶者倒车时做到心中有数,使倒车变得更轻松。 1.1 课题背景 随着生活质量的提高,工作的需要,科技的发展,人们将越来越多的在生活中和工作中将汽车作为其日常的生活工具。当汽车进入百姓家庭,倒车雷达自然而然的走进了人们的视野中,保障行车安全的各个细节,越来越受到车主的重视;虽然每辆车都有后视镜,但不可避免地都存在一个后视盲区。同样随着经济技术的不断进步,倒车雷达无论是在外型还是在功能上都发生了巨大的变化。从记忆中的“倒车请注意”到现在可以在一块LCD屏幕上显示障碍物的各种信息,每一次的变革都让人耳目一新。 1.1.1 倒车雷达的发展历史 在几年的时间里,随着技术发展和用户需求的变化,倒车雷达经过了大致六代的技术改良和发展。不管从结构外观上,还是从性能价格上,这六代产品都各有特点,使用较多的是数码显示、荧屏显示和魔幻镜倒车雷达这三种。 第一代倒车喇叭提醒 1 沈阳航空工业学院北方科技学院毕业设计,论文, “倒车请注意”想必不少人还记得这种声音,这就是倒车雷达的第一代产品,现在只有小部分商用车还在使用。只要司机挂上倒档,它就会响起,提醒周围的人注意。从某种意义上说,它对司机并没有直接的帮助,不是真正的倒车雷达。价格便宜,基本属于淘汰产品。 第二代蜂鸣器提示 这是倒车雷达系统的真正开始。倒车时,如果车后1.8米~1.5米处有障碍物,蜂鸣器就会开始工作。蜂鸣声越急,表示车辆离障碍物越近。这种倒车雷达没有语音提示,也没有距离显示,虽然司机知道有障碍物,但不能确定障碍物离车有多远,对驾驶员帮助不大。 第三代数码波段显示 比第二代先进很多,可以显示车后障碍物离车体的距离。如果是物体,在1.8米开始显示;如果是人,在0.9米左右的距离开始显示。这一代产品有两种显示方式,数码显示产品显示距离数字,而波段显示产品由三种颜色来区别:绿色代表安全距离,表示障碍物离车体距离有0.8米以上;黄色代表警告距离,表示离障碍物的距离只有0.3~0.8米;红色代表危险距离,表示离障碍物只有不到0.3~0.1米的距离。在安全区,你可正常倒泊,在警告区,你要减速倒泊,在危险区,你则要停止倒泊。第三代产品把数码和波段组合在一起,但比较实用,但安装在车内不太美观。 第四代液晶荧屏动态显示 这一代产品有一个质的飞跃,特别是荧屏显示开始出现动态显示系统。不用挂倒档,只要发动汽车,显示器上就会出现汽车图案以及车辆周围障碍物的距离。LCD动态显示,色彩清晰漂亮,外表美观,可以直接粘贴在仪表盘上,安装很方便。不过液晶显示器外观虽精巧,但灵敏度较高,抗干扰能力不强,所以误报也较多。 第五代魔幻镜倒车雷达 结合了前几代产品的优点,采用了最新仿生超声雷达技术,配以高速电脑控制,可全天候准确地测知2米以内的障碍物,并以不同等级的声音提示和直观的显示提醒驾驶员。魔幻镜倒车雷达把后视镜、倒车雷达、免提电话、温度显示和车内空气 2 沈阳航空工业学院北方科技学院毕业设计,论文, 污染显示等多项功能整合在一起,并设计了语音功能。因为其外形就是一块倒车镜,所以可以不占用车内空间,直接安装在车内后视镜的位置。而且颜色款式多样,可以按照个人需求和车内装饰选配。 第六代:整合影音系统 它在第五代产品的基础上新增了很多功能,属于第六代产品,是专门为高档轿车生产的。从外观上来看,这套系统比第五代产品更为精致典雅;从功能上来看,它除了具备第五代产品的所有功能之外,还整合了高档轿车具备的影音系统,可以在显示器上观看DVD影像,是目前市面上最先进的倒车雷达系统。 1.1.2 倒车雷达的发展方向与展望 经过多年的研究与生产实践,倒车雷达逐渐摆脱了以往功能单一,报警不准确的问题。目前倒车雷达主要有两个方向发展。一、与其他车内娱乐设备的集成;二、提高报警的准确性。越来越多的倒车雷达已经不再仅限于提供倒车报警的单一功能,集成多种报警娱乐等功能的倒车雷达已经成为一种现实。军用技术的民用化,使的倒车雷达预警范围,报警精度都有极大的提高。仿生学、声学、电磁学等科学技术的进步,都将会倒车雷达推向一个新的阶段。随着卫星定位技术的成熟,以车载卫星定位系统(GPS)作为倒车雷达,也离实用化越来越近。 1.2 课题任务及要求 本次设计的超声波倒车雷达系统是以SPCE061A单片机为控制器,搭配3个超声波测距模块及LCD、二极管、语音3部分组成的报警模块所构成。其测量结果应符合以下 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 : 1) 语音提示可指明哪一个方向(或区域)在范围内(0.35m~1.5m)有障碍物在探 测范围内。 2) 利用三个LED发光二极管表示三个传感器探测范围内是否有障碍物,当在 探测范围内有障碍物时,发光二极管以一定频率闪烁,闪烁的频率以距离 定,距离越近频率越。 3) 利用LCD显示距离等信息。 3 沈阳航空工业学院北方科技学院毕业设计,论文, 1.3 课题的主要内容及目的 本文对超声波倒车雷达系统的设计进行了详细的介绍,共分五章。第1章简要介绍了整个课题的研究背景、目的、意义及整个任务的要求安排;第2章是针对此次课题的任务进行方案论证,尤其重要的对SPCE061A单片机其16位的处理能力及内嵌的语音对本设计的影响进行详细的阐述;第3章具体介绍了超声波倒车雷达系统的硬件设计,包括超声波测距模块电路,转接板电路,显示电路的设计;第4章阐述了超声波倒车雷达的软件设计,包括超声波测距子程序,数据处理子程序,显示子程序,语音子程序的设计。第5章是针对硬件调试、软件调试和整机连调的结果进行了具体的分析和说明。 目的是研究一个超声波倒车雷达,要求在倒车时,启动倒车雷达,在控制器的控制下,由传感器发送超声波,遇到障碍物,产生回波信号,传感器接收到回波信号后经控制器进行数据处理,判断出障碍物的位置,由显示器显示距离并发出警示信号,来提示司机车后有障碍物,得以使泊车和倒车更加方便个安全。 本设计的核心是测距。测距的方法有很多种,我采用的是脉冲测量法,其实质就是测量发射超声波的时刻与接收到反射回波信号的时刻之间的时差,利用超声波在空气中传播速度已知的条件,计算出被测目标与传感器之间的距离。 4 沈阳航空工业学院北方科技学院毕业设计,论文, 2 超声波倒车雷达系统的总体方案论证 超声波倒车雷达系统的整个设计中最重要的部分是超声波测距质量的处理,虽然超声波测距很早就开始研究应用,但如何实现测量的快速性和准确性至今仍是生产和科研的课题。随着微电子技术的发展及普及,更多高性能的单片机应用使得超声波测距的快速性和准确性都有了极大的提高。超声波测距的关键在于发射信号的脉冲时长,接收信号的数据处理,及消除其本身的余波干扰。本设计使用凌阳16位单片机SPCE061A(后文简称为SPCE061A)为超声波测距的控制器,其较高的数据处理能力和丰富的指令系统,从硬件和软件两部分来改善系统性能,使研制成的超声波倒车雷达系统具有很好的快速性和准确性,且具有较高的抗干扰能力,很符合要求。 2.1 超声波测距PWM信号方案论证 2.1.1 超声波测距PWM信号硬件实施方案 为了符合探测障碍物所需要的测量精度的设计要求,超声波发射探头需要一个稳定的PWM信号,驱动发射脉冲信号。此PWM信号可由集成芯片NE555搭配合适的外围电路构成。其电路如下图2.1所示: 图2.1 NE555构成的PWM信号提供电路 5 沈阳航空工业学院北方科技学院毕业设计,论文, 此硬件实施方案具有如下特点: (1) NE555外围电路容易搭建,驱动电压与SPCE061A一致,无需另接电源; 硬件电路输出稳定,不易受干扰。 (2) 上图显示的是由NE555构成的40KHz PWM驱动信号电路,该电路最大特点是与SPCE061A具有较好的兼容性及较高抗干扰性,且软件编写较为便利,符合整个设计对测量精度的要求。 2.1.2 超声波测距PWM信号软件实施方案 除了直接用硬件来提供超声波测距所需要的PWM信号以外,也可以用SPCE061A提供的PWM脉宽调制输出功能,用软件进行处理。用软件进行处理的优势在于,发射超声波所需要的PWM信号和其反射信号的计算都是由同一个单片机完成,可以利用程序编写的灵活性,极大的削弱发射与接收之间的余波干扰,使测距更加精确。它与.硬件实现电路相比有以下几个优点: 1) PWM信号是用程序实现的,减少了整个设计的成本; 2) SPCE061A具有16位的处理能力,其输出的PWM信号无论是在频率的精度, 或是持续输出的稳定性上,都具有极佳的表现; 由SPCE061A同时控制PWM信号输出和反射信号的计算,具有更好的灵活性,容易实现高精度的测量。 2.1.3 超声波测距PWM信号实施方案比较 综合比较软件和硬件方案的优劣,选择软件提供超声波测距所需要的PWM信号,主要原因有如下几点: 1) 超声波测距的精度与给予的PWM信号质量有很大的关联,使用软件提供PWM 信号除了能提供更高品质的信号外,又没有增加设计的成本,很适合毕业 设计的要求。 2) 使用软件提供PWM信号虽然会增加代码编写的工作量,但从整个系统的角 度来看,超声波信号的发射与接收都使用软件实现,会更易于综合调试, 6 沈阳航空工业学院北方科技学院毕业设计,论文, 整个测距过程也更易于控制 2.2 超声波倒车雷达系统硬件方案论证 倒车雷达实现的功能就是探测可能存在的障碍物,通过数据处理将障碍物的位置信息显示出来。要实现这一功能,就必须把障碍物相对测量系统的位置量转换成单片机所能识别的电量。当超声波测距模块探测到障碍物的存在时,会接收到若干脉冲数目的反射信号,信号脉冲个数即反映了障碍物与测试系统的位置关系。返回的信号经过SPCE061A进行相应的数据运算,便可将障碍物的位置信息通过语音、二极管、LCD的方式显示出来,其硬件总体方案设计框图如图2.2所示: 传感器 语音报警 转 SPCE061A 接 传感器 LCD显示 板 传感器 LED报警 图2.2 超声波倒车雷达系统的结构框图 1. 超声波测距模块 传感器就是超声波测距模块,它是整个倒车雷达系统的核心。本设计方案拟使用3个相同的超声波测距模块依次排布,组成一个传感器阵,来检测车后的障碍物位于车的左后,右后还是正后边。 图2.3 超声波测距原理 超声波距离的原理是利用超声波在空气中的传播速度为已知,测量声波在发射 7 沈阳航空工业学院北方科技学院毕业设计,论文, 后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。单片机SPCE061A的定时器B产生40KHz的的信号为超声波测距模组的提供超声波信号,当信号发出遇到障碍物后,信号将按原路返回,这时在车尾的传感器将检测出返回来的超声波信号。用发射超声波的时刻与接收到反射回波信号的时刻之间的时差与超声波在空气中的传播速度相乘就可得出障碍物跟车尾的距离。 2. 转接板 由于使用3个超声波测距模块,而SPCE061A的I/O口数目不满足3个测距模块同时直接相接,故使用集成芯片CD4052实现软件对不同传感器的选通与屏蔽。这样只需要两个端口就可完成测距,一个控制超声波的发射,一个是检测超声波信号的接收信号。 3. SPCE061A 凌阳16位单片机SPCE061A是本倒车雷达系统的控制器,也是数据处理的中心。它直接控制超声波测距模块进行测距、处理模块返回值并控制实现对外的报警功能 4. 语音报警 SPCE061A作为16位单片机,其具有较强的运算能力,可以通过其内置的DAC及自动增益控制(AGC)功能,实现对外的语音报警。该部分电路已集成于SPCE061A精简开发板上。它所具备的单芯片语音功能采用语音提示的方式来指明在探测范围内哪一个方向有障碍物. 只要距离在0.35~1.5m之内,就会有语音提示。超声波测距模组分别在左后方,右后方和正后方,当超声波测距模组的探头探测出有障碍物时,就会有以下语音提示: 表2.1 语音报警表 情况一 情况二 情况三 正后方和左后方与右后方同 条件 时有障碍物 左后方有障碍物 右后方有障碍物 语音提示 后方 左后方 右后方 8 沈阳航空工业学院北方科技学院毕业设计,论文, 5. LCD显示电路 使用LCM1602A液晶显示模块实现LCD显示。由于LCM1062A仅能显示2行共32个字符,故实际显示为3个超声波测距模块中,测得距离最近的那个值。 6. 发光二极管(LED)闪烁报警电路 三个发光二极管分别对应三个超声波测距模块。当对应的超声波测距模块探测到障碍物存在时,障碍物距离测距模块越近,发光二极管闪烁的频率就会越高。 2.3 超声波倒车雷达系统软件方案论证 软件设计是超声波倒车雷达系统设计中最关键的部分。由于本系统使用凌阳SPCE061A单片机,故整个软件架构需要遵循凌阳 μ'nSP IDE 2.0.0编译环境和对应的单片机指令。软件设计分为超声波测距程序、语音播报程序、中断程序、系统程序、LCD驱动程序、主程序六部分。各个部分函数都可相互调用又相对独立可调,保证调试的便利与程序的可读性。整个超声波倒车雷达系统软件 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图如图2.3所示: 开始 初始化 超声波测距子程序 数据处理子程序 显示及报警子程序 结束 图2.4 软件原理流程框图 9 沈阳航空工业学院北方科技学院毕业设计,论文, 3 超声波倒车雷达系统的硬件设计 硬件设计是本设计的的一个重要部分。本章将详细叙述超声波倒车雷达系统各部分硬件设计内容、元器件选择及所设计的硬件电路实现的各项功能。 3.1 SPCE061A精简开发板电路原理 3.1.1 SPCE061A简介 随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理、数据处理以及数字信号处理(DSP,Digital Signal Processing)等领域。凌阳的16位单片机就是为适应这种发展而设计的。它的CPU内核采用凌阳最新推出的,’nSP?(Microcontroller and Signal Processor)16位微处理器芯片(以下简称,’nSP?)。围绕,’nSP?所形成的16位,’nSP?系列单片机(以下简称,’nSP?家族)采用的是模块式集成结构,它以,’nSP?内核为中心集成不同规模的ROM、RAM和功能丰富的各种外设接口部件。 特点: 1) 体积小、集成度高、可靠性好且易于扩展 2) 具有较强的中断处理能力 3) 高性能价格比 4) 功能强、效率高的指令系统 5) 低功耗、低电压 3.1.3 电源模块 SPCE061A的内核供电电压为3.3V,而I/O端口可接3.3V也可接5V,考虑到超声波测距模块需要供电电压在4.5V以上时才能正常工作,故使用精简开发板上提供的5V电源。电源模块的电路原理图见图3.2所示: 10 沈阳航空工业学院北方科技学院毕业设计,论文, 图3.1 电源模块的电路原理图 3.1.4 放音模块 由于本倒车雷达需要实现语音提示障碍物的方向,故放音模块便不可缺少。在SPCE061A精简开发板上便集成了以下放音模块。 图3.2 放音模块的电路原理图 本设计的放音是利用SPCE061A内部的DAC,图中的SPY0030是凌阳公司的产品。与LM386相比,SPY0030有明显的优势。如LM386的工作电压在4V以上,输出功率低于100mW,而SPY0030的工作电压仅需2.4V,且输出功率能达到700mW左右,较低的工作电压,又能有很好的输出效果,这使得本系统即使脱离固定电源,仅使用电池供电,也能完全正常工作。 3.2 超声波测距模块电路的设计 3.2.1 超声波谐振频率调理电路的设计 超声波谐振频率调理电路原理图如图3.4所示: 11 沈阳航空工业学院北方科技学院毕业设计,论文, 图3.3 超声波谐振频率调理电路原理图 由SPCE061A提供本电路工作所需要的40KHz方波,该信号经CD4049进行频率调理,以使超声波传感器发生谐振。从电路图可以看出CD4049是由6个非门构成的六反相缓冲器/变换器,其引脚图如图3.5所示。由于超声波的传播距离与它的振幅成正比,使用CD4049能使由SPCE061A发出的振荡信号的幅度增大一倍使超声波传播距离明显的增长,测距的范围得到扩大。 图3.4 CD4049引脚图 为了防止绝缘电阻下降而导致超声波转换性能的下降,在超声波传感器与信号调理电路之间需要串如一个耦合电容。通过它可以将直流电压转换为等幅的交变电压,保证了超声波发射电路能够长时间稳定可靠的工作。 3.2.2 超声波回波信号处理电路的设计 超声波回波信号处理电路原理图如图3.6所示: 12 沈阳航空工业学院北方科技学院毕业设计,论文, 图3.5 超声波回波信号处理电路原理图 由于超声波在空气中传播时,其能量的衰减程度与传播距离成正比,其接收到的回波信号的幅值的单位通常在毫伏级甚至更小,所以超声波回波信号处理电路的前级就需要提供很高的放大信号,使单片机能够正常工作。本体统采用NE5532搭配外围电路构成10000倍放大器来对接收到的信号进行放大处理。经过处理的信号输入至LM311的正端与3脚提供的基准电压相比较然后输出,若输出为低电平,则说明无回波信号或信号太小,若输出为高电平,则会被SPCE061A所接收然后做数据处理。 3.2.3 超声波测距模式选择电路的设计 超声波测距模式选择电路的作用是为回波信号处理电路中LM331提供电压比较的基准电压,其电路原理图如图3.7所示。 由电路图可知,该电路可为LM331提供3组不同的电压,分别对应短距离测距,中距离测距和可调测距三种不同的测距模式。虽然本系统只需工作在短距离测试模式即可满足设计的性能指标,但为了软件标定的便利,及其他场合的应用,该模块依旧保留其他两种模式测距的选择跳线。 图3.6 超声波测距模式选择电路原理图 13 沈阳航空工业学院北方科技学院毕业设计,论文, 3.3 转接板电路的设计 文前已说明转接板是在SPCE061A I/O数目不足,传感器数量较多的情况下,针对超声波测距模块的输入输出信号都是数字信号这一特点,没有选择扩展SPCE061A的口线,而是使用CD4052模拟开关来控制三个传感器的选通与否。该部分电路图见图3.8所示。 图3.7 转接板电路原理图 CD4052相当于一个双刀四掷开关,开关接通哪一通道,由输入的2位地址码A0、A1来决定。 “/E”是禁止端,当“/E”=1时,各通道均不接通。此外,CD4052还设有另外一个电源端VEE,以作为电平位移时使用,从而使得通常在单组电源供电条件下工作的CMOS电路所提供的数字信号能直接控制这种多路开关,并使这种多路开关可传输峰,峰值达15V的交流信号。例如,若模拟开关的供电电源VDD=,5V,VSS=0V,当VEE=,5V时,只要对此模拟开关施加0,5V的数字控制信号,就可控制幅度范围为,5V,,5V的模拟信号。CD4052芯片引脚图如图3.9所示。 14 沈阳航空工业学院北方科技学院毕业设计,论文, 图3.8 CD4052引脚图 3.4 显示电路的设计 3.4.1 二极管闪烁报警电路的设计 二极管闪烁报警电路结构比较简单,二极管直接与SPCE061A的I/O口相连,串联一个限流电阻即可完成设计要求,该部分电路见图3.10。 图3.9 二极管闪烁报警电路原理图 3.4.2 LCD显示报警电路的设计 由于使用的LCM1602A液晶模块已经模块化,外围电路较为简单,不再给出。LCM1602A各引脚定义见表3.1所示。 15 沈阳航空工业学院北方科技学院毕业设计,论文, 表3.1 LCM1602A引脚定义表 3.5 各模块接口分配 本系统是以SPCE061A为控制器,故以其为中心进行接口分配。SPCE061A共有两个I/O口,共32位。其中IOB8,IOB9两口具有PWM脉宽调制输出的特殊功能,IOB2,IOB3具有外部中断源输入的特殊功能,故设计B口的IOB2,IOB9作为超声波测距模块外部中断输入和PWM信号输出接口。同时IOB11,IOB12,IOB13分别与LCD显示模块的三根控制线R/S,R/W,E连接。IOB0,IOB1两口与转接板CD4052的A0,A1相连,用于传感器测量通道的选通。A口的低8位作为LCD显示模块的数据口,IOA12,IOA13,IOA14三口与二极管闪烁报警模块的接口相连。 16 沈阳航空工业学院北方科技学院毕业设计,论文, 4 超声波倒车雷达系统的软件设计 4.1 超声波测距原理 本设计使用超声波脉冲法测距。声波在其传播介质中被定义为纵波。当声波受到尺寸大于其波长的目标物体阻挡时就会发生反射。超声波发射器发射信号后,计数器开始计数,当获得反射信号时,停止计数,并查看计数值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。 4.2 μ'nSP IDE的项目文件管理的组织结构 本设计使用的凌阳16位SPCE061A单片机,故软件的设计及调试都需要在SUNPLUS μ'nSP IDE软件环境里实现。了解μ'nSP IDE的项目文件管理的组织结构,无论是编写还是阅读代码,都会更为便利。 如图4.1所示,IDE项目文件可分为源文件、头文件和外部支持文件。一般代 17 沈阳航空工业学院北方科技学院毕业设计,论文, 码编写工作是在汇编源文件或C语言源文件进行的。当需要编写某写硬件驱动时,可能会需要编写C语言头文件,而其他文件一般不需要作变动。 *.asm IDE项目文件管理组织结构 *.c 源文件 *.rc r Resource.asm *.inc in 头文件 *.h h Resource.inc *.txt *.bin 外部支持文件 bi makefile 图4.1 μ'nSP IDE的项目文件管理的组织结构图 4.3 软件架构 本系统的软件部分拟包含以下几个模块来实现设计所需要的功能。 主程序:主程序主要负责控制整个系统的 工作流程 财务工作流程表财务工作流程怎么写财务工作流程图财务工作流程及制度公司财务工作流程 ,完成各函数的正常调用。功能上,该部分仅有超声波传感器通道选通功能,这样主程序较为简洁,便于阅读与调试。 系统程序:主要包括system.c文件。其完成的功能有:系统端口初始化、测量结果处理、二极管闪烁刷新及LCD输出显示。 超声波测距程序:该部分程序主要包括ultrsonic_App.c和IRQ.c的部分文件。该部分主要完成超声波测距的控制,输出结果处理等功能。 18 沈阳航空工业学院北方科技学院毕业设计,论文, 中断程序:主要包括IRQ.c和isr.asm文件,前者包括超声波测距所需要的外部中断服务代码,显示刷新服务代码等。后者包括语音播放程序中断服务代码。 语音播放程序:主要包括Speech.c文件。该部分主要用于实现对外的语音播放功能。 LCD初始化及驱动程序:主要包括1062LCD.asm和LCD1602_User.h文件。该部分实现LCD初始化和LCD读写命令等功能。 4.4 各模块程序的设计 4.4.1 主程序的设计 开始 系统初始化 通道选择(ch) 完成一次测距 测距数据处理 N ch>2? Y 通道清零(ch=0) 延时20ms 图4.2 主程序流程图 如图4.2所示为主程序流程图。由于系统的各功能基本由各模块完成,所以主 19 沈阳航空工业学院北方科技学院毕业设计,论文, 程序的流程并不复杂。图中,延时部分由系统提供的IRQ4的1KHz中断来提供,通道选择即由IOB1,IOB2两个I/O端口的输出状态选通CD4052的通道,以决定当前将进行哪个模块的测距工作,三个超声波测距模块将不断地交替探测障碍物的存在与否。 4.4.2 超声波测距程序的设计 超声波测距程序的设计,是整个系统最为重要的部分。考虑到三个超声波测距模块的选通工作已由主程序完成,故这部分主要叙述一个超声波测距模块测距程序的设计。 为了保证超声波测距结果的准确性,每一个由回波信号获得的测量值将经过两次参数不同的测距得到,而对同一个障碍物将六次进行测距,获得的六个测量值中非零值的平均数才会最终返回到单片机供输出部分调用。该部分的流程图见图4.3所示。 当调用测距函数进行测距时,IOB9口将输出由TimerB产生的40KHz的PWM信号,对于短距离测距,该信号将持续0.5毫秒左右,发出20个以上40KHz的脉冲信号。此时关闭系统中断,将TimerB设置为计数模式,用于计量超声波信号从发射到接收的间隔时间;将TimerA设置为计时模式,提供避开余波开扰的延时,该部分的延时时间将由测试距离和PWM信号发射信号的持续时间来决定,对与短距离测距,本系统的延时时间在0.3毫秒左右。经过延时,打开EXT1外部中断,TimerB开始对回波信号的脉冲数进行计数。当EXT1检测到回波信号的脉冲时,会在中断服务程序中读取TimerB的计数值。该计数值经过处理换算即可得到相对于障碍物距离。若EXT1没有接收到回波信号会重新设置参数,再进行一次较远距离的测试,其工作流程与短距离测距完全一致。若两次测试EXT1都没有接收到回波信号则表明系统工作范围内无障碍物。 20 沈阳航空工业学院北方科技学院毕业设计,论文, 开始 测距参数设定 TimerB产生PWM波 延时 设置TimerB用计时 延时 开EXT1外部中断 N 测距是否完成, Exit_flag=1? Y Y 是否接收到回波信测距结果处理 号,Exit_IRQ_flag=1? Exit_flag=0 N Y 测距是否超时, 进行一次远距离测距 Exit_flag=0 N 结束 图4.3 超声波测距程序流程图 21 沈阳航空工业学院北方科技学院毕业设计,论文, 4.4.3 语音播放程序的设计 语音播放程序采用凌阳A2000语音压缩算法来满足设计要求。A2000语音压缩算法具有高质量、高码率等特点,适用于播放高保真语音/音乐。本系统所需要播放的语音资料总容量不大,可直接保存来SPCE061A的内部FLASH上,无须外接存储芯片,使用A2000语音算法非常合适。由于语音部分已由凌阳公司提供相应的语音库函数,播放语音时直接调用对应的接口函数(API)即可实现该部分的功能。该部分的程序流程图见图4.4所示。 开始 N 是否超过3 秒 Y 开语音中断 中断初始化 语音播放初始化 Y 当前播放结 束, N 播放服务程序 停止播放 结束 图4.4 语音播放程序流程图 从流程图上可以看出,为了避免多次语音播放重复和播放过于频繁,在语音播 22 沈阳航空工业学院北方科技学院毕业设计,论文, 放之间添加了基于IRQ5的2Hz中断来进行延时。只有当距离上次语音播放的时间间隔超过3秒时,下一次的语音播放才会被系统允许。 4.4.4 二极管闪烁程序的设计 二极管闪烁报警模块的三个发光二极管是直接与SPCE061A的IOA12、IOA13、IOA14三个口相连的。为了实现设计所要求的当探测到障碍物时,二极管以一定频率闪烁,且距离越近闪烁频率越高的这一功能,该部分设置了用于保存对应超声波测距模块频率设置初值的三个变量及三个用于控制输出反转的计数器。当输入的频率初值不为零时,该计数器就会不断地计数,当计数器中的计数值溢出时,对输出的状态取反,重新送初值,如此周而复始即可满足该部分的设计要求。该部分的程序流程图见图4.5所示。 开始 Y 初值是否为 0, N 计数器开始计数 N 是否溢出, Y 输出状态取反 结束 图4.5 二极管闪烁程序流程图 23 沈阳航空工业学院北方科技学院毕业设计,论文, 4.4.5 LCD初始化及驱动程序的设计 LCM1602A液晶显示模块共有3根控制线,LCD初始化及驱动程序的设计便是在参考该部分时序图的基础上,对这3根控制线进行操作来完成的。LCD初始化流程图见图4.6所示,LCDM1602A的读写时序见图4.7所示。 开始 延时 显示模式选择 延时 显示开 延时 刷屏 延时>1.53ms 结束 图4.6 LCD初始化及驱动程序流程图 24 沈阳航空工业学院北方科技学院毕业设计,论文, 5 超声波倒车雷达系统的整体调试 5.1 故障调试及解决方式 一、SPCE061A接收不到超声波回波信号。 首先检查超声波模块上使用的各电容电阻值是否符合设计要求,若部分没有问题,则问题可能出之以下几点: 1(超声波发射头与接收头安装位置不合适。 安装位置不合适也存在两种不同的情况,如图5.1所示。即发射头与接收头没有安装在同一个平面,发射头与接收头之间的间距不合适。与一般的声波信号不同,超声波具有束射特性,其发出的声波具有较强的方向性,若发射头与接收头安装位置不合理,很容易发生无法接收到回波信号的问题。 错误 障碍物 错误 发射头 接收头 正确 障碍物 正确 发射头 接收头 图5.1 超声波探头安装示意图 2(反射面材质不合适 不同的材料对于超声波的吸收率是不同的,毛料及皮制品对超声波信号的吸收 25 沈阳航空工业学院北方科技学院毕业设计,论文, 最为明显,应该避免使用此类材料构成的反射面。 3(用于避免余波干扰的延时过长 如文前所述,超声波测距程序中,当发射头发出脉冲信号后,是要经过一个延迟时间后才开始接收反射信号的。即当程序在延时过程中,即便返回了反射信号,系统也不会接收。当其他部分工作正常的情况下,可适当的减小该延时时间,不可太小,不然容易引起较大的测量误差。 4(发射头发出的脉冲个数不够 这也是可能导致无法接收到回波信号的一个原因。这是在系统调试中发现的一个原因。一个能正常使用的超声波测距模块,当发出的脉冲个数少于10个左右,系统就认为没有接收到回波信号的返回。这是由于回波信号能量太弱,在与LM311进行电压比较时,输出依旧为低电平造成的。适当增加发出的脉冲个数能有效改善系统性能。 二、二极管闪烁报警模块在没有障碍物的情况下依旧以一定频率闪烁。 首先检查程序中,无障碍物时,寄存器赋的初值是否为零。若程序无问题,则很有可能是由于超声波传感器具有压电式电声传感器易受干扰的特点造成的。按设计电路良好接地,以及将电路板部分接地能够有效改善这种情况。 三、LCD无显示或显示全乱码。 由于本设计方案使用的LCM1602A并非凌阳公司的配套产品,需要自己编写相应的初始化及底层驱动程序。由于问题的征状为无显示,则说明LCD并没有成功的完成初始化工作,需要修改或重新编写LCD初始化工作,并检查对应的控制口线是否连接正确。显示全乱码则说明SPCD061A对LCM1602A的读写控制有问题,有必要修改或重新编写低层驱动程序。 四、语音播放时,LCD不能实现实时显示。 这种现象是正常的。造成一个现象的原因是由于语音播放是通过FIQ中断调用的,在SPCE061A中断系统中,FIQ具有最高的中断优先级,故SPCE061A只会进行语音播放,当语音播放完毕后才会开放中断,继续进行测距显示。 26 沈阳航空工业学院北方科技学院毕业设计,论文, 5.2 联调结果 经过以上调试检查,完成如图5.2所示的硬件设备。该电路在完成设计所要求的功能外更添加了LCD显示功能,使测距更直观、准确。图5.3为单个超声波模块的硬件设备图,图5.4为二极管闪烁报警硬件设备图,图5.5为LCD显示设备图。 图5.2 硬件设备图 图5.3 超声波模块的硬件设备图 27 沈阳航空工业学院北方科技学院毕业设计,论文, 图5.4 二极管闪烁报警硬件设备图 图5.5 LCD显示设备图 28 沈阳航空工业学院北方科技学院毕业设计,论文, 结 论 本文设计的超声波倒车雷达系统是在SPCE061A最小精简开发板上的一个应用。设计的各项功能都能够实现。且完成的各功能各具特点,语音报警系统具有很高的人性化,二极管闪烁报警能够对3个方面的障碍物距离有统一的控制,LCD能准确的显示距离最近的障碍物的确切距离,可以给驾驶者多角度的去把握障碍物的实际存在。通过以上论述可以发现,整个设计的实用性较高,是可以真正应用到实际生活中去的。但本设计限于时间和个人认识的不足,该系统还是有一定的缺陷,如语音播放时,LCD无法实现实时显示;对于在16位平台上的应用,测量精度也显的不够。希望可以在之后的设计中,将系统变的更为完善。 29 沈阳航空工业学院北方科技学院毕业设计,论文, 社会经济效益分析 本文所设计的超声波倒车雷达系统具有体积小、精度高、实时测量显示直观迅速、语音提示较人性化、运行操作简单、成本较低。由于采用的器件都是已经非常普遍的器件,并且价格也容易令人接受。使用的16位单片机SPCE061A功能强大,用户甚至可以根据自己的实际需要,加以功能的扩展。而搭建的超声波测距模块,较市场上动辄数百的价格,有很明显的优势,且该模块留有外部电源接口及测距模式选择接口,适用性与可扩展性很强。软件方面,主要的代码都是由C语言编写,程序的可读性很强,并且留有了部分扩展功能的接口函数,可以很容易的修改。故本倒车雷达系统除了作为倒车雷达的存在,稍加改进亦可用于构建超声波阵列完成边缘探测、机器人视觉系统等工作,具有很高的经济效益。 30 沈阳航空工业学院北方科技学院毕业设计,论文, 致 谢 整个毕业设计的过程,感觉上是比较漫长的。由于使用的SPCE061A 16位单片机以往不曾学过,无论是在硬件设计还是在软件编写上都困难重重。尤其是LCD部分,因为缺少相应的驱动,只能自己尝试在新的编译环境中,对不熟悉的硬件编写代码。而超声波参数的标定也因为相应仪器的测量精度的问题,很多东西都是反复测距,由实验结果推测出来的。不过最终还是完成了毕业设计。 本次我的毕业设计能顺利完成,很大部分都得归功于各位老师,是他们耐心的帮助与指导起了推波助澜的巨大功效,特别是指导教师张庆新老师,对于多次设计上的困境都给予了悉心的指导,对此我衷心的表示感谢。 31 沈阳航空工业学院北方科技学院毕业设计,论文, 参考文献 [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 32 沈阳航空工业学院北方科技学院毕业设计,论文, 附录? 程序清单 //======================================================== // 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; } } //======================================================== // 文件名称: 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}; //============================================================== 33 沈阳航空工业学院北方科技学院毕业设计,论文, // 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 { 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,'.'); 34 沈阳航空工业学院北方科技学院毕业设计,论文, 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) //============================================================== 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]) 35 沈阳航空工业学院北方科技学院毕业设计,论文, { 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) { 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 36 沈阳航空工业学院北方科技学院毕业设计,论文, 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] 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) 37 沈阳航空工业学院北方科技学院毕业设计,论文, *P_INT_Ctrl = *P_INT_Ctrl_New&0xfff7; *P_INT_Clear=0x0008; } //============================================================== // 文件名称: ultrasonic_App.c //============================================================== #include "SPCE061A.h" #define LONG_SEND_TIMER 1000 #define LONG_SEND_TIMER23000 #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; 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; *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); *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; 40 沈阳航空工业学院北方科技学院毕业设计,论文, 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]) 41 沈阳航空工业学院北方科技学院毕业设计,论文, { uiTemp_buf[i] = uiTemp_buf[i-1]; uiTemp_buf[i-1] = uiTemp; } else { uiTemp_buf[i] = uiTemp; break; } i--; } } 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); 42 沈阳航空工业学院北方科技学院毕业设计,论文, LCD_write_command(0x0006); 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; else address =0xC0+ x; LCD_write_command(address); } //*******显示一个字符函数********* void LCD_disp_char(uchar x,uchar y,uchar dat) { 43 沈阳航空工业学院北方科技学院毕业设计,论文, 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); } 44 沈阳航空工业学院北方科技学院毕业设计,论文, 附录? 元器件清单 序号 器件 型号 数量 1 CD4052 1个 CD4049 2 2个 集成芯片 3 NE5532 2个 4 LM311 2个 5 SPCE061A 单片机精简系统 1个 ------ 6 发光二极管 3个 7 LCD 1062A 1个 8 300 4个 9 224 电容 6个 104 10 4个 11 22uF 电解电容 2个 12 6个 1M , 13 16个 10K , 14 电阻 5.1K 2个 , 15 2个 11K , 16 4个 20K , 17 ----------- 超声波发射头 2个 ----------- 18 超声波接收头 2个 45
本文档为【毕业设计(论文)-基于单片机的超声波倒车雷达系统的设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_842972
暂无简介~
格式:doc
大小:315KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-09-25
浏览量:15