一:功能
基于STM32單片機智能手環(huán)心率計步器體溫顯示設(shè)計
本設(shè)計由STM32F103C8T6單片機核心板電路+ADXL345傳感器電路+心率傳感器電路+溫度傳感器+lcd1602電路組成。
1、通過重力加速度傳感器ADXL345檢測人的狀態(tài),計算出走步數(shù)、走路距離和平均速度。
2、通過心率傳感器實時檢測心率,通過溫度傳感器檢測溫度。
3、lcd1602實時顯示步數(shù)、距離和平均速度、心率以及溫度值。
二:電路圖
三:源代碼
#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數(shù)據(jù) */ unsigned char ErrorNum=0; /* 記錄錯誤次數(shù) */ unsigned char CheckNum=0; /* 檢測次數(shù) */ char dis0[16]; /* 液晶數(shù)組顯示暫存 */ char dis1[35]; unsigned int xlTab[5]; /* 心率數(shù)組 */ unsigned char count=0; /* 心率濾波計數(shù) */ unsigned int xinLater=0; /* 心率延時處理 */ unsigned int xinLv =0; /* 心率值 */ unsigned int BuShu=0; /* 步數(shù) */ unsigned int Normal_num=0; /* 正常次數(shù) */ unsigned int Error_num=0; /* 傾斜次數(shù) */ unsigned int disBuShu = 0; /* 顯示步數(shù) */ float disJuLi = 0; /* 顯示距離 */ float temperature; /* 溫度 */ unsigned char readTemp = 0; /* 讀取溫度標志 */ int main(void) { delay_init(); /* 延時函數(shù)初始化 */ 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數(shù)據(jù) */ { ReadAdxl345= 0; ReadData_x(); /* 三軸檢測函數(shù) */ CheckNum++; if((temp_Y>450)||(temp_Y<-450)) /* 查看正常次數(shù) */ { Normal_num++; /* 正常次數(shù)++ */ } else { Error_num++; /* 傾斜次數(shù) */ } if((Error_num!=0)&&(Normal_num!=0)) /* 檢測到步數(shù) */ { BuShu++; /* 步數(shù)脈沖量++ */ Error_num=0; /* 清除一個周期檢測 */ Normal_num=0; } } if(disFlag==1) /* 顯示標志 */ { disFlag = 0; readTemp++; /* 定時計數(shù) */ if(readTemp >= 8) /* 約800ms處理一次數(shù)據(jù) 溫度 */ { readTemp =0; /* 重新計數(shù) */ temperature=(float)DS18B20_Get_Temp()/10; /* 縮小10倍為實際值 */ } disBuShu = BuShu/2; /* 顯示步數(shù) */ 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); /* 顯示 */ } } }
審核編輯:劉清
-
加速度傳感器
+關(guān)注
關(guān)注
12文章
474瀏覽量
55200 -
計步器
+關(guān)注
關(guān)注
4文章
76瀏覽量
19952 -
STM32單片機
+關(guān)注
關(guān)注
59文章
549瀏覽量
58759
原文標題:畢業(yè)設(shè)計 | 基于STM32單片機智能手環(huán)脈搏心率計步器體溫顯示設(shè)計
文章出處:【微信號:精通單片機與嵌入式,微信公眾號:精通單片機與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論