原创 超声波测距资料+程序

2012-2-1 14:44 2134 13 13 分类: MCU/ 嵌入式

这里整理了超声波测距的资料和对应的源代码
附件是我的超声波模块的资料

rar.gif资料.rar

编译器 ICC AVR

下面是源代码:
#include
#include

#include"Mydelay.h"
#include"LCD12864.h"
//下面是端口声明
#define TRIG_SET PORTC|=(1<<2) ;DDRC|=(1<<2)
#define TRIG_CLR PORTC&=~(1<<2);DDRC|=(1<<2)

#define ECHO_IN  PORTD|=BIT(PD0); DDRD&=~BIT(PD0)

unsigned int ultrasonic_time=0;
//全局变量存放距离,这里虽然是写的时间,实际上是时间转换后的距离

unsigned char tem1[]={"the distance is:"};

//发送触发start信号
void sendsignal(void)
{
 TRIG_CLR;
 delay_nus(1);
 TRIG_SET;
 delay_nus(15);
 TRIG_CLR;
}

void main(void)
{
 Init_lcd12864();
 LCD128_Clear();
 ECHO_IN;
 while(1)
 //等待ECHO信号响应
   TCNT3H = 0x00;
   TCNT3L = 0x00;   //定时器T3赋初值
   TCCR3B = 0x02;
   //内部晶振8M,进行8分频,那么最远的测距理论上为65536*0.17
   //这个距离已经超出了实际测距,所以定时器T3不会溢出
   while(PIND&0x01); //等待ECHO信号响应结束
   ultrasonic_time=(unsigned int)TCNT3*0.17;
   //根据定时器的值计算距离的公式
   TCCR3B = 0x00;//关闭定时器T3
   

   //下面是将数据显示
   send_str_16c8s(0,0,tem1);
   LCD128_print_int(15,5,ultrasonic_time);
   delay_nms(50);
 }
}
上面的LCD12864显示文件这里不写出来了,大家自己把数据显示出来就行了。

 

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
13
关闭 站长推荐上一条 /2 下一条