超声波模块实验报告_第1页
超声波模块实验报告_第2页
超声波模块实验报告_第3页
超声波模块实验报告_第4页
超声波模块实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

超声波模块编程控制实验报告院、系机械与电气工程学院专业班级机械125班第五组姓名李泉军同组人赵凯,徐思琪,郭明开,韦耀辰实验日期2014年11月21日一、实验原理通过超声波发射装置发出超声波,根据接收器接到超声波时的时间差就可以知道距离了。这与雷达测距原理相似。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。(超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2)二、超声波工作原理简介采用IO口TRIG触发测距,给至少10us的高电平信号;(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,即可以达到你移动测量的值三、系统硬件电路图及实物照片超声波测距电路图显示距离10cm显示距离20cm系统软件程序流程图及程序清单‘‘开始初始化IO口,初始化中断(上升沿触发)初始化IO口,初始化中断(上升沿触发)PB2口激活超声波模块PB2口激活超声波模块检测Echo回响信号检测Echo回响信号INT0下降引发了中断?INT0上升沿引发INT0下降引发了中断?INT0上升沿引发了中断?N Y Y YPB1是否为低PB1是否为低电平?PB1是否为高电平?N N Y Y设为上升沿触发中断,关闭定时器,读取TCNT0的值设为下降沿触发中断,打开定时器(64分频,普通模式)设为上升沿触发中断,关闭定时器,读取TCNT0的值设为下降沿触发中断,打开定时器(64分频,普通模式) TCNT0清零TCNT0清零计算距离(单位:厘米)计算距离(单位:厘米)采用5161BS数码管串联显示两位数采用5161BS数码管串联显示两位数程序清单://晶振9.6MHZ,默认8分频,计时步距8/9.6=0.833333us#include<iot13v.h>

#include<macros.h>]

unsignedintDist=0;

unsignedchars;

unsignedcharLED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//////////////////延时函数//////////////////////

voiddelay_ms(unsignedinti)

{

inta,b;

for(a=0;a<i;a++)

{for(b=0;b<30;b++);}

}

//////////////////数码管显示函数/////////////////////

voiddisplay_num(unsignedcharnum)

{staticunsignedcharwei=0;

unsignedcharnum_l,num_r,i,n;

num_r=num%10;//取个位数字 num/=10;

num_l=num%10; //取十位数字 if(wei)

num_r=LED[num_r];

else

num_r=LED[num_l];

if(wei)

{

num_r&=0x7f;//十位数码管的位选角Q7清零 PORTB|=0x08;// 个位数码管的位选角PB3置一}

else{

num_r|=0x80;//十位数码管的位选角Q7置一

PORTB&=0xf7;//个位数码管的位选角PB3清零 }

for(i=0;i<8;i++)

{

if(num_r&0x80)

{

PORTB|=0x01;

}

else

{

PORTB&=0x0FE;

}

num_r=num_r<<1;

PORTB|=0x10;//时钟PB4置一 PORTB&=(~0x10);//时钟PB4清零 }

wei=!wei;

}

//////////////初始化程序//////////////

voidsystem_init()

{

DDRB=0xfd;

PORTB=0xfd;//PB1置一SREG=0x80;//允许单片机的中断功能

MCUCR=0x03;//上升沿触发

GIMSK=0x40;//INT0位置一,外部中断使能

TCCR0A=0x00;//设置定时器工作模式

}

/**中断程序**/

#pragmainterrupt_handlertime_0:2

voidtime_0()

{

if((PINB&0x02)!=0)

{

MCUCR=0x02;//设置引脚下降沿触发

TCCR0B=0x03;//开定时器

}

if((PINB&0x02)==0)

{

MCUCR=0x03;//设置引脚上升沿触发

TCCR0B=0x00;//关定时器

s=TCNT0;//读取定时器数据

TCNT0=0;//对定时器清零

}

Dist=s;

}

/**主程序**/

voidmain(void)

{

system_init();

while(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论