单片机超声波距离传感器课程设计.docx
《单片机超声波距离传感器课程设计.docx》由会员分享,可在线阅读,更多相关《单片机超声波距离传感器课程设计.docx(22页珍藏版)》请在冰豆网上搜索。
![单片机超声波距离传感器课程设计.docx](https://file1.bdocx.com/fileroot1/2023-7/12/6656ab97-293c-4968-bd24-3fc3b99600e6/6656ab97-293c-4968-bd24-3fc3b99600e61.gif)
单片机超声波距离传感器课程设计
单片机超声波距离传感器课程设计
太原科技大学
TAIYUANUNIVERSITYOFSCIENCE&TECHNOLOGY
单片机原理及其应用
课程设计
—距离传感器设计
学号:
XXXXXXX
班级:
SXXXXXXXXX
姓名:
XXX
指导教师:
XXXXX
日期:
2016.01.04
绪论
超声波是指频率在20kHz以上的声波,它属于机械波的范畴。
近年来,随着电子测量技术的发展,运用超声波作出精确测量已成可能。
随着经济发展,电子测量技术应用越来越广泛,而超声波测量精确高,成本低,性能稳定则备受青睐。
超声波是指频率在20kHz以上的声波,它属于机械波的范畴。
超声波也遵循一般机械波在弹性介质中的传播规律,如在介质的分界面处发生反射和折射现象,在进入介质后被介质吸收而发生衰减等。
正是因为具有这些性质,使得超声波可以用于距离的测量中。
随着科技水平的不断提高,超声波测距技术被广泛应用于人们日常工作和生活之中。
一般的超声波测距仪可用于固定物位或液位的测量,适用于建筑物内部、液位高度的测量等。
超声在空气中测距在特殊环境下有较广泛的应用。
利用超声波检测往往比较迅速、方便、计算简单、易于实现实时控制,并且在测量精度方面能达到工业实用的指标要求,因此为了使移动机器人能够自动躲避障碍物行走,就必须装备测距系统,以使其及时获取距障碍物的位置信息(距离和方向)。
因此超声波测距在移动机器人的研究上得到了广泛的应用。
同时由于超声波测距系统具有以上的这些优点,因此在汽车倒车雷达的研制方面也得到了广泛的应用。
本次课程设计是基于STC89C52RC单片机设计的,包括LED指示灯、复位电路、数码管显示电路、超声波模块几个部分。
经过设计,可以使数码管显示物体离超声波模块距离的功能。
第二章总体设计
1.系统框图:
图1系统框图
2.在单片机的选用上,一般需要考虑以下几点:
(1)单片机的基本参数例如速度,程序存储器容量,I/O引脚数量
(2)单片机的增强功能,例如看门狗,双指针,双串口,RTC(实时时钟),EEPROM,扩展RAM,CAN接口,I2C接口,SPI接口,USB接口。
(3)Flash和OTP(一次性可编程)相比较,最好是Flash。
(4)封装IP(双列直插),PLCC(PLCC有对应插座)还是贴片。
DIP封装在做实验时可能方便一点。
(5)工作温度范围,工业级还是商业机。
如果设计户外产品,必须选用工业级。
(6)功耗,尽量选用较低功耗的。
(7)工作电压范围。
(8)供货渠道畅通。
能申请样片,小批量购买有现货。
(9)价格低。
(10)有服务商。
(11)烧录器价格低。
(12)仿真器便宜。
(13)保密性能好。
(14)抗干扰性能好。
(15)和其他外设芯片放在一起的综合考虑。
在本次课程设计中,对单片机的要求较低,综合考虑后选用STC89C52单片机。
表一是STC89C52单片机的主要功能:
表一
主要功能特性
兼容MCS51指令系统
8K可反复擦写FlashROM
32个双向I/O口
256x8bit内部RAM
3个16位可编程定时/计数器中断
时钟频率0-24MHz
2个串行中断
可编程UART串行通道
2个外部中断源
共6个中断源
2个读写中断口线
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能
3.STC89C52单片机引脚及其功能:
图2STC89C52单片机
STC89C52单片机:
①主电源引脚(2根)
VCC(Pin40):
电源输入,接+5V电源
GND(Pin20):
接地线
②外接晶振引脚(2根)
XTAL1(Pin19):
片内振荡电路的输入端
XTAL2(Pin20):
片内振荡电路的输出端
③控制引脚(4根)
RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号
PSEN(Pin29):
外部存储器读选通信号
EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
④可编程输入/输出引脚(32根)
STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
PO口(Pin39~Pin32):
8位双向I/O口线,名称为P0.0~P0.7
P1口(Pin1~Pin8):
8位准双向I/O口线,名称为P1.0~P1.7
P2口(Pin21~Pin28):
8位准双向I/O口线,名称为P2.0~P2.7
P3口(Pin10~Pin17):
8位准双向I/O口线,名称为P3.0~P3.7
2、超声波测距原理:
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。
超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:
s=340t/2最常用的超声测距的方法是回声探测法,超声波发射器向某一方向发射超声波,在发射时刻的同时计数器开始计时,超声波在空气中传播,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。
超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物面的距离s,即:
s=340t/2。
由于超声波也是一种声波,其声速V与温度有关。
在使用时,如果传播介质温度变化不大,则可近似认为超声波速度在传播的过程中是基本不变的。
如果对测距精度要求很高,则应通过温度补偿的方法对测量结果加以数值校正。
声速确定后,只要测得超声波往返的时间,即可求得距离。
这就是超声波测距仪的基本原理如图
如图所示:
图3超声波的测距原理
第三章硬件部分
一、电源输入电路:
对于整个设计而言,首要问题就是解决系统的供电问题。
要求电源模块稳定可靠。
在本课程设计中,电源供电模块的电源可以通过计算机的USB口供给,也可使用外部稳定的5V电源供电模块供给。
在电源电路中接入了电源指示LED以示是否正常工作。
二、时钟/晶振电路:
每个单片机系统都有晶振,晶振的作用非常大,它结合单片机内部的电路,产生单片机所必需的时钟频率。
单片机的一切指令的执行都是建立在这个基础上的。
晶振提供的时钟频率越高,单片机的执行速度越快。
时钟可以由内部方式产生或外部方式产生。
(a)内部方式时钟电路(b)外部方式时钟电路
图4时钟电路
在本次课程设计中采用内部方式时钟电路,电路图如图5所示。
三、复位电路[6]
复位电路的作用:
在上电或复位的过程中,控制CUP的复位状态。
这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就开始工作。
防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。
同时,复位操作还对其他一些寄存器有影响。
单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。
当复位电平持续两个机器周期以上时复位有效。
复位电平的持续时间必须大于单片机的两个机器周期。
具体数值可以由RC电路计算出时间常数。
复位操作有上电自动复位相按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图6(a)所示。
这佯,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。
按键手动复位有电平方式和脉冲方式两种。
其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图6(b)所示;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的,其电路如图6(c)所示。
(a)上电复位
(b)按键电平复位
(c)按键脉冲复位
6复位电路
在本次课程设计中,采用按键脉冲复位电路。
电路图如图7所示:
图7复位电路
四、数码管显示电路[3][5]
共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。
通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。
当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
数码管有二位一体、四位一体等类型,当多位一体时,他们内部的公共端是独立的,而负责显示什么数字的段线全部连接在一起,独立的公共端可以控制多位一体数码管中的哪一位亮,而连接在一起的段线可以可以控制这个能点亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫“段选线”,有了这两根线后,通过单片机及外部驱动电路可以控制任意的数码管显示任意的数字了。
当多位数码管应用与某一系统时,它们的“位选”是可独立控制的,而“段选”是连接在一起的,我们可以通过位选信号控制那几个数码管亮。
五、超声波模块电路:
本系统采用超声波模块URF04进行测距,该模块使用直流5V供电,理想条件下测距可达500cm,广泛应用于超声波测距领域,模块性能稳定,测度距离精确,盲区(2cm)超近。
超声波测距原理:
单片机给超声波传感器模块一个触发电平,超声波传感器的发射管自动发送8个40KHZ的方波,当超声波检测到障碍物时就会信号返回,接收管接收到信号返回之后,单片机处理从单片机发送信号到接收到返回信号这段时间里超声波传感器模块输出高电平。
这段高电平持续时间即为超声波从发射到返回的传播时间。
测量距离=(高电平持续时间*波速)/2。
模块构成原理图
第四章软件部分
一、主流程图:
主程序流程图
二、程序设计:
软件分为两部分,主程序和中断服务程序。
主程序完成初始化工作、超声波发射和接收顺序的控制。
外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出、数码管显示等工作。
主程序首先是对超声波模块初始化,通过延时函数产生10us的高电平,再将计数器初始化,判断超声波接收端是否收到回波,进而执行外部中断程序。
中断程序首先关闭外部中断,关闭计数器,然后读出计数值,根据
公式计算距离,然后将结果送往数码管显示。
三、程序[1][4]:
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineulongunsignedlong
uinttime=0;
uinttimer=0;
ucharposit=0;
ulongS=0;
uintqian;
uintbai;
uintge;
sbitRX=P2^0;//接线:
TRIG接P2.1ECH0接P2.0
sbitTX=P2^1;
sbitdula=P2^6;
sbitwela=P2^7;
bitflag=0;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x08};
voiddelay(uintx)//延时
{
uchari,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
voiddisplay(qian,bai,ge)//扫描数码管
{
dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay
(1);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay
(1);
dula=1;
P0=table[qian];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay
(1);
}
voidConut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100;//算出来是CM
if((S>=450)||flag==1)//超出测量范围显示“-”
{
flag=0;
qian=10;//“-”
bai=10;//“-”
ge=10;//“-”
}
else
{
qian=S%1000/100;
bai=S%1000%100/10;
ge=S%1000%10%10;
}
}
voidzd0()interrupt1//T0中断用来计数器溢出,超过测距范围
{
flag=1;//中断溢出
}
/********************************************************/
voidzd3()interrupt3//T1中断用来扫描数码管和计800MS启动
{
TH1=0xf8;
TL1=0x30;
display(qian,bai,ge);
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_();
_nop_();
_nop_();
_nop_();
TX=0;
}
}
/*********************************************************/
voidmain(void)
{
TMOD=0x11;//设T0为方式1,GATE=1;
TH0=0;
TL0=0;
TH1=0xf8;//2MS定时
TL1=0x30;
ET0=1;//允许T0中断
ET1=1;//允许T1中断
TR1=1;//开启定时器
EA=1;//开启总中断
while
(1)
{
while(!
RX);//当RX为零时等待
TR0=1;//开启计数
while(RX);//当RX为1计数并等待
TR0=0;//关闭计数
Conut();//计算
}
}
第五章总结
一、问题
在连接电路的过程中出现了一些错误,总结如下:
(1)数码管不能正常显示
经检查后,发现程序中的“display()”子程序放的位置不对。
(2)上电后,距离不对
经检查后,程序中的求距离函数不对,改正后正常显示。
二、测试结果分析:
测距仪能测的范围为0.03m—3.00m,测距仪最大误差不超过1cm。
系统调试完后应对测量误差和重复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求。
由于条件有限,我们忽略温度的影响,不进行温度补偿,声速选取340m/s.
三、收获
通过这次课程设计,使我对单片机有了初步的了解,为以后进一步学习做了准备。
同时,也使我了解到了一些电子元器件的应用。
例如:
数码管可以用在显示屏、汽车用灯(包含汽车内部的仪表板、音响指示灯、开关的背光源、阅读灯和外部的刹车灯、尾灯、侧灯以及头灯等)、广告牌等,超声波模块则可用来做测距仪和物位测量仪等,利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在工农业生产上到了广泛的应用。
同时,经过这些天的实际动手操作,使我认识到看似简单的问题,真正做起来的时候,如果不认真、不按照确定的步骤进行,会产生很多问题。
在动手操作时不能眼高手低,一定要养成良好的做事风格和习惯。
参考文献:
[1]徐爱钧,彭秀华.《KeilCx51V7.0单片机高级语言编程与uVision2应用实践》,电子工业出版社,2004年6月
[2]郭天祥.《十天会单片机》视频教学。
[3]史东海.《单片机数据通信技术从入门到精通》,西安电子科技大学出版社,2002年11月
[4]谭浩强.《C程序设计(第三版)》,清华大学出版社,2005年7月
[5]倪小军,章韵.《单片机原理与接口技术》,清华大学出版社,2009年9月
[6]姜志海,黄玉清.《单片机原理及应用》,电子工业出版社,2005年7月
附录
附录1原理图
附录2实物图