HT66F2390——HC-SR04超声波配置

合泰HT66F2390超声波测距

关于HC-SR04传感器工作原理,请参考其他博客,本文主要简单分享HT66F2390的HC-SR04超声波测距配置。

定时器配置

本文用标准定时器STM1作超声波计时。

tim.h

#include "HT66F2390.h"

void tm_init();   //开启定时器
void tm1_init(void);
void tm2_init(void);

tim.c

#include "tm.h"

void  tm_init()   //开启定时器
{
//	tm1_init();
	tm2_init();
}

/* STM0 10ms中断配置 */
void tm1_init(void)
{
	_phc0=0;
	_phc1=0;
	_ph0=1;
	_ph1=0;
	_stm0c0=0b00110000;    //TIM0时钟 = sys / 64; TIM0时钟 = 16MHz / 64 = 125kHz;
	_stm0c1=0b11000001;    //定时器模式、比较计数器A匹配清0计数器 计数器计数一次为0.004ms
	_stm0al=2500&0xff;     //0.004ms * 1250 = 10ms
	_stm0ah=2500>>8;
	_stm0af=0;
	_stm0ae=1;
	_mf0f=0;
	_mf0e=1;
	_emi=1;
	_st0on=1;
}
/* STM1计时模式 */
void tm2_init(void)
{
    _stm1c0 = 0x00;  //fSYS/4
    _stm1c1 = 0xc0;  //定时 / 计数器模式,STMn 比较器 P 匹配
}

超声波配置

新建hc-sr04.h和hc-sr04.c两个文件,来配置超声波。

hc-sr04.h

#include "HT66F2390.h"
//#include "sys.h"

#define trig         _pf0
#define echo         _pf1
#define trig_t       _pfc0
#define echo_t       _pfc1

extern float  S1;
extern float  H,H1;

void hcsr04_receive1(float *H1,float *S1);

hc-sr04.c

#include "hc-sr04.h"
/*
项目名:超声波测距
平台:HT-IDE3000
版本:第二版 V2021.04.30
功能:超声波已配置成可调用的函数库,调用起来比第一版方便了许多,函数可以存放两 个参数,分别表示水位和超声波实际测试距离
备注:不同的水箱水位基准不一样,每次更换水箱都要重新配置水位相关参数
*/

float  S1;
float  H=20,H1;

void hcsr04_receive1(float *H1,float *S1)    //超声波1测水位
{
	int time=0;
	*H1=0;
	*S1=0;
	echo_t= 1;              //输入模式
	trig_t = 0;              //输出模式
	trig = 1;
	GCC_DELAY(100);      //延迟25us,GCC_DELAY(4)为1us
    trig = 0;
	while (!echo);		       //当echo为低电平,跳出等待
        _st1on = 1;                   //开始计数
	while (echo);		       //当echo为高电平,停止计数
        _st1on = 0;                   //关闭计数器1
	time = _stm1dh * 256 + _stm1dl;   //计时
	*S1=(time * 1.7) / 400;        //真实距离
	*H1=H-*S1;		//液位
}

调用hcsr04_receive1(float *H1,float *S1)函数前要先进行定时器初始化,即先调用tm_init()函数开启定时器。

某些情况下,超声波测量数据会波动,无法获取准确的距离。后期有空可能会出超声波+卡尔曼滤波的博客。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于云端的生命检测系统.zip_ht32f52352和ht66f2390都是现代化的生命检测系统,具有云端操作的功能。然而,它们之间存在一些区别。 ht32f52352是一款由HOLTEK公司生产的微控制器。它具有较高的性能和处理能力,能够处理更复杂的生命检测任务。该型号的微控制器具有较大的存储空间和更多的输入输出引脚,可与其他设备进行更方便的通信和数据传输。这使得ht32f52352适合于需要处理大量数据的复杂生命检测应用,例如医疗仪器或生物监测设备。此外,HOLTEK公司也提供了完善的技术支持和文档,使得开发人员可以更轻松地开发和集成该型号的微控制器。 与之相比,ht66f2390是另一款由HOLTEK公司生产的微控制器。它相对于ht32f52352来说,性能和处理能力较低。它适合于一些相对简单的生命检测应用,例如家庭健康监测设备或智能手环。ht66f2390的存储空间较小,输入输出引脚数量有限,因此在处理大数据量和复杂数据算法方面相对不利。然而,ht66f2390的设计简洁,功耗低,适合于对能耗和成本有限制的应用。此外,HOLTEK公司也提供了相应的技术支持和文档,以帮助开发人员优化其设计和应用。 综上所述,选择基于云端的生命检测系统时,需要根据具体的应用需求来选择合适的型号。ht32f52352适用于处理复杂数据和大数据量的应用,ht66f2390则适用于对功耗和成本有限制的应用。另外,开发人员也可以考虑厂商提供的技术支持和文档等方面的因素来做出选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙之幻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值