单片机基础模块学习——超声波传感器

一、超声波原理

左边发射超声波信号,右边接收超声波信号

左边的芯片用来处理超声波发射信号,中间的芯片用来处理接收的超声波信号

二、超声波原理图

  • T------transmit 发送
  • R------Recieve 接收

U18芯片对输入的N_A1信号进行放大,然后输入给超声波传感器,作用是增强带负载能力 。传递给JS2一个高频的方波信号

U11芯片如果JS1接收到超声波信号,N_B1输出低电平;如果没有接收到超声波信号,N_B1输出高电平。主要功能是对超声波信号进行处理,以高低电平进行输出。


使用超声波功能的话,用短接帽将1,3短接,2,4短接

使用红外功能,将35短接,46短接

相当于红外和超声波共用P10和P11,使用哪个功能,就将哪个短接


使用的是40Khz的频率,一个周期有高低电平变换,所以就是80Khz的频率,换算之后就是12.5us


距离测量原理

三、模块代码

cpp 复制代码
#include "ultrasonic.h"

unsigned char Wave_Recv(void)
{
	unsigned char ucNum=10;
	
	Tx=0;
	TL0=0xF4;
	TH0=0xFF;
	TR0=1;//开始计时
	/**************************发射部分***************************/
	while(ucNum--)//每12us,高低电平进行切换,就可以产生40kHZ的方波信号
	{
		while(!TF0);//当计时器没到时,等待;当计时器到了,TF0为1时,取反为0,退出循环
		Tx^=1;//取反
		TF0=0;//清零
	}
	
	TR0=0;
	TL0=0;
	TH0=0;//正计时
	TR0=1;
	while(Rx && !TF0);//没接到信号Rx为1,TF0没溢出为1 就会一直循环;接收到信号会退出,溢出会退出循环
	TR0=0;
	
	if(TF0)//说明溢出了也没有接收到信号,可能是距离过远
		return 255;
	else
		return ((TH0<<8)|TL0)*0.017;//单位是cm
		
}

四、主函数代码

cpp 复制代码
#include "seg.h"
#include "tim.h"
#include "led.h"
#include "init.h"
#include "ultrasonic.h"

//Seg
unsigned char pucSeg_Buf[12],pucSeg_Code[9],pucSeg_Pos=0;//字符数组以/0结尾,所以要有9位
//Ultrasonic
unsigned char ucDist =0;


//Timer
unsigned long ulms =0;
unsigned int uiSeg_Dly=0;
unsigned int uiUltrasonic_Dly=0;
void Seg_Proc(void);
void Ultrasonic_Proc(void);

void main(void)
{
	Cls_Peripheral();
	Timer0Init();
	Timer1Init();
	EA=1;
	
	while(1)
	{
		Seg_Proc();
		Ultrasonic_Proc();
	}

}

void Seg_Proc(void)
{
	if(uiSeg_Dly<200)
		return;
	
	uiSeg_Dly =0;
	
	sprintf(pucSeg_Buf,"%-3u     ",(unsigned int)ucDist);//将指定的内容打印到字符数组里
	Seg_Tran(pucSeg_Buf,pucSeg_Code);
}
void Ultrasonic_Proc(void)
{
	if(uiUltrasonic_Dly<500)
		return;
	
	uiUltrasonic_Dly =0;
	ucDist=Wave_Recv();
}
void Time_1(void) interrupt 3
{
	ulms++;
	uiSeg_Dly++;
	uiUltrasonic_Dly++;
	if(ulms % 2==0)
	{
	pucSeg_Pos=(pucSeg_Pos+1)%8;//实现pucSeg_Pos从0-7循环的操作
	Seg_Disp(pucSeg_Code,pucSeg_Pos);
	}
}
相关推荐
来自晴朗的明天12 小时前
16、电压跟随器(缓冲器)电路
单片机·嵌入式硬件·硬件工程
钰珠AIOT12 小时前
在同一块电路板上同时存在 0805 0603 不同的封装有什么利弊?
嵌入式硬件
代码游侠12 小时前
复习——Linux设备驱动开发笔记
linux·arm开发·驱动开发·笔记·嵌入式硬件·架构
CODECOLLECT1 天前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen1 天前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠1 天前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
Lsir10110_1 天前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
深圳市九鼎创展科技1 天前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计1 天前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
小龙报1 天前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机