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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

完整版基于AT89C51单片机的超声波测距仪的毕业设计论文.docx

1、完整版基于AT89C51单片机的超声波测距仪的毕业设计论文基于AT89C51单片机的超声波测距仪的设计 【摘要】 AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写10000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89C51在众多嵌入式控制应用系统中得到广泛应用。这次设计主要是利用AT89C51单片机、HC-SR04超声波传感器、蜂鸣器完成测距

2、报警系统的制作,将AT89C51作为主控制芯片,利用超声波对物体的感应,将前方物体的距离探测出来,然后单片机处理运算,与设定的报警距离值进行比较判断,当测得距离小于设定值时,AT89C51发出指令控制蜂鸣器报警。【关键词】:AT89C51单片机、HC-SR04超声波传感器、蜂鸣器ABSTRACTAT89C51 is a low power consumption, system programmable) can wipe again and again 1000 times of Flash memory read-only applications, device adopts syste

3、m and 80 c51 pin chip integrates general 8-bit CPU and ISP Flash memory cell, AT89C51 is widely applied In many embedded control applications.This design is mainly made using AT89C51 SCM, HC-SR04 ultrasonic sensor, buzzer completed ranging alarm system,the AT89C51 as the main control chip,the use of

4、 ultrasonic sensing of object,the detected objects in front of the distance,then the MCU processing operations,and the set alarm distance to compare the value of judgment,when the measuring distance is smaller than the set value,AT89C51 sends out a command to control the buzzer alarm.【KEY WORDS】: AT

5、89C51 Single chip microcomputer、HC-SR04 ultrasonic sensor、Buzzer目录一、绪论 31.1课题研究背景及意义 3二 、总体设计方案及论证 32.1 总体方案设计 3三、硬件实现及单元电路设计 43.1 主控制模块 43.2 电源设计 53.3 超声波测试模块 63.4 超声波传感器原理 63.5 测距分析 73.6 时钟电路的设计 83.7 复位电路的设计 93.8 声音报警电路的设计 103.9 显示模块 10四、软件设计 104.1 主程序工作流程图 10五、总结 12六、参考文献 13附 录 14附件1:原理图 14附件2:实物

6、图 15一、绪论 1.1课题研究背景及意义随着社会的发展,人们对于距离的敏感度越来越高,生活上对距离的感知也越来越敏感,因此测距仪也受到了极大的欢迎。它主要有三类,一类是激光测距仪,是根据光电元件接收目标反射的激光束来计算出测距者到目标的距离。另一类是红外测距仪,利用红外线传播不扩散的原理进行测距,但方向性差。还有一类是超声波测距仪,但也有局限性,传播需要介质,超声波发射器向某一方向发射超声波,在发射的同时开始计时,碰到障碍物后就立即返回来,超声波接收器收到反射波就立即停止计时。超声波测距是一种非接触可直接检测技术,它对光线和被测对象的颜色等没有要求,与其它仪器相比更卫生,更耐高温、等恶劣环境

7、,具有少维护、可靠性高、寿命长等优点。利用超声波检测往往比较快捷、性能稳定、能够实现实时检测等优点,所以它广泛的应用在全自动机器人,汽车倒车雷达等研制方面。二 、总体设计方案及论证2.1 总体方案设计本设计主要包括了硬件和软件设计两部分。按模块可划分为数据采集、按键控制、数码管显示、蜂鸣器报警四个子模块。电路结构可划分为:超声波传感器、蜂鸣器、单片机控制电路。就此设计的核心模块来说,单片机就是设计的中心单元,所以此系统也是单片机应用系统的一种应用。单片机应用系统也是有硬件和软件组成。硬件包括单片机、输入输出设备、以及外围应用电路等组成的系统,软件是各种工作程序的总称。单片机应用系统的研制过程包

8、括总体设计、硬件设计、软件设计等几个阶段。系统采用STC89C51单片机作为核心控制单元,当测得的距离小于设定距离时,主控芯片将测得的数值与设定值进行比较处理。然后控制蜂鸣器报警。系统总体的设计方框图如图1所示。图1 系统方框图三、硬件实现及单元电路设计3.1 主控制模块主控制最小系统电路如图2所示。图2 最小系统 硬件电路总设计见图3,从以上的分析可知在本设计中要用到如下器件: STC89C51、超声波传感器、按键、四位数码管、蜂鸣器等一些单片机外围应用电路。其中D1为电源工作指示灯。电路中用到3个按键,一个是设定键, 一个加键,一个减键。图3 总设计电路图3.2 电源设计电源部分的设计采用

9、3节5号干电池4.5V供电。3.3 超声波测试模块 超声波模块采用现成的超声波模块,该模块可提供 2cm-400cm 的非接触式距离感测功能,测距精度可达高到 3mm。模块包括超声波发射器、接收器与控制电路。基本工作原理:采用 IO 口 TRIG 触发测距,给至少 10us 的高电平信号;模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340MS)2。实物如下图4。其中VCC 供5V 电源,GND 为地线,TRIG 触发控制信号输入,ECHO 回响

