首页 > 其他分享 >51单片机超声波测距

51单片机超声波测距

时间:2023-12-04 16:47:47浏览次数:42  
标签:定时器 Trig 51 单片机 void 测距

51单片机超声波测距

​ 51单片机超声波(HC-SR04)测距,当距离小于10cm,LED1亮,LED2灭

#include "reg52.h"

sbit LED1 = P3^7;
sbit LED2 = P3^6;
sbit Trig = P1^5;
sbit Echo = P1^6;

void Delay10us()		//@11.0592MHz
{
	unsigned char i;

	i = 2;
	while (--i);
}

void Time0Init()
{	
	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;
	TH0 = 0;
	TL0 = 0;
	//设置定时器0工作模式1,初始值设定0开始数数,不着急启动定时器
}
/*
十进制2左移1位,变成20。相当于乘以10
二禁止1左移1位,变成10(2)。相当于乘以2,左移8位,乘以2的8次方=256;*/

void startHC()
{
	Trig = 0;
	Trig = 1;
	Delay10us();
	Trig = 0;
}
void main()
{
	double time;
	double dis;
	
	Time0Init();
	
	while(1){
		//1. Trig ,给Trig端口至少10us的高电平
		startHC();
		//2. echo由低电平跳转到高电平,表示开始发送波
		while(Echo == 0);
		//波发出去的那一下,开始启动定时器
		TR0 = 1;
		//3. 由高电平跳转回低电平,表示波回来了
		while(Echo == 1);
		//波回来的那一下,我们开始停止定时器
		TR0 = 0;
		//4. 计算出中间经过多少时间
		time = (TH0 * 256 + TL0)*1.085;//us为单位
		//5. 距离 = 速度 (340m/s)* 时间/2
		dis = time * 0.017;
		if(dis < 10){
				LED1 = 0;
				LED2 = 1;
		}else{
				LED1 = 1;
				LED2 = 0;
		}
		//定时器数据清零,以便下一次测距
		TH0 = 0;
		TL0 = 0;
	}
}

标签:定时器,Trig,51,单片机,void,测距
From: https://www.cnblogs.com/Master-No1/p/17875296.html

相关文章

  • 秦疆的Java课程笔记:51-52 数组 什么是数组&数组的声明和创建
    51什么是数组数组是入门阶段的最后部分。数组的定义:数组是相同类型数据的有序集合。数组描述的是相同类型的若干数据,按照一定的先后次序排序组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。52数组的声明和创建首先必须声明数......
  • 51单片机中断
    51单片机中断​ 51单片机通过中断控制LED灯闪烁/*************定时器中断**************/#include"reg52.h"#include<intrins.h>sbitLED1=P3^0;intcnt=0; voidmain(){ TMOD=0x01;//配置定时器0工作模式16位 TL0=0x00; //给初值,定10ms TH0=0x......
  • N100 N305 怎么选?比N5105、N6005、J4125到底提升多少,一张图片解困扰。
    N100N305怎么选?N100N305怎么选?比N5105、N6005、J4125到底提升多少,一张图片解困扰。本次畅网又推出的NAS主板我们来个参数比较图。 就看那橙色的结果,一目了然。简单的说几点:看下cpu的跑分,那N305、N100当之无愧是佼佼者。再对比价格好像也是那么一回事。从cpu的核显数来......
  • Proteus 8 C51单片机仿真_外部中断
    找到单片机中的外部中断引脚位置,查看规格书得知,外部中断引脚采用下降沿触发或低电平触发,在这里我们接两个按键,使用按键按下产生低电平触发外部中断的方式:在P2.1、P2.2处接两个LED灯来演示进入外部中断后进行操作LED灯的效果:如何使用外部中断呢?百度查找STC89C51系列的中断例程:进行......
  • 51nod 2620 序列问题
    原题首先\(O(n\logn)\)的贪心很好想,显然用堆,每次合并两个权值最小的即可然后考虑\(O(n)\)怎么做?我们发现这个权值\(\max(a_i,a_{i+1})\)的\(\max\)很不好处理,因此我们考虑把他优化一下使用单调栈可以求出权值为\(a_i\)的合并区间,然后我们发现对于合并一个区间答案......
  • 51k+ Star!动画图解、一键运行的数据结构与算法教程!
    大家好,我是Java陈序员。我们都知道,《数据结构与算法》——是程序员的必修课。无论是使用什么编程语音,亦或者是前后端开发,都需要修好《数据结构与算法》这门课!在各个互联网大产的面试中,对数据结构和算法的考核乐此不疲。往往《数据结构与算法》学得好的,都能拿到高薪!但是《数......
  • 【STM32F103】HC-SR04超声波测距模块详解(附工程文件)
    前言:使用的硬件:STM32F103C8T6,HC-SR04,ST-Link(其他烧录器也可以),0.96寸OLED屏幕(非必须,仅供显示测距结果,可以使用串口助手代替),若干杜邦线。涉及操作stm32的GPIO口,外部中断,定时器,本文中不会详细解释,仅提供代码思路。HC-SR04:HC-SR04超声波测距模块提供2cm~400cm的测距功能,精度达3mm。......
  • MacOS 开发51单片机【非虚拟机】
    MacOS开发51单片机【非虚拟机】准备工作一、安装brew因为在Mac上是用brew来安装sdcc的,所以我们首先自己装上homebrew,不然等下安装sdcc的命令是错误的。brew是Mac的包管理管理工具,就和redhat的yum和Ubuntu的apt-get一样。homebrew的安装方法/bin/zsh-c"$(cur......
  • 世微 降压恒流IC AP5199S LED电源 车灯景观灯舞台灯 过EMC认证线路图
    说明AP5199S是一款外围电路简单的多功能平均电流型LED恒流驱动器,适用于宽电压范围的非隔离式大功率恒流LED驱动领域。芯片PWM端口支持超小占空比的PWM调光,可响应最小60ns脉宽。芯片采用我司算法,为客户提供最佳解决方案,最大限度地发挥灯具优势,以实现景观舞台灯高辉的调......
  • NI USB9218国产对标51.2 kS/s/ch,2通道C系列通用模拟输入模块
    51.2kS/s/ch,2通道C系列通用模拟输入模块NI‑9218专为多用途测量而设计。它使用针对特定测量的适配器提供了对加速度计、供电传感器、全桥和电压测量以及四分之一桥、半桥、60V和电流测量的内置支持。每个通道可单独选择,因而用户可在各个通道上进行不同的测量。 NI‑9218是开发......