超声波测距《单片机原理及应用》课程设计报告(学生撰写模版).doc_第1页
超声波测距《单片机原理及应用》课程设计报告(学生撰写模版).doc_第2页
超声波测距《单片机原理及应用》课程设计报告(学生撰写模版).doc_第3页
超声波测距《单片机原理及应用》课程设计报告(学生撰写模版).doc_第4页
超声波测距《单片机原理及应用》课程设计报告(学生撰写模版).doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及应用 课程设计 报告 2014 2015 学年 第一学期 题 目 基于 AT89S51 单片机的超声波测距系统 系 别 专 业 班 级 学 号 姓 名 指导教师 完成时间 评定成绩 2 目目 录录 一 一 设计的目的设计的目的 3 3 二 二 设计的内容与要求设计的内容与要求 3 3 三 三 设计方案设计方案 4 4 四 四 硬件 软件设计硬件 软件设计 5 5 五 五 设计总结设计总结 1 18 8 六 六 参考文献参考文献 1 19 9 3 一 一 设计的目的设计的目的 在基本掌握了 单片机原理及应用 课程知识的基础上 完成课程设计项目的设计 通 过课程设计环节的训练 包括设计方案的论证 硬件设计 程序编写和设计报告的撰写 掌 握单片机应用项目的设计流程和方法 加深对 单片机原理及应用 课程知识的理解和掌握 培养应用系统的设计能力 初步积累单片机系统开发经验 以及分析问题和解决问题的方法 并进一步拓宽专业知识面 培养实践应用技能和创新意识 二 二 设计的内容与要求设计的内容与要求 以 AT89S51 单片机为核心 设计超声波测距系统的硬件电路和软件程序 本系统利用单 片机定时发射超声波 在启动发射电路的同时启动单片机内部的定时器 利用定时器的计时 功能记录超声波在空气中的传播时间 当收到超声波的反射波时 接收电路输入端产生一个 负跳变 单片机检测到这个负跳变信号后 停止内部计时器计时 读取时间 计算距离 测量 结果输出给 LED 显示 当测距小于报警值时 产生报警声音输出 另外增加两个按键 可以 对超声波报警值进行调整 设计内容与要求 设计内容与要求 1 选择其中一个设计项目 进行设计方案的比较和论证 确定设计思路和方案 2 进行硬件设计 画出硬件结构框图 完成电路原理图的设计和元器件选型 必要时 应给出重要电路参数的设计和计算过程 以及元器件参数的选型依据 3 编写单片机的软件程序 先理清软件设计思路并绘制程序流程图 再编写具体的汇 编语言或 C 语言程序语句 并注释说明 成绩评定依据 成绩评定依据 分值百分比 1 确定设计思路和方案 20 2 画出硬件结构框图 原理图的设计 元器件选型 给出电路参数的设计依据 30 3 绘制程序流程图 再编写程序语句 并注释说明 30 4 设计成果的功能完善程度 创新点 演示效果 撰写设计报告的规范性 20 4 三 三 设计方案设计方案 硬件设计 硬件设计 按照系统设计的功能的要求 初步确定设计系统由单片机主控模块 显示模 块 超声波发射模块 接收模块共四个模块组成 单片机主控芯片使用 51 系列 AT89S51 单片机 该单片机工作性能稳定 同时也是在单片 机课程设计中经常使用到的控制芯片 发射电路由单片机输出端直接驱动超声波发送 接收电路使用三极管组成的放大电路 该电路简单 调试工作小较小 图 3 1 系统设计框图 硬件电路的设计主要包括单片机系统及显示电路 超声波发射电路和超声波接收电路 报警输出电路 供电电路等几部分 单片机采用 AT89S51 系统晶振采用 12MHz 高精度的晶振 以获得较稳定时钟频率 减小测量误差 单片机用 P2 7 端口输出超声波换能器所需的 40kHz 的方波信号 P3 5 端口监测超声波接收电路输出的返回信号 显示电路采用简单实用的 3 位 共阳 LED 数码管 段码输出端口为单片机的 P2 口 位码输出端口分别为单片机的 P3 4 P3 2 P3 3 口 数码管位驱运用 PNP 三极管 S9012 三极管驱动 软件设计 软件设计 主要由主程序 超声波发生子程序 超声波接收程序及显示子程序组成 超 声波测距的程序既有较复杂的计算 计算距离时 又要求精细计算程序运行时间 超声波测 距时 所以控制程序可采用 C 语言编程 主程序首先是对系统环境初始化 设定时器 0 为计数 设定时器 1 定时 置位总中断允 许位 EA 进行程序主程序后 进行定时测距判断 当测距标志位 ec 1 时 测量一次 程序设 计中 超声波测距频度是 4 5 次 秒 测距间隔中 整个程序主要进行循环显示测量结果 当 调用超声波测距子程序后 首先由单片机产生 4 个频率为 38 46kHz 超声波脉冲 加载的超声 超声波接收模 块 超声波发射模 块 单片机控制系统 AT89S51 显示模块 键盘模块 供电单元 5 波发送头上 超声波头发送完送超声波后 立即启动内部计时器 T0 进行计时 为了避免超声 波从发射头直接传送到接收头引起的直射波触发 这时 单片机需要延时约 1 5 2ms 时间 这也就是超声波测距仪会有一个最小可测距离的原因 称之为盲区值 后 才启动对单片 机 P3 5 脚的电平判断程序 当检测到 P3 5 脚的电平由高转为低电平时 立即停止 T0 计时 由于采用单片机采用的是 12 MHz 的晶振 计时器每计一个数就是 1 s 当超声波测距子程序 检测到接收成功的标志位后 将计数器 T0 中的数 即超声波来回所用的时间 按式 2 计 算 即可得被测物体与测距仪之间的距离 设计时取 15 时的声速为 340 m s 则有 d c t 2 172 T0 10000cm 其中 T0 为计 数器 T0 的计算值 测出距离后结果将以十进制 BCD 码方式送往 LED 显示约 0 5s 然后再发 超声波脉冲重复测量过程 四 四 硬件和软件设计硬件和软件设计 超声波测距硬件设计构成超声波测距硬件设计构成 系统设计框图 超声波接收模 块 超声波发射模 块 单片机控制系统 AT89S51 显示模块 键盘模块 供电单元 6 基于AT89S51单片机超声波测距系统电原理图 7 超声波测距单片机系统超声波测距单片机系统 超声波测距单片机系统主要由 AT89S51 单片机 晶振 复位电路 电源滤波部份构成 由 K1 K2 组成测距系统的按键电路 用于设定超声波测距报警值 超声波发射 接收电路超声波发射 接收电路 超声波发射电路由电阻 R1 三极管 BG1 超声波脉冲变压器 B 及超声波发送头 T40 构成 超声波脉冲变压器 在这里的作用是提高加载到超声波发送头两产端的电压 以提高超声波 的发射功率 从而提高测量距离 接收电路由 BG1 BG2 组成的两组三级管放大电路构成 超 声波的检波电路 比较整形电路由 C7 D1 D2 及 BG3 组成 40kHz 的方波由 AT89S51 单片机的 P2 7 输出 经 BG1 推动超声波脉冲变压器 在脉冲变 压器次级形成 60VPP 的电压 加载到超声波发送头上 驱动超声波发射头发射超声波 发送 出的超声波 遇到障碍物后 产生回波 反射回来的回波由超声波接收头接收到 由于声波 在空气中传播时衰减 所以接收到的波形幅值较低 经接收电路放大 整形 最后输出一负 跳变 输入单片机的 P3 脚 该测距电路的 40kHz 方波信号由单片机 AT89S51 的 P2 7 发出 方波的周期为 1 40ms 即 25 s 半周期为 12 5 s 每隔半周期时间 让方波输出脚的电平取反 便可产生 40kHz 方波 由于单片机系统的晶振为 12M 晶振 因而单片机的时间分辨率是 1 s 所以只能产生半周期为 12 s 或 13 s 的方波信号 频率分别为 41 67kHz 和 38 46kHz 本系统在编程时选用了后者 让单片机产生约 38 46kHz 的方波 由于反射回来的超声波信号非常微弱 所以接收电路需要将其进行放大 接收到的信号 加到 BG1 BG2 组成的两级放大器上进行放大 每级放大器的放大倍数为 70 倍 放大的信号 通过检波电路得到解调后的信号 即把多个脉冲波解调成多个大脉冲波 这里使用的是 I N 4148 检波二极管 输出的直流信号即两二极管之间电容电压 该接收电路结构简单 性能较 好 制作难度小 显示电路显示电路 本系统采用三位一体 L E D 数码管显示所测距离值 段码输出端口为单片机的 P2 口 位 8 码输出端口分别为单片机的 P3 4 P3 2 P3 3 口 数码管位驱运用 PNP 三极管 S9012 三极管 驱动 供电电路供电电路 本测距系统由于采用的是 LED 数码管用为显示方式 正常工作时 系统工作电流约为 30 45mA 为保证系统统计的可靠正常工作 系统的供电方式主要交流 AC6 9 伏 同时为调 试系统方便 供电方式考虑了第二种方式 即由 USB 口供电 调试时直接由电脑 USB 口供 电 6 伏交流是经过整流二极管 D1 D4 整流成脉动直流后 经虑波电容 C1 虑波后形成直流电 为保证单片机系统的可电 供电路中由 5 伏的三端称压集成电路进行稳压后输出 5 伏的真流 电供整个系统用电 为进一步提高电源质量 5 伏的直流电再次经过 C3 C4 滤波 报警输出电路报警输出电路 为提高测测距系统的实用性 本测距系统的报警输出提供开关量信号及声响 信号两种方式 方式一 报警信号由单片机 P3 1 端口输出 继电器输出 可驱动较大的负 载 电路由电阻 R6 三极管 BG9 继电器 JDQ 组成 当测量值低于事先设定的 报警值时 继电器吸合 测量值高于设定的报警值时 继电器断开 方式二 报警信号由单片机P0 2口输出 提供声响报警信号 电路由电阻R7 三 极管BG8 蜂鸣器BY组成 当测量值低于事先设定的报警值时 蜂鸣器发出 滴 滴 滴 报警声响信号 测量值高于设定的报警值时 停止发出报警声 响 9 超声波测距软件设计构成超声波测距软件设计构成 超声波测距程序流程图超声波测距程序流程图 Y Y N N 0 0 1 开始 初始化 测量标志 启动定时器 超声波测距 距离 上限值 距离 盲区值 显示值 C C C 显示值 测量段码转换 显示 设定段码转换 距离 报警值 报警输出 N 10 超声波测距程子序流程图超声波测距程子序流程图 产生超声波的子程序 产生超声波的子程序 为了方便程序移置及准确产生超声波信号 本测距的超声波产生程序是用汇编语言编写 的进退声波产生程序 产生的超声波个数为 UCSBFS SEGMENT CODE RSEG UCSBFS Y 标志 1 发送超声波 延时避开盲区 收到回波否 预设时间 启动计时器 T1 停止计时 计算测量值 超声波测距 结束 N N Y Y N 11 PUBLIC CSBFS CSBFS mov R6 8h 超声波发射的完整波形个数 共计四个 here cpl p2 7 输出 40kHz 方波 nop nop nop nop nop nop nop nop nop djnz R6 here RET END 超声波测距程序超声波测距程序 基于 AT89S51 52 单片机的超声波测距系统 测量范围 30 699 厘米 晶振 12MH include define uchar unsigned char define uint unsigned int sbit k1 P3 7 k1 功能键 sbit k2 P3 6 k2 数值调整键 sbit bjh P3 1 定值输出 sbit sx P0 2 报警值输出 声音 sbit csbout P2 7 超声波发送 sbit csbint P3 5 超声波接收 sbit LED1 P3 4 数码管位驱动 sbit LED2 P3 2 数码管位驱动 sbit LED3 P3 3 数码管位驱动 uchar c1bz mqkd bai shi ge sec25 sec sec1 table 3 测距标志 盲区宽度 百位 十位 个位 25ms 计数器 秒标志 1s 计数器 字型码数组 uchar baokuo 10 0 x81 0 xED 0 xA2 0 xA8 0 xCC 0 x98 0 x90 0 xAD 0 x80 0 x88 0 9 段码 12 uint dz zzbl i jsz s 报警值界限 中间变量 计算距离 bit b c e k11 k12 k21 k22 void delay i 延时函数 void scanLED 显示函数 void timeTotable 显示转换函数 void time 时间处理函数 void jpcl 键盘处理函数 void wdzh 超声波测距函数 void bgcl 继电器控制函数 void jpzcx 键盘处理函数 设置报警值 void csbfs 超声波发射函数 void main EA 1 开中断 TMOD 0 x11 设定时器 0 为计时 设定时器 1 定时 ET0 1 定时器 0 中断允许 TH0 0 xD8 TL0 0 xF0 设定时值为 10000us 10ms TR0 1 csbout 1 TR1 0 mqkd 30 盲区设为 30CM dz 60 报警值设为 60CM k12 1 K12 为第二次读的 K1 按键状态 k1 1 K1 按键状态 k2 1 K2 按键状态 k22 1 K22 为第二次读的 K2 按键状态 while 1 if c1bz 1 0 25s 测距一次 c1bz 0 wdzh 调用超声波测量 bgcl 调用报警处理继电器函数 timeTotable 调用转换段码功能模块 scanLED 调用显示函数 if jsz699 table 0 0 x93 显示 C table 1 0 x93 显示 C table 2 0 x93 显示 C else if jsz 25 25 10 ms 0 25 s sec25 0 c1bz e e 闪烁标志 if c1bz 3 修改报警值后 重新设置测距标志 c1bz 0 sec1 if sec1 100 sec1 0 sec 秒计时 if sec 3 sec 0 15 void jpcl 按键处理程序 k11 k1 if k12 开始设置报警值标志 k12 k11 k11 k1 k21 k2 if b 1 sx 0 table 0 0 x84 显示 A table 1 0 x84 显示 A table 2 0 x84 显示 A sec 0 c 0 while c A 显示 2S if sec 2 c 1 scanLED c 0 zzbl jsz 保存测距值 jsz dz timeTotable 将报警值转换成字型码 jpzcx 报警值修改函数 if dz6 百位不能大于 6 bai 0 if e 1 table 2 0 xFF 百位闪烁 else table 2 baokuo bai scanLED if k12 k22 k21 k12 k11 table 2 baokuo bai 百位确定 c 0 while c k11 k1 k21 k2 if k22 if shi 9 shi 0 if e 1 table 1 0 xFF else table 1 baokuo shi scanLED if k12 k22 k21 k12 k11 17 table 1 baokuo shi c 0 while c k11 k1 k21 k2 if k22 if ge 9 ge 0 if e 1 table 0 0 xFF else table 0 baokuo ge scanLED if k12 b 0 dz bai 100 shi 10 ge k22 k21 k12 k11 void wdzh TR0 0 TH1 0 x00 TL1 0 x00 csbint 1 sx 0 delay 2700 csbfs csbout 1 TR1 1 i 260 while i i 0 while csbint 判断接收回路是否收到超声波的回波 18 i if i 3300 超时未收到 csbint 0 TR1 0 s TH1 s s 256 TL1 TR0 1 csbint 1 jsz s 0 034 计算测量结果 jsz jsz 2 void bgcl if jsz dz bjh 0 else bjh 1 五 五 设计总结设计总结 通过两周来实训课程基本上完成了课程设计的要求 但是在这其中也存在着许多问题 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论