当前位置:   article > 正文

毕设仿真分享 STM32蓝牙无线手环脉搏心率计步器体温监测设计_stm32仿真心率计步器

stm32仿真心率计步器

一、电路设计

电路构成:STM32F103C8T6单片机电路+时钟晶振电路+复位电路(上电自复位,手动复位)+LCD1602液晶显示屏电路+ADXL345计步检测传感器电路+DS18B20温度传感器电路+心率光电检测传感器+蓝牙模块+总电源供电电路;

功能介绍:

1.上电完成之后,通过重力角度检测,计算出整个行走的步数,通过步数的换算,得出行走的距离;

2.STM32驱动LCD1602液晶显示屏,实时动态显示步数的数据以及显示行走的距离,第二行数据显示步数,和走路的距离,;

3.DS18B20温度传感器可以检测温度的数据,将温度的数据显示在液晶显示屏上面;

4.心率光电检测传感器实时监测心率脉搏心跳数据,显示在液晶显示屏上面;

5.板载复位开关,重新清零,可以按下复位按键,重新开始计算步数和距离;

6.蓝牙模块可与手机相连接,并将数据上传至APP,实现手机实时监控;

二、原理图

三、部分代码

#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;
            }
        }
        
        if(disFlag==1)                                                  /* 显示标志                     */
        {
            disFlag = 0;
            
            readTemp++;                                                 /* 定时计数                     */
            if(readTemp >= 8)                                           /* 约800ms处理一次数据 温度     */
            {
                readTemp =0;                                            /* 重新计数                     */
                temperature=(float)DS18B20_Get_Temp()/10;               /* 缩小10倍为实际值             */
            }
            
            disBuShu = BuShu/2;                                         /* 显示步数                     */
            disJuLi = disBuShu*0.45;                                    /* 显示距离                     */
            
            sprintf(dis0,"X:%03d/min %4.1f C",xinLv,temperature);       /* 打印                         */
            Lcd_Puts(0,0,(unsigned char *)dis0);                        /* 显示                         */
            Lcd_1Put(14,0,0xdf);                                        /* 显示符号                     */
            sprintf(dis1,"BS:%03d JL:%4.1fm  ",disBuShu,disJuLi);       /* 打印                         */
            Lcd_Puts(0,1,(unsigned char *)dis1);                        /* 显示                         */
            
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103

项目获取:

https://gitee.com/feifei1122/simulation-project

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/560346
推荐阅读
相关标签
  

闽ICP备14008679号