国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
基于ADXL345+STM32的智能手環心率計步器體溫顯示程序+原理圖
[打印本頁]
作者:
路漫漫
時間:
2020-5-20 22:12
標題:
基于ADXL345+STM32的智能手環心率計步器體溫顯示程序+原理圖
本設計由STM32F103C8T6單片機核心板電路+ADXL345傳感器電路+心率傳感器電路+溫度傳感器+lcd1602電路組成。
1、通過重力加速度傳感器ADXL345檢測人的狀態,計算出走路步數、走路距離和平均速度。
2、通過心率傳感器實時檢測心率,通過溫度傳感器檢測溫度。
3、lcd1602實時顯示步數、距離和平均速度、心率以及溫度值。
源碼:
stm32 adxl345完整codes.7z
(200.08 KB, 售價: 3 E幣)
2020-5-20 22:10 上傳
點擊文件名下載附件
售價: 3 E幣
[記錄]
[
購買
]
基于STM32的智能運動手環原理圖:
sch原理圖.zip
(98.08 KB, 售價: 3 E幣)
2020-5-20 22:07 上傳
點擊文件名下載附件
售價: 3 E幣
[記錄]
[
購買
]
3.png
(17.84 KB)
下載附件
2020-8-2 13:39 上傳
1.png
(88.72 KB)
下載附件
2020-8-2 13:39 上傳
2.png
(41 KB)
下載附件
2020-8-2 13:39 上傳
部分源碼片段:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include <stdio.h>
#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); //顯示
}
}
}
復制代碼
歡迎光臨 ELEOK (http://www.afoofa.cn/)
Powered by Discuz! X5.0