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

embedded/2025/1/30 23:21:19/

一、超声波原理

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

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

二、超声波原理图

  • 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


距离测量原理

 三、模块代码

#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;elsereturn ((TH0<<8)|TL0)*0.017;//单位是cm}

四、主函数代码

#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);}
}


http://www.ppmy.cn/embedded/158185.html

相关文章

npm常用命令

以往nodejs版本 Node.js — Node.js 版本 CNPM Binaries Mirror 查看当前版本 npm -v 查看node安装在哪里 where node 清除缓存 npm cache clean --force 淘宝镜像&#xff08;只支持下载&#xff0c;不支持上传发布&#xff09; npm config set registry https://reg…

具身智能体俯视全局的导航策略!TopV-Nav: 解锁多模态语言模型在零样本目标导航中的顶视空间推理潜力

作者&#xff1a;Linqing Zhong, Chen Gao, Zihan Ding, Yue Liao, Si Liu 单位&#xff1a;北京航空航天大学&#xff0c;新加坡国立大学&#xff0c;香港中文大学多模态实验室 论文标题&#xff1a;TopV-Nav: Unlocking the Top-View Spatial Reasoning Potential of MLLM …

微信小程序压缩图片

由于wx.compressImage(Object object) iOS 仅支持压缩 JPG 格式图片。所以我们需要做一下特殊的处理&#xff1a; 1.获取文件&#xff0c;判断文件是否大于设定的大小 2.如果大于则使用canvas进行绘制&#xff0c;并生成新的图片路径 3.上传图片 async chooseImage() {let …

使用vscode + Roo Code (prev. Roo Cline)+DeepSeek-R1使用一句话需求做了个实验

摘要 使用vscode、Roo Code和deepseek-reasoner进行了一个实验&#xff0c;尝试使用一句话需求来生成小红书封面图片。工具根据需求提供了详细的架构方案&#xff0c;包括技术栈选择、核心模块划分、目录结构建议等。然后&#xff0c;工具自动化地完成了开发和测试&#xff0c;…

使用scikit-learn实现线性回归对自定义数据集进行拟合

1. 引入必要的库 首先&#xff0c;需要引入必要的库。scikit-learn提供了强大的机器学习工具&#xff0c;pandas和numpy则用于数据处理&#xff0c;matplotlib用于结果的可视化。 import pandas as pd import numpy as np from sklearn.model_selection import train_test_sp…

【蓝桥杯嵌入式入门与进阶】2.与开发板之间破冰:初始开发板和原理图2

个人主页&#xff1a;Icomi 专栏地址&#xff1a;蓝桥杯嵌入式组入门与进阶 大家好&#xff0c;我是一颗米&#xff0c;本篇专栏旨在帮助大家从0开始入门蓝桥杯并且进阶&#xff0c;若对本系列文章感兴趣&#xff0c;欢迎订阅我的专栏&#xff0c;我将持续更新&#xff0c;祝你…

SQL注入漏洞之高阶手法 宽字节注入以及编码解释 以及堆叠注入原理说明

目录 宽字节注入 编码区分 原理 函数 转译符号解释 注意 绕过方式详解 堆叠【Stack】注入攻击 注入语句 宽字节注入 在说宽字节注入之前 我们需要知道编码相关的知识点&#xff0c;这个有助于搞定什么是宽字节注入 分清楚是ascii码是什么宽字节注入代码里面加入了adds…

【2025最新计算机毕业设计】基于SpringBoot+Vue爬虫技术的咖啡与茶饮料文化平台(高质量源码,可定制,提供文档,免费部署到本地)

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…