蓝桥杯模板(九) 超声波模块

超声波本质,8个40KHz的方波

#ifndef ___Ultrasonic_H__
#define ___Ultrasonic_H__

#include <stc15f2k60s2.h>

void Timer0Init(void);
unsigned char Wave_Recv(void);

#endif

--------------------------
#include "Ultrasonic.h"


void Timer0Init(void)		//12微秒@12.000MHz
{
	AUXR &= 0x7F;		//定时器时钟12T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0xF4;		//设置定时初值
	TH0 = 0xFF;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 0;		//定时器0先不计时
}

unsigned char Wave_Recv(void)
{
    unsigned char Wave_Num = 10;
    unsigned char Dist;

    //超声波的发送
    Tx = 0;         //发射置0,初始化
    TL0 = 0xF4;		//设置定时初值
	TH0 = 0xFF;		//设置定时初值
    TR0 = 1;        //定时器0计时


    //TX引脚发送40KHz方波信号驱动超声波发送探头
    while(Wave_Num--)
    {
        while(!TF0);
        Tx^=1; //占空比0.5产生方波,信号发送
        TF0 = 0; 
    }

    //超声波的接收

    TR0 = 0;        //关掉定时器为了重装
    TL0 = 0;		
	TH0 = 0;
    TR0 = 1;

    while(Rx && (~TF0)); //当还未接受到信息时,即Rx=1,TF=0.当有一个变化时,跳出循环
    TR0 = 0 ; // 关闭定时器,让计时定格


    if(TF0 == 1)
    {
        Dist = 255; //数据溢出了
        TF0 = 0;
    }
    else
    {
        Dist = ((TH0<<8) | TL0) * 0.017); //m
    }

    return Dist;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值