怎样去设计一种基于STM32单片机的智能手环脉搏心率计步器

发布时间:2023-09-07  

一:功能


基于STM32单片机智能手环心率计步器体温显示设计


本设计由STM32F103C8T6单片机核心板电路+ADXL345传感器电路+心率传感器电路+温度传感器+lcd1602电路组成。


1、通过重力加速度传感器ADXL345检测人的状态,计算出走步数、走路距离和平均速度。


2、通过心率传感器实时检测心率,通过温度传感器检测温度。


3、lcd1602实时显示步数、距离和平均速度、心率以及温度值。


二:电路图

fe7d8278db65a2b5692e7c3b4447bd9b_wKgaomTnJuaAJhKTAANoXFmZv_0383.png

三:源代码


#include "led.h"

#include "delay.h"

#include "sys.h"

#include "usart.h"

#include 

#include "timer.h"

#include "key.h"

#include "exti.h"

#include "adxl345.h"

#include "lcd1602.h"

#include "ds18b20.h"



unsigned char ReadAdxl345;                                              /* 定时读取adxl345数据          */

unsigned char ErrorNum=0;                                               /* 记录错误次数                 */

unsigned char CheckNum=0;                                               /* 检测次数                     */



char dis0[16];                                                          /* 液晶数组显示暂存             */

char dis1[35];



unsigned int xlTab[5];                                                  /* 心率数组                     */

unsigned char count=0;                                                  /* 心率滤波计数                 */

unsigned int xinLater=0;                                                /* 心率延时处理                 */

unsigned int xinLv =0;                                                  /* 心率值                       */



unsigned int BuShu=0;                                                   /* 步数                         */

unsigned int Normal_num=0;                                              /* 正常次数                     */

unsigned int Error_num=0;                                               /* 倾斜次数                     */



unsigned int disBuShu = 0;                                              /* 显示步数                     */

float disJuLi = 0;                                                      /* 显示距离                     */

float temperature;                                                      /* 温度                         */

unsigned char readTemp = 0;                                             /* 读取温度标志                 */



int main(void)

{

    delay_init();                                                       /* 延时函数初始化               */

    uart_init(9600);                                                    /* 串口初始化为9600             */

    TIM3_Int_Init(49,7199);                                             /* 50ms                         */

    EXTIX_Init();                                                       /* 初始化外部中断               */

    LED_Init();                                                         /* 初始化与LED连接的硬件接口    */

    KEY_Init();                                                         /* 初始化按键                   */

    

    Lcd_GPIO_init();                                                    /* 初始化lcd引脚                */

    Lcd_Init();                                                         /* 初始化lcd屏幕                */

    delay_ms(200);

    

    Init_ADXL345();

    if(Single_Read_ADXL345(0X00)==0xe5)

    {

        delay_ms(5);

    }

    else

    {

        delay_ms(3);

    }

    

    while(1)

    {

        

        if(ReadAdxl345== 1)                                             /* 定时读取adxl345数据          */

        {

            ReadAdxl345= 0;

            ReadData_x();                                               /* 三轴检测函数                 */

            CheckNum++;

            if((temp_Y>450)||(temp_Y            {

                Normal_num++;                                           /* 正常次数++                   */

            }

            else

            {

                Error_num++;                                            /* 倾斜次数                     */

            }

            if((Error_num!=0)&&(Normal_num!=0))                         /* 检测到步数                   */

            {

                BuShu++;                                                /* 步数脉冲量++                 */

                Error_num=0;                                            /* 清除一个周期检测             */

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    Gurman:苹果Apple Watch Series 10将支持血压监测;3 月 17 日消息,据悉,苹果和三星均在研发可通过智能手表进行无创血糖检测的技术,这将......
    消息称苹果Apple Watch无创血糖监测功能最晚七年后才会推出;据彭博社记者马克・古尔曼(Mark Gurman)认为,苹果 Apple Watch 的血糖......
    当年iPhone X的升级。本文引用地址:多年来一直在开发被许多人称为"圣杯"的无创血压和血糖监测功能,彭博社的马克·古尔曼(Mark Gurman)在其最新报告中称,“所有迹象都表明,新款Apple Watch......
    监测产品。它能避免有创的痛苦和感染风险,而且是连续监测。 中科院深圳先进技术研究院的研究员聂泽东先生 中科院深圳先进技术研究院的研究员聂泽东先生表示,目前无创血糖的难点,一是体内/体表标志物和血糖......
    对工业 4.0 连通性的改进正在推动这一市场的发展。与糕点一样,有很多食谱,但只有一些食谱通过精确混合外观、味道和质地来提供良好的效果。可听设备、无创血糖监测和 AR/VR 头戴......
    毛细血管内皮的直接扩散为皮肤细胞提供营养。这也使得血液和间质液中葡萄糖浓度存在着可靠的相关关系。通过反向离子电渗法(RI)提取间质液中葡萄糖的方法研究较为广泛,但目前的挑战是其复杂的结构和不稳定性。 Yao等展示了一种简单的双电极无创血糖......
    ,在美大约270家零售店则从12月24日开始暂停销售,公司称此举是为了“预防性地”采取措施以遵守ITC的决定。 Masimo公司是一家专注于无创血......
    酸是生理应激的重要指标,反映了有氧代谢和无氧代谢之间的转变。此外,汗液葡萄糖水平与血糖水平呈现高度相关关系,从而实现无创血糖检测。因此,汗液非常适合在日常生活甚至运动中对人体功能进行无创实时监测。 汗液中K⁺、Na⁺、乳酸......
    及时发现潜在风险人群,防患于未然。 这一次,华为在血糖健康领域迈出第一步,华为WATCH 4系列是业界首款支持高血糖风险评估研究的智能手表,高血糖风险评估研究由南京鼓楼医院、北京协和医院、中国......
    年才能推出。苹果目前也在积极地积累技术支持,美国商标和专利局(USPTO)公示了一项新的苹果专利(专利号 US 20220400959),涉及获取和分析无创血压测量数据的系统和方法。 苹果......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>