《超声波报警器.doc》由会员分享,可在线阅读,更多相关《超声波报警器.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流超声波报警器.精品文档. 南华大学电气工程学院 电子技术课程设计任务书设计题目: 超声波物体防失报警器 专 业: 本10通信01班 学生姓名: 黄超 学 号: 20104400134 起迄日期: 2012年9月24日 2012年12月21日 指导教师: 黄智伟 教研室主任: 王 彦 超声波物体防失报警器一 摘要 本设计采用超声波测距,可用作检测空间中是否有物体存在,并检测距离,同时通过led液晶屏显示出来,如果距离在设定的范围内则通过声音来提示用户,从而达到物体防失的效果。 本设计硬件部分主要由单片机控制电路、超声波发射电路、超声波接收电路、
2、led显示电路和报警电路组成,软件部分主要由主程序、超声波发射接收子程序、距离计算子程序及显示子程序等部分组成。本设计由AT89C2051单片机控制时间计数,计算超声波自发射至接收的往返时间,利用超声波在空气中的传输速度,从而得到实测距离。该设计的电路设计合理简单、工作稳定、性能良好、检测速度快、计算简单、易于做到实时控制。关键词:STC89S51、超声波、LED、报警二课程设计要求 综合运用已学习过模拟电路和数字电路等知识,阅读相关集成电路芯片资料和相关文献,了解电子电路设计的有关知识,方法和特点,掌握基本的电子电路设计和芯片使用方法。 设计电路,安装调试或仿真,分析实验结果,并写出设计说明
3、书,语言流畅简洁,文字不得少于3500字。要求图纸布局合理,符合工程要求,使用Protel软件绘出原理图(SCH)和印制电路板(PCB),器件的选择要有计算依据。 目录1.系统整体设计11.1系统整体设计框图11.2硬件选型11.2.1超声波探头的中心频率及主要参数11.2.2单片机的选择21.2.3其他元器件的选择22.硬件电路设计22.1单片机控制电路设计22.2超声波模块32.3报警电路设计5 2.3 测温及显示电路 -53. 工作原理-64. 软件系统设计 -74.1 程序流程设计74.2报警器程序75.总结8附录91. 1系统的整体设计 本设计以AT89S51单片机为核心,通过扫描按
4、键的状态,测距模块选用HC-SR04超声波测距模块,由单片机产生驱动工作的控制信号,通过模块的返回信号,由P1.1来接收超声波反射信号,当接收到该信号后,关闭计数器T1,记下此时的时间,转入执行计算距离子程序,由子程序计算距离,并启动LED显示其数值,同时,当到达危险距离时发出滴答滴答的响声。整个系统结构框图如图2所示:单片机AT89S51电源电路测温电路复位电路报警电路超声波发射电路Led液晶显示模块超声波接收电路1.2 硬件的选择 1.2.1超声波模块的选择 (1)中心频率 中心频率,即压电晶片的谐振频率。当施加于它两端的交变电压频率等于晶片的中心频率时,输出能量最大,传感器的灵敏度最高。
5、中心频率最高,测距越短,而分辨力越高。常见超声波传感器的中心频率有30KHz、40KHz、75KHz、200KHz、400KHz等。本设计采用40KHZ的模块HC-SR04。(2)灵敏度灵敏度的单位是分贝(dB),数值为负,它主要取决于晶片材料及制造工艺。(3)指向角指向角是超声波传感器方向性的一个参数,指向角越小,方向性越强。一般为几度至几十度。HC-SR04性能指标如下表所示:1.2.2单片机的选择单片机是系统软件的载体,是控制系统的核心。因此其性能将直接影响系统的稳定性。选择好的单片机不仅关系到系统的精度、稳定性,而且还有利于减少系统成本。根据系统设计的要求以及总体设计思路对所选择的单片
6、机要求进行进一步的概括。本设计由于超声波采用软件驱动,仅需要一个定时器,一个计数器,常用的51系列单片机满足需要。因此,选用AT89C51单片机。 1.2.3其他元器件的选择显示部分是采用LCD1602显示,单片机的外围电路元件选用11.0592MHz的晶振,报警电路选用蜂鸣器。2. 硬件电路设计2.1单片机控制电路设计单片机外围电路主要有键盘电路、电源电路、复位电路、时钟电路、串口电路,对于本设计来说,键盘电路主要控制单片机执行指令的状态,时钟电路、电源电路、复位电路构成单片机的最小系统。由于本设计本生是为了做出汽报警器的实体,并着重阐述汽报警器的原理,所以舍去了键盘部分,又因为,超声波在空
7、气中的速度受温度的影响所以添加的测温度的模块,来修正声速。 单片机主体电路2.2超声波模块本设计利用的是成品超声波测距模块不是传统的传感器,从而简化的电路。模块的参数如下。如图接线vcc接+5v。Gnd接地。Trig为控制触发端。Echo为反悔信号输出。时序图如下电路图如下2.3报警电路考虑到本设计的实际需求,系统只需提供简单的嘀嘀声作为报警信号即可。所以,报警电路不需要复杂的设计,只需用NPN三极管控制蜂鸣器发声即可,具体电路如下图所示。2.4测温电路及显示电路测温用的是ds18b20温度传感器,显示采用的是led16023 工作原理单片机通过I/O口与超声波传感器相连,工作时通过p1.0口
8、控制其开启工作,如果有反回信号就启动定时器,检测高电平持续的时间,读出温度,计算实时声速,然后计算出距离,判断出是否要报警 并显示在液晶屏幕上。4软件系统设计4.1 程序流程设计开始参数初始化是否收到回波?发射超声波、启动定时器数据处理计算距离是否在报警距离?报警显示距离YNYN4.2 程序详单见附录5. 总结 通过2个月的学习,对这个报警器的制作,培养了我各方面的能力,包括学习能力,动手能力和实际操作能力。我通过查阅资料深入了解了51系列单片机的工作方式,熟悉了传感器的应用,并熟练的绘制pcb图的能力,亲手洗出了pcb板,并制作成功,这是对我的极大鼓舞,也是对我努力的肯定,增强了我对电子制作
9、的兴趣 ,让我学到了很多,设计使用了单片机,液晶和超声波传感器来实现功能,简单易行,而且直观,成本也不是很高本。系统具有测量精确、性能稳定、成本低廉、电路简单实用等特点,能满足在实际生活中的需求.参考文献:(1) 黄智伟全国大学生电子设计竞赛技能训练M北京:北京航空航天大学出版社,2011(2) 黄智伟全国大学生电子设计竞赛制作实训M北京:北京航空航天大学出版社,2011(3) 黄智伟全国大学生电子设计竞赛系统设计M北京:北京航空航天大学出版社,2011(4) 黄智伟全国大学生电子设计竞赛电路设计M北京:北京航空航天大学出版社,2011(5) 黄智伟全国大学生电子设计竞赛 常用电路模块制作M北
10、京:北京航空航天大学出版社,2011(6) 黄智伟等.基于NI multisim的电子电路计算机仿真设计与分析M北京:电子工业出版社,2007(7) 黄智伟.印制电路板(PCB)设计技术与实践M北京:电子工业出版社,2009(8) 高吉祥等.电子技术基础实验与课程设计M北京:电子工业出版社,2002(9) 吴运昌.模拟集成电路原理与应用M广州:华南理工大学出版社,2001年附录:元件清单完整的原理图Pcb图实物图:开发板测试图实物测试图程序:#include #define uchar unsigned char#define uint unsigned intfloat time;uchar
11、 T;int a;uint distance,v;void speaker();bit flag ; /标志位/*位定义*/sbit Trig =P10; /超声波信号发生引脚sbit Echo=P11; /超声波信号接收引脚sbit spk=P15;/喇叭端口sbit lcdrs=P26; /1602命令/数据sbit lcdrw=P25; /1602读/写sbit lcde=P27; /使能sbit dq=P37;/DS18B20的输出端uchar table1=distance:;uchar table2=cm;uchar table3=error;/* 函数声明*/void delay
12、(uint a);void delay_20us();void delay_50us(uint t);/延时50usvoid delay_1ms(uint count); /延时1msvoid init_ds18b20(); /初始化void write_1bite_ds18b20(uchar dat);/函数声明uchar read_1bite_ds18b20(void);uchar read_ds18b20(void);void write_commond(uchar commond); /1602写指令void write_data(uchar data_); /1602写数据void
13、init_1602(); /1602初始化程序void write_temp(uint t_emp); /将读出的超声波数据在液晶上显示void count(void); /计算距离void distance_display(); /显示距离void temperature_display(); /显示温度void speed_display(); /显示声速/*延时程序*/void delay(uint a) /delay(80)是798us;delay(14)是154us /delay(4)是56us delay(5)是66uswhile(a-);void delay_20us() /延时
14、20usuchar a ; for(a=0;a0;t-)for(j=19;j0;j-);void delay_1ms(uint count) /延时1msuint i,j;for(i=0;icount;i+)for(j=0;j120;j+);void speaker()uint i;for(i=0;i200;i+)/喇叭发声的时间循环,改变大小可以改变发声时间长短delay(80); /参数决定发声的频率,估算值,可以自行更改参数并spk=!spk;spk=0; /喇叭停止工作,间歇的时间,可更改delay(20); /* ds18b20*/void init_ds18b20() /ds18b
15、20初始化uchar t;dq=1;delay(10);dq=0;delay(80);dq=1;delay(14);t=dq;delay(20);void write_1bite_ds18b20(uchar dat)/向ds18b20写入1比特数据uchar i;for(i=0;i1;uchar read_1bite_ds18b20(void)/从ds18b20读取1比特数据uchar a,i;for(i=0;i1;dq=1;if(dq=1)a=a|0x80;delay(4);return(a);uchar read_ds18b20(void) /读取其中的温度uchar a,b,t;init
16、_ds18b20();write_1bite_ds18b20(0xcc);/skip romwrite_1bite_ds18b20(0x44); /启动一次温度转换init_ds18b20();write_1bite_ds18b20(0xcc);write_1bite_ds18b20(0xbe);/读取暂存器的内容a=read_1bite_ds18b20();/读取温度的LSBb=read_1bite_ds18b20();/读取温度的MSBt=(a4)|(b128) /最高位s是符号位,超过7二进制位数t=t+1; /所表示的十进制数是,取反加一return(t);/* lcd_1602*/v
17、oid write_commond(uchar commond) /1602写指令lcde=0;lcdrs=0;lcdrw=0;P0=commond;delay_50us(10); lcde=1;delay_50us(20);lcde=0;void write_data(uchar data_) /1602写数据lcde=0;lcdrs=1;lcdrw=0;P0=data_;delay_50us(10);lcde=1;delay_50us(20);lcde=0;void init_1602() /1602初始化程序 delay_50us(300); /延时15ms,复位过程write_comm
18、ond(0x38); /不检测忙信号delay_50us(100);write_commond(0x38); /不检测忙信号delay_50us(100);write_commond(0x38); /不检测忙信号write_commond(0x38);write_commond(0x08); /显示关闭write_commond(0x01); /显示清屏write_commond(0x06); /显示光标移动设置,当读或写一个字符后,地址指针加一,且光标加一write_commond(0x0c); /显示开及光标设置/*超声波模块*/void write_temp(uint t_emp) /将
19、读出的超声波数据在液晶上显示 uchar i;uchar bai,shi,ge; bai=(t_emp%1000)/100; shi=(t_emp%100)/10; ge=t_emp%10;write_commond(0x80);for(i=0;i9;i+)write_data(table1i);delay_50us(10); write_commond(0x8a); write_data(0x30+bai); delay_50us(10); write_data(0x30+shi); delay_50us(10); write_data(0x30+ge); delay_50us(10);wr
20、ite_commond(0x8e);for(i=0;i2;i+)write_data(table2i);delay_50us(10);/*温度补偿的距离计算及温度、距离、声速的显示*/void count(void) /计算距离time=TH0*256+TL0; /计算时间,单位usTH0=0; TL0=0; T=read_ds18b20(); /读取温度值,单位摄氏度if(T=127)v=331.4+0.607*T; /温度为正值elsev=331.4-0.607*T; /温度为负值 distance=(time*v)/20000+1; /算出来是CMvoid distance_displa
21、y() /显示距离 uchar i; if(distance=450)|flag=0)/超出测量范围显示失败 write_commond(0x01);write_commond(0x80); for(i=0;i5;i+)/显示errorwrite_data(table3i);delay_50us(10); else write_temp(distance); /没超出范围正常显示 void temperature_display() /显示温度uchar t1,t2;write_commond(0x80+0x40+0x00);write_data(T);delay_50us(10);write
22、_data(:);delay_50us(10);write_commond(0x80+0x40+0x05);write_data(0xdf); /显示摄氏度的圆圈delay_50us(10);write_data(C);delay_50us(10);write_commond(0x80+0x40+0x02);if(T=127)write_data(+); /温度为正值显示“+号elsewrite_data(-); /温度为负值显示-号t1=T/10; /温度的十位t2=T%10; /温度的个位write_commond(0x80+0x40+0X03);write_data(0x30+t1);d
23、elay_50us(10);write_data(0x30+t2);delay_50us(10);void speed_display() /显示声速uchar ge,shi,bai;bai=v/100;shi=v%100/10;ge=v%10;write_commond(0x80+0x40+0x08);write_data(V);delay_50us(10);write_data(:);delay_50us(10);write_commond(0x80+0x40+0x0d);write_data(m);delay_50us(10);write_data(/);delay_50us(10);w
24、rite_data(s);delay_50us(10);write_commond(0x80+0x40+0x0a);write_data(0x30+bai);delay_50us(10);write_data(0x30+shi);delay_50us(10);write_data(0x30+ge);delay_50us(10);/*启动超声波模块*/void StartModule() /启动超声波模块 Trig=1; delay_20us() ; /发送一个大于10us的脉冲 Trig=0;/*定时器0初始化*/void time0_int()TMOD=0x01; /设T0为方式1,GATE
25、=1; TH0=0; TL0=0; ET0=1; /允许T0中断 EA=1; /开启总中断 /*主函数*/void main() delay_1ms(500); /启动等待,等LCM讲入工作状态 init_1602(); /LCM初始化 time0_int(); Trig=0; Echo=0;while(1) StartModule(); /启动超声波模块 flag=1; while(!Echo); /当echo为0时等待,为1时开始计数 TR0=1; /开启计数 while(Echo); /当echo为1时等待,为0时关闭计数TR0=0; /关闭计数 count(); /计算距离 distance_display(); /显示距离 if( distance50) speaker();temperature_display(); /显示温度speed_display(); /显示声速 delay_1ms(60); /60MS/*定时器0中断程序*/void time0() interrupt 1 /T0中断用来计数器溢出 flag=0; /中断溢出标志,失败 TH0=0; TL0=0; TR0=0; /关闭计数