首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年12月26日星期四
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
基于ADuC812的心电采集系统的设计与实现

Design and Realization of ECG Signal Collectting Based on AD C812

天津工业大学信息与通信工程学院 黄伟志 马兴丽


摘 要:本文主要介绍利用AD公司的系统可编程微转换器AD C812设计心电采集系统,利用串口通信将心电信号经过串口传到上位机,进行实时显示。

关键词:数据采集; 串行通信; Flash存储器

AD C812是全集成的12位数据采集系统,它在单个芯片内包含了高性能的自校准多通道ADC和两个12位DAC及8位与8051兼容的MCU。AD C812本身带有8k字节的Flash程序存储器、640字节的Flash数据存储器以及256字节数据SRAM。芯片集成了全部辅助功能块以充分支持可编程的数据采集核心,这些辅助模块包括:看门狗定时器、电源监视器及ADC等DMA功能。同时它还为多处理器接口和I/O扩展提供32条可编程的I/O线、与I2C兼容的SPI和标准UART串行端口I/O。与以往的80C51单片机不同,AD C812具有独特的在线调试和下载功能,通过开发系统与AD C812的串口通信,可直接对用户系统进行调试,并在调试完成后将已调试好的程序下载到AD C812中。


系统概述

本系统采用AD C812作为处理器,利用其本身的AD采集系统进行心电信号采集,然后对数据进行存储和处理,最后将数据打包通过串口传到上位机进行显示,实现了心电信号的实时采集与显示。通过试验已经证明该设计基本完成了心电信号的实时采集与显示。


ADC采集子系统

AD C812的ADC采集子系统部分由模拟多路转换器、温度传感器、采样保持电路(T/H)、12位逐次逼近比较的ADC、+2.5V基准源和ADC校正、控制逻辑组成。AD C812模拟输入端的电压有效输入范围与基准源有关。当采用内部基准源时,其有效输入范围为0~+2.5V;当采用外部基准源时,外部基准源应从Vref端引入,其合适的范围为+2.3~+5V,相应的模拟输入端的电压范围为0V~Vref。

AD控制特性

通过ADCCON1~3三个特殊功能寄存器来控制A/D转换,转换结果可保存在ADCDATAH/L二个特殊功能寄存器中,转换数据的低8位保存在ADCDATAL寄存器中,而高4位保存在ADCDATAH的低4位中,ADCDATAH的高4位用来保存采样的通道号。

(1)ADCCON1--控制转换和采集时间

MD1 MD0 CK1 CK0 AQ1 AQ0 T2C EXC

MD1、MD0用于选择工作模式:00:工作于节电模式;01:工作于正常模式;10:在没有转换时进入节电模式;11:在没有转换时进入备用模式。

CK1、CK0选择主时钟分频系数,从主时钟分频来产生ADC时钟,CK1-0为00~11,分别按1、2、4、8分频。

AQ1、AQ0选择ADC采样保持时钟,分频系数从ADC时钟分频产生,AQ1-0为00~11时分别按1、2、4、8分频。

T2C:定时器2溢出触发位,通过置位该位,可使用定时器2的溢出信号作为ADC转换触发信号。

EXC:ADC转换外部触发使能位,通过置位该位,可由外部引脚(CONVST)来触发ADC转换。

(2)ADCCON2----控制通道选择和转换模式

ACCI DMA CCONV SCONV CS3 CS2 CS1 CS0

ADCI为中断标志位;DMA为DMA模式使能位;CCONV为连续转换模式使能位;SCONV为单次转换模式使能位;CS3、CS2、CS1、CS0为通道选择位,用户通过程序指定须进行A/D转换的通道。CS3-0为0000~0111时指示8个通道号,1000时指示温度传感器,1111为DMA终止信号,其他情况保留。

(3)ADCCON3用于给出ADC状态指示位,只有第7位为BUSY位,其它位保留,BUSY位为只读位,在一个有效的ADC转换或校验周期中,该位为"1",当转换或校验结束后,该位清"0"。

心电信号采集部分

心电信号的采集就是利用AD C812内部集成了12位ADC采集子系统,即心电信号经过放大、平移等处理后直接进入单片机的AD输入。

放大部分

由于心电信号范围很小只有几毫伏,所以必须对信号进行放大。放大电路由AD620构成,AD620的核心是三运放电路,有较高的共模抑制比CMRR,温度稳定性好,放大频带宽,噪声系数小。AD620只需外接一个电阻就可以设置1~3000范围的增益,且调节方便。放大电路如图1所示。

图1 由AD620构成的放大电路(略)

电平抬高电路

如果采用内部基准电压AD C812的模拟输入电压范围为0~2.5V;如果采用外部基准电压,则AD C812的模拟输入电压范围为0~Vref。这样当输入电压为双极性时我们就必须加电平位移网络,以保证输入电压在其要求的电压范围之内。因为心电信号为双极性信号,所以要进行电平抬高。并且,由于AD部分是数字和模拟电路的混合部分,很容易产生噪声干扰,为了使AD转换更准确可靠,我们加上一些滤波和保护措施,如图2所示。

