找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1097|回复: 0
打印 上一主题 下一主题
收起左侧

超声波测距hc-sr04

[复制链接]
跳转到指定楼层
楼主
ID:720241 发表于 2020-4-1 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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

超声波测距

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表