0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

精通单片机与嵌入式 来源:玩转单片机与嵌入式 作者:观海听涛 2022-10-19 09:41 次阅读

一:功能

基于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;
            }
        }
        
        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);                        /* 显示                         */
            
        }
    }
}


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 加速度传感器

    关注

    12

    文章

    458

    浏览量

    54825
  • 计步器
    +关注

    关注

    4

    文章

    75

    浏览量

    19772
  • STM32单片机
    +关注

    关注

    58

    文章

    545

    浏览量

    57934

原文标题:毕业设计 | 基于STM32单片机智能手环脉搏心率计步器体温显示设计

文章出处:【微信号:精通单片机与嵌入式,微信公众号:精通单片机与嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一种基于STM32单片机智能手环心率计步器体温显示方案

    怎样设计一种智能手环心率计步器体温显示的硬件电路?怎样
    发表于 07-16 07:15

    怎样设计一种基于51单片机最小系统的跑步霍尔测速脉搏心率检测仪

    基于51单片机最小系统的跑步霍尔测速脉搏心率检测仪有哪些功能?怎样设计
    发表于 08-03 07:52

    怎样设计一种基于STM32智能手环系统

    STM32系列基于STM32智能手环系统的设计STM32系列前言、系统方案的设计1.1系统功能分析1.2系统总体结构二、硬件电路的搭建2
    发表于 08-04 07:09

    怎样设计基于STM32智能手环系统

    前言随着科学技术的革新,智能化生活已经开始实现,更多的人们的目光聚焦在智能化产品上面,方面是对自身健康的关注,另方面是对便携轻松的生活的向往,
    发表于 08-16 09:02

    怎样设计一种基于51单片机脉搏测量仪

    基于51单片机脉搏测量仪是由哪些部分组成的?怎样设计一种基于51单片机
    发表于 10-19 09:35

    怎样设计一种基于STM32智能手环系统

    基于STM32智能手环系统是由哪些部分组成的?怎样设计基于STM32智能手环系统的硬件电路
    发表于 10-20 07:18

    怎样设计一种基于单片机智能窗帘

    怎样设计一种基于单片机智能窗帘怎样
    发表于 10-22 07:29

    怎样设计基于STC89C51/52单片机心率脉搏测量仪

    心率脉搏测量仪的硬件是由哪些部分构成的?怎样设计基于STC89C51/52单片机心率
    发表于 10-26 07:57

    基于STM32智能手环系统该怎样设计

    怎样设计基于STM32智能手环系统的硬件怎样
    发表于 11-17 06:14

    怎样设计一种基于51单片机脉搏测量仪

    脉搏测量仪在我们的日常生活中已经得到了非常广泛的应用,通过观测脉搏信号,可以对人体的健康进行检查,通常被用于保健中心和医院。为了提高脉搏测量仪的简便性和精确度,本课题设计了一种基于51
    发表于 12-06 08:04

    怎样设计一种基于单片机智能门禁系统

    基于单片机智能门禁系统实现了哪些功能怎样设计一种基于
    发表于 12-21 07:01

    怎样设计一种基于单片机心率监测LED灯辅助睡眠系统

    基于单片机心率监测LED灯辅助睡眠系统的设计原理是什么?怎样设计一种基于单片机
    发表于 02-17 07:23

    怎样设计一种基于Arduino Uno单片机智能小车

    基于Arduino Uno单片机智能小车是由哪些部分组成的?怎样设计一种基于Arduino Uno
    发表于 02-21 06:04

    怎样设计一种基于STM32L151C6单片机智能垃圾桶

    怎样设计一种基于STM32L151C6单片机智能垃圾桶
    发表于 02-28 06:29

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

    基于STM32单片机智能手环心率计步器体温显示设计
    发表于 04-11 09:08 92次下载