本文来自http://blog.csdn.net/hellogv/
这里所用的脉搏传感器是HK-2000B,模拟信号,可以采集脉搏波形,建议采用500HZ定时器来定时采集,因为市面上一些心电模块也是500HZ,因此,在一个定时器中断服务程序程序中,可以同时处理两组数据!!!以下代码有点乱,因为是在我现有项目中复制过来的。
以下为ADConvert.c
//============================================================
//传感器数据采集源代码
//============================================================
#include "SPCE<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="61" unitname="a">061A</chmetcnv>.h"
#define AD_END_FLAG *P_ADC_MUX_Ctrl&0x8000 //误差调整
//=====================================================================
// 函数: unsigned int Get_One_AD(void)
// 描述: 取得一次AD转换的值
// 参数: 无
// 返回: 转换值
//=====================================================================
unsigned int Get_One_AD(void)
{
unsigned int uiData;
while(!AD_END_FLAG); //等待ADC转换结束
uiData=*P_ADC_LINEIN_Data;
return(uiData&0xffc0);
}
//=====================================================================
// 函数: unsigned long int Get_AD(void)
// 描述: 使用平均法,取得AD转换的平均值
// 参数: 无
// 返回: 转换值
//========================================================================
#define N 4 //必须在2~4
unsigned long int Get_AD(void)
{
/* unsigned int adc_value=0;
int i;
for(i=0;i<N;i++)
{
adc_value += Get_One_AD()/N;
*P_Watchdog_Clear=0x0001;
}
adc_value+=N;
return (adc_value);*/
//////////////////
unsigned int count,i,j,temp;
unsigned int value_buf[N];
for (count=0;count<N;count++)
{
value_buf[count] = Get_One_AD();
}
for (j=0;j<N-1;j++)
{
for (i=0;i<N-j;i++)
{
if ( value_buf[i]>value_buf[i+1] )
{
temp = value_buf[i];
value_buf[i] = value_buf[i+1];
value_buf[i+1] = temp;
}
}
}
return value_buf[(N)];
}
//=====================================================================
// 函数: void AD_Initial(void)
// 描述: 初始化AD转换
// 参数: 无
// 返回: 无
//=====================================================================
void Init_AD(void)
{
unsigned int Read_Start;
*P_ADC_MUX_Ctrl=C_ADC_CH1; //选择LINE_IN1通道,从IOA0输入
*P_ADC_Ctrl= C_ADCE; //AD使能打开
Read_Start=*P_ADC_LINEIN_Data; //AD开始转换
}
//*=================================================================
ISR.c:中断服务程序:
//======================================================================== // 函数: void IRQ6(void) // 描述: 512Hz中断服务程序,用于取得脉搏,心电数据 // 参数: 无 // 返回: 无 //======================================================================== int cardNpulse_data[500];//脉搏,心电数据,一秒采集500次unsigned int int cardNpulse_i=0; int tmp_max=0; int tmp_min=10; void IRQ6(void) __attribute__ ((ISR)); void IRQ6(void) { if((*P_INT_Ctrl&C_IRQ6_TMB2)) { sensor_data =Get_AD(); cardNpulse_data[cardNpulse_i]=abs((sensor_data)/129);//缩小或放大数据 //----------------测试代码-------------- if(cardNpulse_data[cardNpulse_i]>tmp_max) tmp_max=cardNpulse_data[cardNpulse_i]; if(cardNpulse_data[cardNpulse_i]<tmp_min) tmp_min=cardNpulse_data[cardNpulse_i]; //-----------------测试代码------------- cardNpulse_i++; /* for(delay=0;delay<1;delay++)//加入少少延时 { *P_Watchdog_Clear=0x0001; *P_INT_Clear=C_IRQ6_TMB2;//清中断 }*/ *P_Watchdog_Clear=0x0001; *P_INT_Clear=C_IRQ6_TMB2;//清中断 } if(cardNpulse_i>=500)//如果采集的数据数量足够,则显示出来 { FilterCMDSign(cardNpulse_data,500); SendPackage(mcu_id,patient_id,check_type,cardNpulse_data); cardNpulse_i=0; } }
分享到:
相关推荐
《跟我学SPCE061A单片机》是一份针对初学者的教程,旨在帮助读者深入了解和掌握凌阳科技的SPCE061A单片机。SPCE061A是凌阳公司推出的一款8位微控制器,广泛应用于各种嵌入式系统设计,如家用电器、玩具、消费电子...
《SPCE061A单片机实验指导书》是一份专为学习和实践SPCE061A单片机技术的学生和工程师准备的重要参考资料。这份文档深入浅出地介绍了如何进行基于SPCE061A单片机的实验操作,涵盖了从基本原理到实际应用的多个层面,...
其次,《SPCE061A英文数据手册v0.8》是开发者的重要参考文档,其中包含了芯片的详细规格、内部结构、引脚配置、电源管理、时钟系统以及各种外设接口的描述。通过这个手册,开发者可以知道SPCE061A的输入/输出特性,...
《SPCE061A凌阳单片机数据手册》是针对凌阳科技生产的一款单片机——SPCE061A的详细技术文档。在电子工程和嵌入式系统设计领域,这样的数据手册是工程师们进行开发和学习的重要参考资料。下面将详细解读该手册中的...
SPCE061A单片机是凌阳科技推出的一款16位微控制器,主要应用于消费性电子产品。它采用凌阳独有的μ'nSP微处理器核心,并集成了如数码管驱动、语音识别、PWM输出等丰富的外设接口。SPCE061A特别适用于语音应用开发,...
【SPCE061A单片机实验指导书】是一份专为电子工程系学生设计的实践教程,旨在帮助学生掌握凌阳十六位单片机SPCE061A的基本操作和应用。实验涵盖的内容广泛,包括从开发环境设置到各种功能模块的实际操作,旨在提升...
凌阳SPCE061A单片机是一种广泛应用于嵌入式系统开发的微控制器,尤其在教育和小型电子项目中十分常见。本项目利用该单片机实现了一个语音控制小车,通过C语言编程来处理语音命令,使得小车能够执行前进、倒退、左拐...
《跟我学SPCE061A单片机》是一本旨在引导初学者深入理解与实践SPCE061A单片机操作的教程。通过学习这本书,读者将掌握单片机的基本原理、编程技巧以及实际应用。源代码是理论学习的重要补充,提供了直观的实例,帮助...
《SPCE061A单片机教材书》是一本全面深入讲解凌阳单片机技术的教科书。本书分为八章,旨在为读者提供关于SPCE061A单片机的全面知识,从基础理论到实际应用,帮助读者理解和掌握这款微控制器的核心功能与开发技巧。 ...
《SPCE061A单片机教材书及开发板资料光盘》是一个包含丰富的学习资源的压缩包,主要针对单片机的学习和实践,特别是SPCE061A单片机。该压缩包提供了从理论到实践的全方位学习材料,适合于进行单片机课程设计或个人...
"基于SPCE061A单片机数字式多路温度采集系统" 单片机(Microcontroller,MCU)是现代电子技术的核心组件之一,其广泛应用于各种智能电子产品和机械设备中。随着时代的发展,单片机技术也在不断地发展和更新。本文档...
系统通过凌阳SPCE061A单片机实现语音识别和路径规划,结合传感器数据进行实时决策,使小车能够自主行驶、避障和执行特定任务。 2. **语音识别与播放软件**: - 软件部分包括语音识别及播放软件,这是实现音控小车...
**SPCE061A单片机详解** SPCE061A是一款16位的单片机,由凌阳科技公司(Sunplus Technology)设计生产。它在电子工程领域广泛应用,尤其适合初学者进行嵌入式系统的学习。本教程旨在提供关于SPCE061A的全面知识,...
《SPCE061A单片机教材书及开发板资料光盘》是针对学习SPCE061A单片机技术的重要资源集合,包含了全面的理论知识与实践操作指导。SPCE061A是一款广泛应用的8位单片机,因其性能稳定、功能强大而受到工程师和学生的...
基于SPCE061A单片机的水温数据采集系统是近年来随着技术发展和智能化趋势应运而生的产物。它以单片机作为核心,通过温度传感器采集温度数据,并使用数码管显示这些数据。该系统不仅在日常生活中广泛使用,比如在家庭...
凌阳公司的SPCE061A单片机是一款在嵌入式系统中广泛应用的微控制器,尤其在电子教育、玩具和消费类产品设计中占据一席之地。该芯片以其高效的性能和丰富的内置功能著称,其中就包括了数字到模拟转换器(DA),这在...
**SPCE061A单片机:定时器与C语言编程详解** SPCE061A是一款由Philips(现NXP)公司推出的8位单片机,它以其高效能、低功耗和丰富的内置功能在嵌入式系统设计中受到广泛应用。其中,定时器是SPCE061A单片机中的一个...
凌阳公司的SPCE061A单片机是一款在嵌入式系统中广泛应用的微控制器,尤其在消费类电子产品和教育领域中具有较高的知名度。它以其低功耗、高性能和丰富的外围接口而受到青睐。本篇文章将深入探讨SPCE061A单片机中的...