为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

超声波测距仪的设计

2017-10-15 50页 doc 395KB 37阅读

用户头像

is_597436

暂无简介

举报
超声波测距仪的设计超声波测距仪的设计 电子信息工程系毕业论文 课题:超声波测距仪的设计与实现 专 业 学生姓名 班 级 学 号 指导教师 完成日期 电子信息工程系毕业论文 摘 要 超声波具有指向性强,能量消耗慢,传播距离较远等优点,所以在利用传感 器技术和自动控制技术相结合的测距方案中,超声波测距是目前应用最普遍的一 种。它广泛应用于建筑施工,防盗,倒车,水位测量以及一些工业现场。 本设计采用以STC89C52单片机为核心的低功耗,高性能,微型化液晶显示 的超声波测距仪的硬件电路和软件设计方法。系统的设计主要包括两部分:即硬 件电...
超声波测距仪的设计
超声波测距仪的设计 电子信息工程系毕业论文 课题:超声波测距仪的设计与实现 专 业 学生姓名 班 级 学 号 指导教师 完成日期 电子信息工程系毕业论文 摘 要 超声波具有指向性强,能量消耗慢,传播距离较远等优点,所以在利用传感 器技术和自动控制技术相结合的测距中,超声波测距是目前应用最普遍的一 种。它广泛应用于建筑施工,防盗,倒车,水位测量以及一些工业现场。 本设计采用以STC89C52单片机为核心的低功耗,高性能,微型化液晶显示 的超声波测距仪的硬件电路和软件设计方法。系统的设计主要包括两部分:即硬 件电路和软件部分。硬件电路主要包括单片机电路、超声波的发射和接收电路、 显示电路等。发射探头的信号经放大发射出去,单片机开始计时,超声波遇到障 碍物返回,接收电路经过放大滤波等环节,然后被单片机接收,单片机停止计时 并计算距离。软件部分主要由住程序、发射子程序、接收子程序、显示子程序等 组成。它控制单片机进行数据发送与接收,正确的数据液晶显示。该设计合理、 工作稳定、易于实时控制,在精度方面达到工业实用要求。 Abstract Ultrasonic wave has strong directivity, the energy consumption is slow, communication distance etc., so in the use of sensor technology and automatic control technology combining the ranging scheme, the ultrasonic ranging is currently the most common one. It is widely used in building construction, anti-theft, reversing, level measurement and some industrial site. The design used in the STC89C52 MCU as the core of low power, high performance, miniaturized liquid crystal display ultrasonic rangefinder hardware circuit and software design method. System design mainly includes two parts : the hardware circuit and the software part. The hardware electric circuit mainly comprises a singlechip circuit, an ultrasonic emitting and receiving circuit, display circuit. Transmit probe signals are amplified to launch, the microcontroller start timing, ultrasonic obstacle return, receiving circuit through an amplifying and filtering etc, and then be single-chip receiver, microcontroller stops timing and distance calculation. The software part is mainly composed of a live program, subroutine, subroutine, showing emission receiving subprogram. The control of single-chip microcomputer for data transmission and reception, the correct data of liquid crystal display. The design is reasonable, stable, easy to control, the accuracy achieved practical requirements of industrial. - I - 电子信息工程系毕业论文 目 录 摘 要 ......................................................................................................................... I Abstract ...................................................................................................................... I 目 录 ..................................................................................................................... II 第一章 绪论 ............................................................................................................. 1 1.1 课题设计目的及意义 ............................................................................................................ 1 1.1.1 设计的目的 ............................................................................................................. 1 1.1.2 设计的意义 ............................................................................................................. 1 1.2 超声波测距仪的现状和发展 ................................................................................................ 1 第二章 总体方案设计 ............................................................................................. 3 2.1 方案一:采用单片机来控制的超声波测距仪 .................................................................... 3 2.2 方案二:采用CPLD来控制的超声波测距仪 ................................................................... 3 2.3 方案三:采用锁相环频率合成技术实现超声波测距 ........................................................ 3 2.4 系统各模块的方案选择 ........................................................................................................ 4 2.4.1 显示部分的选择 ..................................................................................................... 4 2.4.2 单片机的选择 ......................................................................................................... 4 2.5 超声波测距原理 .................................................................................................................... 4 第三章 超声波测距仪的硬件设计 .......................................................................... 5 3.1 系统整体电路设计 ................................................................................................................ 5 3.2 超声波发射电路的设计 ........................................................................................................ 6 3.3 超声波的接收电路的设计 .................................................................................................... 7 3.4 液晶显示电路设计 ................................................................................................................ 8 3.5单片机控制电路 ................................................................................................................... 13 3.5.1 STC89C52简介及引脚功能说明 ......................................................................... 13 3.5.2 复位电路 ............................................................................................................... 15 3.5.3 时钟电路 ............................................................................................................... 16 第四章 超声波测距仪的软件设计 ........................................................................ 17 4.1 超声波测距仪的算法设计 .................................................................................................. 17 4.2主程序流程图 ....................................................................................................................... 18 4.3 超声波发射子程序和超声波接收中断程序设计 .............................................................. 18 4.4 LCD显示模块 ..................................................................................................................... 20 - II - 电子信息工程系毕业论文 4.5 主要模块的C程序 ............................................................................................................. 20 第五章 系统调试 ................................................................................................... 22 5.1 硬件调试 .............................................................................................................................. 22 5.2 系统硬软件的联调 .............................................................................................................. 22 5.2.1 USB转串口驱动安装 ........................................................................................... 22 5.2.2 下载程序 ............................................................................................................... 23 5.3 误差分析 .............................................................................................................................. 25 5.3.1 温度引起的误差 ................................................................................................... 25 5.3.2 串扰问题引起的误差 ........................................................................................... 25 第六章 结论 ........................................................................................................... 26 6.1 设计的目的 .......................................................................................................................... 26 6.2 总结与心得 .......................................................................................................................... 26 致 谢 .................................................................................................................... 27 参考资料 ................................................................................................................ 28 附录 ........................................................................................................................ 29 附录? 系统电路原理图 ........................................................................................................... 29 附录? PCB原理图 .................................................................................................................. 30 附录? 程序............................................................................................................................... 30 附录? 实物图 ........................................................................................................................... 40 - III - 电子信息工程系毕业论文 第一章 绪论 1.1 课题设计目的及意义 1.1.1 设计的目的 随着科学技术的快速发展,超声波将在测距仪中的应用越来越广。但就目前的急速水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。展望未来,超声波测距仪作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,满足日益发展的社会需求,如声纳的发展趋势基本:研制具有更高定位精度的被动测距声纳,以满足水中武器实施全隐蔽攻击的需求;继续发展采用低频线谱检测的潜艇拖拽线列阵声纳,实现超远程的被动探测和识别;研制更适合与前还工作的潜艇声纳,特别是解决浅海水中目标识别问题;搭理降低潜艇自噪声,改善潜艇声纳的工作环境。毋庸置疑,无线的超声波测距仪将于自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。随着测距仪的技术进步,测距仪将从具有单纯判断功能发展到具有学习功能,最终发展到具有创造力。在新的世纪里,面貌一新的测距仪将发挥更大的作用。 1.1.2 设计的意义 由于超声测距是一种非接触检测技术,不受光线、被测对象颜色等的影响,较其它仪器更卫生,更耐潮湿、粉尘、高温、腐蚀气体等恶劣环境,具有少维护、不污染、高可靠、长寿命等特点。因此可广泛应用于纸业、矿业、电厂、化工业、水处理厂、污水处理厂、农业用水、环保检测、食品(酒业、饮料业、添加剂、食用油、奶制品)、防汛、水文、明渠、空间定位、公路限高等行业中。可在不同环境中进行距离准确度在线标定,可直接用于水、酒、糖、饮料等液位控制,可进行差值设定,直接显示各种液位罐的液位、料位高度。因此,超声在空气中测距在特殊环境下有较广泛的应用。利用超声波检测往往比较迅速、方便、计算简单、易于实现实时控制,并且在测量精度方面能达到工业实用的指标要求,因此为了使移动机器人能够自动躲避障碍物行走,就必须装备测距系统,以使其及时获取距障碍物的位置信息(距离和方向)。因此超声波测距在移动机器人的研究上得到了广泛的应用。同时由于超声波测距系统具有以上的这些优点,因此在汽车倒车雷达的研制方面也得到了广泛的应用。 1.2 超声波测距仪的现状和发展 随着电子技术的发展出现了微波雷达测距、激光测距及超声波测距。前2种 - 1 - 电子信息工程系毕业论文 方法由于技术难度大成本高一般仅用于军事工业而超声波测距则由于其技术难度相对较低且成本低廉适于民用推广。这项技术也可用于工业测量领域。由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波常常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。随着自动测量和微机技术的发展,超声波测距的理论已经成熟,超声波测距的应用也非常广泛。超声测距是一种非接触式的检测方式。与其它方法相比,如电磁的或光学的方法,它不受光芒、被测对象颜色等影响。对于被测物处于黑暗、有灰尘、烟雾、电磁干扰、有毒等恶劣的环境下有一定的适应能力。因此在液位测量、车辆自动导航、物体识别等方面有广泛应用。特别是应用于空气测距,由于空气中波速较慢,其回波信号中包含的沿传播方向上的结构信息很轻易检测出来,具有很高的分辨力,因而其正确度也较其它方法为高;而且超声波传感器具有结构简单、体积小、信号处理可靠等特点。因此本设计也是利用超声波来测量距离。 展望未来,超声波测距仪作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,满足日益发展的社会需求,如声纳的发展趋势基本:研制具有更高定位精度的被动测距声纳,以满足水中武器实施全隐蔽攻击的需求;继续发展采用低频线谱检测的潜艇拖拽线列阵声纳,实现超远程的被动探测和识别;研制更适合与前还工作的潜艇声纳,特别是解决浅海水中目标识别问题;搭理降低潜艇自噪声,改善潜艇声纳的工作环境。毋庸置疑,无线的超声波测距仪将于自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。随着测距仪的技术进步,测距仪将从具有单纯判断功能发展到具有学习功能,最终发展到具有创造力。在新的世纪里,面貌一新的测距仪将发挥更大的作用。 - 2 - 电子信息工程系毕业论文 第二章 总体方案设计 2.1 方案一:采用单片机来控制的超声波测距仪 采用单片机来控制的超声波测距仪是先由单片机产生一个信号,经过信号线,把信号引入到与超声波发射器相连的信号引脚上,再由超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来。 超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即S=CT/2.其中:S为被测距离,C为超声波传播速度,T为回波时间。 2.2 方案二:采用CPLD来控制的超声波测距仪 采用CPLD来控制的超声波测距仪,主要是在软件上运用VHDL(Very High Spe ed Integrated Circuit Hardware Description Language)编写程序使 用MAX+plus II软件进行软硬件设计的仿真和调试,最终实现测距功能。使 用本方案的优点在于在超声波测距仪设计中采用的是MAX7000s系列中的 EPM7128SLC84-15的CPLD器件,其最高频率可达175.4MHz,可用于组合逻辑 电路、时序逻辑电路、算法、双端口RAM等的设计.充分利用了其多达128个 宏单、68pin可编程I/O口,使该器件可以将分频功能、计数功能、显示编 码功能、振荡功能全部集于一体。又因其延时平均的特点,保证了测距结果 精度高、响应速度快。缺点是方案中需要一块FPGA,一块双口RAM,还需要一 块用来存储波形数据的EEPROM,那么设计的成本较高。同时在FPGA中还要 用硬件描述语言(VHDL语言)编写程序来实现硬件电路功能.由于 EPM7128SLC84-15的算法复杂,所以在软件实现起来编程也复杂。 2.3 方案三:采用锁相环频率合成技术实现超声波测距 采用锁相环频率合成技术,也可以实现我们所需要的超声波测距仪。具 体方案如下: 首先通过频率合成技术产生超声波所需要的频率,在通过信号线将采用 锁频率相合成技术得到的频率引到超声波的发射头上,这样就可以实现超声 波测距。它的优点就是工作频率可调,也可以达到很高的频率分辨率;缺点 是要求使用的滤波器通带可变,实现很困难。 综上所述,我选择的方案:采用单片机来控制的超声波测距仪 。基于单 - 3 - 电子信息工程系毕业论文 片机的超声波测距仪用单片机控制超声波的发射、接受电路以及进行数据处 理,再用液晶显示屏进行数据的显示。因为声音的速度会随着温度的变化而 改变,所以在设计中可以扩展温控装置,实现更准确的测距。发射器向由超 声某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播, 途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计数。 相对于其他两种方案,单片机实现控制的设计精确,更为灵活,程序的更改 也较为灵活方便,设计的可行性也很好,有很强的实用性和拓展性。在平常 的学习过程中,通过老师的指导,为此设计奠定了坚实的专业基础。 2.4 系统各模块的方案选择 2.4.1 显示部分的选择 方案一:用数码管来显示测量数据。它的优点是价格低,亮度高,显示大。 。驱动部份的软件简单 方案二:用液晶显示测量数据。它的优点是无辐射 ,无闪烁 ,能耗小,节能电源,而且液晶显示的字符数量比较多,可以显示正负数值以及灵活的切换,用数码管不能显示正负而且操作复杂。从这一点我选择了用液晶显示。 2.4.2 单片机的选择 方案一:使用AT89C51单片机做为CPU来实现超声波测距仪程序的工作和显示,它的优点是可编程可擦除的,与工业标准的MCS-51指令集和输出管脚相兼容,而且价格便宜,可以反复使用100次以上。缺点是:它的内存比较小。 方案二:使用STC89C52单片机来做CPU,从而实现超声波测距仪的测距和数据的显示。它的主要优点是高抗静电,宽电压不怕电压抖动,宽温度范围-40?—85?。I/O口,电源供电系统,看门狗电路,复位电路时钟电路经过特殊处理,而且加密性强,可以用USB来下载程序。综上所述我选择了STC89C52单片机做为CPU。 2.5 超声波测距原理 谐振频率高于20 kHz 的声波称为超声波。超声波为直线传播方式, 频率越高, 反射能力越强, 而绕射能力越弱。利用超声波的这种特性, 常常用渡越时间 - 4 - 电子信息工程系毕业论文 检测法进行距离的测量。 超声波测距的原理一般采用渡越时间法TOF(time of flight),也可以称为回波探测法,如图2-1所示。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在介质中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。根据传声介质的不同,可分为液介式、气介式和固介式三种。根据所用探头的工作方式,又可分为自发自收单探头方式和一发一收双探头方式。超声波在空气中(20?)的传播速度为340m/s(实际速度为344m/s这里取整数),根据计时器记录的时间就可以计算出发射点距障碍物的距离,公式S= ct/2。 图2-1超声波测距原理图 由于超声波也是一种声波,其声速c与温度有关,表2-1列出了几种不同温度下的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。 表2-1声速与温度的关系 温度(?) ,30 ,20 , 10 010 20 30 100 声速(m/s)313 319 325 323 338344 349386 第三章 超声波测距仪的硬件设计 3.1 系统整体电路设计 整体电路的控制核心为单片机STC89C52, 该芯片为52内核8位单片机,适 - 5 - 电子信息工程系毕业论文 用于常用控制检测电路。超声波发射和接收电路都对相应的信号进行整形和放大,以保证测量结果尽可能的精确。TRIG为单片机发送触发信号的引脚,ECHO为超声波模块送回回响信号的引脚,接到单片机P3.2脚上。超声波测距仪的硬件设计包括:超声波发射模块、超声波接收模块、单片机控制模块和1602液晶显示模块。 发射电路 按键、 LCD液晶STC89C52 显示接收电路 图3-1系统框图 3.2 超声波发射电路的设计 由单片机产生的40kHz的方波需要进行放大,才能驱动超声波传感器发 射超声波发射驱动电路其实就是一个信号放大电路 。 在本设计中,我选用的超声波发射模块,由单片机产生40KHz的方波, 直接驱动CD4049芯片,后面的CD4049则对40KHz频率信号进行处理,使超 声波传感器产生谐振。 - 6 - 电子信息工程系毕业论文 图3-2超声波发射电路 3.3 超声波的接收电路的设计 超声波接收电路包括:接收探头,信号放大和波形变换电路。超声波接收探头必须与发射探头相同,否则影响接收效果甚至不能进行测距。由于超声波探头的信号非常弱,必须对信号进行放大,放大后的正弦波不能被微处理器处理,所以必须进行波形变换。超声波探头接收到信号后,通过声电转换,产生一正弦信号,其频率为传感器的中心频率,即40KHZ。该信号通过C1高通滤波器后经放大,最后经二极管整形输出到单片机中断口。 图3-3超声波接收电路图 - 7 - 电子信息工程系毕业论文 图3-4超声波时序图 以上时序图表明只要提供一个10us以上的脉冲触发信号,该模块内部将发出8个40KHZ周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测量的距离城正比。由此通过发射信号到收到的回响信号时间间隔就可以计算得到距离。 3.4 液晶显示电路设计 在本设计中,我选用的是SMC1602液晶显示模块。SMC1602是一种16字2行的字符型液晶显示模块。SMC1602电路由DDRAM,CGROM,IR,DR,BF等大规模集成电路组成,设计时只要把标准的ASC码放入DDRAM,内部控制线路就会自动将数据传送到显示器上,并显示该ASC码对应的字符。 (一):1602的引脚功能及说明 该芯片的部分引脚功能具体如下: 表3-1引脚功能表 RS:寄存器选择端 RS为0时,选择命令寄存器IR RW:读写控制端 RW为1时,选择读出 ENABLE:使能控制端 ENABLE为1时使能 该液晶屏共有16个引脚,其中DB0-DB7是数据/命令传输口,15、16脚BLK - 8 - 电子信息工程系毕业论文 和BLA是背光电源和地,1、2脚分别是VSS和VCC,液晶显示的地和电源,3脚VL是液晶显示偏压信号,用于调整1602的显示对比度,一般会外接电位器一调整偏压信号,注意此引脚电压为0时可以得到最强的对比度,所以接入变阻器R2后可以实现对液晶显示对比度的调节。4、5、6脚分别是RS、RW、EA端口,也是控制端口,所有的对液晶的读写数据,写命令等操作都需要这三个端口来控制。4脚为高电平时,可以对1602进行数据字节的传输操作,而为低电平时,进行的命令字节的传输操作。命令字节就是对1602的一些工作方式设置的字节。 当5脚为高电平时,可对1602进行读数据操作,反之进行写操作。6脚其实是1602的数据控制时钟信号,利用该信号的上升沿实现对1602的数据传输。 表3-2接口信号说明 符号引脚说明 引脚号 符号 VSS 电源地 9 D2 VDD电源正极 10 D3 VL 液晶显示偏压 11 D4 D0 Data I/O 15 BLA D1 Data I/O 16 BLK (二):1602的时序 1:基本操作时序 (1)读状态:输入:RS=L,RW=H,E=H 输出:D0-D7=状态字 (2)写指令:输入 RS=L,RW=L,D0-D7=指令码,E=高脉冲 (3)读数据:输入 RS=H,RW=H,E=H 输出:D0-D7=数据 (4)写数据:输入 RS=H,RW=L,D0-D7=数据,E=高脉冲 输出:无 2:写操作时序 - 9 - 电子信息工程系毕业论文 图3-5写操作时序图 从以上时序图,我们可以看出,当要写指令字,设置1602的工作方式时,需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0-D7,最后E引脚一个高脉冲将数据写入。 当我要写入数据字,在1602上实现显示时,需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0-D7,最后E引脚一个高脉冲将数据写入。 当要写命令字节的时候,时间由左往右,RS变为低电平,R/W变为低电平,注意看是RS的状态先变化完成。然后这时,DB0-DB7上数据进入有效阶段,接着E引脚有一个整脉冲的跳变,接着要维持时间最小值为tpw=400ns的E脉冲宽度。然后E引脚负跳变,RS电平变化,R/W电平变化。这样便是一个完整的1602写命令的时序。 3:读操作时序 - 10 - 电子信息工程系毕业论文 图3-6读操作时序图 以上时序图可以看出,当RW为高电平时,可对1602进行读数据操作,RS也为高电平,使能端也为高电平,D0-D7数据口接收数据。 很简单,我们在时序图里和时序参数图里可以找到TR1,对应时序参数表,可以查到这个是E上升沿/下降沿时间,最大值为25ns,表示E引脚上的电平变化,必须在最大为25ns之内的时间完成。 - 11 - 电子信息工程系毕业论文 表3-31602时序参数 对STC1602有以下几点说明: 1:LCD1602对写进去的数据字节呢是以ASCII码识别的,所以写进去用以显示的字符数据必须是某一个ADCII码,当然如果你不想查ASCII表的话,可以用字符来代替,即用单引号包含的字符常量。所以,也由此推出,’0’和30H(0的ASCII码)是等价的。 2: 操作1602,要先对1602进行初始化,数据手册里写的比较清楚,并且对各个命令字的写入并没有先后要求。 3: 1602是有自定义字符的功能的,大家熟悉基本操作之后可以尝试自行拓展 4: 在每次写完数据之后,应该要将E引脚置为低电平,为下一次E的高脉冲做准备。延伸来说,这叫释放时钟线,要养成释放时钟线的好习惯。对配合时序大有裨益。 5: 可以将所要显示的字符一次定义在一个字符数组里,以调用字符数组的形式调用显示数据,这样程序会变得简洁而高效。 - 12 - 电子信息工程系毕业论文 3.5单片机控制电路 3.5.1 STC89C52简介及引脚功能说明 图3-7STC89C52管脚图 该芯片为52内核8位单片机,兼容Intel等52内核单片机,支持ISP下载,适用于常用检测控制电路。由STC89C52组成的单片机系统原理图如图3.5.1-2所示。 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 - 13 - 电子信息工程系毕业论文 图3-8单片机系统原理图 图中TRIG引脚为单片机发送触发信号的引脚,ECHO引脚为超声波模块送回回响信号的引脚,接至单片机外部中断P3.2脚上,可以利用外部中断测量回响信号宽度。DS18B20引脚外接单总线数字温度传感器DS18B20,当需要温度补偿时选用。L2发光管保留给用户定义,实现用户功能。 P0口用来送显示信号给LCD的数据,P20~P22送命令到LCD控制LCD的显示方式。P3.7为DS18B20温度数据采集端,这个为扩展口,可有用户自己选定。P1.0接测量按键。 - 14 - 电子信息工程系毕业论文 3.5.2 复位电路 RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。 产生复位信号的电路框图如图3-9所示: 控制电施密特触 复位电路 路发器 89C52 图3-9复位信号电路图 整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。 按键手动复位有电平方式和脉冲方式两种。其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图3-10所示;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的。本设计采用的是按键电平复位。 89C52 RST 图3-10复位操作原理图 - 15 - 电子信息工程系毕业论文 3.5.3 时钟电路 STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图3.5.3-1 所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.2,12MHz之间选择,电容值在5,30pF之间选择,电容值的大小可对频率起微调的作用。RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。 外部方式的时钟电路,RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。 以下为系统的温度补偿电路: 图3-11温度补偿电路图 - 16 - 电子信息工程系毕业论文 第四章 超声波测距仪的软件设计 4.1 超声波测距仪的算法设计 超声波测距的原理为超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器所接收到。这样只要计算出从发出超声波信号到接收到返回信号所用的时间就可算出超声波发生器与反射物体的距离。距离的计算公式为: d=s/2=(c×t)/2 其中,d为被测物与测距仪的距离,s为声波的来回的路程,c为声速,t为声波来回所用的时间。在启动发射电路的同时启动单片机内部的定时器T0,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波反射波时,接收电路输出端产生一个负跳变,在INT0或INT1端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离 。 超声波收 发模块 触发电路 中断接收 图4-1软件总体流程图 计算距离 - 17 - 液晶显示 数据 电子信息工程系毕业论文 4.2主程序流程图 数据初始化 定时器初始化 显示初始化 进入后台while循环 超声波测量触发 无 有回波否, 有 外部中断子程序 图4-2主程序流程图 软件分为两部分,主程序和中断服务程序。 计算距离并显示主程序完成初始化工作、各路超声波发射和接收顺序的控制。 主程序首先是对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式。置位总中断允许位EA并给显示端口P0和P1清0。然后调用超声波发生子程序送出一延时60ms个超声波脉冲。 当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按公式计算,即可得被测物体与测距仪之间的距离,设计时取20?时的声速为344m/s,则有: d=(c×t)/2 。 测出距离后结果将传给LCD数码显示。为了有利于程序结构化和容易计算出距离,主程序采用C语言编写。 4.3 超声波发射子程序和超声波接收中断程序设计 超声波发生子程序的作用是通过单片机发送8个超声波脉冲信号(频率约 - 18 - 电子信息工程系毕业论文 40kHz的方波),同时把计数器T0打开进行计时。超声波发生子程序较简单,但要求程序运行准确。 定时中断外部中断入口 定时器初始化 关外部中断 N 发射超声波 读取时间值 发射完否, 计算距离 停止发射 结果输出 返回 图4-4定时中断流程图 开外部中断 返回 图4-3外部中断流程图 定时中断服务子程序完成单方向超声波的发射,外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出等工作。 超声波测距仪主程序利用外中断1检测返回超声波信号,一旦接收到返回超声波信,立即进入中断程序。进入中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断1关闭,并将测距成功标志字赋值2以表示此次测距不成功。 - 19 - 电子信息工程系毕业论文 4.4 LCD显示模块 开始1602写数据 void write(uchar del) LCD初始化 1602命令函数 void enable(uchar del) 1602延时函数 向LCD发送等待判断忙标记void delay() 命令 1602初始化 void L1602_init(void) 1602读数据 读显示数据Void read(uchar del) 1602显示 L1602_string(1,1,"Distance Result:") 设定页和列 写显示数据 4.5 主要模块的C程序 外部中断初始化: void INT0_Init(void) 选择开屏幕{ 图4-5显示流程图 IT0 = 0; //负边沿触发中断 EX0=0; //关闭外部中断 清屏幕} 定时器0初始化 void Timer0_Init() ,,,显示{ TMOD = 0x11; //定时器0和1工作在16位方式 TH0 = TIMER0H; TL0 = TIMER0L; TR0 = 1; //启动定时器 ET0 = 1; //允许定时器0中断 启动模块,Trig管脚20us正脉冲 : - 20 - 电子信息工程系毕业论文 void Start_Module() //启动模块 { Trig=1; //启动一次模块 delay_20us(); Trig=0; } 管脚、常量、变量定义和函数声明 //管脚定义 sbit Trig = P1^3; sbit Echo = P3^2; //回波必须接在外部中断引脚上 //定义标志 volatile bit FlagSucceed = 0; //测量成功标志 volatile bit FlagDisplay = 0; //显示标志 //定义全局变量 U16 DisplayCount=0; U16 time=0; U32 distance=0; //函数声明 void delay_20us(); void Start_Module(); void INT0_Init(void); void Data_Init(); void Timer0_Init(); void Timer1_Init(); //数据初始化 void Data_Init() { Trig = 0; - 21 - 电子信息工程系毕业论文 第五章 系统调试 5.1 硬件调试 硬件调试中,首先是线路的检查。焊接完实验后检查是否有错焊、漏焊、虚焊,电解电容是否接反,走线是否正确。检查无误后,再次就是上电检查,这时,STC89C52等芯片不要插上。在正式上电前,用万用表测量一下电源与地是否短路,短路的话,要耐心检查、排除故障。然后进行显示电路,用同样的方法对显示部分进行调试后,给单片机与液晶接口数据,液晶能够显示,说明显示部分电路没有问题。最后是对发射和接收电路,用函数发生器吧40kHZ的方波直接加到发射电路的输入端后,用示波器检测超声波发射的换能器,检查是不是有方波信号,再用函数发生器对超声波接收的换能器直接加40kHZ的方波信号,用示波器对接收电路输出端进行检测。通过这些过程,硬件部分的调试就基本完成了,剩下的就只有软件和硬件的联调了。 超声波测距仪的硬件安装时应保持两换能器中心轴线平行两者之间的距离在3-5cm之内,其余元件没有特殊要求。若能将超声波电路用金属壳屏蔽起来,可以提高抗干扰能力。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容的大小,以获得合适的接收灵敏度和抗干扰能力。 5.2 系统硬软件的联调 硬件测试好后,便可将程序编译下载到单片机试运行。当程序在uVision环境下编写完成,并编译生成.hex文件后,就可以下载并进行调试了。 5.2.1 USB转串口驱动安装 打开USB驱动文件夹下的PL2303_Prolific_DriverInstaller_v130.exe安装文件,按提示安装USB转串口驱动程序。安装完成后,插入USB下载线后,在[开始]-[控制面板]-[打印机和其他硬件]-[设备管理器],在“端口”分支下有(Prolific USB-to-Serial Comm Port(COMX)。X表示串口号,如果没有说明USB转串口驱动没有安装,须重新安装。记住括号里的COM口号。 - 22 - 电子信息工程系毕业论文 图5-1成功安装USB转串口驱动示意图 5.2.2 下载程序 打开STC单片机下载软件文件夹,点击运行STC_ISP_V481.exe程序,出现如下界面。 图5-2下载软件图 - 23 - 电子信息工程系毕业论文 正确选择MCU 类型,COM口(与刚才安装的COM号一致),最高波特率和最 低波特率都选择2400bps或1200bps,并打开正确的.hex数据文件。 点击“Download/下载”按纽,窗口出现提示: Chinese:正在尝试与 MCU/单片机 握手连接 ... Connection is failure. You can try: 1.Give your MCU Power On Reset. 2.Stop operation, then re-select COM Port. 3.Because PLCC-DIP/PQFP-DIP Socket trace too long. 4.Update the STC ISP.exe version. 5.If still error, your MCU Firmware is erroror null. Chinese:正在尝试与 MCU/单片机 握手连接 ... Connection is failure. You can try: 1.Give your MCU Power On Reset. 2.Stop operation, then re-select COM Port. 3.Because PLCC-DIP/PQFP-DIP Socket trace too long. 4.Update the STC ISP.exe version. 5.If still error, your MCU Firmware is error or null. Chinese:连接失败,请尝试以下操作: 1.在单片机停电状态下,点下载按钮,再给单片机上电 2.停止下载,重新选择 RS-232 串口, 接好电缆 3.可能需要先将 P1.0/P1.1 短接到地 4.可能外部时钟未接 5.因 PLCC、PQFP 转换座引线过长而引起时钟不振荡,请调整参数 6.可能要升级电脑端的 STC ISP.exe 软件 仍在连接中,请给MCU上电。 按下电路板上的电源按纽,保证其有个失电至上电的过程,则窗口显示开始 烧录芯片。芯片烧录成功后, 程序开始运行,超声波测距仪正常工作。 - 24 - 电子信息工程系毕业论文 图5-3超声波测距仪正常工作图 5.3 误差分析 5.3.1 温度引起的误差 由于超声波也是一种声波,其声速c与温度有关,不同温度下超声波在空气中传播的速度随温度变化的关系:C=C0?1+T/273 式中:T为绝对温度(?),0度为331.4m/s。表5.3.1-1列出了不同温度下的超声波声速。在使用时,如果温度变化不大,则可以认为声速是基本不变的,如果测距精度要求很高,则应通过温度补偿的方法加以校正。 表5-1声速与温度关系图 温度 -30 -20 -10 0 10 2030 声速313 319325 323 338344 349 c(m/s) 5.3.2 串扰问题引起的误差 设计中发射极和接收极距离较近,这样当发射极发射超声波后,有部分超声波经过障碍物反射就直接绕射到接收极上,这部分信号是无用的,会引起系统误差,而且这种误差是不可避免的。设计中采用延时来解决这个问题。 - 25 - 电子信息工程系毕业论文 第六章 结论 6.1 设计的目的 1:了解超声波测距仪的基本组成和工作原理 2:学习并掌握超声波测距仪的设计与实现 3:了解单片机的功能、构造及指令。 4:学会用C语言编写单片机程序。 6.2 总结与心得 本课题介绍了一种基于单片机的超声波测距系统的设计与实现,给出了硬件和软件的设计方案。 超声波模块是本系统的核心器件,本论文详介绍了超声波模块的原理、结构、检测方式以及它的一些特性。单片机是本系统的控制部分,采用STC89C52芯片,驱动超声波的40kHz的方波信号,就是由单片机编程产生的。本系统的显示部分采用的是1602液晶显示。 单片机内部采用C语言编程,方波信号的产生、时间差的读取、距离的计算以及显示输出都由单片机完成。 本课题所设计的超声波测距系统具有测量精度较高、速度快、控制简单方便等优点。但由于经验不足,电路硬件、软件部分都有不够完善的地方,在今后的学习中会进一步改进。 在元件及调制方面,由于采用的电路使用了很多集成电路,外围元件不是很多,所以调试不会太难。一般只要电路焊接无误,稍加调试应该会正常工作。电路中除集成电路外,对各电子元件也无特别要求。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容的大小,以获得合适的接受灵敏度和抗干扰能力。若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。 总体来说,最重要的是在本课题的设计过程中我学到了很多知识,从中受益匪浅。了解了超声波传感器的原理,学会了各种放大电路的分析、设计,也掌握了单片机的开发过程和利用单片机设计电路的方法。对一块电路板的设计、焊板、调试、改进等整个过程,有了更深入的理解和掌握。这些对我今后的学习和工作都会有很大帮助的。 - 26 - 电子信息工程系毕业论文 致 谢 首先,我要感谢包军卫老师和井新宇老师在中对我给予的悉心指导和严格要求,同时也感谢本校的一些老师在毕业设计期间所给予我的帮助。在毕业设计论文写作期间,各位老师给我提供了专业知识上的指导,同时还要感谢系实验室在毕业设计期间提供给我们优越的实验条件。 接着,我要感谢和我一起做毕业设计的同学们。在毕业设计的短短2个月里,你们给我提出很多宝贵的意见,给予了我不少帮助,在此也真诚的谢谢你们。 最后我要深深地感谢我的家人和朋友对我的支持,给予我很大的动力。 - 27 - 电子信息工程系毕业论文 参考资料 [1]华兵。MCS-51单片机原理应用,武汉:武汉华中科技大学出版社,2002.5 [2]李华。MCU-51系列单片机实用接口技术,北京:北京航天大学出版社,1993.6。 [3]郁有文。传感器原理及工程应用[M].西安:西安电子科技大学出版社,2000。 [4]中国电子学会敏感技术分会,北京电子学会.2000/2001 传感器与执行器大全(年 卷) [M].北京:电子工业出版社,2001。 [5]黄智伟。全国大学生电子设计竞赛训练教程[M]。西安:电子工业出版 社,2005.1。 [6]牛余朋,成曙。基于单片机的超声波测距系统[J]。北京:兵工自动化,2005.2。 78-88页。 [7]姜道连,宁延一,袁世良。用AT89C2051设计超声波测距仪[J]。TI:国外电子元器件,2000,第12月。 [8]杨永瑞,刘振起.电子测量技术基础[M],西安:西安电子科技大学出版社,2004. [9]栾桂东等.传感器及其应用[M],西安,西安电子科技大学出版社,1996. [10]王子芳.传感器应用技术[M],西安,西北工业大学出版社,1996. [11]张国勋,孙海. 单片机原理及应用(第二版)[M],北京:中国电力出版 社,2007. [12]Shirley PA. An introduction to ultrasonic sensing[J].sensors.1989(11):15-21. [13]H.Elmer, H.Schweinzer,G.Magerl. High resolution Supersonic distances measurement for long distances[J].Technisches Messen .2003,70(04):18-22. - 28 - 电子信息工程系毕业论文 附录 附录? 系统电路原理图 - 29 - 电子信息工程系毕业论文 附录? PCB原理图 附录? 程序 头文件和一些宏定义 /*******************************************************************/ - 30 - 电子信息工程系毕业论文 /*******************超声波测距仪************************************/ /*******************(液晶屏显示)************************************/ /*******************晶振 11.0592MHz********************************/ #include #include "1602.h" typedef unsigned char U8; /* defined for unsigned 8-bits integer variable无符号8位整型*/ typedef signed char S8; /* defined for signed 8-bits integer variable有符号8位整型*/ typedef unsigned int U16; /* defined for unsigned 16-bits integer variable无符号16位整型*/ typedef signed int S16; /* defined for signed 16-bits integer variable有符号16位整型*/ typedef unsigned long U32; /* defined for unsigned 32-bits integer variable无符号32位整型*/ typedef signed long S32; /* defined for signed 32-bits integer variable 有符号32位整型*/ typedef float F32; /* single precision floating point variable (32bits)单精度浮点数32位长度*/ typedef double F64; /* double precision floating point variable (64bits)双精度浮点数64位*/ //定时器0的定时值为1mS,即11059/12=922个时钟脉冲,其补为 65536-922=64614 #define SYSTEMCLK 921600 //11059200/12 #define T0CLK 921600 //11059200/12 #define T1CLK 921600 //11059200/12 #define T1PERIOD 1000000/921600 //T1周期时间,以微秒为单位, 约为1.085uS #define TIMER0H 0xFC //64614/256=252 #define TIMER0L 0x66 //54447%256=102 (2) 管脚、常量、变量定义和函数声明 //管脚定义 sbit Trig = P1^3; sbit Echo = P3^2; //回波必须接在外部中断引脚上 //定义标志 volatile bit FlagSucceed = 0; //测量成功标志 volatile bit FlagDisplay = 0; //显示标志 //定义全局变量 U16 DisplayCount=0; - 31 - 电子信息工程系毕业论文 U16 time=0; U32 distance=0; //函数声明 void delay_20us(); void Start_Module(); void INT0_Init(void); void Data_Init(); void Timer0_Init(); void Timer1_Init(); (3) 各子程序 //20us延时程序,不一定很准 void delay_20us() { U16 bt ; for(bt=0;bt<100;bt++); //8M晶振是100 } //数据初始化 void Data_Init() { Trig = 0; distance = 0; DisplayCount = 0; } //外部中断初始化函数 void INT0_Init(void) { IT0 = 0; //负边沿触发中断 EX0=0; //关闭外部中断 } //外部中断处理用做判断回波电平 void INT0_ISR (void) interrupt 0 { time =TH1*256+TL1; //取出定时器的值 FlagSucceed = 1; //置成功测量的标志 EX0=0; //关闭外部中断 } //定时器0初始化,16位定时模式,初始化为1ms中断一次。 - 32 - 电子信息工程系毕业论文 void Timer0_Init() { TMOD = 0x11; //定时器0和1工作在16位方式 TH0 = TIMER0H; TL0 = TIMER0L; TR0 = 1; //启动定时器 ET0 = 1; //允许定时器0中断 } //定时器0中断,用做显示计时 void Timer0_ISR(void) interrupt 1 // 定时器0中断是1号 { TH0 = TIMER0H; TL0 = TIMER0L; DisplayCount ++; if (DisplayCount >= 1000) //1秒钟显示一次 { FlagDisplay = 1; DisplayCount = 0; } } //定时器1初始化,16位计数模式,时钟为11059200/12=921600Hz //60ms计数为55296,即0xD800 void Timer1_Init() { TMOD = 0x11; //定时器0和1工作在16位方式 TH1 =0; TL1= 0; ET1 = 1; } //启动模块,Trig管脚20us正脉冲 void Start_Module() //启动模块 { Trig=1; //启动一次模块 delay_20us(); Trig=0; } /******************************************************************** * 名称 : Main() * 功能 : 主函数 - 33 - 电子信息工程系毕业论文 ********************************************************************* **/ void main() { U16 i, j; EA = 0; INT0_Init(); Timer0_Init(); //定时器0初始化 Timer1_Init(); //定时器1初始化 Data_Init(); EA = 1; L1602_init(); L1602_string(1,1,"Welcome to my "); L1602_string(2,1,"distance meter! "); //延时 for (i=0;i<1000;i++) for (j=0;j<1000;j++) {;} while(1) { EA= 0; //以下为一次检测过程:先发出Trig电平,打开外部中断,清零T1, //最后在外部中断下降沿触发时取出T1当前值,计算出Trig脉冲宽度。 Start_Module(); while(Echo==0); //等待Echo回波引脚变高电平 FlagSucceed = 0; EX0=1; TH1= 0; TL1= 0; TF1= 0; TR1=1; //启动定时器1开始计数 EA = 1; while (TH1<80) ; //盲区 TR1 = 0 ; //关闭定时器1 EX0 = 0; //关闭外部中断 if(FlagSucceed==1) //一次测试成功,则计算距离,单位为厘米 { distance = time * 1.085 ; //计算得到脉冲时间(以微秒为单位) //将微秒时间转变成厘米距离的算法: Y米=(X秒*344)/2 - 34 - 电子信息工程系毕业论文 // X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58 distance /=58; } if (FlagDisplay == 1) //1秒显示时间到 { if(FlagSucceed==0) { //LCD提示无回波 L1602_string(1,1,"OutOfRange(0-4m)"); L1602_string(2,1," ------ "); } else { //LCD显示数据 L1602_string(1,1,"Distance Result:"); L1602_string(2,1," cm "); L1602_int(2, 5, distance ); } FlagDisplay = 0; } } } /******************************************************************** * 文件名 : 液晶1602显示.c * 描述 : 该程序实现了对液晶1602的控制。 ********************************************************************* **/ #include "1602.h" #include "math.h" /******************************************************************** * 名称 : delay() * 功能 : 延时,延时时间大概为140US。 * 输入 : 无 * 输出 : 无 ********************************************************************* **/ void delay() { int i,j; for(i=0; i<=10; i++) - 35 - 电子信息工程系毕业论文 for(j=0; j<=2; j++) ; } /******************************************************************** * 名称 : Convert(uchar In_Date) * 功能 : 因为电路设计时,P0.0--P0.7接法刚好了资料中的相反,所以设计该函数。 * 输入 : 1602资料上的值 * 输出 : 送到1602的值 ********************************************************************* **/ uchar Convert(uchar In_Date) { /* uchar i, Out_Date = 0, temp = 0; for(i=0; i<8; i++) { temp = (In_Date >> i) & 0x01; Out_Date |= (temp << (7 - i)); } return Out_Date; */ return In_Date; } /******************************************************************** * 名称 : enable(uchar del) * 功能 : 1602命令函数 * 输入 : 输入的命令值 * 输出 : 无 ********************************************************************* **/ void enable(uchar del) { P0 = Convert(del); RS = 0; RW = 0; E = 0; delay(); E = 1; delay(); - 36 - 电子信息工程系毕业论文 } /******************************************************************** * 名称 : write(uchar del) * 功能 : 1602写数据函数 * 输入 : 需要写入1602的数据 * 输出 : 无 ********************************************************************* **/ void write(uchar del) { P0 = Convert(del); RS = 1; RW = 0; E = 0; delay(); E = 1; delay(); } /******************************************************************** * 名称 : L1602_init() * 功能 : 1602初始化,请参考1602的资料 * 输入 : 无 * 输出 : 无 ********************************************************************* **/ void L1602_init(void) { enable(0x01); enable(0x38); enable(0x0c); enable(0x06); enable(0xd0); } /******************************************************************** * 名称 : L1602_char(uchar hang,uchar lie,char sign) * 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用 该函数如下 L1602_char(1,5,'b') * 输入 : 行,列,需要输入1602的数据 * 输出 : 无 - 37 - 电子信息工程系毕业论文 ********************************************************************* **/ void L1602_char(uchar hang,uchar lie,char sign) { uchar a; if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; enable(a); write(sign); } /******************************************************************** * 名称 : L1602_string(uchar hang,uchar lie,uchar *p) * 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下 L1602_string(1,5,"ab cd ef;") : 行,列,需要输入1602的数据 * 输入 * 输出 : 无 ********************************************************************* **/ void L1602_string(uchar hang,uchar lie,uchar *p) { uchar a; if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; enable(a); while(1) { if(*p == '\0') break; write(*p); p++; } } //显示整型的温湿度数据用,共占用4位,其中一位符号位 void L1602_int(uchar hang, uchar lie, int num) { uint temp; uint gewei,shiwei,baiwei,sign; if (num >= 0) { sign = 0; - 38 - 电子信息工程系毕业论文 } else { sign = 1; } temp = abs(num); baiwei = temp / 100; temp = temp - baiwei*100; shiwei = temp / 10; gewei = temp - shiwei*10; num = abs(num); if (num>=100) { if (sign == 1) //负数 { L1602_char(hang, lie, '-'); } L1602_char(hang, lie+1, baiwei+48); L1602_char(hang, lie+2, shiwei+48); L1602_char(hang, lie+3, gewei+48); } else if (num>=10) { if (sign == 1) { L1602_char(hang, lie+1, '-'); } L1602_char(hang, lie+2, shiwei+48); L1602_char(hang, lie+3, gewei+48); } else { if (sign == 1) { L1602_char(hang, lie+2, '-'); } L1602_char(hang, lie+3, gewei+48); } } - 39 - 电子信息工程系毕业论文 附录? 实物图 - 40 - 电子信息工程系毕业论文 - 41 -
/
本文档为【超声波测距仪的设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索