10、信号输出等四支线。 超声波探测模块HC-SR04的使用方法如下:IO口触发,给Trig口至少10us的高电平,启动测量;模块自动发送8个40Khz的方波并随时检测是否有信号返回,有信号返回,通过Echo输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平时间*340) 2,单位为m。程序中测试功能主要由两个函数完成。 实现中采用定时器0进行定时测量,8分频,TCNTT0预设值0XCE,当timer0溢出中断发生2500次时为125ms,计算公式为(单位:ms):T = (定时器0溢出次数 * (0XFF - 0XCE) 1000 其中定时器0初值计算依据分频不同而有

11、差异。 3.4 超声波传感器原理市面上常见的超声波传感器多为开放型,其内部结构如图5所示,一个复合式振动器被灵活地固定在底座上。该复合式振动器是由谐振器以及一个金属片和一个压电陶瓷片组成的双压电晶片元件振动器。谐振器呈喇叭形,目的是能有效地辐射由于振动而产生的超声波,并且可以有效地使超声波聚集在振动器的中央部位。当电压作用于压电陶瓷时,就会随电压和频率的变化产生机械变形。另一方面,当振动压电陶瓷时,则会产生一个电荷。利用这一原理,当给由两片压电陶瓷或一片压电陶瓷和一个金属片构成的振动器,所谓叫双压电晶片元件,施加一个电信号时,就会因弯曲振动发射出超声波。相反,当向双压电晶片元件施加超声振动时,

12、就会产生一个电信号。基于以上作用,便可以将压电陶瓷用作超声波传感器。图5 超声波内部结构超声波是一种在弹性介质中的机械振荡,其频率超过20KHz,分横向振荡和纵向振荡两种,超声波可以在气体、液体及固体中传播,其传播速度不同。它有折射和反射现象,且在传播过程中有衰减。3.5 测距分析超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340ms,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t2最常用的超声测距的方法是回声探测法,超声波发射器向某

13、一方向发射超声波,在发射时刻的同时计数器开始计时,碰到障碍物的阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时并计算出距离。以超声波在空气中的传播速度为340ms计算,根据定时器算出的时间t,就可以计算出发射点距障碍物面的距离s,即:s=340t2。 由于超声波也是一种声波,其声速V与温度有关。在使用时,如果传播介质温度变化不大,则可近似认为超声波速度在传播的过程中是基本不变的。如果对测距精度要求很高,则应通过温度补偿的方法对测量结果加以数值校正。声速确定后,只要测得超声波往返的时间,即可求得距离。这就是超声波测距的基本原理。如图6所示: 超声波发射 障碍物 S H 超声波接收

14、图6 超声波的测距原理 (3-1) (3-2)式中:L-两探头之间中心距离的一半.又知道超声波传播的距离为: ( 3-3)式中:v超声波在介质中的传播速度; t超声波从发射到接收所需要的时间.将(32)、(33)代入(3-1)中得: ( 3-4)其中,超声波的传播速度v在一定的温度下是一个常数(例如在温度T=30度时,V=349ms);当需要测量的距离H远远大于L时,则(34)变为: ( 3-5) 所以,只要需要测量出超声波传播的时间t,就可以得出测量的距离H.3.6 时钟电路的设计AT89C51虽然有内部振荡电路,但要形成时钟,必须外部附加电路。AT89C51单片机的时钟产生方法有两种。内部

15、时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHZ到12MHZ之间选择。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2可在20pF到100pF之间取值,但在60pF到70pF时振荡器有较高的频率稳定性。所以本设计中,振荡晶体选择12MHZ,电容选择20pF。因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期

16、,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为112us,故而一个机器周期为1us。如图7所示为时钟电路。图7 时钟电路图3.7 复位电路的设计复位方法有上电自动复位和手动复位两种,单片机在时钟电路工作以后, 在RESET端持续给出2个机器周期的高电平时就可以完成复位操作。例如使用晶振频率为12MHz时,则复位信号持续时间应不小于2us。本设计采用的是自动复位电路。如图8示为复位电路。图8 复位电路图3.8 声音报警电路的设计如下图所示,用一个蜂鸣器和三极管、电阻接到单片机的P13口上,构成声音报警电路,如图9示为声音报警电路。图9 报警模块电路3.9 显示模块显示模块采用8段

17、数码管显示,用四个8550三极管对电流进行放大,来驱动四位数码管正常工作。图10 数码管电路四、软件设计 4.1 主程序工作流程图按上述工作原理和硬件结构分析可知系统主程序工作流程图如下图11所示;图11 主程序工作流程图超声波探测程序流程图:图12 超声波探测程序流程图五、总结本设计研究了一种基于单片机技术的超声波智能测距报警系统。该系统通过以ATC89C51单片机为工作处理器核心,超声波传感器,它是一种新颖的被动式超声波探测器件,能够以非接触测出前方物体距离,并将其转化为相应的电信号输出.该报警器的最大特点就是使用户能够操作简单、易懂、灵活;且安装方便、智能性高、误报率低。随着现代人们安全

18、意识的增强以及科学技术的快速发展,相信报警器必将在更广阔的领域得到更深层次的应用。六、参考文献 1 吴政江. 单片机控制红外线防盗报警器J. 锦州师范学院学报, 2001.2 宋文绪. 传感器与检测技术M. 北京: 高等教育出版社, 2004.3 余锡存. 单片机原理及接口技术M. 西安: 西安电子科技大学出版社, 2000.4 唐桃波, 陈玉林. 基于AT89C51的智能无线安防报警器 J. 电子设计应用, 2003, 5(6): 4951.5 李全利. 单片机原理及接口技术M. 北京: 北京航空航天大学出版社, 2004.6 薛均义, 张彦斌. MCS-51系列单片微型计算机及其应用M.

19、西安: 西安交通大学出版社, 2005.7 徐爱钧, 彭秀华. 单片机高级语言C51应用程序设计M. 北京: 北京航空航天大学出版社, 2006.8 康华光. 电子技术基础(模拟部分)M. 北京: 高等教育出版社, 2004.附 录附件1:原理图附件2:实物图附件3:程序#include reg51.,flag_key_set_en; 按键蜂鸣器使能uchar smg_i = 3; 显示数码管的个位数bit flag_300ms ;bit key_500ms ;long distance; 距离uint set_d; 距离bit flag_csb_juli; 超声波超出量程uint flag_

20、time0; 用来保存定时器0的时候的 按键的IO变量的定义uchar key_can; 按键值的变量uchar zd_break_en,zd_break_value; 自动退出设置界面uchar menu_shudu = 10; 用来控制连加的速度bit flag_lj_en; 按键连加使能bit flag_lj_3_en; 按键连3次连加后使能 加的数就越大了 uchar key_time,flag_value; 用做连加的中间变量uchar menu_1; 菜单设计的变量uchar a_a;*1ms延时函数*void delay_1ms(uint q) uint i,j; for(i=0

21、;iq;i+) for(j=0;j120;j+);*处理距离函数*void smg_display() dis_smg0 = smg_dudistance % 10; dis_smg1 = smg_dudistance 10 % 10; dis_smg2 = smg_dudistance 100 % 10 & 0x7f; *把数据保存到单片机内部eepom中*void write_eepom() SectorErase(0x2000); byte_write(0x2000, set_d % 256); byte_write(0x2001, set_d 256); byte_write(0x20

22、58, a_a); *把数据从单片机内部eepom中读出来*void read_eepom() set_d = byte_read(0x2001); set_d = 5) key_value = 0; key_new = 1; flag_lj_en = 0; 关闭连加使能 flag_lj_3_en = 0; 关闭3秒后使能 flag_value = 0; 清零 key_time = 0; write_eepom(); else if(P2 & 0x07) != 0x07) key_value +; 按键按下的时候 else key_value = 0; if(key_value = 5) ke

