历史上的今天
今天是:2025年05月09日(星期五)
2019年05月09日 | 51单片机 超声波测距组件
2019-05-09 来源:eefocus
/**
* 超声波测距组件
* 文件名: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单片机项目:多功能记录仪
史海拾趣
|
数字万用表是利用模/数转换原理,将被测量转化为数字量,并将测量结果以数字形式显示出来的一种测量仪表。数字万用表与指针式万用表相比,具有精度高、速度快、输入阻抗大、数字显示、读数准确、抗干扰能力强,测量自动化程度高等优点而被广泛应用 ...… 查看全部问答> |
|
各位大侠,请问谁有Borland C++ V4.51,我正在学 MicroC/OS,需要用Borland C++ V4.51进行编译,一直没有找到安装程序,找到一个BC45,但是我不会用,请教一下各位,谢谢!… 查看全部问答> |
|
corelibc.lib(pegwmain.obj) : error LNK2019: unresolved external symbol WinMain referenced in function WinMainCRTStartup ARMV4IRel/test_t.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. 请高手赐教 ...… 查看全部问答> |
|
各位 我的 ucos 中断一直进不去 static void BSP_IntHandler (CPU_DATA int_id) { #if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL) CPU_SR cpu_sr; #endif CPU_FNCT_VOID isr; CPU ...… 查看全部问答> |
|
我用的是F123,使用汇编语言编程AQ430开发; 跟踪调试发现02F4H~02FFH(RAM最后10 个空间)的发生变化,而我未对该空间进行任何操作 这是什么原因造成的… 查看全部问答> |
|
我的机子里面装 过了ew430v210.exe。就是用来给430仿真用的软件,现在我要重新安一个。可以系统提示不能安了。有什么方法可以把原来的那个软件?载干净?谢谢了。… 查看全部问答> |
|
主攻“高频无线电类”赛题方向的同学注意了--南华大学黄智伟系列 本帖最后由 paulhyde 于 2014-9-15 03:38 编辑 1. “高频无线电类赛题”每届都有 在9届电子设计竞赛中,“高频无线电类赛题” 除了1994年外,每届都有:简易无线电遥控系统(1995年C题) 调幅广播收音机(1997年D题) 短波调频接收机(1999年D题 ...… 查看全部问答> |




