国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

 找回密碼
 注冊(cè)
搜索

基于ADXL345+STM32的智能手環(huán)心率計(jì)步器體溫顯示程序+原理圖

[復(fù)制鏈接]
樓主
路漫漫 發(fā)表于 2020-5-20 22:12:22 | 只看該作者 |只看大圖 |倒序?yàn)g覽 |閱讀模式
本設(shè)計(jì)由STM32F103C8T6單片機(jī)核心板電路+ADXL345傳感器電路+心率傳感器電路+溫度傳感器+lcd1602電路組成。
1、通過(guò)重力加速度傳感器ADXL345檢測(cè)人的狀態(tài),計(jì)算出走路步數(shù)、走路距離和平均速度。
2、通過(guò)心率傳感器實(shí)時(shí)檢測(cè)心率,通過(guò)溫度傳感器檢測(cè)溫度。
3、lcd1602實(shí)時(shí)顯示步數(shù)、距離和平均速度、心率以及溫度值。
源碼: stm32 adxl345完整codes.7z (200.08 KB, 售價(jià): 3 E幣)
基于STM32的智能運(yùn)動(dòng)手環(huán)原理圖:
sch原理圖.zip (98.08 KB, 售價(jià): 3 E幣)
基于ADXL345+STM32的智能手環(huán)心率計(jì)步器體溫顯示程序+原理圖 3.png
基于ADXL345+STM32的智能手環(huán)心率計(jì)步器體溫顯示程序+原理圖 1.png
基于ADXL345+STM32的智能手環(huán)心率計(jì)步器體溫顯示程序+原理圖 2.png
部分源碼片段:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include <stdio.h>
  6. #include "timer.h"
  7. #include "key.h"
  8. #include "exti.h"
  9. #include "adxl345.h"
  10. #include "lcd1602.h"
  11. #include "ds18b20.h"

  12. unsigned char ReadAdxl345;           //定時(shí)讀取adxl345數(shù)據(jù)
  13. unsigned char ErrorNum=0;   //記錄錯(cuò)誤次數(shù)
  14. unsigned char CheckNum=0;   //檢測(cè)次數(shù)
  15.          
  16. char dis0[16];//液晶數(shù)組顯示暫存
  17. char dis1[35];

  18. unsigned int xlTab[5];//心率數(shù)組
  19. unsigned char count=0;        //心率濾波計(jì)數(shù)
  20. unsigned int xinLater=0;//        心率延時(shí)處理
  21. unsigned int xinLv =0;    //心率值

  22. unsigned int BuShu=0;//步數(shù)
  23. unsigned int Normal_num=0;                        //正常次數(shù)
  24. unsigned int Error_num=0;                        //傾斜次數(shù)

  25. unsigned int disBuShu = 0;  //顯示步數(shù)
  26. float disJuLi = 0;//顯示距離
  27. float temperature;  //溫度
  28. unsigned char readTemp = 0;        //讀取溫度標(biāo)志

  29. int main(void)
  30. {
  31.         delay_init();                     //延時(shí)函數(shù)初始化         
  32.         uart_init(9600);                 //串口初始化為9600
  33.   TIM3_Int_Init(49,7199);//50ms         
  34.         EXTIX_Init();                // 初始化外部中斷
  35.         LED_Init();                                  //初始化與LED連接的硬件接口
  36.         KEY_Init();                        //初始化按鍵

  37.         Lcd_GPIO_init();  //初始化lcd引腳
  38.         Lcd_Init();                  //初始化lcd屏幕
  39.         delay_ms(200);
  40.          
  41.   Init_ADXL345();
  42.   if(Single_Read_ADXL345(0X00)==0xe5)        
  43.   {
  44.     delay_ms(5);
  45.   }
  46.   else
  47.   {
  48.     delay_ms(3);
  49.   }
  50.          
  51.         while(1)
  52.         {

  53.     if(ReadAdxl345== 1)   //定時(shí)讀取adxl345數(shù)據(jù)
  54.     {
  55.       ReadAdxl345= 0;
  56.       ReadData_x();                                                  //三軸檢測(cè)函數(shù)
  57.       CheckNum++;
  58.       if((temp_Y>450)||(temp_Y<-450)) //查看正常次數(shù)     
  59.       {
  60.         Normal_num++;  //正常次數(shù)++
  61.       }
  62.       else
  63.       {
  64.         Error_num++;//傾斜次數(shù)
  65.       }
  66.       if((Error_num!=0)&&(Normal_num!=0))//檢測(cè)到步數(shù)
  67.       {
  68.                                 BuShu++;   //步數(shù)脈沖量++
  69.         Error_num=0;    //清除一個(gè)周期檢測(cè)
  70.         Normal_num=0;
  71.       }
  72.     }
  73.                
  74.                 if(disFlag==1)           //顯示標(biāo)志
  75.                 {
  76.                         disFlag = 0;

  77.                         readTemp++;  //定時(shí)計(jì)數(shù)
  78.                         if(readTemp >= 8)//約800ms處理一次數(shù)據(jù) 溫度
  79.                         {
  80.                                 readTemp =0;//重新計(jì)數(shù)
  81.                                 temperature=(float)DS18B20_Get_Temp()/10;        //縮小10倍為實(shí)際值                        
  82.                         }
  83.                                                 
  84.                         disBuShu = BuShu/2;  //顯示步數(shù)
  85.                         disJuLi = disBuShu*0.45;//顯示距離
  86.                         
  87.                         sprintf(dis0,"X:%03d/min %4.1f C",xinLv,temperature);//打印
  88.                         Lcd_Puts(0,0,(unsigned char *)dis0);        //顯示
  89.                         Lcd_1Put(14,0,0xdf);//顯示符號(hào)
  90.                         sprintf(dis1,"BS:%03d JL:%4.1fm  ",disBuShu,disJuLi);//打印
  91.                         Lcd_Puts(0,1,(unsigned char *)dis1);        //顯示
  92.         
  93.                 }        
  94.         }                                                                                            
  95. }        
復(fù)制代碼


您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

手機(jī)版|小黑屋|ELEOK |網(wǎng)站地圖

GMT+8, 2026-5-26 04:54

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回復(fù) 返回頂部 返回列表