23、y_value = 0; key_new = 0; flag_lj_en = 1; 连加使能 zd_break_en = 1; 自动退出设置界使能 zd_break_value = 0; 自动退出设置界变量清零 flag_key_b_en = 1; 按键蜂鸣器使能 key_can = 20; if(key_500ms = 1) 连加 key_500ms = 0; key_new = 0; key_old = 1; zd_break_value = 0; if(key_new = 0) & (key_old = 1) switch(P2 & 0x07) case 0x06: key_can =

24、3; break; 得到k2键值 case 0x05: key_can = 2; break; 得到k3键值 case 0x03: key_can = 1; break; 得到k4键值 dis_smg3 = smg_dukey_can % 10; key_old = key_new; void smg_we_switch(uchar i) switch(i) case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break; case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_w

25、e4 = 1; break; case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break; case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break; *数码显示函数*void display() static uchar i; i+; if(i = smg_i) i = 0; P1 = 0xff; 段选 P3 = 0xf0 | (P3 & 0x0f); 位选 P3 = smg_wei | (P3 & 0x0f); 位选 smg_we_switch(

26、i); P1 = dis_smgi; 段选 void delay() _nop_(); 执行一条_nop_()指令就是1us _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); *超声波测距程序*void send_wave() c_send = 1; 10us的高电平触发 delay(); c_send = 0; TH0 = 0; 给定时器0清零 TL0 = 0; TR0 = 0; 关定时器0定时 flag_ = 1) menu_1 +; if(menu_1 = 2) menu_1 = 0; if(menu_1 = 0) menu_sh

27、udu = 20; dis_smg0 = smg_dudistance % 10; dis_smg1 = smg_dudistance 10 % 10 ; dis_smg2 = smg_dudistance 100 % 10 & 0x7f; smg_i = 3; if(menu_1 = 1) menu_shudu = 1; dis_smg0 = smg_duset_d % 10; dis_smg1 = smg_duset_d 10 % 10; dis_smg2 = smg_duset_d 100 % 10 & 0x7f ; dis_smg3 = 0x88; smg_i = 4; if(menu_1 = 1) 设置高温报警 if(flag_lj_3_en = 0) 三次连加之后速度加快 menu_shudu = 10 ; 500ms 加减一次 else menu_shudu = 1; 250ms 加减一次 if(key_can = 2) set_d + ; 按键按下未松开自动加三次 if(set_d 350) set_d = 350; dis_smg0 = smg_duset_d % 10; 取小数

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2