超声波模块
来源:互联网 发布:网络彩票最新消息新闻 编辑:程序博客网 时间:2024/04/26 17:03
#include <AT89X51.H>
#include <intrins.h>
#define ECH0 P1_0
#define TRIG P1_1
#define fengmingqi P0_3
unsigned char timer_counter=0;//
float Distance_value=0;//
/********************************************************/
void delayms(unsigned int ms)
{
unsigned char i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
/********************************************************/
void StartModule() //10US以上的高电平
{
TRIG=1; // 启动一次模块
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TRIG=0;
}
/********************************************************/
void Conut(void)
{
Distance_value=timer_counter*100/1000;//ms?
Distance_value=(Distance_value*340/10)/2; //算出来是CM
if(Distance_value<=1)
{
Distance_value=0;
fengmingqi=0;
delayms(10);
}
}
////////////////////
void timer0_init(void)
{
TMOD=0X01;//Mode 1: 16-bit timer/counter
TH0=0Xff;//100us
TL0=0Xa4;
ET0=1;
}
//////////////////
void main()
{
P0_3=1;
EA=1;
timer0_init();
while(1)
{
fengmingqi=1;
timer_counter=0;
StartModule();
while(!ECH0); //当ECH0为零时等待
TR0=1; //开启计数
while(ECH0); //当ECH0为1计数并等待
TR0=0; //关闭计数
Conut(); //计算
timer_counter=0;
fengmingqi=1;
//delayms(100); //100MS
};
}
timer0() interrupt 1
{
TR0=0;
timer_counter++;
TH0=0Xff;//100us
TL0=0Xa4;
TR0=1;
}
参考资料:http://www.tazhao.com/search?q=%B3%AC%C9%F9%B2%A8
- 超声波模块
- 超声波模块
- 超声波模块SRF05
- 超声波模块测试
- 树莓派+超声波模块
- 超声波模块学习
- 51单片机超声波测距模块
- 【Arduino】超声波模块(HC-SR04)
- arduino 超声波 HC-SR04模块
- keil 配置超声波模块注意事项
- 超声波模块的51程序
- 树莓派蜂鸣器+超声波测距模块
- 蓝桥杯板子 超声波模块使用
- 【蓝桥杯单片机组】超声波模块
- HC-SR04超声波模块传感器
- 超声波
- HC-SR04 超声波测距模块/硬件/软件
- 超声波模块HC-SR04简介以及编程
- 配置SQL Server 2005事务日志传送(非单机,非域环境,共享文件夹在主库)
- 关于博客
- sql在已有数据中查询每个月的最后一天
- 流行的免费搜索引擎网址
- 性能调优的步骤
- 超声波模块
- 遍历Map
- 键盘记录器 --- hook keboard event handling
- pku 3308 Paratroopers
- 在一堆数据库中找出特定的对象
- myeclipse自动提示信息设置
- 程序员从初级到中级10个秘诀
- 在输出的调试信息中统一加上模块名前缀
- Jsp/bean Mysql数据库 新增 修改 删除的通用方法