51单片机 超声波测距组件

发布者:BoldDreamer最新更新时间:2019-05-09 来源: eefocus关键字:51单片机  超声波  测距组件 手机看文章 扫描二维码
随时随地手机看文章


/**

 * 超声波测距组件

 * 文件名:ultrasonic.h

 */

 

#ifndef _ULTRASONIC_H

#define _ULTRASONIC_H

 

#define somenop(); {

    _nop_();_nop_();_nop_();_nop_();_nop_();

    _nop_();_nop_();_nop_();_nop_();_nop_();

}

 

sbit TX = P1^0;  //发射引脚

sbit RX = P1^1;  //接收引脚

 

void tmr1_specialInit();

uint8_t ult_getDis();

 

#endif // _ULTRASONIC_H

 




/**

 * 超声波测距组件

 * 文件名:ultrasonic.c

 */

 

#include

#include

#include "stdint.h"

#include "ultrasonic.h"

 

/* 特殊配置定时器1,作为计时器 */

void tmr1_specialInit() {    //不要开启中断,要将溢出标志位置0,不要开始运行

    AUXR &= 0xBF;

    TMOD &= 0x0F;

    TMOD |= 0x10;

    TL1 = 0;    //!!!

    TH1 = 0;    //!!!

    TF1 = 0;    //!!!

}

//TX引脚发送40KHz方波信号驱动超声波发送探头

static void ult_sendWave() {

    uint8_t cnt = 8;  //发送8个脉冲

 

    EA = 0;    //!!!

    do {

        TX = 1;

        somenop();    //保持TX一段时间

        TX = 0;

        somenop();    //保持TX一段时间

    } while (--cnt);

    EA = 1;    //!!!

}

 

uint8_t ult_getDis() {

    uint16_t count;        //定时器1的计数值,即为时间间隔

    uint8_t distance;    //单位为cm,实测最大测量距离约为90cm

 

    RX = 1;        //!!

    ult_sendWave();  //发送方波信号

    TR1 = 1;  //启动计时

    while ((RX == 1) && (TF1 == 0));  //等待收到脉冲

    TR1 = 0;  //关闭计时

 

    if (TF1 == 1) {    //如果定时器发生溢出,则超过量程

        TF1 = 0;

        distance = 0xFF;  //无返回,距离为无穷远

    } else {

        count = TH1;

        count <<= 8;

        count |= TL1;

 

        distance = (uint8_t)((uint32_t)count * 17 / 1000);    //计算距离(cm)

    }

    TH1 = 0;    //重新复位定时器,为下次测量做好准备

    TL1 = 0;

 

    return distance;

}


关键字:51单片机  超声波  测距组件 引用地址:51单片机 超声波测距组件

上一篇:51单片机项目 门禁系统
下一篇:51单片机项目:多功能记录仪

推荐阅读最新更新时间:2024-11-13 08:14

