摘 要:本文主要介绍利用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床心电的遥测。
|