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

发布时间:
来源: 电子工程世界

一:功能


基于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;                                            /* 清除一个周期检测             */

文章来源于: 电子工程世界 原文链接

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