ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:55KB ,
资源ID:3776183      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3776183.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(超声波测速系统.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

超声波测速系统.docx

1、超声波测速系统 题目:超声波测距系统一、设计目的:1、 通过本次课程设计加深对单片机课程的全面认识和掌握,对单片机课程的应用进一步的了解。2、 掌握定时器、外部中断的设置和编程原理。3、 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。二、设计任务: 利用单片机及外围接口电路(显示接口电路)设计制作超声波测距仪器,用LED把测距仪距被测物的距离显示出来。三、具体要求:1. 使用软件Proteus 7 Professional测试仿真调试,并在keil环境下编写程序并调试。 2.在面包板上进行初步仿真测试,设计好布线以及焊接排序。3在PCB板上焊接元器件电路,并进行测试得出实验

2、结果。四、设计原理(一)硬件设计1.超声波测距原理超声波测距原理是通过超声波发射器向某一方向发射超声波(一般为40KHz的超声波),在发射时刻的同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为v ,而根据计时器记录的测出发射和接收回波的时间差t ,就可以计算出发射点距障碍物的距离S ,即: S = vt /2 超声波测距仪原理框图(1)单片机最小系统单片机最小系统电路,由主控器STC89C52、时钟电路和复位电路三部分组成。单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟

3、信号,复位电路使得单片机能够正常、有序、稳定地工作。(2)晶振电路 位单片机提供时钟频率(3)复位电路复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。总的电路图如下:(二)软件设计软件分为两部分,主程序和中断服务程序。主程序完成初始化工作、超声波发射和接收,距离计算、结果的输出。外部中断服务子程序主要完成时间值的读取。主程序首先是对系统环境初始化,设置定时器T1工作模式为16位定时计数器模式。置位总中断允许位EA。然后给Trig

4、一个20us的高电平,然后在Echo引脚等待其变为高电平,一旦输出了高电平,表明超声波已开始发射,此刻即计时,等待Echo变为低电平,即触发外部中断0的跳变沿方式中断。读取当前定时器的值,换算成时间,乘以波速,即得到测距距离。程序如下:#include #include #define uchar unsigned char#define uint unsigned intuchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/共阳极0-9unsigned char led=0x40,0x79,0x24,0x30,

5、0x19,0x12,0x02,0x78,0x00,0x10;/带小数点的位码sbit SMG_q = P20; /定义数码管的千位sbit SMG_b = P21; /定义数码管的百位sbit SMG_s = P22; /定义数码管的十位sbit SMG_g = P23; /定义数码管的个位sbit Trig = P27; /发送波形sbit Echo = P32; /回波产生中断sbit test = P10; /指示灯控制端uint succeed_flag,time,timeH,timeL; /succeed_flag测试成功标志位void delayms(uint z) /延时毫秒 u

6、int x,y; for(x=z;x0;x-) for(y=110;y0;y-);void delay_20us() /延时20微秒函数 uchar a ; for(a=0;a=100;a+);/*数码管显示数据转换程序*/void display(uint temp) uchar ge,shi,bai,qian; qian=temp/1000; bai=temp%1000/100; shi=temp%1000%100/10; ge=temp%10; SMG_q=0; P0=tableqian; /查找定义好的数码管段值与P0口 delayms(2); /加入短暂延时 P0=0Xff; /清除

7、数码管显示,因是共阳型, SMG_q=1; /关闭千位数码管 SMG_b=0; /选择百位数码管 P0=tablebai; /查找定义好的数码管段值与P0口 delayms(2); /加入短暂延时 P0=0Xff; /清除数码管显示,因是共阳型, SMG_b=1; /关闭百位数码管 SMG_s=0; /选择十位数码管 P0=ledshi; /查找定义好的数码管段值与P0口 delayms(2); /加入短暂延时 P0=0Xff; /清除数码管显示,因是共阳型, SMG_s=1; /关闭十位数码管 SMG_g=0; /选择个位数码管 P0=tablege; /查找2定义好的数码管段值与P0 de

8、layms(2); /加入短暂延时 P0=0Xff; /清除数码管显示,因是共阳型, SMG_g=1; /关闭个位数码管 void chaoshengbo_start(void) /发送波形产生一个20us的脉冲 Trig=0; _nop_(); Trig=1; /超声波输入端 delay_20us(); /延时20us Trig=0; /产生一个20us的脉冲 void init(void) /初始化 test =0; Trig=0; /首先拉低脉冲输入引脚 EA=1; /打开总中断0 TMOD=0x10; /定时器1,16位工作方式 void callIft(void) /开计时器,接收信

9、号,调用中断 EA=1; EX0=1; /打开外部中断0 ET1= 1; /开定时器1中断 TH1=0; /定时器1清零 TL1=0; /定时器1清零 TF1=0; /计数溢出标志 TR1=1; /启动定时器1 delayms(10); /等待测量的结果 while(Echo=0); /等待Echo回波引脚变高电平 TR1=0; /关闭定时器1 /*主函数部分*/void main() uint distance; void init(void); /初始化 while(1) EA=0; /关总中断 chaoshengbo_start(); /发射超声波 callIft() ; /开计时器,接

10、收到信号,调用中断 EX0=0; /关闭外部中断0 if(succeed_flag=1) time=timeH*256+timeL; distance=time*0.172; /time*0.170-1.425 test = !test; /测试灯变化 display(distance); /显示距离 if(succeed_flag=0) distance=0; /没有回波则清零 display(distance); /显示距离 test = !test; /测试灯变化 /*/外部中断0,用做判断回波电平void int0sever() interrupt 0 / 外部中断0是0号 timeH

11、 =TH1; /取出定时器的值 timeL =TL1; /取出定时器的值 succeed_flag=1; /至成功测量的标志 EX0=0; /关闭外部中断 /*/定时器1中断,用做超声波测距计时void timer1() interrupt 3 TH1=0; TL1=0; 五、设计心得俗话说“好的开始是成功的一半”,但我们的开始并不怎么太好,不过还是努力赶上了。通过这次实习,我们学到了很多东西。在进行课程设计时,我们应该做到以下三点:首先,我认为最重要的就是认真的研究老师给的题目。其次,在老师讲解的基础上认真研究硬件电路的设计,和软件流程的设计。最后,重点实现软硬结合的综合调试。 这次的实习算

12、起来一共进行了两周,在这两周的时间里我们进行了硬件电路图设计,电路板的设计,以及软件的编程实现,软硬件的综合调试。最终一个完整的课程设计成果出来了,很高兴它能按着设计的思想与要求运作起来。 当然,这其中也有很多问题,第一、不够细心。比如在PCB制作过程中没有建立网络报表导致了部分连线没有倒入PCB板中,还有部分封装出现了错误。第二,实践环节上,这次课设是对我所学的理论课程的一次检验,对于这次单片机综合课程实习,使我们的动手能力得到提升,同时纠正我们对“系统”这一概念以往的错误理解。 就实现功能来说,设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个

13、过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。在已度过的大学时间里,我们大多数接触的是理论课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似实习就为我们提供了良好的实践平台。同时这次实习给我们带来了很多启发: 首先,查阅资料的必要性。在做本次实习的过程中,我们感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机实习,但我们不是艺术家,他们可以抛开实际尽情在幻想的

14、世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计,我们能做的就是理论结合实际。 其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。 再次,在实习之前,我们要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应

15、该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中最后,我们在这次实习中我们使用了分模块焊接,分模块测试的方法进行硬件电路的焊接和测试,这是我们最宝贵的收获,这样做可以避免走很多弯路。使得调试也条理分明。总体上说,这次实习中收获很多,感触也很多。参考文献1刘凤然.基于单片机的超声波测距系统J.2胡汉才.单片机原理及其接口技术M.北京:清华大学出版社3谭洪涛,张学平.单片机设计测距仪原理及其简单应用J

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1