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

超声波传感器测距离原理(可编辑)

2017-09-27 32页 doc 72KB 39阅读

用户头像

is_348501

暂无简介

举报
超声波传感器测距离原理(可编辑)超声波传感器测距离原理(可编辑) 超声波传感器测距离原理 目 录 一、课程设计任务书 2 二(超声波传感器测距原理 4 2.1超声波传感器 4 2.2超声波测距原理概述 5 三(系统总体设计方案 6 四(系统的硬件结构设计 8 4.1 单片机最小系统原理概述 8 4.2超声波发射电路 14 4.3 超声波检测接收电路 14 4.4 超声波测距系统的显示电路设计 15 4.5 PROTUES仿真硬件电路图 15 五(系统软件的设计 16 5.1 超声波测距仪的算法设计 16 5.2 程序流程图 16 5.3 主程...
超声波传感器测距离原理(可编辑)
超声波传感器测距离原理(可编辑) 超声波传感器测距离原理 目 录 一、课程设计任务 2 二(超声波传感器测距原理 4 2.1超声波传感器 4 2.2超声波测距原理概述 5 三(系统总体设计 6 四(系统的硬件结构设计 8 4.1 单片机最小系统原理概述 8 4.2超声波发射电路 14 4.3 超声波检测接收电路 14 4.4 超声波测距系统的显示电路设计 15 4.5 PROTUES仿真硬件电路图 15 五(系统软件的设计 16 5.1 超声波测距仪的算法设计 16 5.2 程序流程图 16 5.3 主程序设计 18 5.4定时中断服务子程序设计 18 5.5超声波发生子程序和超声波接收中断程序设计 19 六(调试结果 20 七(系统误差来源及解决方案分析 22 八(收获体会 23 参考文献 24 附录一 超声波测距电路原理图 25 附录二 程序清单 26 附录三 元件清单 36 一、 课程设计任务书 《智能仪器综合设计》课程设计任务书 题目:超声波测距系统设计 一、课程设计任务 超声波测距主要应用于倒车雷达、建筑施工工地以及一些工业现场,如液位、井深、管道长度等场合。超声波测距的原理是,发射器发射出超声波,遇到被测物体后返回声波由接收器接收,测量出超声波发射和接收到回波的时间差,超声波波速与时间差乘积的一半即为被测距离。该超声波测距系统以AT89S52单片机为核心进行设计。 二、课程设计目的 通过本次课程设计使学生掌握:1)智能仪器的一般设计、实现方法;2)超声波传感器测距的工作原理;3)智能仪器设计的实际调试技巧。从而提高学生对智能仪器的设计和调试能力。 三、课程设计内容和要求 1、掌握超声波传感器的测距原理,测量结果数显; 2、根据超声波测距原理,设计超声波测距系统的硬件结构电路并画出原理图; 3、用PROTUES对所设计的系统进行仿真; 4、给出软件设计流程图; 5、系统软硬件连调,给出该测距系统的性能指标,并对产生的误差进行分析。 四、课程设计要求 报告中提供如下内容: 1、目录 2、正文 (1)课程设计任务书; 2)3); 4)硬件原理图; 5)程序清单(子程序不提供清单,但应列反映每一个子程序的名称及其功能); 6)调试结果; 4、参考文献 五、课程设计进度安排 周次 工作日 工作内容 第 一 周 1 布置课程设计任务,查找相关资料 2 熟悉智能仪器综合实验平台所提供的相关资源 3 完成总体设计方案 4 画出硬件原理图并进行仿真 5 完成硬件接线,编写程序并调试 第 二 周 1 编写程序并调试 2 编写程序并调试 3 编写程序并调试及准备课程设计报告 4 完成课程设计报告并于下午两点之前上交 5 答辩 本课题共需两周时间 七、课程设计考核办法 本课程设计满分为100分,从课程设计平时表现、课程设计报告及课程设计 答辩三个方面进行评分,其所占比例分别为20%、40%、40%。 二(超声波传感器测距原理 2.1超声波传感器 超声波是由机械振动产生的,可以在不同的介质中以不同的速度传播,其频率高于20KHz。由于超声波指向性强,能量消耗缓慢,在介质中传播距离远,因而超声波可以用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。超声波测距是一种非接触式的检测电路,因而利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到要求。 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到农业生产等自动化的使用要求。一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。本系统选用的是压电式超声波传感器。实际上是利用压电晶体的谐振来工作的。超声波发生器它有两个压电晶片和一个共振板当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。 温度(?) -30 -20 -10 0 10 20 30 100 声速(m,s) 313 319 325 323 338 344 349 386 2.2超声波测距仪原理概述 超声波测距的原理一般采用渡越时间法TOF(timeofflight)。其原理为:检测从超声波发射器发出的超声波,经气体介质的传播到接收器的时间,即渡越时间。渡越时间与气体中的声速相乘,就是声波传输的距离。超声波发射器向某一方向发射超声波,在发射时刻的同时单片机开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。 单片机发出40kHZ的信号,经放大后通过超声波换能射器输出;反射后的超声波经超声波换能器作为系统的输入,锁相环对此信号锁定,产生锁定信号启动单片机中断程序,读出时间为t,再由软件进行判别、计算,得出距离数并送LED显示。限制超声波系统的最大可测距离存在四个因素:超声波的幅度、反射物的质地、反射和入射波之间的夹角以及接受换能器的灵敏度。接受换能器对声波脉冲的直接接收能力将决定最小可测距离。 系统总体设计方案 超声波测距的原理是利用超声波的发射和接受,根据超声波传播的时间来计算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪。此次设计采用反射波方式。测距仪的分辨率取决于对超声波传感器的选择。超声波传感器是一种采用压电效应的传感器,常用的材料是压电陶瓷。由于超声波在空气中传播时会有相当的衰减,衰减的程度与频率的高低成正比;而频率高分辨率也高,故短距离测量时应选择频率高的传感器,而长距离的测量时应用低频率的传感器。 图3.1 超声波测距系统框图? 显示模块中,通过测得数据经p0口送至LCD进行显示,LCD显示原理:液晶显示模块是128×64 点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8192 个中文汉字、16X16 点阵、128 个字符、8X16 点阵及64X256 点阵,显示RAM GDRAM 可与CPU 直接,接口提供两种界面来连接微处理机8-位并行及串行两种连接方式具有多种功能光标显示画面移位睡眠模式等。显示资料RAM 提供642 个位元组的空间,最多可以控制4 行16 字和64 个字的中文字型显示,当写入显示资料RAM 时可以分别显示CGROM HCGROM 与CGRAM 的字型,ST7920A 可以显示三种字型:半宽的HCGROM 字型CGRAM 字型及中文CGROM 字型 ,三种字型的选择由DDRAM 中写入的编码选择,在0000H 0006H 的编码中将自动的结合下一个位元组,组成两个位元组的编码达成中文字型的编码,A140 D75F 各种字型详细编码如下: 1 显示半宽字型 将8 位元资料写入DDRAM 中范围为02H 7FH 的编码 2 显示CGRAM 字型将16 位元资料写入DDRAM 中总共有0000H 0002H 0004H 0006H 四种编码 3 显示中文字形将16 位元资料写入DDRAMK ,范围为A1A1H- F7FEH 的编码。 绘图显示RAM 提供64 *32 个位元组的记忆空间,最多可以控制256 *64 点的二维绘图缓冲空间,在更改绘图RAM 时,先连续写入水平与垂直的坐标值,再写入两个8 位元的资料到绘图RAM而地址计数器AC 会自动加一。在写入绘图RAM 的期间,绘图显示必须关闭整个写入绘图RAM的步骤如下: 1 关闭绘图显示功能 2 先将水平的位元组坐标X 写入绘图RAM 地址 3 再将垂直的坐标Y 写入绘图RAM 地址 4 将D15 D8 写入到RAM 中 5 将D7 D0 写入到RAM 中 6 打开绘图显示功能 系统的硬件结构设计 硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路部分。单片机采用或其兼容系列。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P1.0端口输出超声波换能器所需的40kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的 图4.1 51单片机最小系统原理图 AT89S52是一种低功耗、高性能?8位微控制器,具有8K 在系统可编程Flash 存储器。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非技术制造。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器 被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。 P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻 辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具有内部上拉电阻。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 此外,定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2 的触发输入(P1.1/T2EX)。 在flash编程和校验时,P1口接收低8位地址字节。 引脚号第二功能: P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个 TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 在访问外部程序 存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4个 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。 端口引脚 第二功能: P3.0 RXD 串行输入口 P3.1 TXD 串行输出口 P3.2 INTO 外中断0 P3.3 INT1 外中断1 P3.4 TO 定时/计数器0 P3.5 T1 定时/计数器1 P3.6 WR 外部数据存储器写选通 P3.7 RD 外部数据存储器读选通 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的 是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 特殊功能寄存器并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些地址,一般将得到一个随机数据;写入的数据将会无效。用户不应该给这些未定义的地址写入数据“1”。由于这些寄存器在将来可能被赋予新的功能,复位后,这些位都为“0”。 定时器 2 寄存器:寄存器T2CON 和T2MOD 包含定时器2 的控制位和状态位,寄存器对RCAP2H和RCAP2L是定时器2的捕捉/自动重载寄存器。 中断寄存器:各中断允许位在IE寄存器中,六个中断源的两个优先级也可 在IE中设置。定时器 0 和定时器1在AT89S52 中,定时器0 和定时器1 的操作与AT89C51 和AT89C52 一样。为了获得更深入的关于UART 的信息,选择“Products”,然后选择“8051-Architech Flash Microcontroller”,再选择“ProductOverview”即可。定时器 0 和定时器1在AT89S52 中,定时器0 和定时器1 的操作与AT89C51 和AT89C52 一样。为了获得更深入的关于UART 的信息,选择“Products”,然后选择“8051-Architech Flash Microcontroller”,再选择“ProductOverview”即可。定时器 2定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。其工作方式由特殊寄存器T2CON中的C/T2位选择(如表2所示)。定时器2有三种工作模式:捕捉方式、自动重载(向下或向上计数)发生器。如表3 所示,工作模式由T2CON中的相关位选择。定时器2 有2 个8位寄存器:TH2和TL2。在定时工作方式中,每个机器周期,TL2 寄存器都会加1。由于一个机器周期由12 个晶振周期构成 通过T2CON中的EXEN2来选择两种方式。如果EXEN2 0,定时器2时一个16位定时/计数器,溢出时,对T2CON 的TF2标志置位,TF2引起中断。如果EXEN2 1,定时器2做相同的操作。除上述功能外,外部输入T2EX引脚(P1.1)1至0的下跳变也会使得TH2和TL2中的值分别捕捉到RCAP2H和RCAP2L中。除此之外,T2EX 的跳变会引起T2CON 中的EXF2 置位。像TF2 一样,T2EX 也会引起中断。捕捉模式如图5所示。在计数工作方式下,寄存器在相关外部输入角T2 发生1 至0 的下降沿时增加1。在这种方式下,每个机器周期的S5P2期间采样外部输入。一个机器周期采样到高电平,而下一个周期采样到低电平,计数器将加1。在检测到跳变的这的S3P1 期间,新的计数值出现在寄存器中。因为识别1,0的跳变需要2个机器周期(24个晶振周期),所以,最大的计数频率不高于晶振频率的1/24。 为了确保给定的电平在改变前采样到一次,电平应该至少在一个完整的机器周期内保持不变。自动重载当定时器2 工作于16 位自动重载模式,可对其编程实现向上计数或向下计数。这一功能可以通过特殊寄存器T2MOD(见表4)中的DCEN(向下计数允许位)来实现。通过复位,DCEN 被置为0,因此,定时器2 默认为向上计数。DCEN 设置后,定时器2就可以取决于T2EX向上、向下计数。DCEN 0 时,定时器2 自动计数。通过T2CON 中的EXEN2位可以选择两种方式。如果EXEN2 0,定时器2计数,计到0FFFFH后置位TF2溢出标志。计数溢出也使得定时器寄存器重新从RCAP2H 和RCAP2L 中加载16 位值。定时器工作于捕捉模式,RCAP2H和RCAP2L的值可以由软件预设。如果EXEN2 1,计数溢出或在外部T2EX(P1.1)引脚上的1到0的下跳变都会触发16位重载。这个跳变也置位EXF2中断标志位。T2EX 上的一个逻辑0 使得定时器2 向下计数。当TH2 和TL2 分别等于RCAP2H 和RCAP2L中的值的时候,计数器下溢。计数器下溢,置位TF2,并将0FFFFH加载到定时器存储器中。置位DCEN,允许定时器2向上或向下计数。在这种模式下,T2EX引脚控制着计数的方向。T2EX上的一个逻辑1使得定时器2向上计数。定时器计到0FFFFH溢出,并置位TF2。定时器的溢出也使得RCAP2H和RCAP2L中的16位值分别加载到定时器存储器TH2和TL2中。定时器2上溢或下溢,外部中断标志位EXF2 被锁死。在这种工作模式下,EXF2不能触发中断。中断源AT89S52 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断。这些中断每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。IE.6位是不可用的。对于AT89S52,IE.5位也是不能用的。用户软件不应给这些位写1。它们为AT89 系列新产品预留。定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2 或EXF2激活中断,标志位也必须由软件清0。定时器0和定时器1标志位TF0 和TF1在计数溢出的那个周期的S5P2被置位。它们的值一直到下一个周期被电路捕捉下来。然而,定时器2 的标志位TF2 在计数溢出的那个周期的S2P2被置位,在同一个周期被电路捕捉下来。中断允许控制寄存器(IE)(MSB) (LSB)中断允许控制位 1,允许中断 中断允许控制位 0,禁止中断 符号 位地址 功能 EA IE.7 中断总允许控制位。EA 0,中断总禁止;EA 1,各中断? 由各自的控制位设定 IE.6 预留 ET2 IE.5 定时器2中断允许控制位 ES IE.4 串行口中断允许控制位 ET1 IE.3 定时器1中断允许控制位 EX1 IE.2 外部中断1允许控制位 ET0 IE.1 定时器0中断允许控制位 EX0 IE.0 外部中断0允许控制位 超声波 图4.4 LCD驱动控制电路 4.5 PROTUES仿真硬件电路图 硬件仿真电路如下图4.5所示,首先由555电路产生40KHz的方波,经过74LS160电路进行100进制计数产生下降沿,下降沿触发AT89S52产生IT0中断,根据定时器T1记录的时间间隔由公式计算得出所测距离,传送至LCD显示。 图4.5 Proteus 仿真系统图 系统软件的设计? 软件分为两部分:主程序和中断服务程序,主程序完成初始化工作、各路超 声波发射和接受顺序的控制。 5.1 超声波测距仪的算法设计? ?超声波测距的原理为超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器R所接收到。这样只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器与反射物体的距离。距离的计算公式为:d s/2 c×t /2其中,d为被测物与测距仪的距离,s为声波的来回的路程,c为声速,t为声波来回所用的时间。?在启动发射电路的同时启动单片机内部的定时器T0,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波反射波时,接收电路输出端产生一个负跳变,在INT0或INT1端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离。 超声波测距仪的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。 主程序流程图 定时器1中断 5.3 主程序设计 软件分为两部分,主程序和中断服务程序,主程序完成初始化工作、各路超声波发射和接收顺序的控制。定时中断服务子程序定时中断服务子程序完成,时间值的读取、距离计算、结果的输出等工作。主程序首先是对系统环境初始化,设置定时器T工作模式为16位定时计数器模式。置位总中断允许位EA并给显示端口P和P清0。然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1 ms(这也 就是超声波测距仪会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。由于采用的是12 MHz的晶 振,计数器每计一个数就是1μs,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按式(2计算,即可得被测物体与测距仪之间的距离,设计时取20时的声速为344 m/s则有:?d c×t /2 172T0/10000cm,其中,T为计数器T的计算值。 5.5超声波发生子程序和超声波接收中断程序? 超声波发生子程序的作用是通过P1.0端口发送2个左右超声波脉冲信号(频率约40kHz的方波),脉冲宽度为12μs左右,同时把计数器T0打开进行计时。超声波发生子程序较简单,但要求程序运行准确,所以采用汇编语言编程。? 超声波测距仪主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(即INT0引脚出现低电平),立即进入中断程序。进入中断后就立即关闭计时器T停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未检测到超声波返回信号,则定时器T溢出中断将外中断0关闭,并将测距成功标志字赋值2以表示此次测距不成功。?前方测距电路的输出端接单片机INT0端口,中断优先级最高,中断优先级为先右后左。超声波测距仪的制作和调试,中心频率为40kHz,若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容C4的大小,以获得合适的接收灵敏度和抗干扰能力。 硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。根据实际情况可以修改超声波发生子程序每次发送的脉冲宽度和两次测量的间隔时间,以适应不同距离的测量需要。根据所设计的电路参数和程序,测距仪能测 的范围为0.07,5.5m,测距仪最大误差不超过1cm。系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求。 1 2 3 4 5 6 理论值 mm 100 200 300 400 500 600 实测值 mm 103 202 303 404 498 599 相对误差% 3 1 1 1 -0.4 -0.17 序号 7 8 9 10 11 12 理论值 mm 700 800 900 1000 1100 1200 实测值 mm 699 785 875 972 1070 1264 相对误差% 0.14 1.88 2.78 2.8 2.73 5.33 根据以上测量实验数据所得:测距仪能测的范围为0.0,.5m,测距仪最大误差不超过cm。我们每个人来说都是一个挑战。的设计,平时对这方面的知识,而且对于我就更抓狂了。这时候小组的力量就体现出来了,各司其职,各尽其能。发挥了集体的效用。在这个过程,受到了好多帮助,其实这次的课程设计我的最大的感受不是知识的获得,而是人格的磨练和交际的能力。 ”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义(当然这是不可避免的。在产生小矛盾的时候,我们没有逃避。重要的是我们如何去解决它。我想经过这样的一个过程我们会学到很多,学会了怎样去和别人沟通,理解别人所做的事,别人也会宽容的对待我们,从而我们就在无形之中加强了我们的人际交往能力。这个经验对我们以后的人生将会发挥很大的作用。 1] 现代化,2003.10 2] 时德刚,量与控制,2002.10 3] 华兵.MCS-51单片机原理应用.武汉:武汉华中科技大学出版社,2002 .54] 李华.MCU-51系列单片机实用接口技术.北京:北京航空航天大学出版社, 1993. 65] 陈光东.单片机微型计算机原理与接口技术 第二版 .武汉:华中理工大学出版社,1999.46] 徐淑华,程退安,姚万生.单片机微型机原理及应用.哈尔滨:哈尔滨工业大学出版社,1999. 6.7] :人民邮电出版社,1993.78] :中国科技大学出版社,1993.109] :辽宁科学技术出版社,2002.510] 樊昌元,丁义元. 高精度测距雷达研究.电子测量与仪器学报,2000.1011] 苏伟,术,2004.12] 恒清,张靖.加强单片机系统抗干扰能力的方法.通化师范学院学报,2004 .1013] 晗晓,袁慧梅.单片机系统的印制板设计与抗干扰技术.电子工艺技术,2004 .614] 丰,薛红宣.采用软件抗干扰设计提高微机系统的可靠性.电子产品世界,2004.115] 占操,梁厚琴,曹燕.单片机系统中的软件抗干扰技术.电子技术,2003.316] 华兵.MCS-51单片机原理应用.武汉:武汉华中科技大学出版社,2002 .517] 继兴,刘霞.单片机系统软件抗干扰措施分析.电子测量技术,2003超声波测距电路原理图 #include #define uchar unsigned char #define uint unsigned int #define Disp_On 0x3f #define Disp_Off 0x3e #define Col_Add 0x40 //列地址,Y地址,0列 #define Page_Add 0xb8 //页地址,X地址,0页 #define Start_Line 0xc0 //行地址,0行 #define Lcd_Bus P0 //MCU P1 ------ LCM sbit Mcs P2^1; //Master chip enable sbit Scs P2^2; //Slave chip enable sbit Enable P2^3; //6800 mode Enable single sbit Di P2^5; //Data or Instrument Select sbit RW P2^4; //Write or Read sbit LE1 P3^4; /*定义16*16汉字结构体*/ struct typFNT_GB16 unsigned char Index[2]; unsigned char MSK[32]; ; struct typFNT_GB16 code GB16[16]; sbit Sq P1^0; uchar Overtime_flag,Send_flag 1,Receive 1; unsigned long Time,Len; uchar code ASCII816[96*16] 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,/*" ",0*/ 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x 30,0x00,0x00,0x00,/*"!",1*/ 0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,/*""",2*/ 0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,/*"#",3*/ 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,/*"$",4*/ 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,/*"%",5*/ 0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,/*"&",6*/ 0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"`",7*/ 0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,/*" ",8*/ 0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,/*" ",9*/ 0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,/*"*",10*/ 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,/*"+",11*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,/*",",12*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x 01,0x01,0x01,0x01,/*"-",13*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,/*".",14*/ 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/*"/",15*/ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*"0",0*/ 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*"1",1*/ 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*"2",2*/ 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*"3",3*/ 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*"4",4*/ 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*"5",5*/ 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,/*"6",6*/ 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*"7",7*/ 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x 21,0x22,0x1C,0x00,/*"8",8*/ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,/*"9",9*/ 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,/*":",0*/ 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,/*";",1*/ 0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,/*" ",2*/ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,/*" ",3*/ 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,/*" ",4*/ 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,/*"?",5*/ 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,/*"@",0*/ 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,/*"A",1*/ 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,/*"B",2*/ 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x 20,0x10,0x08,0x00,/*"C",3*/ 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,/*"D",4*/ 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,/*"E",5*/ 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,/*"F",6*/ 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,/*"G",7*/ 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,/*"H",8*/ 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*"I",9*/ 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,/*"J",10*/ 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,/*"K",11*/ 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,/*"L",12*/ 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,/*"M",13*/ 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x 07,0x18,0x3F,0x00,/*"N",14*/ 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,/*"O",15*/ 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,/*"P",16*/ 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,/*"Q",17*/ 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,/*"R",18*/ 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,/*"S",19*/ 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,/*"T",20*/ 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,/*"U",21*/ 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,/*"V",22*/ 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,/*"W",23*/ 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,/*"X",24*/ 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x 20,0x00,0x00,0x00,/*"Y",25*/ 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,/*"Z",26*/ 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,/*"[",0*/ 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,/*"\",1*/ 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,/*"]",2*/ 0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"^",3*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,/*"_",4*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,/*"a",0*/ 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,/*"b",1*/ 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,/*"c",2*/ 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x 20,0x10,0x3F,0x20,/*"d",3*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,/*"e",4*/ 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*"f",5*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,/*"g",6*/ 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,/*"h",7*/ 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*"i",8*/ 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,/*"j",9*/ 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,/*"k",10*/ 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*"l",11*/ 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,/*"m",12*/ 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,/*"n",13*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x 20,0x20,0x1F,0x00,/*"o",14*/ 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,/*"p",15*/ 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,/*"q",16*/ 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,/*"r",17*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,/*"s",18*/ 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,/*"t",19*/ 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,/*"u",20*/ 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,/*"v",21*/ 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,/*"w",22*/ 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,/*"x",23*/ 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,/*"y",24*/ 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x 22,0x21,0x30,0x00,/*"z",25*/ 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,/*" ",0*/ 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,/*"|",1*/ 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,/*" ",2*/ 0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"~",3*/ 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,/*"$",4*/ ; /* void delays uint x uint j; uchar i; for j 0;j x;j++ for i 0;i 200;i++ ; /* void write_com uchar cmdcode Di 0; RW 0; Lcd_Bus cmdcode; delays 1 ; Enable 1; delays 1 ; Enable 0; /* void write_data unsigned char Dispdata Di 1; RW 0; Lcd_Bus Dispdata; delays 1 ; Enable 1; delays 1 ; Enable 0; /* void Clr_Scr void unsigned char j,k; Mcs 1; Scs 1; write_com Page_Add+0 ; write_com Col_Add+0 ; for k 0;k 8;k++ write_com Page_Add+k ; for j 0;j 64;j++ write_data 0x00 ; /* void ShowString unsigned char pag,unsigned char col, uchar *ptr uchar i,j 0,k 0,l 0; uchar c1,c2; uchar dat; uchar hang,lie; uchar ulen 0; lie col;//列值送给lie hang pag;//页值送给hang while ptr[ulen]! 0 ulen++;//用ulen记录有效字符的个数 while j ulen c1 ptr[j]; c2 ptr[j+1]; if col 64 Mcs 1;Scs 0;lie col; if col 128&&col 63 Mcs 0;Scs 1;lie col-64; if col 127 Mcs 1;Scs 0;pag pag+2;lie col-128;col col-128; if col+8 127 Mcs 1;Scs 0;pag pag+2;col col+8;lie col-128;col col-128; if c1 128 write_com Page_Add+pag ; write_com Col_Add+lie ; // for i 0;i 8;i++ dat ASCII816[ c1-0x20 *16+i]; write_data dat ; write_com Page_Add+pag+1 ; write_com Col_Add+lie ; // for i 8;i 16;i++ dat ASCII816[ c1-0x20 *16+i]; write_data dat ; j j+1; col col+8; else for k 0;k sizeof GB16 /sizeof GB16[0] ;k++ if c1 GB16[k].Index[0] && c2 GB16[k].Index[1] break; write_com Page_Add+pag ; write_com Col_Add+lie ; // for i 0;i 16;i++ dat GB16[k].MSK[i]; write_data dat ; l l+1; write_com Page_Add+pag+1 ; write_com Col_Add+lie ; // for i 0;i 16;i++ dat GB16[k].MSK[i+16]; write_data dat ; j j+2; col col+16; /* void ShowChar816 uchar pag,uchar col,uchar ch uchar i; uchar dat; uchar lie; lie col; if ch 128 if col 64 Mcs 1;Scs 0;lie col; if col 128&&col 63 Mcs 0;Scs 1;lie col-64; if col 127 Mcs 1;Scs 0;pag pag+2;lie col-128;col col-128; if col+8 127 Mcs 1;Scs 0;pag pag+2;col col+8;lie col-128;col col-128; write_com Page_Add+pag ; write_com Col_Add+lie ; // for i 0;i 8;i++ dat ASCII816[ ch-0x20 *16+i]; write_data dat ; write_com Page_Add+pag+1 ; write_com Col_Add+lie ; // for i 8;i 16;i++ dat ASCII816[ ch-0x20 *16+i]; write_data dat ; /* void ShowData uchar lin,uchar column,uint dat //uint StartAddr; uchar QIAN,BAI,SHI,GE; QIAN dat/1000; QIAN QIAN+0x30; dat dat%1000; BAI dat/100; BAI BAI+0x30; dat dat%100; SHI dat/10; SHI SHI+0x30; GE dat%10; GE GE+0x30; ShowChar816 lin,column,QIAN ; ShowChar816 lin,column+8,BAI ; ShowChar816 lin,column+16,SHI ; ShowChar816 lin,column+24,GE ; /* void init_lcd void P2 0x40; delays 100 ; P0 0x00; delays 100 ; P2 0x80; Mcs 1;Scs 1;delays 100 ; write_com Disp_Off ; write_com Page_Add+0 ; write_com Start_Line+0 ; write_com Col_Add+0 ; write_com Disp_On ; /************************************************************/ void delay10us uint us //delay 10us while us-- ; /**************************************************************** ***********/ void main void P3 0xff; init_lcd ; Clr_Scr ; TMOD 0x12; //定时器0工作在方式2,定时器1工作在方式1 TH0 0xee; //产生40kHz方波 TL0 0xee; TH1 0; //用于计时 TL1 0; IT0 1; //跳沿触发 EA 1; ET0 1; ET1 1; while 1 if Send_flag Sq 1; TR1 1; // TR0 1; // delay10us 5 ; TR0 0; Send_flag 0; EX0 1; while Receive && !Overtime_flag ; if !Receive TR1 0; Time TH1; Time 8; Time Time | TL1; Len Time*170/1000; //mm ShowData 0,0,Len ; TH1 0; TL1 0; Send_flag 1; Receive 1; else Overtime_flag 0; TR1 0; TH1 0; TL1 0; Send_flag 1; //ShowData 0,0,5000 ; /* */ /****************************************************/ void INT0_ISR interrupt 0 Receive 0; void Timer0_ISR interrupt 1 Sq ~Sq; void Timer1_ISR interrupt 3 Overtime_flag 1; 附录三 元件清单 15 定时器0中断 外部中断0
/
本文档为【超声波传感器测距离原理(可编辑)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索