51单片机开发板超声波测距数码管显示.docx
- 文档编号:2945474
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:14
- 大小:621.38KB
51单片机开发板超声波测距数码管显示.docx
《51单片机开发板超声波测距数码管显示.docx》由会员分享,可在线阅读,更多相关《51单片机开发板超声波测距数码管显示.docx(14页珍藏版)》请在冰豆网上搜索。
51单片机开发板超声波测距数码管显示
计算机技术系
项目工作报告
课程
名称
单片机开发板
设计与制作实训
班级
学号
姓名
项目名称
超声波测距,数码管显示
实训日期/时间
2015.6.23-2015.7.5
地点
指导教师
同组成员
仪器设备
(参考资料)
计算机、KeiluVision2、ProteusISIS电烙铁、开发板、HC-SR04超声波模块
实训内容
(任务安排)
1焊接开发板
2自选课题
3开发与调试
4项目汇报与总结
一、
项目名称与要求
项目名称:
超声波测距,数码管显示
功能描述:
采用HC-SR04超声波模块,STC89C52单片机以及数码管显示设计的一种超声波测距显示器,可以实现测量物体到仪器距离以及显示等功能,可以测量范围为2cm–450cm,精确度为1cm。
是一种结构简单、性能稳定、使用方便、价格低廉的超声波距离测量器,具有一定的实用价值。
2、项目设计思路
1、硬件资源
单片机开发板(携带数码管);
HC-SR04超声波模块;
STC89C52芯片;
2、软件设计思路
软件设计采用C语言编程,运用模块化程序设计思想,对不同功能模块的程序进行分别编程,以便移植或调用,这样使软件层次结构清晰,有利于软件的调试修改。
软件设计思路是:
系统初始化、发射脉冲串、计时、接收输入脉冲,接收串口输入速度值、计算距离、显示距离值、重复。
超声波测距算法设计如下:
超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就会被超声波接收器R接收到。
这样,只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器于反射物体的距离。
该距离的计算公式如下:
d=s/2(v×t)/2
其中:
d为被测物于测距器的距离;s为声波的来回路程;v为声速;t为声波来回所用的时间。
超声波测距原理图如下:
3、项目涉及的知识点说明
HC-SR04超声波模块简介:
实物图:
正面:
背面:
HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到1cm;模块包括超声波发射器、接收器与控制电路。
1、基本工作原理:
(1)采用IO口TRIG触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
2、主要技术参数:
(1)使用电压:
DC---5V
(2)静态电流:
小于2mA
(3)电平输出:
高5V
(4)电平输出:
底0V
(5)感应角度:
不大于15度
(6)探测距离:
2cm-450cm
(7)高精确度:
1cm
三、硬件设计
1、电路原理图
HC-SR04超声波模块电路图:
2、元器件或模块清单
主要元器件
单片机开发板
STC89C52芯片
共阳极四位数码管0.36英寸(3641B)
外围模块
HC-SR04超声波模块
四、软件设计
1、程序流程图
2.程序清单
#include"reg51.h"
#include
//常变量定义:
codeunsignedchartable[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
//表:
共阳数码管0-9-
unsignedinttime=0;
unsignedinttimer=0;
unsignedlongS=0;
bitflag=0;
unsignedcharl_disbuff[4]={0xff,0,0,0,};//显示缓冲
unsignedcharl_posit=1;//位选择
//引脚定义:
sbitSMG_q=P1^0;//定义数码管阳级控制脚(千位)本例程只用到三位数码管
sbitSMG_b=P1^1;//定义数码管阳级控制脚(百位)
sbitSMG_s=P1^2;//定义数码管阳级控制脚(十位)
sbitSMG_g=P1^3;//定义数码管阳级控制脚(个位)
sbitRX=P2^1;//模块引脚
sbitTX=P2^0;
/********************************************************/
//显示函数,参数为显示内容
voiddisplay()
{
P0=0XFF;//
switch(l_posit){
case0:
//选择千位数码管,关闭其它位
SMG_q=0;
SMG_b=1;
SMG_s=1;
SMG_g=1;
P0=0xff;//table[l_disbuff[0]];//此位不显示
break;
case1:
//选择百位数码管,关闭其它位
SMG_q=1;
SMG_b=0;
SMG_s=1;
SMG_g=1;
P0=table[l_disbuff[1]]&0x7f;//加入小数点
break;
case2:
//选择十位数码管,关闭其它位
SMG_q=1;
SMG_b=1;
SMG_s=0;
SMG_g=1;
P0=table[l_disbuff[2]];
break;
case3:
//选择个位数码管,关闭其它位
SMG_q=1;
SMG_b=1;
SMG_s=1;
SMG_g=0;
P0=table[l_disbuff[3]];
break;
}
l_posit++;
if(l_posit>3)
l_posit=0;
}
/********************************************************/
voidConut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100;//算出来是CM
if((S>=700)||flag==1)//超出测量范围显示“-”
{
flag=0;
l_disbuff[1]=10;//“-”
l_disbuff[2]=10;//“-”
l_disbuff[3]=10;//“-”
}
else
{
l_disbuff[1]=S%1000/100;
l_disbuff[2]=S%1000%100/10;
l_disbuff[3]=S%1000%10%10;
}
}
/********************************************************/
voidzd0()interrupt1//T0中断用来计数器溢出,超过测距范围
{
flag=1;//中断溢出标志
}
/********************************************************/
voidzd3()interrupt3//T1中断用来扫描数码管和计800MS启动模块
{
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_();
_nop_();
_nop_();
_nop_();
TX=0;
}
}
/*********************************************************/
voidmain(void)
{
TMOD=0x11;//设T0,T1为方式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.电路板焊接
2.载入程序调试
3.调试结果演示如下:
A4纸规格:
长:
29.7cm
宽:
21cm
A4长度测量:
A4宽度测量:
六、项目总结
单片机课是一门实践性很强的课程,仅有课堂上理论知识的学习,对运用好单片机是完全不够的,必须亲自做实验,从实验中吸取教训,总结经验,增加实战经验,加深对单片机的理解,更好的运用单片机。
单片机实验课的目的就是为学生提供做实验的机会,让学生能够从几个简单的实验中学会单片机开发的过程和单片机的实际运用。
通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。
经过几个星期的实训设计,我要感谢我的指导教师张劲老师在实训设计中对我给予的悉心指导和帮助,也谢谢同学对我的的帮助。
在此次实训中,对KeiluVision2软件的使用有了明显的提高,比以前更加的熟悉了用该软件菜单的各项调试工具和窗口,再结合硬件和软件,进行整体调试。
我深刻的认识到了理论知识和实践操作必须是相结合的,也许在实训时会有很多各种软、硬件等故障。
总之,亲自动手是课堂学习的延续,电子领域随时随地都在发生着翻天覆地的变化,现有的知识储备总是落后于科技的发展脚步,我们只有不断学习新知识,才能做到面对新课题时游刃有余。
通过为期一周的单片机实训,使我们对这门课有了许多新的了解,弥补了在课堂上学习的不足。
并且,这次实训是真正意义上的学以致用。
让我们对单片机有了更加清晰的了解更深刻的认识。
所以,在这里我得感谢我们的实训老师!
首先,在这次试训中我被单片机强大的功能所震撼,以前在课堂上完全没有能理解可编程单片机的优越性。
这次通过实体仿真软件等辅助软件的共同效果,是这次试训有了鲜明的活力。
换是我们认识
到这次试训不仅仅是一个软件的应用,更多的是使我们认识
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 开发 超声波 测距 数码管 显示