图2 电平抬高电路(略)


ADuC812与上位机的串行接口

为了实现PC机与单片机的串行通信,必须通过一个RS232接口电路将PC机上的串行端口与AD C812的UART串行端口相接。由于RS232接口电路是PC机和用户开发系统的唯一通路,因此,它也是在线调试和下载功能实现的关键。RS232接口电路如图3所示。

图3 RS232接口电路(略)

串口控制特性

SM0 SM1 SM2 REN TB8 RB8 T1 R1

SCON----串口控制寄存器

SM0、SM1用于模式选择。00:模式0,即移位寄存器方式,固定波特率。01:模式1,即8位UART,波特率可变。10:模式2,即9位UART,固定波特率。11:模式3,即9位UART,波特率可变。SM2:多机通信允许位。REN:串行接收允许位。TR8:串行发送第9位。RB8:串行接收第9位。TI:串口发送中断允许位。RI:串口接收中断允许位。

PCON寄存器

表(略)

波特率设置

本系统我们采用定时器1,工作在模式1下产生的波特率计算公式为:

Baud Rate=(SMOD/32) (Core Clock/(12 [256-TH1]))


软件编程

单片机的软件控制主要包括AD采集、数据压缩存储、串口传输的控制。 在AD采集部分,由定时器2控制采样周期。将其设为1ms,8个通道轮流采集。心电数据的实时压缩采用一种简单的近似方法,取信号的高有效部分(即将12位AD数据平移4位舍掉第四位),程序流程图见图4、5、6。

图4 主程序(略)

图5 AD中断服务程序(略)

图6 串口中断服务程序(略)


各部分的C51语言程序

在AD 采集部分,主要介绍如何利用ADC的单次转换功能实现定时采样的目的。采样周期设为1ms。其C51语言程序如下:

#define AdcSelectChan(n) ADCCON2=(n&0x07)
#define CNST(m) 65536-(m*1000)/1.085
#define ADCBUF_LEN 4096
#define AdcSetPeriod(n)

RCAP2L=CNST(n);RCAP2H=CNST(n)/256;TL2=CNST(n);TH2=CNST(n)/256
xdata uchar adcbuf[ADCBUF_LEN];

初始化:ET2=0; // disable timer2 interrupt
ADCCON1 = 0x52 ; // power up ADC & enable
Timer2 mode
AdcSelectChan(0); //select chan#0
AdcSetPeriod(1); //setup sample period=1ms
T2CON=0;
adcbuf[adchead++] = ADCDATAH;
// read character into ad
cbuffer
adcbuf[adchead++] = ADCDATAL;
// read character into in
buffer
if(adchead>=(ADCBUF_LEN))
// if at end of buffer
adchead=0;

在串口通信部分,主要介绍如何把采集到的数据打包,然后传到上位机来实现和上位机的通信。在此仅给出初始化和数据发送部分。

初始化:
#define T0Enable() ET0=1

CommClose(); //stop timer1 run
ET1=0; //disable timer1 intrrupt
PCON&=0x80; //SMOD=1,波特率增倍。
SCON = 0x50; //8bit, noparity, 1stopbit,RI=0,TI=0
TMOD = 0x21; //configure Timer1..(setup T0 timer
Mode1)
TH1 = 0xFF; // ..for 57600baud..(assumingMHz
crystal)
CommOpen();

发送部分:

#define OBUF_LEN 1024
unsigned int outhead=0;
unsigned int outtail=0;
xdata unsigned char outbuf[OBUF_LEN]; //定义一个发送缓 冲区

void comm_int_sev () interrupt 4
{if(TI)
{TI=0;
if (outhead != outtail) { // there's a char to send

SBUF=outbuf[outhead++]; // send the character

if (outhead ==OBUF_LEN)outhead=0; // if at end of buffer, reset pointer
FlagSendOk=0;
}
else FlagSendOk=1;
}}


系统调试

ADuC812片内除集成了各具特色的硬件模块外,还简化了方便实用的监控调试软件,使其只需少量的外围器件即可实现联机调试,大大方便了用户的使用。ADI 公司的QuickStart开发系统是支持AD C812的开发工具包,功能完善,包括下载、调试和模拟等功能,利用QuickStart通过串口就可以方便的下载程序并进行在线调试。

调试过程中需要注意的问题: 1.只有当AD C812的PSEN引脚为低电平时,才能进入下载和在线调试状态;如果需要程序下载后脱机工作应将PSEN引脚置高,否则将一直处于在线调试状态。


结束语

ADuC812作为一种新型的微控制器,具有非常强大的功能,除了能方便的进行数据采集和数据传输外,它的在线调试功能也极大的方便了用户系统的开发。本系统利用它自身的AD采集子系统完成了8路心电信号的实时采集与显示,本系统与无线心电发射盒结合能很好的完成8床心电的遥测。

         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com