- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
题目:超声波测距系统
一、设计目的:
1、 通过本次课程设计加深对单片机课程的全面认识和掌握, 对单片机课程的 应用进一步的了解。
2、 掌握定时器、外部中断的设置和编程原理。
3、 通过此次课程设计能够将单片机软硬件结合起来, 对程序进行编辑,校验。
设计任务:
设计任务:
利用单片机及外围接口电路 (显示接口电路)设计制作超声波测距仪器,用 LED把测
距仪距被测物的距离显示出来。
三、 具体要求:
使用软件Proteus 7 Professional测试仿真调试,并在keil环境下编写程序 并调试。
在面包板上进行初步仿真测试,设计好布线以及焊接排序。
3?在PCB板上焊接元器件电路,并进行测试得出实验结果。
四、 设计原理
(一)硬件设计
1.超声波测距原理
超声波测距原理是通过超声波发射器向某一方向发射超声波 (一般为40KHz
的超声波),在发射时刻的同时开始计时,超声波在空气中传播时碰到障碍物就立 即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速 度为v,而根据计时器记录的测出发射和接收回波的时间差厶 t ,就可以计算出
发射点距障碍物的距离S ,即:S = v ?△ t 12
障碍韧
障碍韧
超声波测距仪原理框图
单片机最小系统
单片机最小系统电路,由主控器 STC89C52时钟电路和复位电路三部分 组成。单片机STC89C52乍为核心控制器控制着整个系统的工作,而时钟电路 负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、 稳定地工作。
晶振电路
位单片机提供时钟频率
复位电路
复位是单片机的初始化操作。其主要功能是把 PC初始化为0000H,使单 片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程 序运行出错或操作错误使系统处于死锁状态时, 为摆脱困境,也需按复位键重 新启动。
总的电路图如下:
H庄fJC理Milni/HFdSEEET
H庄fJC理
Mil
ni/H
FdSE
EET
Flkth
FllMN
电恥
i =
^4LKE
D
21
FW
应更M
FJMCO
fF VIS:
口网
h3
rm
N.4
巧c
hi
町严
冲押1
f.37iFy
(二)软件设计
软件分为两部分,主程序和中断服务程序。主程序完成初始化工作、超声波 发射和接收,距离计算、结果的输出。外部中断服务子程序主要完成时间值的读 取。主程序首先是对系统环境初始化,设置定时器 T1工作模式为16位定时计
数器模式。置位总中断允许位EA。然后给Trig —个20us的高电平,然后在Echo 引脚等待其变为高电平,一旦输出了高电平,表明超声波已开始发射,此刻即计 时,等待Echo变为低电平,即触发外部中断0的跳变沿方式中断。读取当前定 时器的值,换算成时间,乘以波速,即得到测距距离。
程序如下:
#in elude <reg52.h> #include vintrins.h>
#defi ne uchar un sig ned char
#defi ne uint un sig ned int
uchar code table[]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};〃 共阳极 0-9 unsigned char Ied[]={0x40,0x79,0x24, 0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点的位码 sbit SMG_q = P2A0; //定义数码管的千位
sbit SMG_b = P2A1; //定义数码管的百位
sbit SMG_s = P2A2; //定义数码管的十位
sbit SMG_g =卩2八3; //定义数码管的个位
sbit Trig =卩2八7; //发送波形
sbit Echo = P3A2; //回波产生中断
//succeed_flag测试成功标志位//延时毫秒sbit test =
//succeed_flag测试成功标志位
//延时毫秒
uint succeed_flag,time,timeH,timeL; void delayms( uint z)
{
uint x,y;
for(x=z;x>0;x__) for(y=110;y>0;y--);
}
void delay_20us() 〃延时 20 微秒函数
{
uchar a ;
for(a=0;a<=100;a++);
}
数码管显示数据转换程序 ********************//
void display( uint temp)
{
uchar ge,shi,bai,qia n;
qia n=temp/1000;
bai=temp%1000/100; s
文档评论(0)