一:功能
基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
本設(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ù)、距離和平均速度、心率以及溫度值。
二:電路圖
三:源代碼
#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; /* 定時(shí)讀取adxl345數(shù)據(jù) */ unsigned char ErrorNum=0; /* 記錄錯(cuò)誤次數(shù) */ unsigned char CheckNum=0; /* 檢測(cè)次數(shù) */ char dis0[16]; /* 液晶數(shù)組顯示暫存 */ char dis1[35]; unsigned int xlTab[5]; /* 心率數(shù)組 */ unsigned char count=0; /* 心率濾波計(jì)數(shù) */ unsigned int xinLater=0; /* 心率延時(shí)處理 */ 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; /* 讀取溫度標(biāo)志 */ int main(void) { delay_init(); /* 延時(shí)函數(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) /* 定時(shí)讀取adxl345數(shù)據(jù) */ { ReadAdxl345= 0; ReadData_x(); /* 三軸檢測(cè)函數(shù) */ CheckNum++; if((temp_Y>450)||(temp_Y<-450)) /* 查看正常次數(shù) */ { Normal_num++; /* 正常次數(shù)++ */ } else { Error_num++; /* 傾斜次數(shù) */ } if((Error_num!=0)&&(Normal_num!=0)) /* 檢測(cè)到步數(shù) */ { BuShu++; /* 步數(shù)脈沖量++ */ Error_num=0; /* 清除一個(gè)周期檢測(cè) */ Normal_num=0; } } if(disFlag==1) /* 顯示標(biāo)志 */ { disFlag = 0; readTemp++; /* 定時(shí)計(jì)數(shù) */ if(readTemp >= 8) /* 約800ms處理一次數(shù)據(jù) 溫度 */ { readTemp =0; /* 重新計(jì)數(shù) */ temperature=(float)DS18B20_Get_Temp()/10; /* 縮小10倍為實(shí)際值 */ } 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); /* 顯示符號(hào) */ sprintf(dis1,"BS:%03d JL:%4.1fm ",disBuShu,disJuLi); /* 打印 */ Lcd_Puts(0,1,(unsigned char *)dis1); /* 顯示 */ } } }
審核編輯:劉清
-
加速度傳感器
+關(guān)注
關(guān)注
12文章
478瀏覽量
55599 -
計(jì)步器
+關(guān)注
關(guān)注
4文章
76瀏覽量
20172 -
STM32單片機(jī)
+關(guān)注
關(guān)注
59文章
549瀏覽量
59295
原文標(biāo)題:畢業(yè)設(shè)計(jì) | 基于STM32單片機(jī)智能手環(huán)脈搏心率計(jì)步器體溫顯示設(shè)計(jì)
文章出處:【微信號(hào):精通單片機(jī)與嵌入式,微信公眾號(hào):精通單片機(jī)與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論