




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
0 课课 程程 设设 计计 课程名称单片机课程设计 题目名称超声波测距系统 专业班级 11 电子信息工程本科 3 班 学生姓名尹津 学 号51101033009 指导教师刘国永 二 一四年三月二十八日 目 录 摘摘 要要 1 1 第一章第一章 设计任务书设计任务书 2 2 1 1 基于单片机的超声波测距系统 2 第二章第二章 系统总体设计系统总体设计 3 3 2 1 超声波发生器 3 第三章各部分功能设计第三章各部分功能设计 5 5 3 1 超声波测距系统构成 5 3 2 单片机系统及显示电路 6 3 3 串口通信模块 7 3 4 超声波发射电路 7 3 5 超声波接收电路 8 3 6 语音播报模块 8 第四章第四章 系统软件设计系统软件设计 9 9 4 1 编程软件及语言的选择 9 4 2 程序设计 9 第五章第五章 系统调试系统调试 1111 第六章第六章 结结 论论 1212 附录一 附录一 单片机超声波测距系统原理图单片机超声波测距系统原理图 1313 附录二 附录二 PCBPCB 图图 1414 附录三 附录三 单片机超声波测距系统单片机超声波测距系统 C C 语言原程序语言原程序 1414 附录四 附录四 元件清单元件清单 2424 参参 考考 文文 献献 2525 1 摘 要 本设计介绍了基于单片机控制的超声测距仪的原理 由 AT89C52 控制定时器产生 超声波脉冲并计时 计算超声波自发射至接收的往返时间 从而得到实测距离 并且 在数据处理中采用了温度补偿的调整 用四位 LED 数码管切换显示距离和温度 整个硬件电路由超声波发射电路 超声波接收电路 电源电路 显示电路等模块 组成 各探头的信号经单片机综合分析处理 实现超声波测距仪的各种功能 在此基 础上设计了系统的总体方案 最后通过硬件和软件实现了各个功能模块 相关部分附 有硬件电路图 程序流程图 给出了系统构成 电路原理及程序设计 此系统具有易 控制 工作可靠 测距准确度高 可读性强和流程清晰等优点 实现后的作品可用于 需要测量距离参数的各种应用场合 目前在近距离测量方面较为常用的是压电式超声 波换能器 根据设计要求并综合各方面因素 本例决定采用 AT89C52 单片机作为主控 制器 用动态扫描法实现 LED数字显示 声波驱动信号用单片机的定时器完成 本文所 设计的超声波测距仪主要由 AT89S52 单片机 超声波发射电路 超声波接收放大电路 显示电路 首先由单片机驱动产生 12MHZ 晶振 由超声波发射探头发送出去 在遇到障碍物 反射回来时由超声波接收探头检测到信号 然后经过滤波 放大 整形之后送入单片 机进行计算 把计算结果输出到 LED 液晶显示屏上 超声波发生器可以分为两大类 一类是用电气方式产生超声波 另一类是用机械方式 产生超声波 电气方式包括压 电型 电动型等 机械方式有加尔统笛 液和气流旋笛等 它们所产生的超声波的频 率 功率和声波特性各不相同 因而用途也各不相同 目前在近距离测量方面较为常 用的是压电式超声波换能器 根据设计要求并综合各方面因素 本例决定采用 AT89C52 单片机作为主控制器 用动态扫描法实现 LED数字显示 声波驱动信号用单片机的定时 器完成 超声波测距器系统设计如图 1 1 所示 图1 1 整体框图 第一章 设计任务书 1 1 基于单片机的超声波测距系统 基于单片机的超声波测距系统 是利用单片机编程产生频率为 40kHz 的方波 经 过发射驱动电路放大 使超声波传感器发射端震荡 发射超声波 超声波波经反射物 反射回来后 由传感器接收端接收 再经接收电路放大 整形 控制单片机中断口 其系统框图如图 2 1 所示 数字显示 功能键 单片机 发射驱动 接受处理 图 1 1 基于单片机的超声波测距系统框图 本系统利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时 系统定时发射超声波 在启动发射电路的同时启动单片机内部的定时器 利用定时器 的计数功能记录超声波发射的时间和收到反射波的时间 这种以单片机为核心的超声 波测距系统通过单片机记录超声波发射的时间和收到反射波的时间 通过超声波发射 器向某一方向发射超声波 单片机在发射时刻同时开始计时 超声波在空气中传播 途中碰到障碍物就立即反射回来 超声波接收器收到反射波就立即停止计时 超声波 在空气中的传播速度为V 根据计时器记录的时间t 就可以计算出发射点距障碍物的 距离 当收到超声波的反射波时 接收电路输出端产生一个负跳变 在单片机的外部中 断源输入口产生一个中断请求信号 单片机响应外部中断请求 执行外部中断服务子 程序 读取时间差 计算距离 结果输出给 LED 显示 利用单片机准确计时 测距精度高 而且单片机控制方便 计算简单 许多超声 波测距系统都采用这种设计方法 第二章 系统总体设计 超声波是由机械振动产生的 可在不同介质中以不同的速度传播 由于超声波指向 性强 能量消耗缓慢 在介质中传播的距离较远 因而超声波经常用于距离的测量 如测距仪和物位测量仪等都可以通过超声波来实现 特别是应用于空气测距 由于空 气中波速较慢 其回波信号中包含的沿传播方向上的结构信息很容易检测出来 具有 很高的分辨力 因而其准确度也较其它方法为高 而且超声波传感器具有结构简单 体 积小 信号处理可靠等特点 利用超声波检测往往比较迅速 方便 计算简单 易于 做到实时控制 并且在测量精度方面能达到工业实用的要求 超声波测距的方法有多种 如相位检测法 声波幅值检测法和渡越时间检测法等 相位检测法虽然精度高 但检测范围有限 声波幅值检测法易受反射波的影响 本测距系统采用超声波渡越时间检测法 其原理为 检测从超声波发射器发出的 超声波 经气体介质的传播到接收器的时间 即渡越时间 渡越时间与气体中的声速 相乘 就是声波传输的距离 超声波发射器向某一方向发射超声波 在发射时刻的同 时单片机开始计时 超声波在空气中传播 途中碰到障碍物就立即返回来 超声波接 收器收到反射波就立即停止计时 再由单机计算出距离 送 LED 数 码管显示测量结果 超声波在空气中的传播速度随温度变化 其对应值如表 2 1 根据计时器记录的 时间 t 见图 2 1 就可以计算出发射点距障碍物的距离 s 即 s v t 2 表 2 1 声速与温度的关系 温度 30 20 10 0102030100 声速 m s 313319325323338344349386 2 1 超声波发生器 为了研究和利用超声波 人们已经设计和制成了许多超声波发生器 总体上讲 超声波发生器可以分为两大类 一类是用电气方式产生超声波 一类是用机械方式产 生超声波 电气方式包括压电型 磁致伸缩型和电动型等 机械方式有加尔统笛 液 哨和气流旋笛等 它们所产生的超声波的频率 功率和声波特性各不相同 因而用途 也各不相同 目前较为常用的是压电式超声波发生器 压电型超声波传感器的工作原 理 它是利用压电效应的原理 压电效应有逆效应和顺效应 超声波传感器是可逆元 件 超声波发送器就是利用压电逆效应的原理 所谓压电逆效应如图 2 2 所示 是在 压电元件上施加电压 元件就变形 即称应变 若在图 a 所示的已极化的压电陶瓷上 施加如图 b 所示极性的电压 外部正电荷与压电陶瓷的极化正电荷相斥 同时 外部 负电荷与极化负电荷相斥 由于相斥的作用 压电陶瓷在厚度方向上缩短 在长度方 向上伸长 若外部施加的极性变反 如图 c 所示那样 压电陶瓷在厚度方向上伸长 在长度方向上缩短 图 2 2 压电逆效应图 单片机 AT89S51 发出短暂的 40kHz 信号 经放大后通过超声波换能器输出 反射 后的超声波经超声波换能器作为系统的输入 锁相环对此信号锁定 产生锁定信号启 动单片机中断程序 读出时间 t 再由系统软件对其进行计算 判别后 相应的计算结 果被送至 LED 数码管进行显示 限制超声波系统的最大可测距离存在四个因素 超声波的幅度 反射物的质地 反射和入射声波之间的夹角以及接收换能器的灵敏度 接收换能器对声波脉冲的直接 接收能力将决定最小可测距离 开始测量 超声波信号 开定时器 关定时器 数据运算 显示器 接收检测电声换能器 电声换能器驱动电路 图 2 2 超声波测距系统框图 第三章各部分功能设计 按照系统设计的功能的要求 初步确定设计系统由单片机主控模块 显示模块 超声波发射模块 接收模块共四个模块组成 单片机主控芯片使用 51 系列 AT89S51 单片机 该单片机工作性能稳定 同时也是 在单片机课程设计中经常使用到的控制芯片 发射电路由单片机输出端直接驱动超声 波发送 接收电路使用三极管组成的放大电路 该电路简单 调试工作小较小硬件电路的设计 主要包括单片机系统及显示电路 超声波发射电路和超声波接收电路 报警输出电路 供电电路等几部分 单片机采用 AT89S51 系统晶振采用 12MHz 高精度的晶振 以获得 较 单片机用 P2 7 端口输出超声波换能器所需的 40kHz 的方波信号 P3 5 端口监测超声波 接收电路输出的返回信号 显示电路采用简单实用的 3 位共阳 LED 数码管 段码输出 端口为单片机的 P2 口 位码输出端口分别为单片机的 P3 4 P3 2 P3 3 口 数码管位 驱运用 PNP 三极管 S9012 三极管驱动 3 1 超声波测距系统构成 本系统由单片机 AT89S51 控制 包括单片机系统 发射电路与接收放大电路和显 示电路几部分组成 如图 3 1 硬件电路的设计主要包括单片机系统及显示电路 超 声波发射电路和超声波接收电路三部分 单片机采用 AT89S51 采用 12MHz 高精度的晶 振 以获得较稳定时钟频率 减小测量误差 单片机用 P2 7 端口输出超声波换能器所 需的 40kHz 的方波信号 P3 5 端口监测超声波接收电路输出的返回信号 显示电路采 用简单实用的 3 位共阳 LED 数码管 段码输出端口为单片机的 P2 口 位码输出端口分 别为单片机的 P3 4 P3 2 P3 3 口 数码管位驱运用 PNP 三极管 S9012 三极管驱动 超声波接收模 超声波发射模 单片机控制统 AT89S51 显示模块 键盘模块 供电单元 图 3 1 系统设计框 超声波接收头接收到反射的回波后 经过接收电路处理后 向单片机 P3 5 输入一 个低电平脉冲 单片机控制着超声波的发送 超声波发送完毕后 立即启动内部计时 器 T0 计时 当检测到 P3 5 由高电平变为低电平后 立即停止内部计时器计时 单片 机将测得的时间与声速相乘再除以 2 即可得到测量值 最后经 3 位数码管将测得的结 果显示出来 3 2 单片机系统及显示电路 1 单片机系统 单片机采用 89S51 或其兼容系列 采用 12MHz 高精度的晶振 以获得较稳定的时 钟频率 减小测量误差 单片机用 P1 0 端口输出超声波转化器所需的 40KHz 方波信号 利用外中断 0 口检测超声波接受电路输出的返回信号 显示电路采用简单实用的 4 位 共阳 LED 数码管 段码用 74LS245 驱动 位码用 PNP 三极管驱动 单片机系统如下图 所示 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 J1 CON20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 J2 CON20 1 2 3 4 5 6 7 8 9 J3 CON9 R9 0 VCC VCC EA P10 P11 P12 P13 P14 P15 P16 P17 RST P30 P31 P32 P33 P34 P35 P36 P37 X1 X2 GND VCC P00 P01 P02 P03 P04 P05 P06 P07 EA ALE PSEN P20 P21 P22 P23 P24 P25 P26 P27 P00 P01 P02 P03 P04 P05 P06 P07 GND P10 P11 P12 P13 P14 P15 P16 P17 RST P30 P31 P32 P33 P34 P35 P36 P37 X1 X2 P00 P01 P02 P03 P04 P05 P06 P07 EA ALE PSEN P20 P21 P22 P23 P24 P25 P26 P27 EA VPP 31 XTAL1 19 XTAL2 18 RST VPD 9 P3 7 RD 17 P3 6 WR 16 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P1 0 T 1 P1 1 T 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 P0 0 39 P0 1 38 P0 2 37 P0 3 36 P0 4 35 P0 5 34 P0 6 33 P0 7 32 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE PROG 30 P3 1 TXD 11 P3 0 RXD 10 Vcc 40 Gnd 20 AT89S52 U STC89C52 图 3 2 单片机系统 2 显示电路原理 通过单片机的 P0 0 P0 7 RST P3 0 P3 7 X1 X2 GND 与跳线帽连接 控制液晶显示器的显示 12864 液晶显示器可显示 32 个汉字或 64 个字母可满足要求输 出的内容 显示电路原理图如下所示 图 3 3 显示电路 3 3 串口通信模块 串口通信电路是 TTL 和 RS232电平互换的电路 串口通信电路是使用 MAX232芯片 实现 该芯片有电源接口和两组串口通信转换端口 C4 C5 C7 C8组成电荷泵 提 供单片机内部升压 C6是滤波电容 其作用是滤除电路的杂波是芯片工作稳定及防止 外部电源不稳定烧坏单片机 MAX232芯片的作用是将单片机输出的 TTL 电平转换成 PC 机能接受的 RS232电平 5 6引脚的功能是为了产生正负12V 的电源 提供给 MAX232的 点评需要 7 8 9 10 11 12 13 14构成两个数据通道 1 2 3 4 5 6 7 8 9 11 10 J12 DB9 1 2 3 J6 CON3 C1 1 V 2 C1 3 C2 4 C2 5 V 6 T2OUT 7 R2IN 8 R2OUT 9 T2IN 10 T1IN 11 R1OUT 12 R1IN 13 T1OUT 14 GND 15 VCC 16 U2 MAX232 0 1U C1 0 1U C2 0 1U C3 0 1U C4 0 1U C5 VCC RXD TXD 串串 图 3 4 超声波发射电路 3 4 超声波发射电路 单片机 P36端输出的40kHZ 方波信号一路经一级反向器后送到超声波换能器的一个 电极 另一级经过两级反向器送到超声波换能器的另一个电极 用这种推挽形式将方 波信号加到超声波换能器两端 可以提高超声波发射强度 输出端采用两个反向器并 联 用以提高驱动能力 上拉电阻 R27 R30一方面提高反向器74HC04输出高电平的驱 动能力 另一方面可以增加超声波换能器的阻尼效果缩短其自由振荡的时间 如图 12 U7A MC74HC04AD 34 U7B MC74HC04AD 12 U6A 74HC04 34 U6B 74HC04 65 U6C 74HC04 98 U6D 74HC04 VCC VCC R27 1K R30 1K LS1 串串串串 P36 图3 5 超声波发射电路 3 5 超声波接收电路 CX20106A 是采用一款红外线检波接收的专用芯片 常用于电视机红外遥控接收器 考虑到红外遥控常用的载波频率38Hz 与测距的超声波频率40Hz 较为相近所以可以利用 它来制作超声波检测接收电路 J31中插入 CX20106A 使用 CX20106A 集成电路对接收 探头收到的信号进行放大 滤波 其总放大增益为80db LS2 串串串串 GND C12 100uF C13 33uF R28 1K C15 330 R29 200K R32 220K 1 2 3 4 5 6 7 8 J31 CON8 VCC P33 图3 6 超声波接收电路 3 6 语音播报模块 WT588D 有三种控制模式 分别是按键控制模式 一线串口控制模式及三线串 口控制模式 按键控制模式触发方式灵活 可随意设置任意按键为脉冲可重复触发 脉冲不可重复触发 无效按键 电平保持不可循环 电平保持可循环 电平非保持 可循环 上一曲不循环 下一曲不循环 上一曲可循环 下一曲可循环 音量 音量 播放 暂停 停止 播放 停止等 15 种触发方式 一线串口控制模式 及三线串口控制模式可通过单片机来控制WT588D 的语音播放 停止 循环播放 和音量大小 或者直接触发 0 219 地址位的任意语音 VCC C14 100uF GND 1 2 J34 CON2 1 2 J35 CON2 1 2 J32 CON2 1 2 3 J33 CON3 GND RST 1 DAC 2 PWM 3 PWM 4 P14 5 P13 6 P16 7 GND 8 P15 9 P03 10 P02 11 P01 12 P00 13 VCC 14 BUSY 15 VDD 16 WT588 WT558U8 WT558D 16 VCC D7 LED1 VCC R31 470 GND C16 104 VCC C17 104 GND GND1 VOUT 2 VIN 3 AMS1117 U9 GND P20 P22 P33 P36 P20 P22 图3 7 语音播报 第四章 系统软件设计 4 1 编程软件及语言的选择 51 编程软件可以使用 Keil uVision3 或 Keil uVision4 进行程序编程及仿真 Keil C 51 软件是众多单片机应用开发的优秀软件之一 它集编辑 编译 仿真于一体 支持汇编 PLM 语言和 C 语言的程序设计 界面友好 易学易用 具体用法在实训过程 中已详细讲述及学习 编程语言一般都是用 C 语言编程 C 语言是编译型程序设计语言 兼顾高级语言的 特点 并具备汇编语言的功能 C 语言是一种结构化程序设计语言 它支持当前程序设 计中广泛采用的由顶向下结构化程序设计技术 此外 C 语言程序具有完善的模块程序 结构 C 语言执行效率没有汇编语言高 但语言简洁 使用方便 灵活 运算丰富 表 达化类型多样化 数据结构类型丰富 具有结构化的控制语句 程序设计自由度大 有很好的可重用性 可移植性等特点 基于 C 语言的众多优点本设计选择此语言来编 程 此外 还可以使用汇编语言 C 等语言来进行编程 4 2 程序设计 超声波测距的软件设计主要由主程序 超声波发生子程序 超声波接收程序及显 示子程序组成 超声波测距的程序既有较复杂的计算 计算距离时 又要求精细计算 程序运行时间 超声波测距时 所以控制程序可采用 C 语言编程 主程序首先是对系统环境初始化 设定时器 0 为计数 设定时器 1 定时 置位总 中断允许位 EA 进行程序主程序后 进行定时测距判断 当测距标志位 ec 1 时 测量 一次 程序设计中 超声波测距频度是 4 5 次 秒 测距间隔中 整个程序主要进行循 环显示测量结果 超声波测距器的制作和调试都较为简单 其中超声波发射和接收采 用 15 的超声波换能器 TCT40 10F1 T 发射 和 TCT40 10S1 R 接收 中心频率为 40KHz 安装时应保持两换能器中心轴线平行并相距 4 8cm 其余元件无特殊要求 若 能将超声接收电路用金属壳屏蔽起来 则可提高抗干扰性能 根据测量范围要求不同 可适当地调整与接收换能器并接的滤波电容 C4 的大小 以获得合适的接收灵敏度和抗 干扰能力 硬件电路制作完成连接并调试好后 便可用 Keil uVision3 将程序编译好下载到 单片机试运行 根据实际情况可以修改超声波发生子程序每次发送的脉冲宽度和两次 测量的间隔时间 以适应不同距离的测量需要 根据所设计的电路参数和程序 测距 仪能测的范围为 0 10 5 00m 测距仪最大误差不超过 1cm 系统调试完后应对测量误 差和重复一致性进行多次实验分析 不断优化系统使其达到实际使用的测量要求 当调用超声波测距子程序后 首先由单片机产生 4 个频率为 38 46kHz 超声波脉冲 加载的超声波发送头上 超声波头发送完送超声波后 立即启动内部计时器 T0 进行计 时 为了避免超声波从发射头直接传送到接收头引起的直射波触发 这时 单片机需 要延时约 1 5 2ms 时间 这也就是超声波测距仪会有一个最小可测距离的原因 称之 为盲区值 后 才启动对单片机 P3 5 脚的电平判断程序 当检测到 P3 5 脚的电平由 高转为低电平时 立即停止 T0 计时 由于采用单片机采用的是 12 MHz 的晶振 计时 器每计一个数就是 1 s 当超声波测距子程序检测到接收成功的标志位后 将计数器 T0 中的数 即超声波来回所用的时间 按式 2 计算 即可得被测物体与测距仪之间 的距离 其中当障碍物与超声波模块的距离 S 2000cm 时 语音播报提示为 安全距离 当 500 S 1000cm 时 语音播报提示为 保持距离 当 100 S 500cm 时 语音播报提 示为 请注意 当 S 100 时 语音播报提示为 危险距离 开始 系统初始化 发送超声波 等待反射 计算距离 S 属于 m 语音播报 液晶显示 结束 y 图 4 1 主程序图 开始 初始化 检查忙函数 y n 写命令函数 写数据函数 延时 结束 图 4 2 1602 显示程 序 开始 获取语音数据 WT588D 初始化 开始播报 全部播报完 结束 n y 图 4 3 语音播报 第五章 系统调试 首先检测串口能否通 先串口线或者 USB 转串口线插到计算机上 再打开串口调 试助手 接着选择串口 串口线和 USB 转串口的端口号查看路径 计算机 右键 设 备管理器 端口 COM 和 LPT 点开查看即可 接着设置串口调试助手 选择端口号 发送的字符 数据中随便输入2位数字 其余设置默认 短接串口线或者 USB 转串口线9 针中的2和3 短接完毕后 用鼠标左键点击串口调试助手中的手动发送 每点击一次 可以收到一次数据 说明串口和串口线正常 调好后再下载已经编写好的程序 然后 在超声波发射接口放置障碍物 通过1602液晶显示屏可以观察到所测的距离 同时通过移动障碍物 改变距离 此时超过一定距离时 会通过语音来提 示此时的距离是否处于安全距离 从而达到警戒作用 实物图如下 图5 1 超声波测距系统实物图 第六章 结 论 本次设计使我学会了单片机的一些实际应用实例 我们广泛借鉴了各种实际的优 点 充分考虑了整个设计中的各个环节 包括产生 40KHZ 的方波 在接收电路中 对 所接收方波进行滤波 放大 整形等步骤 在我们为期二周的设计中 我们用到了以前学到的很多知识 比如电工 单片机 和 C 语言等 这使我意识到 任何一件产品的产生 都不是单一知识所能实现的 而 且在电路板焊接过程中 出现一些意想不到的错误 这让我措手不及 有些其实很容 易避免 但这让我受益匪浅 这次单片机课程设计时长 2 个星期时间非常充足 第一 周主要熟悉并且会使用一些画图软件及程序编程仿真软件 自己亲自用 DXP2004 软件 把主系统图和功能电路图画出来 并且用 Keil uVision3 编写程序及仿真 第二周我 们主要进行焊接 51 单片机电路板及超声波测距系统电路板并调试 通过这两周的课程 设计 我学到了很多在课堂上学不到的东西即动手能力 对于我们这个电子信息工程 专业的学生来说 动手实际操作能力是非常重要的 很多在课堂上学的理论都是要靠 我们做实验来验证的 而做实验就是锻炼我们的实际操作能力 在画电路图的过程中 遇到了很多阻碍 一开始 DXP2004 画图软件不会用 大二学过的 但时间长了又忘了 后来又重新学了一遍 付出很多时间 所以我们学过的东西要经常拿出来用 学以致 用 电路图画好后 又用 keil 软件编写一些简单的程序并调试 练习使用软件 在这 次实习中学到了很多知识 比如电工 51 单片机 汇编语言等 这使我们意识到 任 何一件产品的产生 都不是单一知识所能实现的 而且在电路的设计和程序的编程过 程中 出现了很多意想不到的错误 让我们措手不及 有些甚至是一些非常低级的错 误 但是这些错误也同样让我们获益非浅 它使我们意识到 研究是一个非常严肃的 过程 来不得半点马虎 必须有一个严谨的态度 加上 100 的努力才有可能获得成功 的喜悦 总之 在本课题的设计过程中在老师的指导和帮助下少走了很多弯路 但还是学 到了不少知识 了解了超声波传感器的原理 学会了电路板焊接技能 和各种电路的 设计与分析 动手能力与自学能力得到了锻炼与提高 理论总是不开实践的 设计制 作过程中 盲目的追求理论知识根本不足以解决任何问题 一味的死研究课本是不会 真正掌握单片机的 只有实际去真正动手做才能发现问题 解决问题 提高自身能力 附录一 单片机超声波测距系统原理图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 J1 CON20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 J2 CON20 1 2 3 4 5 6 7 8 9 J3 CON9 12 XT1 11 0592MHZ C7 22p C8 22p GND R15 10K GND C6 10UF R16 1K R9 0 S1 SW PB VCC VCC VCC X1X2 RST EA P10 P11 P12 P13 P14 P15 P16 P17 RST P30 P31 P32 P33 P34 P35 P36 P37 X1 X2 GND VCC P00 P01 P02 P03 P04 P05 P06 P07 EA ALE PSEN P20 P21 P22 P23 P24 P25 P26 P27 P00 P01 P02 P03 P04 P05 P06 P07 串串串 GND P10 P11 P12 P13 P14 P15 P16 P17 RST P30 P31 P32 P33 P34 P35 P36 P37 X1 X2 P00 P01 P02 P03 P04 P05 P06 P07 EA ALE PSEN P20 P21 P22 P23 P24 P25 P26 P27 串 串 串 1 2 3 J17 CON3 C9 0 1U D6 LED R22 1K VCC GND 2 3 1 S4 POWER 3 C1 1 V 2 C1 3 C2 4 C2 5 V 6 T2OUT 7 R2IN 8 R2OUT 9 T2IN 10 T1IN 11 R1OUT 12 R1IN 13 T1OUT 14 GND 15 VCC 16 U2 MAX232 C3 0 1U C4 0 1U C5 0 1U C1 0 1U C2 0 1U GND VCC 串串串串 P30 P31 1 6 2 7 3 8 4 9 5 CX1 DB9 串串串串串 12 U7A MC74HC04AD 34 U7B MC74HC04AD 12 U6A 74HC04 34 U6B 74HC04 65 U6C 74HC04 98 U6D 74HC04 VCC VCC R27 1K R30 1K LS1 串串串串 LS2 串串串串 GND C12 100uF C13 33uF R28 1K C15 330 R29 200K R32 220K 1 2 3 4 5 6 7 8 J31 CON8 P36 VCC P33 VCC C14 100uF GND 1 2 J34 CON2 1 2 J35 CON2 1 2 J32 CON2 1 2 3 J33 CON3 GND RST 1 DAC 2 PWM 3 PWM 4 P14 5 P13 6 P16 7 GND 8 P15 9 P03 10 P02 11 P01 12 P00 13 VCC 14 BUSY 15 VDD 16 WT588 WT558U8 WT558D 16 VCC D7 LED1 VCC R31 470 GND C16 104 VCC C17 104 GND GND1 VOUT 2 VIN 3 AMS1117 U9 GND P20 P22 P33 P36 P20 P22 1602串串串串 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 J20 CON16 GND GND VCC RS RW E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 VCC 12 34 56 78 910 11 12 13 14 15 16 17 18 19 20 21 22 J19 2COM22 P20 P21 P22 P10 P11 P12 P13 P14 P15 P16 P17 RS RW E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 串串 串串 R61 8K EA VPP 31 XTAL1 19 XTAL2 18 RST VPD 9 P3 7 RD 17 P3 6 WR 16 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P1 0 T 1 P1 1 T 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 P0 0 39 P0 1 38 P0 2 37 P0 3 36 P0 4 35 P0 5 34 P0 6 33 P0 7 32 P2 0 21 P2 1 22 P2 2 23 P2 3 24 P2 4 25 P2 5 26 P2 6 27 P2 7 28 PSEN 29 ALE PROG 30 P3 1 TXD 11 P3 0 RXD 10 Vcc 40 Gnd 20 AT89S52 U AT89S52 附录二 PCB 图 附录三 单片机超声波测距系统 C 语言原程序 超声波测距系统程序设计 包含头文件 include include define NOP nop nop nop define uchar unsigned char define uint unsigned int define ulong unsigned long 位定义 sbit csb P3 4 sbit green P2 3 sbit yellow P2 4 sbit red P2 5 bit flag 1 0 uchar vo vo 0 xe7 uint speed 340 include delay c include sound c include 12864 c include display c include DS18B20 c include SOUND c definenop nop float distance uint count 0 uchar high time low time flag 0 tc 2 uchar flag 2 0 uchar tc say 0 ulong dis dis 4 3 函数名 float Distance count 功能 距离计算函数 float Distance count float temp temp high time 256 low time temp temp 10 9216 2 temp speed return temp 函数名 ulong do s ulong dis 1 功能 距离补偿 ulong do s ulong dis 1 uchar n if dis 1 70 i csb csb nop nop nop nop nop nop nop nop nop csb 1 delay ms 2 EX1 1 delay ms 30 if flag 1 distance Distance count dis ulong distance flag 0 else dis 0 void tran1 uchar i TH0 0 TL0 0 TR0 1 for i 8 i 0 i csb csb nop nop nop nop nop nop nop nop nop csb 1 delay ms 2 EX1 1 delay ms 30 if flag 1 distance Distance count dis unsigned long distance flag 0 else dis 0 void tran2 uchar i TH0 0 TL0 0 TR0 1 for i 16 i 0 i csb csb nop nop nop nop nop nop nop nop nop csb 1 delay ms 2 EX1 1 delay ms 40 if flag 1 distance Distance count dis unsigned long distance flag 0 else dis 0 函数名 void dis all ulong dis s 功能 控制 LED 指示灯和语音播报 void dis all ulong dis s show dis s if dis s 2000 show one DIS4 2 green 0 red 1 yellow 1 if flag 2 1 send oneline 12 安全距离 delay nms 50 while busy flag 2 1 else if dis s 500 green 1 red 0 yellow 1 if flag 2 3 send oneline 15 请注意 delay nms 50 while busy send oneline 13 危险距离 delay nms 50 while busy flag 2 3 else show one DIS8 2 yellow 1 if dis sdis dis dis 4 0 if dis 4 1 dis dis dis 4 1 函数名 void main void 功能 主函数 void main void ulong data time uchar i j P0 0 xFF P1 0 xff P2 0 xff TMOD 0 x01 TH0 0 TL0 0 EA 1 IE 0 x80 displayall while 1 lcd pos 4 0 设置显示位置为第三行 for i 0 i 16 i write 1 DIS10 i lcd wdat DIS3 i delay 2 for i 0 i 3 i tran if dis 0 tran1 if dis 0 tran2 dis do s dis dis 4 i dis fit 1 if dis4000 time time 1000 else if time dis 2500 time dis else time time 100 else time dis dis all time if tc say 4 soundplay time tc say 0 temp all tc say lcd pos 1 6 for j 0 j 4 j write 1 space4 j lcd pos 1 6 for j 0 j0 i void delay int ms while ms uchar i for i 0 i 246 i nop nop nop nop void delay1 int ms while ms uchar y for y 0 y 100 y 函数名 show ulong ss 功能 显示测试数据 void show ulong ss uchar data s 2 i data s 0 ss 10000 数据 的处理 if data s 0 0 测量数据的 十米位为 0 data s 0 0 x20 else data s 0 data s 0 x30 data s 1 ss 10000 1000 0 x30 lcd pos 3 5 第三行 第七 个 2 n 1 字节位置显示 write 1 data s 1 for i 0 i 2 i write 1 data s i lcd wdat data s i 显示米位 数据 delay 1 data s 0 ss 1000 100 0 x30 data s 1 ss 100 10 0 x30 lcd pos 3 6 for i 0 i 2 i write 1 data s i lcd wdat da ta s i 显示分米和厘米位数据 delay 1 write 1 ss 10 0 x30 lcd wdat ss 10 0 x30 显示毫米位数据 delay 1 常量定义 definecircle0 xf2 循环播放 definestop play 0 xfe 停止播放 definevo 00 xe0 音量 1 definevo 10 xe1 音量 2 definevo 20 xe2 音量 3 definevo 30 xe3 音量 4 definevo 40 xe4 音量 5 definevo 50 xe5 音量 6 definevo 60 xe6 音量 7 definevo 70 xe7 音量 8 延时 n 个 ms 函数 void delay nms uint ms delay ms function uchar i while ms for i 0 i 0 j 位定义 sbit rst P2 3 sbit CS P2 5 片选端 sbit CLK P2 6 时钟 sbit sda P2 4 数据位 sbit busy P2 7 忙信号 函数名 void send com uchar add 功能 发码播放 add 为语音地址 void send com uchar add uchar i RST 1 RST 0 delay nms 3 RST 1 delay nms 20 CS 0 delay nms 5 for i 0 i 1 CS 1 void delayus uint z uint x y for x z x 0 x for y 10 y 0 y void send oneline uchar add uchar i rst 0 delay 1 rst 1 delay 17 复位延时 17MS rst 1 delay 6 delay 6ms sda 0 delay 5 delay 5ms for i 0 i 1 sda 1 函数名 void sound ulong soud 功能 播报测距距离 void sound ulong soud uchar i j k l send oneline vo vo while busy i soud 1000 j soud 1000 100 k soud 100 10 l soud 10 send oneline i delay nms 300 while busy send oneline 10 播放 点 delay nms 300 while busy send oneline j delay nms 300 while busy send oneline k delay nms 300 while busy if l 0 send oneline l delay nms 300 while busy send oneline 11 播放 米 delay nms 300 while busy 函数名 void soundplay uint dis say 功能 播放 测量距离 void soundplay uint dis say if busy 0 sound dis say 播放 测量距离 sbit DQ P3 7 定义 DS18B20 端口 DQ uchar presence uchar temp data 2 0 x00 0 x00 uchar display 5 0 x00 0 x00 0 x00 0 x00 0 x00 uchar code ditab 16 0 x00 0 x01 0 x01 0 x02 0 x03 0 x03 0 x04 0 x04 0 x05 0 x06 0 x06 0 x07 0 x08 0 x08 0 x09 0 x09 bit flash 0 显示开关标记 void Delay 1 uint num 延时函数 while num 函数名 Init DS18B20 功能 DS18B20 初始化 Init DS18B20 void 初始化 ds1820 DQ 1 DQ 复位 Delay 1 8 稍做延时 DQ 0 单片机将 DQ 拉低 Delay 1 90 精确延时 大 于 480us DQ 1 拉高总线 Delay 1 8 presence DQ 如果 0 则初始化成功 1 则初始化失败 Delay 1 100 DQ 1 return presence 返回信 号 0 presence 1 no presence 函数名 ReadOneCha
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校教育与职业技能培训协议
- 企业运营成本控制方案库
- 艺术流派及发展历程概述:美术课堂教学设计
- 直接引语与间接引语的转换规则:六年级英语语法课教案
- 小猪学样550字(11篇)
- 纪念塔课件教学
- 银滩之旅250字(12篇)
- 关于七夕节的英语作文11篇
- 2025年事业单位招聘统计类试卷:统计学在美学中的
- 2025年商务英语(BEC)中级考试真题模拟卷:模拟实战演练
- 2025年足球裁判三级试题及答案
- 2025年秋期部编版四年级上册小学语文教学计划+教学进度表
- 2025年特种设备检验检测项目合作计划书
- 安全生产投入费用明细
- 2025年司机三力考试题库及答案
- 铁路动态设计管理办法
- 奔驰GL350GL450GL550中文版说明书
- 智能微电网应用技术课件
- 泌尿外科围手术期护理
- 光谷华科附小数学试卷
- 大学班助培训
评论
0/150
提交评论