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

发布时间:2024-09-27  

一:功能

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

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

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

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

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


二:电路图

77f6f47a-4f39-11ed-a3b6-dac502259ad0.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<-450))                             /* 查看正常次数                 */

            {

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

            }

            else

            {

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

            }

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

            {

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

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

                Normal_num=0;

            }

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

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

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

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

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

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

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

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