单片机课程设计超声波测距离_第1页
单片机课程设计超声波测距离_第2页
单片机课程设计超声波测距离_第3页
单片机课程设计超声波测距离_第4页
单片机课程设计超声波测距离_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、湖南工程学院课 程 设 计 任 务 书课程名称 单片机原理与应用 课 题 超声波测距系统设计 专业班级 学生姓名 学 号 指导老师 审 批 目录序言6第一章、总体设计原理6 1.1、超声波测距原理6 1.2、超声波测距系统框图8 1.3、程序流程图10第二章、系统硬件设计11 2.1、超声波模块电路11 2.2、数码管显示电路12 2.3、单片机最小电路12 2.4、键盘连接13第三章、系统软件设计143.1、主程序流程图143.2、子程序设计15第4章、调试结果21实验总结23参考文献24附录 A、整体电路图25附录B、程序清单26序言 由于超生波测距是一种非接触检测技术,不受光线、被测对象

2、颜色限制,较其他仪器更卫生,更耐潮湿、粉尘、高温、腐蚀等恶劣环境,具有少维护,不污染,高可靠,长寿命等特点。因此,超声波测距有着广泛的应用领域。利用超声波检测往往比较迅速,简单,计算方便,易于实现实时控制,并且在测量精度方面能达到工业使用要求。超声波测距主要应用于倒车雷达、建筑施工工地以及一些工业现场,例如:液位、井深、管道长度等场合。第一章、总体设计原理 本章主要介绍单片机超声波测距的主要原理,包括超声波测距的原理和STC89C52单片机的原理1.1、超声波测距原理 谐振频率高于20kHz的声波被称为超声波。超声波为直线传播频率越高、绕射能力越弱、但反射能力越强。利用超声波的这种性能就可制成

3、超声传感器、或称为超声换能器、它是一种既可以把电能转化为机械能、又可以把机械能转化为电能的器件或装置。换能器在电脉冲激励下可将电能转换为机械能、向外发送超声波、反之,当换能器处在接收状态时它可将声能(机械能)转换为电能。压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生器内部结构如图1-1所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。图1-1、超声波换能器

4、内部示意图超声波发射器向某一方向发射超声波在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停 止计时。超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距离S=Ct/2,式中的C为超声波波速。图1-2、超声波测距原理框图    由于超声波也是一种声波,其声速C与温度有关,表1列出了几种不同温度下的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返的时间,即可求得距离。

5、这就是超声波测距仪的机理。其系统框图如图1-2所示。表1 声速与温度关系表温度()-30-20-100102030100 1.2、STC89C52单片机原理STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工

6、串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。图1-3、STC89C52引脚图 1.3、超声波测距系统框图单片机控制器LED显示超声波发送超声波接收扫描驱动图1-4、超声波测距系统框图第二章、系统硬件设计硬件是一个机器的基础,没有硬件,所有机器都不存在,本章主要介绍单片机超声波测距的硬件原理。2.1、超声波模块电路 图2-1、超声波模块电

7、路 超声波模块如图2-1所示。从P2.6口给Trig口送一个10u的脉冲,超声波模块自动发出40Khz的超声波,单片机中断计时。当遇到障碍物时超声波返回,并将一个高平信号送入单片机,中断关闭。2.2、数码管显示电路图2-2、数码管显示电路显示电路采用采用LED数码管显示。本系统采用动态显示方式。该组数码管位共阳极数码管。当有低电平驱动时,数码管亮。2.3、单片机最小电路图2-3、最小单片机电路单片机最小电路是单片机能正常工作的最小外接电路单元。是设计电路的核心部分,也是整个作品最关键,最重要的部分。单片机最小电路包括:复位电路,晶振电路。2.4、键盘连接图2-4、矩阵键盘电路 该矩阵键盘采用扫

8、描式工作读入方式,扫描式键盘接口是一个输入输出接口,行是输入接口,而列式输出接口,输入接口主要功能是解决数据输入的缓冲问题,而列输出接口主要功能是进行数据保持能力。系统扫描键盘是若有键按下,则执行主程序相应程序,实现相应功能。第三章、系统软件设计 软件是一个机器的灵魂,没有软件,机器就是一堆废铁,所以软件是一个机器必不可少的部分,本章主要介绍单片机超声波测距的软件设计。3.1、主程序流程图系统初始化开始开机显示发送超声波查键计算距离显示结果无按键时开机显示;按1号键发送超声波;按2号键暂停;按3号键复位;图3-1、主程序流程图3.2、子程序设计3.2.1、延时程序void DelayUs2x(

9、unsigned char t) while(-t); void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); 3.2.2、键盘扫描程序 void key_scanf(void) if(p10=0) DelayMs(10); if(p10=0) a=1;if(p11=0) DelayMs(10); if(p11=0) a=0;if(p12=0) DelayMs(10); if(p12=0) a=0; disbuff0=0; disbuff1=0; disbuff2=0; disbuff3=

10、0; 3.2.3、超声波模块驱动程序void zd3() interrupt 3 /T1中断用来驱动超声波模块 key_scanf(); 每800ms就发送一次超声波 TH1=0xf8; 这样就能进行连续多次测距 TL1=0x30; timer+; if(timer>=400) timer=0; TX=1; /800MS 启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _n

