本文来自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单片机汇编语实现的流水灯。
资料含有 《61指令周期表V1.1》、《SPCE061A英文数据手册v0.8》、《SPCE061A英文编程手册v1.3》、《SPCE061A的FAQ》、《LQFP80 的脚位图》。
SPCE061A凌阳单片机数据手册下载,高校学生毕业设计很常用~
凌阳公司的SPCE061A单片机定时器应用
SPCE061A单片机实验指导书.zip
SPCE061A单片机定时器源代码。C语言
基于SPCE061A单片机的颜色检测系统的设计
凌阳单片机之: 跟我学SPCE061A单片机
基于凌阳SPCE061A单片机的智能小车的设计.pdf基于凌阳SPCE061A单片机的智能小车的设计.pdf
基于凌阳SPCE061A单片机的语音识别系统设计.pdf
SPCE061A单片机实验指导书.zip电子电路图PCB单片机设计案例资料SPCE061A单片机实验指导书.zip电子电路图PCB单片机设计案例资料SPCE061A单片机实验指导书.zip电子电路图PCB单片机设计案例资料SPCE061A单片机实验指导...
基于SPCE061A单片机的多功能实时时钟系统的设计.pdf
SPCE061A 是继μ’nSP™系列产品SPCE500A等之后凌阳科技推出的又一个16位结构的微控制器。与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存...
基于凌阳SPCE061A单片机的语音控制小车C程序。 分组训练,实现了前进、倒退、左拐、右拐基本功能以及左转圈、有转圈、S型前进、自动返回附加功能。
应用凌阳SPCE061A单片机原理,设计了由软件及硬件组成的超声波非接触式测距系统.
《跟我学SPCE061A单片机》的实验源代码 对应的教程下载地址:http://download.csdn.net/source/1137702
基于凌阳SPCE061A单片机的语音控制系统.pdf
SPCE061A单片机教材书及开发板资料光盘.zip电子电路图PCB单片机设计案例资料SPCE061A单片机教材书及开发板资料光盘.zip电子电路图PCB单片机设计案例资料SPCE061A单片机教材书及开发板资料光盘.zip电子电路图PCB...
基于SPCE061A单片机水温数据采集系统.pdf