1、个人收集整理 勿做商业用途
2、 单位代码 01 学 号 080
3、102014 分 类 号 TM931 密 级 毕业设计说明书超声波测距仪设计 院(系)名称信息工程学院 专业名称电子信息工程 学生姓名杨帅涛 指导教师李文方 2012年5月4日超声波测距仪设计摘 要基于传统的方法在
4、很多特殊场合:如带腐蚀的液体,强电磁干扰,有毒等恶劣条件下,测量距离存在不可克服的缺陷,超声波测距能很好的解决此类的问题.本设计采用以AT89S52单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。整个电路采用模块化设计,由主程序、发射子程序、接收子程序、显示子程序等模块组成。各探头的信号经单片机综合分析处理,实现超声波测距仪的各种功能.在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块.相关部分附有硬件电路图、程序流程图.经实验证明,这套系统软硬件和软件设计合理、抗干扰能力强、实时性良好,经过系统扩展和升级,可以有效地解决汽车倒车、建筑施工工
5、地以及一些工业现场的位置监控。关键词:AT89S52,超声波,测距 The design for ultrasonic distance meterAuthor:Yang ShuaitaoTutor:Li WenfangAbstracIn many special occasions, traditional methods based on the existence of insurmountable distance measuring defects, such as the measurement of corrosion in the liquid with
6、 strong electromagnetic interference, toxic and other adverse conditions, the ultrasonic range can be a very good solution to the problem of such 。 At the core of the design using AT89S52 low-cost, high accuracy, Micro figures show that the ultrasonic range finder hardware and software design
7、methods。 Modular design of the whole circuit from the main program, pre subroutine fired subroutine receive subroutine。 display subroutine modules form。 SCM comprehensive analysis of the probe signal processing, and the ultrasonic range finder function. On the basis of the overall system
8、 design, hardware and software by the end of each module. The research has led to the discovery that the software and hardware designing is justified, the antidistur bance competence is powerful and the real-time capability is satisfactory and by extension and upgrade, this system can r
9、esolve the problem of the car availably, building construction the position of the workplace and some industries spot supervision。Key words: AT89S52, Silent Wave, Measure Distance目 录1 绪论11.1 课题背景及意义11。2 国内外发展状况11。3 论文的构成及研究内容22 超声波测距原理32.1 &nb
10、sp;超声波的发展进程32.2 超声波测距的工作原理42。2.1 超声波测距的原理介绍42.2。2 超声波测距的误差分析42.2.3 超声波传感器53 超声波测距仪的硬件设计73.1 超声波测距仪的硬件构成73。2 单片机主机系统电路73.2.1 单片机电路83.2。2 复位电路83。2.3 时钟电路93.3 超声波发射电路93.4 超声波检测接收电路103。4 温度采集电路123.5 显示电路133。6 电源电路144 超声波测距仪软件设
11、计154。1超声波测距仪的程序构成154.2系统主程序154.3超声波发送程序164。4超声波的接收和处理174。5DS18B20温度采集程序194.6距离计算程序214.7数据转换程序224。8LCD1602显示程序225 超声波测距仪PCB的设计235.1 元件选择235。2 原理图及PCB版图的设计235.3 布局布线235.4 调试及测试24结论26致谢27参考文献28附录29附录A29附录B301 绪论1.1 课题背景及意义在一些特殊环境下,基于传统的测距存在不可克服的困难。例如,液面测量就是一种距离测量,传统的电极法是采用差位分布电极,通过脉冲来
12、检测液面,电极长期浸泡于水中或其他液体中,会极易被腐蚀、电解,失去灵敏性。由于超声波具有强度大,方向性好等特点,利用超声波测量距离就可以解决这些问题,因此超声波测量距离技术在工业控制、勘探测量、机器人定位和安全防范等领域得到了广泛的应用。超声波测距电路可以由传统的模拟或者数字电路构建,但是基于这些传统电路构建的系统往往可靠性差,调试困难,可扩展性差,所以基于单片机的超声波测距系统被广泛的应用。通过简单的外围电路发生和接收超声波,单片机通过采样获取到超声波的传播时间,用软件来计算出距离,并且可以采集环境温度进行测距补偿,其测量电路小巧,精度高,反映速度快,可靠性好1。在测量精度方面也能达到工业实
13、用的要求,因此得到了广泛的应用。本课题的研究是非常有实用和有商业价值的。1。2 国内外发展状况一直以来世界各国均倾注了大量财力、人力和物力,来推动超声波测距的研究和开发,并成立了专门的机构制定战略目标和计划,以确保推动超声波测距发展处于领先地位。国外在提高超声波测距方面做了大量的研究,国内一些学者也作了相关的研究。超声波测距的精度主要取决于所测的超声波传输时间和超声波在介质中的传输速度,二者中以传输时间的精度影响较大,所以大部分文献采用降低传输时间的不确定度来提高测距精度。目前相位探测法和声谱轮廓分析法或二者结合起来的方法是主要的降低探测传输不确定度的方法。因此,这是一个正在蓬勃发
14、展而又有无限前景的技术及产业领域.测距仪是一种新型非常重要有用的工具,尚有很大的发展空间。在新世纪新的测距仪一定将发挥更大的作用。1。3 论文的构成及研究内容本文是关于超声波测距仪设计的探讨,具体来说,本文由五大部分构成。第一部分叙述了本课题研究的背景及意义,另外也介绍了目前国内外超声波测距的发展现状;第二部分论述了超声波测距仪的发展进程,并介绍了超声波的测距原理以及技术参数;第三部详细介绍超声波测距仪的硬件构成和原理;第四部分对超声波测距仪的软件流程进行详细的介绍;第五部分对超声波测距仪的实物制作以及调试过进行比较详细的介绍。2 超声波测距原理超声波测距技术正在被广泛
15、应用于造纸业、矿业、电厂、化工业、农业用水、环保检测、食品、防汛、水文、空间定位、公路限高等一些行业中,是一种比较新型的测距技术。2.1 超声波的发展进程超声波是指频率在20kHz以上的声波,它属于机械波的范畴.超声波也遵循一般机械波在弹性介质中的传播规律,如在介质的分界面处发生反射和折射现象,在进入介质后被介质吸收而发生衰减。它也有自已的特性,如它的频率可以非常高,达到兆赫级,因此,它在介质中传播时能量可以集中在很小的范围内,具有良好的成束性,也就是方向性好2.超声波的研究历史可以追溯到上个世纪。1883年,Galton首先发现了超声波的存在,他当时的研究目的主要是探索人类所能感
16、知的声谱范围。在Galton之后的三十年中,超声波仍然是一个鲜为人知的东西,由于当时电子技术发展缓慢,对超声波的研究造成了一定程度的影响。因此,当压电效应和磁致现象被发现后并没有应用于制造有效的超声设备。在第一次世界大战中,对超声的研究逐步受到重视。由于战争的需要,法国人Langevin使用一种晶体传感器在水下发射和接收相对低频的超声波.他提出的这种方法可以用来检测水中是否存在潜艇并可以进行水下的通信联络.在我国,超声学的研究开始于二十世纪五十年代,1959年至1964年间我国建立了分子声学实验室,对电磁吸收、悬浮体的声吸收等问题进行了深入的研究,设计生产了固体中超声衰减的测量设备,对粘弹性和
17、可压缩流体的声速和衰减的研究取得了令人兴奋的成果.同时在超声波探伤、加工、种子处理、显示、医疗等应用领域取得了可喜的成绩。表面波换能器的研究我国开始于1965年,于1970年开始了高频表面波的研究,1977年,我国研制成表面脉冲压缩滤波器。在80年代以后,我国的超声研究进入了一个全新的阶断,取得了一系列标志性成果,压电复合材料研制成功,窄脉冲短余振探头问世,PVDF高分子压电薄膜材料赶上并超过国际水平,高分子压电PVDF型换能器和超声显微镜的研究获得了实用,高频压电材料LiNb03研制成功.在应用方面,B超医疗探头开始投入生产和医疗应用.超声显微镜投入应用。总的来说,我国在超声方面的研究在某些
18、方面己走在了世界的前列。2。2 超声波测距的工作原理2.2。1 超声波测距的原理介绍超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时3。如图2。1所示.我们假设发射超声波与接收超声波的时间间隔t,超声波在空气中的速度为v。被测距离的公式表示为: S=vt2 由于超声波的声速与温度有关,如果温度变化不大,则可认为声速基本不变 。如果测距精度要
19、求很高,则应通过温度补偿的方法加以校正.超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为331。45米/秒,由单片机负责计时,单片机使用12。0M晶振,所以此系统的测量精度理论上可以达到毫米级。图2.1 测距的原理2。2.2 超声波测距的误差分析根据超声波测距公式S=vt2,可知测距的误差是由超声波的传播速度误差和测量距离传播的时间误差引起的.1、时间误差当要求测距误差小于1mm时,假设已知超声波速度C=344m/s (20室温),忽略声速的传播误差.测距误差st(0.001/344) 0。000002907s 即2.907s。在超声波的传播速度是准确的前提
20、下,测量距离的传播时间差值精度只要在达到微秒级,就能保证测距误差小于1mm的误差.使用的12MHz晶体作时钟基准的89S52单片机定时器能方便的计数到1s的精度,因此系统采用89S52定时器能保证时间误差在1mm的测量范围内4。2、超声波传播速度误差 超声波的传播速度受空气的温度所影响,空气的温度越高则超声波的传播速度就越快5,如表2.1所示表2.1 超声波波速与温度的关系表温度()30-20-100102030100声速(ms)313319325323338344349386超声波速度与温度的关系如下:C=C0+0.607T 式中:C0为零度时的声波速度331。4m/s; &n
21、bsp; T为实际温度(). 2。2。3 超声波传感器超声波传感器主要有电致伸缩和磁致伸缩两类,电致伸缩采用双压电陶瓷晶片制成,具有可逆特性6。压电陶瓷片具有如下特性:当在其两端加上大小和方向不断变化的交流电压时,就会产生“压电效应”,使压电陶瓷也产生机械变形,这种机械变形的大小以及方向与外加电压的大小和方向成正。也就是说,若在压电晶片两边加以频率为a的交流电电压时,它就会产生同频率的机械振动,这种机械振动推动空气的张弛,当0落在音频范围内时便会发出声音.反之,如果由超声波机械振动作用于陶瓷片使其发生微小的形变时,那么压电晶片也会产生与振动频率相同的微弱的交流信号,超声
22、波传感器结构如图2。2所示。a 元件内部结构 b 超声波传感器外部结构图2.2 超声波传感器的结构3 超声波测距仪的硬件设计3.1 超声波测距仪的硬件构成超声波测距仪的硬件电路有超声波发射电路、超声波接收电路、主控电路、显示电路、电源电路以及复位电路。其组成框图如图3。1所示。图3。1 超声波测距仪的系统框图单片机发出40kHZ的信号,经放大后通过超声波发射器输出;超声波接收器将接收到的超声波信号经放大器放大,将放大后的
23、信号输送至单片机,测得时间为t,再由软件进行判别、计算,得出距离数并送LCD显示。3。2 单片机主机系统电路本次我们采用了Atmel 公司的AT89S52,该单片机主要特点如下7:(1) AT89S52系列单片机以8051为内核,兼容MCS-51系列单片机.(2) AT89S52系列单片机内、内部含有Flash存储器,在系统开发可以反复擦写。(3) AT89S52采用静态时钟方式,可以节省电能。(4) AT89S52支持ISP(在线编程),不需要把单片机从电路板取下来就可以擦写程序。(5) AT89S52晶振频率高达24M,运行速度更快。(6) AT89S52价格也比较便宜。(7)
24、 增加了看门狗电路,防止程序“走飞”,更加安全可靠。3.2.1 单片机电路单片机电路如图3.2所示。引脚功能:P0口用来送显示信号给LCD的数据为,P2。5P2。7送命令到LCD控制LCD的显示方式.P2.4为DS18B20温度数据采集端。P1口接测量按键。图3.2 单片机电路3。2.2 复位电路单片机在RESET端加一个大于20ms正脉冲即可实现复位8,上电复位和按钮组合的复位电路如下:在系统上电的瞬间,RST与电源电压同电位,随着电容的电压逐渐上升,RST电位下降,于是在RST形成一个正脉冲.只要该脉冲足够宽就可以实现复位,即ms。一般取R1,C22uF。当人按下按钮S1时,使
25、电容C1通过R1迅速放电,待S1弹起后,C再次充电,实现手动复位.R1一般取200。图3.3 复位电路3.2。3 时钟电路当使用单片机的内部时钟电路时,单片机的XATL1和XATL2用来接石英晶体和微调电容9,如图3。4所示,晶体一般可以选择3M24M,电容选择30pF左右。我们选择晶振为12MHz,电容33pF。图3.4 时钟电路3。3 超声波发射电路超声波发射电路原理图如图3.5所示。发射电路主要由反相器74LS04和超声波发射换能器T构成,单片机I/O口输出的40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另
26、一个电极,用这种推挽形式将方波信号加到超声波换能器的两端通过逆压电效应产生超声波并提高超声波的发射强度。输出端采用两个反向器并联,用以提高驱动能力.图3。5 超声波发射电路原理图压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部有两个压电晶片和一个换能板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。超声波发射换能器与接收换能器在结构上稍有不同,使用时应
27、分清器件上的标志10。3.4 超声波检测接收电路集成电路CX20106是日本索尼公司的一款红外线检波接收的产品,采用单列8引脚的直插式封装,内部包含自动偏置控制电路、前置放大电路、带通滤波、峰值检波、积分比较器、斯密特整形输出电路,配合少量外接元件就可以对40KHz左右的信号的接收与处理12,该芯片内部如图3.6所示。图3。6 CX20106内部结构以下是CX20106的引脚注释11:第一脚:超声信号输入端,该脚的输入阻抗约为40k。第二脚:该脚与地之间连接RC串联网络,它们是负反馈串联网络的一个组成部分,改变它们的数值能改变前置放大器的增益和频率特性.增大电阻R2或减
28、小C3,将使负反馈量增大,放大倍数下降,反之则放大倍数增大。但C3的改变会影响到频率特性,一般在实际使用中不必改动,推荐选用参数为R2=4。7,C3=1F。第三脚:该脚与地之间连接检波电容,电容量大为平均值检波,瞬间相应灵敏度低;若容量小,则为峰值检波,瞬间相应灵敏度高,但检波输出的脉冲宽度变动大,易造成误动作,推荐参数为3。3f。第四脚:接地端。第五脚:该脚与电源间接入一个电阻,用以设置带通滤波器的中心频率f0,阻值越大,中心频率越低。例如,取R5=200k时,f042kHz,若取R5=220k,则中心频率f038kHz.第六脚: 该脚与地之间接一个积分电容,标准值为330pF,如果该电容取
29、得太大,会使探测距离变短。第七脚:遥控命令输出端,它是集电极开路输出方式,因此该引脚必须接上一个上拉电阻到电源端,推荐阻值为22k,没有接受信号是该端输出为高电平,有信号时则产生下降。第八脚:电源正极,4。55V。超声波接收包括接收探头,信号放大以及波形变换电路三部分,超声波接收探头必须与发送探头相同的型号,否则可能导致接收效果甚至不能接收.由于超声波接收探头的信号非常弱,所以必须用放大器放大,放大后的正弦波不能被微处理器处理,所以必须经过波形变换。考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,可以利用CX20106制作超声波检测接收电路,如图3。3所示。CX20
30、106A的总放大增益约为80dB,以确保其7脚输出的控制脉冲序列信号幅3.55V范围内。总增益大小由脚外接的R2、C3决定,R2越小或C3越大,增益越高。C3取值过大时将造成频率响应变差,通常取为luf,C4为检波电容,一般取3.3UF,CX20106采用峰值检波方式,当C4容量较大时将变成乎均值检波,瞬态响应灵敏度会变低,C4较小时虽然仍为峰值检波,且瞬态响应灵敏度很高,但检波输出脉冲宽度会发生较大变动,容易造成解调出错而产生误操作。R5为带通滤波器中心频率f0的外部电阻,改变R5阻值,可改变载波信号的接受频率,当f0偏离载波频率时,放大增益会显著下降,C6为积分电容,一般取330PF,取值
31、过大,虽然可使抗干扰能力增强,但也会使输出编码脉冲的低电平持续时间增长,造成测量距离变短。适当更改电容C1的大小,可以改变接收电路的灵敏度和抗干扰能力。7脚为输出端,CX20106处理后的脉冲信号由7脚输出。图3。6 超声波检测接收电路原理图3。4 温度采集电路本次我们考虑温度补偿,以使我们的设计更加精确,温度的采集使用DS18B20,电路非常简洁。具体电路图如图3.7所示。DS18B20是美国DALLS公司推出的单线式数字温度传感器产品,具有9、10、11、12位的转换精度,未编程时默认的精度是12位,测量精度一般为0。5C,软件处理后可以达到0.1C,温度输出以16
32、位符号扩展的二进制数形式提供,低位在先,以0。0625C/LSB形式表达12。其中高五位为扩展符号位.转换周期与转换精度有关,9位转换精度时,最大转换时间为93。7ms,12位转换精度时,最大转换时间为750ms。DS18B20引脚判断方法是:字面朝人,从左到右依次是1 (GND)、2(输入/输出)、3(VDD)。图中的R13为上拉电阻,阻值选4.7K左右.DS18B20引脚判断方法是:字面朝人,从左到右依次是1(GND)、2(输入/输出)、3(VDD).图3。7中的R13为上拉电阻,阻值选5K左右。图3。7 DS18B20温度传感器3。5 显示电路本设计采用LCD液晶
33、显示屏显示。其具有体积小、功耗低、界面美观大方等优点,这里使用1602液晶屏, 1602显示模块用点阵图形显示字符,显示模式分为2行16个字符13。它具有16个引脚,其正面左起为第一脚,如图3.8所示。第一脚:接地GND。第二脚:+5V电源VCC.第三脚:对比度调整端。使用时通过接一个10K的电阻来调节VO.第四脚:寄存器选择信号线RS。第五脚:读写信号线RW.第六脚:使能端,当E由高电平跳变为低电平时执行命令E。第714脚:8位数据线D0D7.第十五脚:背光电源正极输入端BLA.第十六脚:背光电源负极输入端BLK.图3.8 LCD显示电路3.6 电源电路由于超声波测距
34、仪中的单片机电路、测温电路、显示电路都是采用5V供电,所以在设计中需要用5V的稳压电路进行稳压,我们选用LM7805来获得稳定的+5V直流电压,LM7805引脚排列和典型应用如图3.9和图3.10所示。 图3。9 LM7805引脚排列 图3。10 LM7805典型应用电路 本次设计所用的电源电路如图3。11所示。输入电压(21V)经过LM7805的稳压输出+5V的电压,图中的IN4007为保护7805,防止电源
35、极性接反损坏LM7805,滤波电容采用100uF电解和104瓷片电容并联使用,电磁兼容的实践证明,两个差100倍的电容并联使用效果很好。图3.11 电源电路4 超声波测距仪软件设计一个完整的超声波测距仪有硬件和软件构成,如果说硬件是超声波测距仪的身体,那么软件就是它的灵魂,二者缺一不可.4.1 超声波测距仪的程序构成(1) DS18B20温度传感器接口模块,分为初始化程序、写入命令以及读取子程序等部分.(2) 基于1602的显示模块,分为初始化子程序、写入子程序以及显示子程序。(3) 温度补偿与距离计算模块、分为超声波发送控制程序、接收处理程序、温度补偿子程序等。(4) 本次设计使
36、用C语言编写程序;编译器使用Keil Version4进行程序编译,Keil功能强大使用方便.主程序,分为系统初始化、按键处理以及各个子程序的调度管理等部分。图4.1所示描述了各个模块的关系。图4。1 系统程序方框图4.2 系统主程序本设计主程序的思想如下:(1)温度为四位显示,距离为三位显示单位为米。(2)温度每隔900ms采样一次,DS18B20在12位精度下转换周期为750ms ,故900ms满足该速度要求。(3)系统采用AT89S52的时钟频率为12MHz。(4)没有使用看门狗功能。(5)超声波发送一定时间后才开始启动检测,避免直达信号造成误判。所以系统最小测量约为50mm。4.3 超
37、声波发送程序超声波的每发送一次,通过单片机I/O输出一个高电平脉冲,脉冲宽度为25us左右,程序如下:void StartModule()/启动模块TX=1;/启动一次模块_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_();TX=0;4.4 超声波的接收和处理超声波
38、由超声波接收头接收,经过接收模块电路检波放大变换后送到单片机I/O口,程序中通过查询指令来判断,接收到超声波信号后往下面执行,进行计算处理。本设计中需注意当距离过远或者没有返回信号时候,定时器T1的溢出必须处理。void count(void)float temperature;char displaytemp16;/定义显示区域临时存储数组unsigned long S=0;unsigned int time=0;int temp;i-;if(i=0)temp=ReadTemperature();/读18B20温度temperature=(float)temp*0。0625;/换算18B20
39、的结果speed=(331.4+temperature*0。607)/210.0;sprintf(displaytemp,"Temp: 7。3f”,temperature);/打印温度值LCD_Write_String(0,1,displaytemp);/显示第二行i=10;time=TH0*256+TL0;TH0=0;TL0=0;S=(time*speed)/100; /算出来是CMif(S=700)|flag=1) /超出测量范围显示“-" flag=0;LCD_Write_Char(11, 0, ASCII11);LCD_Write_Cha
40、r(12, 0, ASCII10);/显示点LCD_Write_Char(13, 0, ASCII11);LCD_Write_Char(14, 0, ASCII11);LCD_Write_Char(15, 0, ASCII12);/显示Melsedisbuff0=S%1000/100;disbuff1=S1000100/10;disbuff2=S1000%10 10;LCD_Write_Char(11, 0, ASCIIdisbuff0);LCD_Write_Char(12, 0, ASCII10);/显示点LCD_Write_Char(13, 0, ASCIIdisbuff1);LCD_Wr
41、ite_Char(14, 0, ASCIIdisbuff2);LCD_Write_Char(15, 0, ASCII12);/显示M4.5 DS18B20温度采集程序DS18B20的工作流程是,初始化ROM操作指令存储器操作指令数据传输。其工作时序包括:初始化时序、写时序和读时序.(1)DS18B20的初始化DS18B20的初始化的实质是使DS18B20复位,主要是通过判断存在脉冲的形式来实现的。首先主机发复位脉冲,即宽度范围为的负脉冲,拉高1590以延时等待,然后通过输入/输出线读存在脉冲,为低说明存在,复位成功;否则说明不存在,复位失败,必须对DS18B20重新初始化./-18b20初始化
42、-/bit Init_DS18B20(void)bit dat=0;DQ = 1; /DQ复位DelayUs2x(5); /稍做延时DQ = 0; /单片机将DQ拉低DelayUs2x(200); /精确延时 大于 480us 小于960usDelayUs2x(200);DQ = 1; /拉高总线DelayUs2x(50); /1560us 后 接收60240us的存在脉冲dat=DQ; /如
43、果x=0则初始化成功, x=1则初始化失败DelayUs2x(25); /稍作延时返回return dat;(2)字节写入DS18B20程序字节写入的时序是拉低输入/输出线至少15以作为起始信号,按从低位到高位的顺序取出欲写入字节中的1位数据,写入输入/输出线,延时等待15后将输入/输出线拉高作为停止信号,以等待下一位的写入。写入程序如下:/*- 写入一个字节-/void WriteOneChar(uchar dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;DelayUs2x(25);DQ = 1;dat=1;De
44、layUs2x(25);(3) 字读DS18B20程序/-读取一个字节-/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-)DQ = 0; / 给脉冲信号dat>>=1;DQ = 1; / 给脉冲信号if(DQ)dat=0x80;DelayUs2x(25);return(dat);(4) DS18B20温度读取函数/*-读取温度-/unsigned int ReadTemperature(void)unsigned char templ=0;unsign
45、ed int temph=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换DelayMs(10);Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度templ=ReadOneChar(); /低位temph=ReadOneChar(); /高位temph<=8;t=templ+temph
46、;return(t);4.6 距离计算程序距离计算中,实行了温度补偿和夹角补偿.程序如下:time=TH0*256+TL0;/读取定时器T0的值TH0=0;TL0=0;S=(time*speed)/100; /计算距离4.7 数据转换程序经过求的数据原码无法直接用于显示,必须转换为LCD所接受的BCD码的形式,而且在温度补偿和距离计算中没有考虑小数点的存在,而实际显示必须考虑小数和有效位数,这样就必须对数据进行取舍。disbuff0=S1000/100;/转换数据结果,并将结果存储在数组disbuff中disbuff1=S%1000100/10;disbuff2=S%1000%1
47、0 %10;4.8 LCD1602显示程序LCD1602液晶显示程序分为液晶初始化、读忙、写指令和写数据操作,液晶显示器是一块慢器件,所以在执行每条指令之前必须确定模块忙标志为低电平(不忙),否侧此指令无效。液晶显示程序如下。/*-温度显示函数-*/temp=ReadTemperature();/读18B20温度temperature=(float)temp0。0625;/换算18B20的结果speed=(331。4+temperature*0.607)/210.0;/计算速度sprintf(displaytemp,”Temp: %7.3f”,temperature);/打印温度值LCD_Wr
48、ite_String(0,1,displaytemp);/显示第二行/-距离显示函数-/LCD_Write_Char(11, 0, ASCIIdisbuff0);LCD_Write_Char(12, 0, ASCII10);/显示点LCD_Write_Char(13, 0, ASCIIdisbuff1);LCD_Write_Char(14, 0, ASCIIdisbuff2);LCD_Write_Char(15, 0, ASCII12);/显示M5 超声波测距仪PCB的设计5.1 元件选择软件和硬件设计完成后就可以开始制作PCB,首先是元件的选择,通过找资料和比较,本设计采用Atmel公司的AT89S52单片机,液晶显示采用YB1602A;超声波发送采用TI公司的74F04,接收采用索尼公司的红外接收芯片CX20106A,超声波发射接收头采用40T,40R。电源采用LM7805稳压。温度传感器采用Dalls公司的DS18B20。5.2 原理图及PCB版图的设计Protel是Altium公司在80年代末推出的EDA软件,其功能强大,集成原理图设计,PCB设计,信号完整性分析等。在电子行业的CAD软件中,它当之无愧地排在众多EDA软件的前面,是电子设计者的首选软件,它较