基于单片机的超声波测距仪毕业论文(编辑修改稿)内容摘要:

速度有较好的帮助。 所以本电路中 C11 和 C12 选择 66pF 的电容。 此外, 选用陶瓷封装 的电容可以提高对温度的抗干扰性。 复位电路 图 36 复位电路 南京师范大学电气与自动化工程学院毕业设计论文 12 51 单片机是高电平复位,当单片机加 5V 电源启动时,这时电容充电相当于短路, RST 上的电压为 VCC, 此时单片机 进行复位指令。 之后电容充电使电容两端电压升高,从而导致 RST 上的电压变低,当电压值低于规定值时,单片机完成复位。 在操作时 , 按下复位开关后 , 电容 C13 则被短路。 此时 C13 释放储存的电能,导致 RST 引脚接至高电平。 然后时间超过复位规定的时间,单片机便完成复位操作。 开关复位再导致 RST 引脚回到低电平状态,之后单片机正常 运行。 显示电路 图 37 显示电路 由单片机 P0 口输出 段选 , ~ 进行 位 选 ,经 4 位 led 显示器显示单片机计算的测量距离,单位为 厘米。 南京师范大学电气与自动化工程学院毕业设计论文 13 报警电路 图 38 报警电路 本电路由单片机 口控制 , 当计算距离大于或小于设定值时使电铃通电报警。 电路原理 图 图 39 电路原理图 南京师范大学电气与自动化工程学院毕业设计论文 14 电路原理图如 图 39 所示,由 51 单片机、超声波发射电路、超声波接收电路、电源电路、晶振电路、系统复位电路、数码管显示电路以及报警电路经导线连接构成。 PCB 图 图 310 PCB 图 完善好电路图后,通过 protel 将电路原理图转换成 PCB 图。 依照信号流向、主从关系以及方便显示的排序原则,依次放置各个元器件。 再元器件布局完成后,设定布线规则。 在该设计中,我们将 电气规则中的间距由默认的 10mil 调整至 12mil。 新建间距规则,定义接地网络和电源网络的最小间距改为 15mil。 更改布线选项中的线宽规则,将推荐线宽值改为 12mil,再新建电源网络线宽规则,将推荐的线宽设为 20mil。 再新建接地网络的线宽规则,设定值同之前的电源网络。 然后更改布线优先级设置,新建 一个新的布线优先级规则,设定为电源网络的布线优先级,并设定为 1。 而其他网络的布线优先级设定为 2。 最后将过孔的外径设定为 30mil,将内径设定为 12mil。 以上为本 pcb 图中所主要使用的设计规则。 最后在自动布线的基础上经行手工修改,更改了繁杂缠绕 、过密过疏的布线,使整个 pcb 图的到更好的完善。 南京师范大学电气与自动化工程学院毕业设计论文 15 第 4 章 系统的软件设计 软件 keil 的简介 Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统,与单片机本身的汇编语言相比, C 语言是更容易掌握的计算机语言, 极大的提升了单片机编程的适用性。 而且 keil 自带了功能强大的仿真功能,几乎可以仿真大部分 IO 端口和内部资源信号。 Keil C51 可以在它自带的仿真调试器内完成软件的编译和开发工作 ,极大的提高了编译效率。 它还具有方便简易的集成功能。 Keil 可在 Windows9 NT、Windows20 WindowsXP 等操作系统下使用。 最新的版本可以再 win win8 条件下使用。 2020 年 2 月发布 Keil μ Vision4, Keil μ Vision4 引入灵活的窗口管理系统, 使用户可以使用多个窗口来监视程序的运行 ,也更加便于用户调取所需的运行参数。 新产品调整了操作界面使用户更便于利用屏幕空间做更有效的操作。 整洁有序的操作环境帮助了用户直接简单的完成单片机的编译工作。 而且此次升级也添加了许多新的功能,更加全面的仿真环境,支持更多的单片机芯片以及更加方便的调试操作。 2020 年 3 月 ARM 公司发布最新集成开发环境 RealView MDK 开发工具中集成了最新版本的 Keil μ Vision4,其编译器、调试工具实现与 ARM 器件的最完美匹配。 Keil 有如下 3 个显著优点 : C51 自动生成汇编代码的速度很快,效率优 异,所生成的汇编代码会相对简洁易读。 在用户检查源代码时会有很好的使用体验。 、不直观。 而 keil 所使用的 C 语言确是计算机大众所熟悉是初学者容易上手掌握的语言,这大大提高的用户的普适性。 的纯软件仿真功能十分强大 , 它自带的仿真功能几乎可以模拟出绝大多数常用的 IO 口或内部资源,为编程人员的高效编译提供便捷。 所以本次基于单片机的超声波测距仪 的设计 选择使用 Keil 来负责 程序 部分的 编译任务。 主程序流程 程序设计方面主要依照 如下 流程图的设计规划来进行编程。 电源开关打开后,系统自动运行初始化程序,定义定时器工作方式。 然后发射超声波,并且计时器 t1 开始计时 ,当接收到反射时,定时器 t1 停止 , 保存计数。 单片机依据计数计算距离,进行显示,当超出范围时,报警鸣铃。 当复位开关按下时,系统复位。 下面将依次就超声波收发模块程序、超声波中断子程序、距离测算子程序和四位数码管显示模块程序来分别详细介绍 南京师范大学电气与自动化工程学院毕业设计论文 16 所编程序以及设计思想。 图 41 主程序流程图 超声波收发模块程序设计 利用单片机发出 40Hz 的方波传输给超 声波发射电路,经超声波发射电路驱动 T40发出超声波,然后当超声波接收模块接收到返回信号时,将向 发出中断信号 , 使计时器 t1 得出超声波传输的具体时间。 以上就是本设计的工作原理。 而程序设计也依据上述原理展开编译。 一下将分别通过超声波收发中断子程序和超声波测距子程序来具体介绍程序的具体语句并在程序右侧逐条解释语句含义。 开始 系统初始化 发射超声波 t1 计时 接收到反射信号 发出中断指令 计时器停止计时 单片机计算距离数值 显示并延时 Y N 南京师范大学电气与自动化工程学院毕业设计论文 17 超声波收发中断子程序 图 42 超声波收发中断子程序流程图 本段程序将完成以下几个功能 : 首先 , 由延时程序循环构成 40Hz 的方波经 发出。 然后是接收回波的中断子程序 ,以及相关的距离报警判断。 以下为程序详解: void main() { Trig=0。 //首先拉低脉冲输入引脚 EA=1。 //打开总中断 0 .3 TMOD=0x10。 //定时器 1, 16 位工作方式 while(1) { EA=0。 //关总中断 南京师范大学电气与自动化工程学院毕业设计论文 18 Trig=1。 //超声波输入端 delay_20us()。 //延时 20us Trig=0。 //产生一个 20us 的脉冲 while(Echo==0)。 //等待 Echo 回波引脚变高电平 succeed_flag=0。 //清测量成功标 志 EA=1。 EX0=1。 //打开外部中断 0 TH1=0。 //定时器 1 清零 TL1=0。 //定时器 1 清零 TF1=0。 //计数溢出标志 TR1=1。 //启动定时器 1 delay(20)。 //等待测量的结果 TR1=0。 //关闭定时器 1 EX0=0。 //关闭外部中断 0 if(succeed_flag==1) {time=timeH*256+timeL。 distance=time*。 //if(succeed_flag==0) { distance=0。 //没有回波则清零 beep=!beep。 //测试蜂鸣器变化 } } } //外部中断 0,用做判断回波电平 void exter() interrupt 0 // 外部中断 0 是 0 号 { timeH =TH1。 //取出定时器的值 timeL =TL1。 //取出定时器的值 succeed_flag=1。 //至成功测量的标志 EX0=0。 //关闭外部中断 } void timer1() interrupt 3 //定时器 1 中断 ,用做超声波测距计时 { TH1=0。 TL1=0。 } 南京师范大学电气与自动化工程学院毕业设计论文 19 距离测算子程序 根据定时器所得到的时间 t,利用 公式计算出超声波传播的距离。 公式为 d=*t,依照上述公式完成以下的算法 : include void dist(void) { double distance,t。 distance=*t。 return(distance)。 } 显示模块程序设计 图 43 显示程序流程图 南京师范大学电气与自动化工程学院毕业设计论文 20 本模块的 程序主要负责将单片机测算出的距离显示到 4 位数 码管上。 为完成这一功能,本子程序将首先定义数字相对应的 led 显示编码以及所 用到的位选端口。 程序部分由显示子程序程序和延时子程序组成。 以下是本模块程序所用的声明定义部分。 详细的注解在程序右侧。 include // 函数声明 //================================================================== unsigned char code LED_table[]= { 0x3f, //0 0x06, //1 0x5b, //2 AAAA 0x4f, //3 F B 0x66, //4 F B 0x6d, //5 GGGG 0x7d, //6 E C 0x07, //7 E C 0x7f, //8 DDDD H 0x6f, //9 0x00, //black 0x80 //dot }。 define black 10 // 空白 define dot 11 // 小数点 unsigned char DisBuff[4]。 //定义显示缓冲数组 unsigned char COM。 // 定义通信端口 //================================================================== sbit COM0=P2^0。 sbit COM1=P2^1。 //对应口线由硬件确定 sbit COM2=P2^2。 sbit COM3=P2^3。 //================================================================== 南京师范大学电气与自动化工程学院毕业设计论文 21 初始化程序 初始化程序是在每次单片机复位时 , 对定时器以及相关控制器进行初始的定义 , 下面这段程序中就定义了定时器的工作方式 , 并且允许了中断。 void Sys_Init() { TMOD=0x01。 //定时器 /计数器 0 为定时器方式 16 位工作模式 TH0=(655361000)/256。 TL0=(655361000)%256。 // ET0=1。 //定时器 /计数器 0 中断允许。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。