小体积红外接近/环境光传感器实现扫地机器人的碰撞保护
随着技术的进步以及人们对生活水平的追求越来越高,智能家居的发展日新月异,而扫地机器人就是重要的一员。它不仅是人们生活的重要帮手,更能给使用者带来快乐的使用体验。也正因为如此,扫地机器人的市场规模正迅猛增加! 在扫地工作中,为了保护扫地机器人本身和家具在清扫时不受到损害,市场上的扫地机器人都带有防碰撞功能。目前可实现防碰撞功能的技术有以下几种:超声波仿生探测技术、红外距离感应技术、防撞杆设计,这几种技术各有其优点。其中,红外距离感应技术以其小体积、低功耗、低成本、设计灵活、功能丰富,在扫地机器人的防碰撞应用中占有非常大的比例。而在这种应用中,世强代理的美国Silicon Labs,作为世界精密混合信号器件供应商,其推出的红外接近
[物联网]
小体积红外接近/环境光传感器实现扫地机器人的碰撞保护
LCD液晶显示的51单片机简单计算器
概述 LCD液晶显示的51单片机简单计算器可实现完成了两个范围在0到255的数加、减、乘、除运算,其中减法可显示负数,除法只保留整数并由LCD液晶显示。并在实验室实验箱,实现上述功能。完成该任务需要熟悉和了解控制LCD液晶屏的显示的方法,矩阵键盘读取按键值的方法、89C51系列单片机的相关知识、C51编程和数字电子技术的相关知识。 完整代码:https://download.csdn.net/download/weixin_43786907/16524021。 方案 我使用实验室试验箱的2×8矩阵键盘作为的16个按键作为输入分别为0到9、“+”、“-”、“*”、“/”、“=”与复位,由单片机计算并通过LCD显示。 矩阵键盘
[单片机]
LCD液晶显示的<font color='red'>51单片机</font>简单计算器
51单片机+K9F2080U0A制作MP3电路图与源程序
1单片机作MP3 步骤很详细奥 PLAY键播放音乐 FUNC用于在乐取选择、音量控制、音效控制间切换 PREVIOUS,选取时下一首,音量控制时为减小音量,音效控制时为下一音效 PREVIOUS,选取时上一首,音量控制时为增大音量,音效控制时为上一音效 电路原理图如下: 单片机源程序如下: /*C************************************************************************** * NAME: main.c *--------------------------------------------------------------------------
[单片机]
<font color='red'>51单片机</font>+K9F2080U0A制作MP3电路图与源程序
51单片机与AVR和PIC单片机之间的比较
我觉得51比较好。因为51是比较标准的复杂指令单片机,通过学习51可以比较全面掌握单片机和通用CPU知识,达到触类旁通的目的(Z80也不错,可惜有些过时了,开发工具也很落后)。而PIC是一种精简指令系统,虽然机器码好懂,但是局限性较大,就是说会过分偏重理解MicroChip的设计思想。其实全面掌握单片机技术较用精某一种芯片来得划算(不要被某一个公司捆住思想)。 类似PIC的芯片很多,比如AVR、MSP430、Z8等,掌握51的结构和指令系统之后理解这些单片机的原理就很容易。而反过来也许就要各个击破。 还有一些理由: 就芯片而言:51单片机有非常低廉的价格和数不胜数的衍生芯片系列,这些产品从低速(1MPS)到高速(30MP
[单片机]
<font color='red'>51单片机</font>与AVR和PIC单片机之间的比较
51单片机之特殊功能寄存器SFR
全部的特殊功能寄存器: 特殊寄存器1、ACC(A):累加器 ALU(算数运算逻辑单元,是运算器的重要部件)在进行运算时,数据绝大部分来源于累加器A,运算的结果通常也送回累加器A 特殊寄存器2、B:辅助寄存器 此寄存器是为乘法和除法指令而设置的 以乘法为例:一个8bit的数和另一个8bit的数进行乘法运算,得到的结果为一个16bit的数,此时就需要俩个8bit寄存器来存放结果,辅助寄存器B就派上了用场,一般的,我们用B来存放高8bit,用A来存放低8bit。 以除法为例:在计算1除以3时,所得的结果以商和余数的形式保存,一般的,A用于保存商,B用于保存余数 特殊寄存器3、标志寄存器PSW: 一般用于保存指令执行
[单片机]
<font color='red'>51单片机</font>之特殊功能寄存器SFR
基于AT89S51单片机开发板的设计
1 引言 单片机系统传统的编程方式是将单片机先从电路板上取下,放入专用的编程器进行编程,再放人电路板进行调试。其缺点是频繁的拔插器件容易损坏器件的引脚;如果频繁的调试程序,必须重复拔插,大大降低了开发效率。ISP技术是未来发展的方向,其优势是无需编程器就可进行单片机的实验和开发,单片机器件可直接焊接到电路板上,调试结束即为成品,免去调试时由于频繁插入取出对器件和电路板造成的损坏和带来的不便。 ISP可降低研发成本;缩短从设计、制造到现场调试的时间,简化生产流程,大大提高工作效率;在试验新品或学生试验等常需用不同的程序调试器件的场合中,在线编程技术尤为重要。 设计AT89S51 单片机开发板 ,采用ISP下载线实现在Keil C
[单片机]
基于AT89S<font color='red'>51单片机</font>开发板的设计
基于51单片机16X32LED点阵显示屏程序设计
51单片机16X32LED点阵显示屏由单片机最小系统、行驱动电路74HC154、列驱运电路74HC595组成,实现汉字、数字的显示。电路简单。程序中以20个汉字作为显示示例。资料含51单片机C语言源程序、PROTEUS7.8仿真源文件。附送取模软件及取模说明文档,方便你自己更换显示内容。显示移动速度可在程序中进行设置。 #include REG51.H #define FOSC 12 //定义晶振频率 #define INIT_TH0 0x3C //定时器T0初始值 #define INIT_TL0 0xB0 #define TMOD_T00 0x
[单片机]
基于<font color='red'>51单片机</font>16X32LED点阵显示屏程序设计
MCS-51单片机输入输出端口(I/O口)
单片机芯片内还有一项主要内容就是并行I/O口。MCS-51共有4个8位的并行I/O口,分别记作P0、P1、P2、P3。每个口都包含一个锁存器、一个输出驱动器和输入缓冲器。实际上,它们已被归入专用寄存器之列,并且具有字节寻址和位寻址功能。 在访问片外扩展存储器时,低8位地址和数据由P0口分时传送,高8位地址由P2口传送。在无片外扩展存储器的系统中,这4个口的每一位均可作为双向的I/O端口使用。
[单片机]
MCS-<font color='red'>51单片机</font>输入输出端口(I/O口)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved