单片机课程设计超声波测距系统.docx
- 文档编号:8932421
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:19
- 大小:563.06KB
单片机课程设计超声波测距系统.docx
《单片机课程设计超声波测距系统.docx》由会员分享,可在线阅读,更多相关《单片机课程设计超声波测距系统.docx(19页珍藏版)》请在冰豆网上搜索。
单片机课程设计超声波测距系统
等级:
湖南工程学院
课程设计
课程名称单片机原理与应用
课题名称超声波测距系统设计
专业电气工程及其自动化
班级1191
学号20110101xxxx
姓名xx
指导教师李晓秀王迎旭汪超等
2013年9月15日
湖南工程学院
课程设计任务书
课程名称单片机原理与应用
课题超声波测距系统设计
专业班级电气1191
学生姓名xx
学号20110101xxxx
指导老师李晓秀
审批
任务书下达日期2013年9月2日
任务完成日期2013年9月15日
设计内容与设计要求
设计内容:
本课题要求以MCS-51系列单片机为核心,设计一个超声波测距系统。
要求:
1)用给定的超声波模块制作超声波测距系统,测距范围:
0.5~4.5m;
2)用按键实现测距、清零、复位等控制;
3)用4位LED数码管显示测量到的距离。
设计要求:
1)确定系统设计方案;
2)进行系统的硬件设计;
3)完成必要的参数计算与元器件选择;
4)完成应用程序设计;
5)应用程序的调试。
主要设计条件
1、PC机及单片机调试软件;
2、开发板1块;
3、系统设计、调试所需的元器件。
说明书格式
1.课程设计任务书
2.目录
3.总体方案确定
4.各单元硬件电路设计及计算方法
5.软件设计与说明(包括流程图)
6.调试结果与必要的调试说明
7.总结
8、参考文献
9、附录
附录A系统原理图
附录B程序清单
10、课程设计成绩评分表。
进度安排
设计时间为两周
第一周
星期一、上午:
布置课题任务,讲课及课题介绍
下午:
借阅有关资料,总体方案讨论
星期二、单片机学习机焊接
星期三、单片机学习机例程调试
星期四、系统总体方案、硬件设计
星期五、软件设计及调试
第二周
星期一、软件设计及调试
星期二、软件设计及调试
星期三、软件设计及调试
星期四、写说明书
星期五、上午:
写说明书,整理资料
下午:
交设计资料,答辩
参考文献
[1]王迎旭等.单片机原理及及应用[M].2版.机械工业出版社,2012.
[2]高峰.单片微型计算机原理与接口技术[M].电子工业出版社,2003.
[3]王守中.51单片机开发入门与典型实例[M].人民邮电出版社,2007
[4]戴灿金.51单片机及其C语言程序设计开发实例[M].清华大学出版社,2010.
[5]胡汉才.单片机原理及其接口技术[M].3版.清华大学出版社,2010.
目录
第1章总体设计原理…………………………………………………7
1.1超声波测距原理………………………………………………7
1.2单片机设计思路………………………………………………7
1.3超声波测距系统框图…………………………………………8
第2章系统硬件设计…………………………………………………9
2.1超声波模块电路设计思路……………………………………9
2.2数码管显示电路设计思路……………………………………9
2.3键盘连接电路设计思路………………………………………10第3章系统软件设计…………………………………………………11
3.1程序设计总流程图…………………………………………11
3.2显示程序设计流程…………………………………………12
第4章调试结果……………………………………………………13
实验总结…………………………………………………………14
附录A整体电路图…………………………………………………15
附录B程序清单……………………………………………………16
第1章总体设计思路
1.1超声波测距原理
超声波传感器在测量过程中,超声测距器是根据超声波遇到障碍物反射回来的特性进行测量的。
超声波发射器向某一方向发射超声波,在发射同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即中断停止计时。
通过不断检测产生波发射后遇到障碍物所反射的回波,从而测出发射超声波和接收到回波的时间差△T,然后求出距离L。
基本的测距公式为:
L=(△T/2)*V式中L——被测距离;△T——发射波和反射波之间的时间间隔;V——超声波在空气中的声速,常温下取为340m/s。
声速确定后,只要测出超声波往返的时间,即可求得L。
图1-1超声波测距原理
1.2单片机设计思路
我们的设计是基于STC89C52单片机的一个超声波测距系统,利用单片机的一个I/O口输出一个10us以上的高电平给超声波模块的控制端,当超声波模块的控制端接受到这个高电平时,其发射端就开始发射40Hz的超声波,同时发射端会输出一个高电平信号,当检测到这个高电平信号的时候单片机开始启动定时器计时,当发射端接收到超声波的返回信号时,发射端会输出一个低电平信号,此时单片机停止计时。
通过得到的定时器计时的时间可以计算出被测物与超声波发射探头的距离。
然后通过计算出的距离送到四位一体数码管进行显示。
单片机的P0口控制数码显示管的段,P2.0-P2.3口控制数码显示管的四个位。
P1.0-P1.3口接三个独立按键,实现按键控制功能。
P2.6,P2.7接超声波模块的Echo、Trig口。
本系统设计了3个功能键,启动、暂停和复位键,它们都是采用独立按键形式。
当按下启动键时,系统开始不断的发出超声波测量当前障碍物的距离,并送至数码管进行显示。
当有暂停键按下时,系统停止测量,数码管显示当期障碍物的距离。
当系统出错时可按下复位键,单片机重新启动。
1.3声波测距系统框图
如图所示,通过按键给单片机一个脉冲信号,然后单片机再给超声波发射端信号,超声波工作不断发射超声波,当收到回波时,接收端给单片机一个信号,单片机计算距离后再输出结果给数码显示管。
图1-3系统设计框图
第2章系统硬件设计
2.1超声波电路设计思路
超声波模块如图2-1所示。
从P2.6口给Trig口送一个10us的脉冲,超声波模块自动发出40Khz的超声波,单片机中断计时。
当遇到障碍物时超声波返回,并将一个高平信号送入单片机,中断关闭。
图2-1超声波模块电路图
2.2数码管显示电路设计思路
如图2-2所示,显示电路采用采用LED数码管显示。
数码显示管的段接单片机的P0口,位接单片机的P2.0-P2.3口。
本系统采用动态显示方式。
该组数码管位共阳极数码管。
当有低电平驱动时,数码管亮。
图2-2数码管显示电路图
2.3键盘连接电路设计思路
该系统采用三个独立按键控制如图2-3所示,按键s1,s2,s3接地,按键另一端接高电平同时接单片机P0-P2口。
当按键按下时,就给相应的引脚口一个低电平,从而实现控制功能。
图2-3键盘连接电路图
第3章系统软件设计
3.1程序设计总流程图
程序设计框图如图3-1所示,开始系统先初始化,定义端口及其他变量等准备工作。
调用显示程序显示开机状态,然后查键是否有按键按下,当启动按键按下时调用超声波模块驱动程序,发射超声波信号,检测是否有回波信号,有则调用计算子程序计算,然后输出显示结果。
图3-1主程序流程图
3.2显示程序设计流程
显示程序流程如图3-2所示,主要是对初始状态和测量得到的数据送至四位一体共阳极进行动态显示。
开始后初始化显示参数,然后逐一取待显数,输出位码到P2口,然后将显示数据转为段码送到P1口,完成显示。
图3-2显示程序流程图
第4章调试结果
按图把电路接好,连接电脑把程序下载进去,打开电源开关,数码管显示初始状态,按下启动键后,超声波开始工作,显示动态测量距离,按暂停键后显示当前距离,如图4-1所示,此为超声波测量结果,测试距离是9.8cm。
图4-1调试结果图
实验总结
为期两周的单片机课程设计结束了,在这期间我学会了很多,收获了很多。
从拿到课题开始,我们就一起交流讨论如何设计框架,整体思路流程,找出哪些疑惑的地方,然后再查找资料,向老师请教问题。
在这期间,我们要特别感谢老师耐心的指导,在我们最困惑的时候给予我们思路上的指示,让我们少走很多弯路。
老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样。
还有较大的收获是通过这次课程设计让我明白组内的协同合作,互相沟通交流很重要,相互交流可以让你了解其他人的想法及设计思路,然后结合自己的想法综合分析,最终的到一个完美方案,这样的效果很好。
此次任务需查阅很多资料,在查阅资料的过程中弥补了我之前很多知识空缺。
让我学到了很多理论知识,之前对单片机还不是很熟悉精通,通过反复观摩,操作,对单片机的各种功能有了进一步了解,此次课题需用到几个软件辅助完成,这也让我学会了这几个软件的操作。
发现问题,分析问题,再解决问题,成功的喜悦会让你异常兴奋。
回顾起此次单片机课程设计,我仍感慨颇多,的确,在这几个星期中,可以说得是苦多于甜,但是可以学到很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方面的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。
在设计的过程中也遇到过很多问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对C语言掌握得不全面等等。
这次的课程设计让我受益匪浅,无论从知识上还是其他的各个方面。
上课时候的学习只是从理论的角度去理解枯燥乏味。
但在课程设计中使用了单片机及其系统进行实际项目的开发。
能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。
附录A整体电路图
附录B程序清单
#include
#include
#defineRXp26
#defineTXp27
sbitp26=P2^6;
sbitp27=P2^7;
sbitp20=P2^0;
sbitp21=P2^1;
sbitp22=P2^2;
sbitp23=P2^3;
sbitp10=P1^0;
sbitp11=P1^1;
sbitp12=P1^2;
unsignedinttime=0;
unsignedinttimer=0;
unsignedcharposit=0,a=0;
unsignedlongS=0;
bitflag=0;
unsignedcharconstdiscode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};
unsignedchardisbuff[4]={0,0,0,0,};
voidkey_scanf(void);
voidDelayUs2x(unsignedchart)
{
while(--t);
}
voidDelayMs(unsignedchart)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
voidDisplay(void)//扫描数码管
{
p20=0;
p21=1;
p22=1;
p23=1;
P0=discode[disbuff[0]];
DelayUs2x(20);
P0=0xff;
p20=1;
p21=0;
p22=1;
p23=1;
P0=discode[disbuff[1]];
DelayUs2x(20);
P0=0xff;
p20=1;
p22=0;
p21=1;
p23=1;
P0=(discode[disbuff[2]])&0x7f;
DelayUs2x(20);
P0=0xff;
p20=1;
p23=0;
p21=1;
p22=1;
P0=discode[disbuff[3]];
DelayUs2x(20);
P0=0xff;
p20=1;
p23=1;
p21=1;
p22=1;
//DelayMs
(2);
}
/********************************************************/
voidConut(void)
{
floatS1;
time=TH0*256+TL0;
TH0=0;
TL0=0;
S1=(time*1.7)/100;//算出来是CM
S=S1*10;
if((S>=7000)||flag==1)//超出测量范围显示“-”
{
flag=0;
disbuff[0]=10;//“-”
disbuff[1]=10;//“-”
disbuff[2]=10;//“-”
disbuff[3]=10;//“-”
}
else
{
disbuff[0]=S/1000;
disbuff[1]=S/100%10;
disbuff[2]=S/10%10;
disbuff[3]=S%10;
}
}
/********************************************************/
voidzd0()interrupt1//T0中断用来计数器溢出,超过测距范围
{
flag=1;//中断溢出标志
}
/********************************************************/
voidzd3()interrupt3//T1中断用来扫描数码管和计800MS启动模块
{key_scanf();
TH1=0xf8;
TL1=0x30;
Display();
timer++;
if(timer>=400)
{
timer=0;
TX=1;//800MS启动一次模块
_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;
key_scanf();
if(a==1)//关闭计数
Conut();//计算
}
}
voidkey_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;
disbuff[0]=0;
disbuff[1]=0;
disbuff[2]=0;
disbuff[3]=0;
}
}
}
电气与信息工程学院课程设计评分表
项目
评价
优
良
中
及格
差
设计方案的合理性与创造性(10%)
开发板焊接及其调试完成情况*(10%)
硬件设计或软件编程完成情况(20%)
硬件测试或软件调试结果*(10%)
设计说明书质量(20%)
设计图纸质量(10%)
答辩汇报的条理性和独特见解(10%)
答辩中对所提问题的回答情况(10%)
完成任务情况(10%)
独立工作能力(10%)
出勤情况(10%)
综合评分
指导教师签名:
________________
日期:
________________
注:
表中标*号项目是硬件制作或软件编程类课题必填内容;
此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:
封面、任务书、目录、
正文、评分表、附件(非16K大小的图纸及程序清单)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 超声波 测距 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)