|
#include "common.h"
#include "HC-SR04.h"
#include "timer.h"
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
unsigned long S = 0; //距离缓存变量
unsigned long time = 0; //时间缓存变量
//函数声明
void count(void); //计算距离
sbit LED1=P3^0;
sbit LED2=P3^2;
void delay(u16 i)
{
while(i--);
}
/* 主函数 */
void main(void)
{
InitTimer0(); //定时器0初始化
while(1)
{
count(); //测距
if(S>=10 && S<=40) //如果在10CM~40CM范围,led1动作
{
LED1=1;
LED2=0;
delay(50000);
}
else //如果超出10CM~40CM范围,led2动作
{LED1=0;
LED2=1;
delay(50000); }
}
}
/* 计算测距 */
void count(void)
{
start_ranging(); //启动一次超声波
while(!Echo); //等待超声波模块输出IO拉高
TR0 = 1; //开启定时器计时
while(Echo); //等待超声波模块输出IO拉低
TR0 = 0; //关闭定时器计时
/* 计算距离 */
time = TH0 * 256 + TL0; //得到的时间
TH0 = 0; //定时计数器清零
TL0 = 0;
S =(time * 1.87) / 100; //算出来是CM
}
|
-
-
超声波测距.zip
34.69 KB, 下载次数: 14, 下载积分: 黑币 -5
超声波测距
|