11、op_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();TX=0;/给超声波模块发送端一个10us的高电平,就能发送40khz的超声波 3.2.4、计算程序 void Conut(void)float S1; time=TH0*256+TL0; TH0=0; TL0=0; S1=(time*1.7)/100; /算出来是CM S=S1*10; if(S>=7000)|flag=1) /超出测量范围显示“-” flag=0; disbuff0=10; /“-” disbuff1=10; /“-” disbuff2=10; /“

12、-” disbuff3=10; /“-” else disbuff0=S/1000; disbuff1=S/100%10; disbuff2=S/10%10; disbuff3=S%10; 3.2.5、数码管显示程序 4位共阳数码管的驱动程序如下: void Display(void) /扫描数码管 p20=0; p21=1; p22=1; p23=1; P0=discodedisbuff0;/第1个数码管点亮 DelayUs2x(20); P0=0xff; p20=1; p21=0; p22=1; p23=1; P0=discodedisbuff1;/第2个数码管点亮 DelayUs2x(2

13、0); P0=0xff; p20=1; p22=0; p21=1; p23=1; P0=(discodedisbuff2)&0x7f;/第3个数码管点亮 DelayUs2x(20); P0=0xff; p20=1; p23=0; p21=1; p22=1; P0=discodedisbuff3;/第4个数码管点亮 DelayUs2x(20); P0=0xff; p20=1; p23=1; p21=1; p22=1; /DelayMs(2);/显示小数第四章、调试结果按第二章和第三章的原理接好电路图,把程序下载进去,接下来我们就能看到结果了。如图4-1所示,其显示结果为20.6CM。图4

14、-1、LED显示结果这个设计需要用到三个按键,键1、键2、键3。其中键1为开始键,键2为暂停键,键3为复位键。先把单片机接好电源,按下键1就开始测距,距离显示在LED显示器上,按下键2就会把显示结果暂停,如图4-1所示。按下键3,显示器自动复位为0实验总结两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职

15、业工作前一个必不少的过程”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础通过这次课程设计,本人在多方面都有所提高。通过这次课程设计,综合运用本专业所学课程的理论和生产实际知识进行一次冷冲压模具设计工作的实际训练从而培养和提高学生独立工作能力,巩固与扩充了冷冲压模具设计等课程所学的内容,掌握冷冲压模具设计的方法和步骤,掌握冷冲压模具设计的基本的模具技能懂得了怎样分析零件的工艺性,怎样确定工艺方案,了解了模具的基本结构,提高了计算能力,绘图能力,熟悉了规范和标准,同时各科相关

16、的课程都有了全面的复习,独立思考的能力也有了提高。在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。在此感谢我们的指导老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次模具设计的每个实验细节和每个数据,都离不开老师您的细心指导。而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。 由于本人的设计能力有限,在设计过程中难免出

17、现错误,恳请老师们多多指教,我十分乐意接受你们的批评与指正,本人将万分感谢。参考文献单片机原理与应用(第2班) 王迎旭 主编 机械工业出版社51单片机课程设计 周向红 主编 华中科技大学出版社 附录 A 、整体电路图附录 B、程序清单 #include<reg52.h> #include <intrins.h> #define RX p26 #define TX p27 sbit p26=P26; sbit p27=P27; sbit p20=P20; sbit p21=P21; sbit p22=P22; sbit p23=P23; sbit p10=P10; sbi

18、t p11=P11; sbit p12=P12; unsigned int time=0; unsigned int timer=0; unsigned char posit=0,a=0; unsigned long S=0; bit flag =0; unsigned char const discode = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/; unsigned char disbuff4 = 0,0,0,0,; void key_scanf(void); void DelayUs2x(unsig

19、ned char t) while(-t); void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); void Display(void) /扫描数码管 p20=0; p21=1; p22=1; p23=1; P0=discodedisbuff0; DelayUs2x(20); P0=0xff; p20=1; p21=0; p22=1; p23=1; P0=discodedisbuff1; DelayUs2x(20); P0=0xff; p20=1; p22=0; p21=1; p23=1

20、; P0=(discodedisbuff2)&0x7f; DelayUs2x(20); P0=0xff; p20=1; p23=0; p21=1; p22=1; P0=discodedisbuff3; DelayUs2x(20); P0=0xff; p20=1; p23=1; p21=1; p22=1; /DelayMs(2); /*/ void Conut(void)float S1; time=TH0*256+TL0; TH0=0; TL0=0; S1=(time*1.7)/100; /算出来是CM S=S1*10; if(S>=7000)|flag=1) /超出测量范围显示

21、“-” flag=0; disbuff0=10; /“-” disbuff1=10; /“-” disbuff2=10; /“-” disbuff3=10; /“-” else disbuff0=S/1000; disbuff1=S/100%10; disbuff2=S/10%10; disbuff3=S%10; /*/ void zd0() interrupt 1 /T0中断用来计数器溢出,超过测距范围 flag=1; /中断溢出标志 /*/ void zd3() interrupt 3 /T1中断用来扫描数码管和计800MS启动模块 key_scanf(); TH1=0xf8; TL1=0x30; Display(); timer+; if(timer>=400) timer=0; TX=1; /800MS 启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _no

温馨提示

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

评论

0/150

提交评论