删除下面代码中所有和OLED无关的部分,我只需要OLED模块
#include "stm32f10x.h"
#include "OLED_I2C.h"
#include "ds1302.h"
#include "ds18b20.h"
#include "usart1.h"
#include "led.h"
#include "delay.h"
#include "max30102_read.h"
#include "myiic.h"
#include "key.h"
#include "iic.h"
#include "stdio.h"
#include "string.h"
#include "adxl345.h"
#include "timer.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FLASH_SAVE_ADDR ((u32)0x0800F000) //ÉèÖÃFLASH ±£´æµØÖ·(±ØÐëΪżÊý)
#define STM32_RX1_BUF Usart1RecBuf
#define STM32_Rx1Counter RxCounter
#define STM32_RX1BUFF_SIZE USART1_RXBUFF_SIZE
unsigned char setn=0;
unsigned char p_r=0; //ƽÄê/ÈóÄê =0±íʾƽÄ꣬=1±íʾÈóÄê
float adx,ady,adz;
float acc;
float acc2,acc3;
u8 flag=0;
u16 bushu=0;
short temperature=0;
u16 xinlvMin=60,xinlvMax=120;//ÐÄÂÊÏÂÏÞÉÏÏÞ
u16 spo2Min=80;//ѪÑõÏÂÏÞ
u16 tempMax=373;//ζÈÉÏÏÞ
u16 tempMin=150;//ζÈÏÂÏÞ
char display[16];
u8 shanshuo=0;
u8 beepFlag=0x00; //·äÃùÆ÷±¨¾¯±êÖ¾
u8 sendFlag = 1;
u8 tiltFlag=0; //µøµ¹±êÖ¾
u8 fallTime=5; //µøµ¹³ÖÐøµÄʱ¼ä
u8 displayfall=0;
bool sendSetValueFlag=0;
int32_t hrAvg;//ÐÄÂÊ
int32_t spo2Avg;//ѪÑõŨ¶È
void DisplayTime(void)//ÏÔʾʱ¼äº¯Êý
{
unsigned char i=0,x=0;
u16 nian_temp;
if(setn==0)DS1302_DateRead(&SysDate);//¶Áʱ¼ä
nian_temp=2000+SysDate.year;
if((nian_temp%400==0)||((nian_temp%100!=0)&&(nian_temp%4==0))) //ÅжÏÊÇ·ñΪÈòÄê
p_r=1;
else
p_r=0;
if(setn<8)
{
OLED_ShowChar((x++)*8,0,'2',2,setn+1-1);
OLED_ShowChar((x++)*8,0,'0',2,setn+1-1);
OLED_ShowChar((x++)*8,0,SysDate.year/10+'0',2,setn+1-1);
OLED_ShowChar((x++)*8,0,SysDate.year%10+'0',2,setn+1-1);
OLED_ShowChar((x++)*8,0,'-',2,0);
OLED_ShowChar((x++)*8,0,SysDate.mon/10+'0',2,setn+1-2);
OLED_ShowChar((x++)*8,0,SysDate.mon%10+'0',2,setn+1-2);
OLED_ShowChar((x++)*8,0,'-',2,0);
OLED_ShowChar((x++)*8,0,SysDate.day/10+'0',2,setn+1-3);
OLED_ShowChar((x++)*8,0,SysDate.day%10+'0',2,setn+1-3);
OLED_ShowCN(i*16+88,0,0,setn+1-4);//²âÊÔÏÔʾÖÐÎÄ£ºÖÜ
switch(SysDate.week)
{
case 1:
OLED_ShowCN(i*16+104,0,1,setn+1-4);//²âÊÔÏÔʾÖÐÎÄ£ºÒ»
break;
case 2:
OLED_ShowCN(i*16+104,0,2,setn+1-4);//²âÊÔÏÔʾÖÐÎÄ£º¶þ
break;
case 3:
OLED_ShowCN(i*16+104,0,3,setn+1-4);//²âÊÔÏÔʾÖÐÎÄ£ºÈý
break;
case 4:
OLED_ShowCN(i*16+104,0,4,setn+1-4);//²âÊÔÏÔʾÖÐÎÄ£ºËÄ
break;
case 5:
OLED_ShowCN(i*16+104,0,i+5,setn+1-4);//²âÊÔÏÔʾÖÐÎÄ£ºÎå
break;
case 6:
OLED_ShowCN(i*16+104,0,6,setn+1-4);//²âÊÔÏÔʾÖÐÎÄ£ºÁù
break;
case 7:
OLED_ShowCN(i*16+104,0,7,setn+1-4);//²âÊÔÏÔʾÖÐÎÄ£ºÈÕ
break;
}
x=0;
OLED_ShowChar((x++)*8,2,SysDate.hour/10+'0',2,setn+1-5);
OLED_ShowChar((x++)*8,2,SysDate.hour%10+'0',2,setn+1-5);
OLED_ShowChar((x++)*8,2,':',2,0);
OLED_ShowChar((x++)*8,2,SysDate.min/10+'0',2,setn+1-6);
OLED_ShowChar((x++)*8,2,SysDate.min%10+'0',2,setn+1-6);
OLED_ShowChar((x++)*8,2,':',2,0);
OLED_ShowChar((x++)*8,2,SysDate.sec/10+'0',2,setn+1-7);
OLED_ShowChar((x++)*8,2,SysDate.sec%10+'0',2,setn+1-7);
}
}
void GetHeartRateSpO2(void)
{
unsigned char x=0;
ReadHeartRateSpO2(); //¶ÁÈ¡ÐÄÂÊѪÑõ
//ÏÔʾÏà¹ØµÄÐÅÏ¢
if(((hrAvg!=0)&&(hrAvg>=xinlvMax||hrAvg<=xinlvMin))&&shanshuo==1)
{
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,' ',2,0);
}
else
{
//ÏÔʾÏà¹ØµÄÐÅÏ¢
OLED_ShowChar((x++)*8,6,hrAvg%1000/100+'0',2,0);
OLED_ShowChar((x++)*8,6,hrAvg%100/10+'0',2,0);
OLED_ShowChar((x++)*8,6,hrAvg%10+'0',2,0);
}
x=6;
if(((spo2Avg!=0)&&(spo2Avg<=spo2Min))&&shanshuo==1)
{
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,' ',2,0);
}
else
{
//ÏÔʾÏà¹ØµÄÐÅÏ¢
OLED_ShowChar((x++)*8,6,spo2Avg%1000/100+'0',2,0);
OLED_ShowChar((x++)*8,6,spo2Avg%100/10+'0',2,0);
OLED_ShowChar((x++)*8,6,spo2Avg%10+'0',2,0);
}
}
void DisplayTemperature(void)//ÏÔʾζȺ¯Êý
{
unsigned char x=10;//ÏÔʾµÄµÚ¼¸¸ö×Ö·û
temperature=DS18B20_Get_Temp();
if((temperature<=tempMin||temperature>=tempMax)&&shanshuo==1)
{
OLED_ShowChar((x++)*8,2,' ',2,0);
OLED_ShowChar((x++)*8,2,' ',2,0);
OLED_ShowChar((x++)*8,2,' ',2,0);
OLED_ShowChar((x++)*8,2,' ',2,0);
}
else
{
OLED_ShowChar((x++)*8,2,temperature/100+'0',2,0);
OLED_ShowChar((x++)*8,2,temperature%100/10+'0',2,0);
OLED_ShowChar((x++)*8,2,'.',2,0);
OLED_ShowChar((x++)*8,2,temperature%10+'0',2,0);
}
}
void Store_Data(void) //´æ´¢Êý¾Ý
{
u16 DATA_BUF[6];
DATA_BUF[0] = bushu;
DATA_BUF[1] = xinlvMin;
DATA_BUF[2] = xinlvMax;
DATA_BUF[3] = spo2Min;
DATA_BUF[4] = tempMin;
DATA_BUF[5] = tempMax;
STMFLASH_Write(FLASH_SAVE_ADDR + 0x20,(u16*)DATA_BUF,6); //дÈëÊý¾Ý
DelayMs(50);
}
void Read_Data(void) //¶Á³öÊý¾Ý
{
u16 DATA_BUF[10];
STM32F10x_Read(FLASH_SAVE_ADDR + 0x20,(u16*)DATA_BUF,6); //¶ÁÈ¡Êý¾Ý
bushu = DATA_BUF[0];
xinlvMin = DATA_BUF[1];
xinlvMax = DATA_BUF[2];
spo2Min = DATA_BUF[3];
tempMin = DATA_BUF[4];
tempMax = DATA_BUF[5];
}
void CheckNewMcu(void) // ¼ì²éÊÇ·ñÊÇеĵ¥Æ¬»ú£¬ÊǵϰÇå¿Õ´æ´¢Çø£¬·ñÔò±£Áô
{
u8 comper_str[6];
STM32F10x_Read(FLASH_SAVE_ADDR,(u16*)comper_str,5);
comper_str[5] = '\0';
if(strstr((char *)comper_str,"FDYDZ") == NULL) //еĵ¥Æ¬»ú
{
STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)"FDYDZ",5); //дÈë¡°FDYDZ¡±£¬·½±ãÏ´ÎУÑé
DelayMs(50);
Store_Data();//´æ´¢Ï³õʼÊý¾Ý
DelayMs(50);
}
Read_Data(); //¿ª»ú¶ÁÈ¡ÏÂÏà¹ØÊý¾Ý£¨²½ÊýÀï³Ì¿¨Â·Àï²½³¤£©
}
void GetSteps(void)//»ñÈ¡²½Êýº¯Êý
{
static u16 temp=0;
u16 x=11;
adxl345_read_average(&adx,&ady,&adz,10);//»ñÈ¡Êý¾Ý
acc=ady;
acc2=ady;
acc3=adx;
if(acc2<0)acc2=-acc2;
if(acc3<0)acc3=-acc3;
if(((u16)acc2)>=190 || ((u16)acc3)>=190)//¼ì²âµ½Çãб
{
tiltFlag=1;
}
else
{
tiltFlag=0;
fallTime=5;
displayfall=0;
}
if(acc>0)//ÔÚÕýÖá
{
if(acc/10>=4&&flag==1)//¼ÓËÙ¶ÈÖµ£¬ÔÚÕýÖáÖµÊÇ·ñ´óÓÚ5£¬²¢ÇÒflagΪ1£¬ÔòÊÓΪһ¸öÖÜÆÚÍê³É£¬²½Êý¼Ó1
{
flag=0;
if(bushu<60000)bushu++; //²½Êý¼Ó1
if(temp!=bushu)//µ±²½Êý·¢Éú±ä»¯²ÅÈ¥´æ´¢²½Êý
{
temp=bushu;
Store_Data(); //´æ´¢²½Êý
}
}
}
if(acc<0)//ÔÚ¸ºÖá
{
acc=-acc;
if(acc/10>=4)//¼ÓËÙ¶ÈÖµ£¬ÔÚ¸ºÖáÊÇ·ñСÓÚ-5
{
flag=1;//falgÖÃ1
}
}
if(bushu>9999)
{
OLED_ShowChar((x++)*8,6,bushu/10000+'0',2,0);
OLED_ShowChar((x++)*8,6,bushu%10000/1000+'0',2,0);
OLED_ShowChar((x++)*8,6,bushu%1000/100+'0',2,0);
OLED_ShowChar((x++)*8,6,bushu%100/10+'0',2,0);
OLED_ShowChar((x++)*8,6,bushu%10+'0',2,0);
}
else if(bushu>999)
{
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,bushu%10000/1000+'0',2,0);
OLED_ShowChar((x++)*8,6,bushu%1000/100+'0',2,0);
OLED_ShowChar((x++)*8,6,bushu%100/10+'0',2,0);
OLED_ShowChar((x++)*8,6,bushu%10+'0',2,0);
}
else if(bushu>99)
{
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,bushu%1000/100+'0',2,0);
OLED_ShowChar((x++)*8,6,bushu%100/10+'0',2,0);
OLED_ShowChar((x++)*8,6,bushu%10+'0',2,0);
}
else if(bushu>9)
{
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,bushu%100/10+'0',2,0);
OLED_ShowChar((x++)*8,6,bushu%10+'0',2,0);
OLED_ShowChar((x++)*8,6,' ',2,0);
}
else
{
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,bushu%10+'0',2,0);
OLED_ShowChar((x++)*8,6,' ',2,0);
OLED_ShowChar((x++)*8,6,' ',2,0);
}
}
void DisplaySetValue(void) //ÏÔʾÉèÖÃÖµ
{
if(setn==8||setn==9)
{
OLED_ShowChar(48,4,xinlvMin/100+'0',2,setn+1-8);//ÏÔʾ
OLED_ShowChar(56,4,xinlvMin%100/10+'0',2,setn+1-8);//ÏÔʾ
OLED_ShowChar(64,4,xinlvMin%10+'0',2,setn+1-8);//ÏÔʾ
OLED_ShowChar(48,6,xinlvMax/100+'0',2,setn+1-9);//ÏÔʾ
OLED_ShowChar(56,6,xinlvMax%100/10+'0',2,setn+1-9);//ÏÔʾ
OLED_ShowChar(64,6,xinlvMax%10+'0',2,setn+1-9);//ÏÔʾ
}
if(setn==10)
{
OLED_ShowChar(48,4,spo2Min/100+'0',2,setn+1-10);//ÏÔʾ
OLED_ShowChar(56,4,spo2Min%100/10+'0',2,setn+1-10);//ÏÔʾ
OLED_ShowChar(64,4,spo2Min%10+'0',2,setn+1-10);//ÏÔʾ
}
if(setn==11||setn==12)
{
OLED_ShowChar(48,4,tempMin/100+'0',2,setn+1-11);//ÏÔʾ
OLED_ShowChar(56,4,tempMin%100/10+'0',2,setn+1-11);//ÏÔʾ
OLED_ShowChar(64,4,'.',2,setn+1-11);
OLED_ShowChar(72,4,tempMin%10+'0',2,setn+1-11);//ÏÔʾ
OLED_ShowChar(48,6,tempMax/100+'0',2,setn+1-12);//ÏÔʾ
OLED_ShowChar(56,6,tempMax%100/10+'0',2,setn+1-12);//ÏÔʾ
OLED_ShowChar(64,6,'.',2,setn+1-12);
OLED_ShowChar(72,6,tempMax%10+'0',2,setn+1-12);//ÏÔʾ
}
}
void KeySettings(void)//°´¼üÉèÖú¯Êý
{
unsigned char keynum = 0,i;
keynum = KEY_Scan(1);//»ñÈ¡°´¼üÖµ
if(keynum==1)//ÉèÖÃ
{
setn++;
if(setn > 12)
{
setn=0;
sendSetValueFlag=1;
OLED_CLS();//ÇåÆÁ
for(i=0;i<2;i++)OLED_ShowCN(i*16,4,i+16,1);//²âÊÔÏÔʾÖÐÎÄ£ºÐÄÂÊ
for(i=0;i<2;i++)OLED_ShowCN(i*16+48,4,i+18,1);//²âÊÔÏÔʾÖÐÎÄ£ºÑªÑõ
for(i=0;i<2;i++)OLED_ShowCN(i*16+95,4,i+20,1);//²âÊÔÏÔʾÖÐÎÄ£º²½Êý
OLED_ShowCentigrade(112, 2); //¡æ
DelayMs(50);
Store_Data();
}
if(setn==8)
{
OLED_CLS();//ÇåÆÁ
for(i=0;i<4;i++)OLED_ShowCN(i*16+32,0,i+22,0);//²âÊÔÏÔʾÖÐÎÄ£ºÉèÖÃÐÄÂÊ
for(i=0;i<2;i++)OLED_ShowCN(i*16,4,i+26,0); //²âÊÔÏÔʾÖÐÎÄ£ºÏÂÏÞ
for(i=0;i<2;i++)OLED_ShowCN(i*16,6,i+28,0); //²âÊÔÏÔʾÖÐÎÄ£ºÉÏÏÞ
OLED_ShowChar(34,4,':',2,0);
OLED_ShowChar(34,6,':',2,0);
}
if(setn==10)
{
for(i=0;i<4;i++)OLED_ShowCN(i*16+32,0,i+30,0);//²âÊÔÏÔʾÖÐÎÄ£ºÉèÖÃѪÑõ
for(i=0;i<2;i++)OLED_ShowCN(i*16,4,i+26,0); //²âÊÔÏÔʾÖÐÎÄ£ºÏÂÏÞ
OLED_ShowStr(0,6,(u8*)" ", 2);
}
if(setn==11)
{
for(i=0;i<4;i++)OLED_ShowCN(i*16+32,0,i+34,0);//²âÊÔÏÔʾÖÐÎÄ£ºÉèÖÃζÈ
for(i=0;i<2;i++)OLED_ShowCN(i*16,4,i+26,0); //²âÊÔÏÔʾÖÐÎÄ£ºÏÂÏÞ
for(i=0;i<2;i++)OLED_ShowCN(i*16,6,i+28,0); //²âÊÔÏÔʾÖÐÎÄ£ºÉÏÏÞ
OLED_ShowChar(34,4,':',2,0);
OLED_ShowChar(34,6,':',2,0);
}
DisplaySetValue();
}
if(keynum==2)//¼Ó
{
if(setn == 1)//ÉèÖÃÄê
{
SysDate.year ++;
if(SysDate.year == 100)SysDate.year=0;
DS1302_DateSet(&SysDate);//ÉèÖÃʱ¼ä
}
if(setn == 2)//ÉèÖÃÔÂ
{
SysDate.mon ++;
if(SysDate.mon == 13)SysDate.mon = 1;
if((SysDate.mon==4)||(SysDate.mon==6)||(SysDate.mon==9)||(SysDate.mon==11))
{
if(SysDate.day>30)SysDate.day=1;
}
else
{
if(SysDate.mon==2)
{
if(p_r==1)
{
if(SysDate.day>29)
SysDate.day=1;
}
else
{
if(SysDate.day>28)
SysDate.day=1;
}
}
}
DS1302_DateSet(&SysDate);//ÉèÖÃʱ¼ä
}
if(setn == 3)//ÉèÖÃÈÕ
{
SysDate.day ++;
if((SysDate.mon==1)||(SysDate.mon==3)||(SysDate.mon==5)||(SysDate.mon==7)||(SysDate.mon==8)||(SysDate.mon==10)||(SysDate.mon==12))//´óÔÂ
{
if(SysDate.day==32)//×î´ó31Ìì
SysDate.day=1;//´Ó1¿ªÊ¼
}
else
{
if(SysDate.mon==2)//¶þÔ·Ý
{
if(p_r==1)//ÈòÄê
{
if(SysDate.day==30)//×î´ó29Ìì
SysDate.day=1;
}
else
{
if(SysDate.day==29)//×î´ó28Ìì
SysDate.day=1;
}
}
else
{
if(SysDate.day==31)//×î´ó30Ìì
SysDate.day=1;
}
}
DS1302_DateSet(&SysDate);//ÉèÖÃʱ¼ä
}
if(setn == 4)//ÉèÖÃÐÇÆÚ
{
SysDate.week ++;
if(SysDate.week == 8)SysDate.week=1;
DS1302_DateSet(&SysDate);//ÉèÖÃʱ¼ä
}
if(setn == 5)//ÉèÖÃʱ
{
SysDate.hour ++;
if(SysDate.hour == 24)SysDate.hour=0;
DS1302_DateSet(&SysDate);//ÉèÖÃʱ¼ä
}
if(setn == 6)//ÉèÖ÷Ö
{
SysDate.min ++;
if(SysDate.min == 60)SysDate.min=0;
DS1302_DateSet(&SysDate);//ÉèÖÃʱ¼ä
}
if(setn == 7)//ÉèÖÃÃë
{
SysDate.sec ++;
if(SysDate.sec == 60)SysDate.sec=0;
DS1302_DateSet(&SysDate);//ÉèÖÃʱ¼ä
}
if((setn==8)&&(xinlvMax-xinlvMin>1))xinlvMin++;
if((setn==9)&&(xinlvMax<300))xinlvMax++;
if((setn==10)&&(spo2Min<200))spo2Min++;
if((setn==11)&&(tempMax-tempMin>1))tempMin++;
if((setn==12)&&(tempMax<999))tempMax++;
DisplaySetValue();
}
if(keynum==3)//¼õ
{
if(setn == 1)//ÉèÖÃÄê
{
if(SysDate.year == 0)SysDate.year=100;
SysDate.year --;
DS1302_DateSet(&SysDate);
}
if(setn == 2)//ÉèÖÃÔÂ
{
if(SysDate.mon == 1)SysDate.mon=13;
SysDate.mon --;
if((SysDate.mon==4)||(SysDate.mon==6)||(SysDate.mon==9)||(SysDate.mon==11))
{
if(SysDate.day>30)
SysDate.day=1;
}
else
{
if(SysDate.mon==2)
{
if(p_r==1)
{
if(SysDate.day>29)
SysDate.day=1;
}
else
{
if(SysDate.day>28)
SysDate.day=1;
}
}
}
DS1302_DateSet(&SysDate);
}
if(setn == 3)//ÉèÖÃÈÕ
{
SysDate.day --;
if((SysDate.mon==1)||(SysDate.mon==3)||(SysDate.mon==5)||(SysDate.mon==7)||(SysDate.mon==8)||(SysDate.mon==10)||(SysDate.mon==12))
{
if(SysDate.day==0)
SysDate.day=31;
}
else
{
if(SysDate.mon==2)
{
if(p_r==1)
{
if(SysDate.day==0)
SysDate.day=29;
}
else
{
if(SysDate.day==0)
SysDate.day=28;
}
}
else
{
if(SysDate.day==0)
SysDate.day=30;
}
}
DS1302_DateSet(&SysDate);
}
if(setn == 4)//ÉèÖÃÐÇÆÚ
{
if(SysDate.week == 1)SysDate.week=8;
SysDate.week --;
DS1302_DateSet(&SysDate);
}
if(setn == 5)//ÉèÖÃʱ
{
if(SysDate.hour == 0)SysDate.hour=24;
SysDate.hour --;
DS1302_DateSet(&SysDate);
}
if(setn == 6)//ÉèÖ÷Ö
{
if(SysDate.min == 0)SysDate.min=60;
SysDate.min --;
DS1302_DateSet(&SysDate);
}
if(setn == 7)//ÉèÖÃÃë
{
if(SysDate.sec == 0)SysDate.sec=60;
SysDate.sec --;
DS1302_DateSet(&SysDate);
}
if((setn==8)&&(xinlvMin>0))xinlvMin--;
if((setn==9)&&(xinlvMax-xinlvMin>1))xinlvMax--;
if((setn==10)&&(spo2Min>0))spo2Min--;
if((setn==11)&&(tempMin>0))tempMin--;
if((setn==12)&&(tempMax-tempMin>1))tempMax--;
DisplaySetValue();
}
if(keynum==4)//²½ÊýÇåÁã
{
bushu = 0;
Store_Data();//´æ´¢Êý¾Ý
}
}
void UsartSendReceiveData(void) //´®¿Ú·¢ËͽÓÊÕÊý¾Ý
{
char *str1=0,i;
int setValue=0;
char setvalue[4]={0};
if(STM32_Rx1Counter > 0)
{
DelayMs(20);
if(strstr(STM32_RX1_BUF,"setHeartMin:")!=NULL) //½ÓÊÕµ½ÉèÖÃÐÄÂÊÏÂÏÞµÄÖ¸Áî
{
str1 = strstr(STM32_RX1_BUF,"setHeartMin:");
while(*str1 < '0' || *str1 > '9') //ÅжÏÊDz»ÊÇ0µ½9ÓÐЧÊý×Ö
{
str1 = str1 + 1;
DelayMs(10);
}
i = 0;
while(*str1 >= '0' && *str1 <= '9') //ÅжÏÊDz»ÊÇ0µ½9ÓÐЧÊý×Ö
{
setvalue[i] = *str1;
i ++; str1 ++;
if(*str1 == '\r')break; //»»Ðзû£¬Ö±½ÓÍ˳öwhileÑ»·
DelayMs(10);
}
setvalue[i] = '\0'; //¼ÓÉϽáβ·û
setValue = atoi(setvalue);
if(setValue>=0 && setValue<=300)
{
xinlvMin = setValue; //ÉèÖõÄÐÄÂÊÏÂÏÞ
DisplaySetValue();
Store_Data();//´æ´¢Êý¾Ý
}
}
if(strstr(STM32_RX1_BUF,"setHeartMax:")!=NULL) //½ÓÊÕµ½ÉèÖÃÐÄÂÊÉÏÏÞµÄÖ¸Áî
{
str1 = strstr(STM32_RX1_BUF,"setHeartMax:");
while(*str1 < '0' || *str1 > '9') //ÅжÏÊDz»ÊÇ0µ½9ÓÐЧÊý×Ö
{
str1 = str1 + 1;
DelayMs(10);
}
i = 0;
while(*str1 >= '0' && *str1 <= '9') //ÅжÏÊDz»ÊÇ0µ½9ÓÐЧÊý×Ö
{
setvalue[i] = *str1;
i ++; str1 ++;
if(*str1 == '\r')break; //»»Ðзû£¬Ö±½ÓÍ˳öwhileÑ»·
DelayMs(10);
}
setvalue[i] = '\0'; //¼ÓÉϽáβ·û
setValue = atoi(setvalue);
if(setValue>=0 && setValue<=300)
{
xinlvMax = setValue; //ÉèÖõÄÐÄÂÊÉÏÏÞ
DisplaySetValue();
Store_Data();//´æ´¢Êý¾Ý
}
}
if(strstr(STM32_RX1_BUF,"setSpo2Min:")!=NULL) //½ÓÊÕµ½ÉèÖÃѪÑõÏÂÏÞµÄÖ¸Áî
{
str1 = strstr(STM32_RX1_BUF,"setSpo2Min:");
while(*str1 != ':') //ÅжÏÊDz»ÊÇ0µ½9ÓÐЧÊý×Ö
{
str1 = str1 + 1;
DelayMs(10);
}
str1 = str1 + 1;
i = 0;
while(*str1 >= '0' && *str1 <= '9') //ÅжÏÊDz»ÊÇ0µ½9ÓÐЧÊý×Ö
{
setvalue[i] = *str1;
i ++; str1 ++;
if(*str1 == '\r')break; //»»Ðзû£¬Ö±½ÓÍ˳öwhileÑ»·
DelayMs(10);
}
setvalue[i] = '\0'; //¼ÓÉϽáβ·û
setValue = atoi(setvalue);
if(setValue>=0 && setValue<=200)
{
spo2Min = setValue; //ÉèÖõÄѪÑõÏÂÏÞ
DisplaySetValue();
Store_Data();//´æ´¢Êý¾Ý
}
}
if(strstr(STM32_RX1_BUF,"setTempMin:")!=NULL) //½ÓÊÕµ½ÉèÖÃζÈÏÂÏÞµÄÖ¸Áî
{
str1 = strstr(STM32_RX1_BUF,"setTempMin:");
while(*str1 < '0' || *str1 > '9') //ÅжÏÊDz»ÊÇ0µ½9ÓÐЧÊý×Ö
{
str1 = str1 + 1;
DelayMs(10);
}
i = 0;
while(*str1 >= '0' && *str1 <= '9') //ÅжÏÊDz»ÊÇ0µ½9ÓÐЧÊý×Ö
{
setvalue[i] = *str1;
i ++; str1 ++;
if(*str1 == '.')break; //»»Ðзû£¬Ö±½ÓÍ˳öwhileÑ»·
DelayMs(10);
}
if(*str1 == '.')
{
str1 = str1 + 1;
}
if(*str1 >= '0' && *str1 <= '9')
{
setvalue[i] = *str1;
}
i = i + 1;
setvalue[i] = '\0'; //¼ÓÉϽáβ·û
setValue = atoi(setvalue);
if(setValue>=0 && setValue<=999)
{
tempMin = setValue; //ÉèÖõÄζÈÏÂÏÞ
DisplaySetValue();
Store_Data();//´æ´¢Êý¾Ý
}
}
if(strstr(STM32_RX1_BUF,"setTempMax:")!=NULL) //½ÓÊÕµ½ÉèÖÃζÈÉÏÏÞµÄÖ¸Áî
{
str1 = strstr(STM32_RX1_BUF,"setTempMax:");
while(*str1 < '0' || *str1 > '9') //ÅжÏÊDz»ÊÇ0µ½9ÓÐЧÊý×Ö
{
str1 = str1 + 1;
DelayMs(10);
}
i = 0;
while(*str1 >= '0' && *str1 <= '9') //ÅжÏÊDz»ÊÇ0µ½9ÓÐЧÊý×Ö
{
setvalue[i] = *str1;
i ++; str1 ++;
if(*str1 == '.')break; //»»Ðзû£¬Ö±½ÓÍ˳öwhileÑ»·
DelayMs(10);
}
if(*str1 == '.')
{
str1 = str1 + 1;
}
if(*str1 >= '0' && *str1 <= '9')
{
setvalue[i] = *str1;
}
i = i + 1;
setvalue[i] = '\0'; //¼ÓÉϽáβ·û
setValue = atoi(setvalue);
if(setValue>=0 && setValue<=999)
{
tempMax = setValue; //ÉèÖõÄζÈÉÏÏÞ
DisplaySetValue();
Store_Data();//´æ´¢Êý¾Ý
}
}
if(strstr(STM32_RX1_BUF,"stepsClear")!=NULL) //ÊÕµ½²½ÊýÇåÁãÖ¸Áî
{
BEEP = 1;
DelayMs(80);
BEEP = 0;
bushu = 0;
Store_Data(); //´æ´¢Êý¾Ý
}
memset(STM32_RX1_BUF, 0, STM32_RX1BUFF_SIZE);//Çå³ý»º´æ
STM32_Rx1Counter = 0;
}
/* À¶ÑÀ·¢ËÍÊý¾Ý */
if(sendFlag==1)
{
sendFlag = 0;
printf("$Heartrate:%d#,$Spo2:%d#,$Temperature:%4.1f#,",hrAvg,spo2Avg,(float)temperature/10);
printf("$Steps:%d#",bushu);
if(fallTime==0)printf("fall");
if(sendSetValueFlag==1)
{
sendSetValueFlag=0;
DelayMs(200);
printf("$setHeartMin:%d#,",xinlvMin);
printf("$setHeartMax:%d#,",xinlvMax);
printf("$setSpo2Min:%d#,",spo2Min);
printf("$setTempMin:%4.1f#,",(float)tempMin/10);
printf("$setTempMax:%4.1f#,",(float)tempMax/10);
}
}
}
int main(void)
{
unsigned char i;
DelayInit();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
I2C_Configuration(); //IIC³õʼ»¯
OLED_Init(); //OLED³õʼ»¯
KEY_Init(); //°´¼ü³õʼ»¯
DelayMs(200);
CheckNewMcu();
OLED_CLS();//ÇåÆÁ
DS18B20_Init();
DS1302_Init(&SysDate);
DelayMs(100);
for(i=0;i<8;i++)OLED_ShowCN(i*16,2,i+8,0);//²âÊÔÏÔʾÖÐÎÄ£º»¶ÓʹÓÃʹÄÜÊÖ»·
DelayMs(1000);
OLED_CLS();//ÇåÆÁ
DS1302_DateRead(&SysDate);//¶Áʱ¼ä
OLED_CLS();//ÇåÆÁ
for(i=0;i<2;i++)OLED_ShowCN(i*16,4,i+16,1);//²âÊÔÏÔʾÖÐÎÄ£ºÐÄÂÊ
for(i=0;i<2;i++)OLED_ShowCN(i*16+48,4,i+18,1);//²âÊÔÏÔʾÖÐÎÄ£ºÑªÑõ
for(i=0;i<2;i++)OLED_ShowCN(i*16+95,4,i+20,1);//²âÊÔÏÔʾÖÐÎÄ£º²½Êý
OLED_ShowCentigrade(112, 2); //¡æ
IIC_init();//IIC³õʼ»¯
uart1_Init(9600);
adxl345_init();//ADXL345³õʼ»¯
Init_MAX30102();//MAX30102³õʼ»¯
TIM2_Init(99,719); //¶¨Ê±Æ÷³õʼ»¯£¬¶¨Ê±1ms
//Tout = ((arr+1)*(psc+1))/Tclk ;
//Tclk:¶¨Ê±Æ÷ÊäÈëÆµÂÊ(µ¥Î»MHZ)
//Tout:¶¨Ê±Æ÷Òç³öʱ¼ä(µ¥Î»us)
while(1)
{
shanshuo=!shanshuo;
KeySettings();
DisplayTime();
if(setn == 0)//²»ÔÚÉèÖÃ״̬Ï£¬¶ÁÈ¡Ïà¹ØÊý¾Ý
{
DisplayTemperature();
GetSteps();
GetHeartRateSpO2();
if(fallTime==0)
{
if(displayfall==0)
{
displayfall=1;
OLED_CLS();//ÇåÆÁ
for(i=0;i<3;i++)OLED_ShowCN(i*16+48,2,i+64,0);//²âÊÔÏÔʾÖÐÎÄ£ºµøµ¹
UsartSendReceiveData();
DelayMs(1000);DelayMs(1000);
OLED_CLS();//ÇåÆÁ
for(i=0;i<2;i++)OLED_ShowCN(i*16,4,i+16,1);//²âÊÔÏÔʾÖÐÎÄ£ºÐÄÂÊ
for(i=0;i<2;i++)OLED_ShowCN(i*16+48,4,i+18,1);//²âÊÔÏÔʾÖÐÎÄ£ºÑªÑõ
for(i=0;i<2;i++)OLED_ShowCN(i*16+95,4,i+20,1);//²âÊÔÏÔʾÖÐÎÄ£º²½Êý
OLED_ShowCentigrade(112, 2); //¡æ
}
}
}
UsartSendReceiveData();
DelayMs(10);
}
}
void TIM2_IRQHandler(void)//¶¨Ê±Æ÷2ÖжϷþÎñ³ÌÐò£¬ÓÃÓڼǼʱ¼ä
{
static u16 timeCount1 = 0;
static u16 timeCount3 = 0;
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //¼ì²éÖ¸¶¨µÄTIMÖжϷ¢ÉúÓë·ñ:TIM ÖжÏÔ´
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //Çå³ýÖжϱê־λ
timeCount1 ++;
if(timeCount1 >= 800)
{
timeCount1 = 0;
sendFlag = 1;
if(tiltFlag)
{
if(fallTime>0)fallTime--; //µøµ¹Ê±¼äµ¹¼ÆÊ±
}
}
timeCount3 ++;
if(timeCount3 >= 100)
{
timeCount3=0;
if(fallTime==0){ //µøµ¹·äÃùÆ÷±¨¾¯
BEEP=1;
}
else
{
if(((hrAvg!=0)&&(hrAvg>=xinlvMax||hrAvg<=xinlvMin))||((spo2Avg!=0)&&(spo2Avg<=spo2Min))||(temperature>=tempMax||temperature<=tempMin))//²»ÔÚ·¶Î§·äÃùÆ÷±¨¾¯
{
BEEP=~BEEP;
beepFlag|=0x01;
}else
{
beepFlag&=0xFE;
BEEP=0;
}
}
}
}
}
最新发布