这个是近期整理到的多年前帮别人做的一个脉搏检测器的毕业设计。
中间的一个核心是对脉搏进行检测。
算法的原理是://http://www.ixueshu.com/document/a460a38fab50393a318947a18e7f9386.html
下面是代码,因为这是很多年前的代码了。写的有点乱。
int plus_dectect(int adc_val)
{
enum
{
Search_Max,
Search_Min,
};
#define PER_ACC_COUNT 15
#define PER_ATTEN 0.98 //每次阈值降低的百分比
static int max_val = 0, min_val = 4096; //初始最大最小值
static int threshold = 3000; //初始阈值较大一点
static long int sumtime = 0;
static u8 sta = Search_Max;
static int per_count = 0; //每隔多少时间降低阈值百分点
if (per_count > PER_ACC_COUNT)
{
threshold *= PER_ATTEN;
per_count = 0;
}
else
per_count++;
if (sta == Search_Max)
{
if (adc_val > max_val)
{//更新MAX值,并记录该点为最大点
max_val = adc_val;
}
else
{//求两者的差值,若小于1/2的阈值不做处理,认为可能是个小坡
if ((m