欢迎来到天天文库
浏览记录
ID:10348580
大小:58.00 KB
页数:6页
时间:2018-07-06
《基于热敏打印机的心电图形快速打印方法的研究及应用实例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于热敏打印机的心电图形快速打印方法的研究及应用实例
2、第1关键词:热敏打印机12导联同步打印SPI口模拟目前,我国各医院普遍使用的心电图机绝大多数是机电式的,即通过电极检测心电信号,放大后直接记录,存在着打印效率低、噪声污染严重、心电波形失真等缺点。与之相比,数字式心电图机通过软件实现噪声抑制和心电参数的提取,并采用数字式打印机输出心电图形,可为医护人员提供更完美心电图和更多诊断信息,必将成为市场的发展趋势,有着更广阔的应用前景。由于数字心电图机通过ADC采集的数据是离散的,要将其在图纸上还原为原始的心电图形,除了要将数
3、据与图纸上的离散点对应起来,还要根据信号变化的趋势,在这些点之间连线,使之成为连续的图形。将心电数据尤其是多导联心电数据同步、准确、快速打印出来是整个系统开发的难点和关键,而高效打印算法对数字心电图机的开发无疑是很有意义的。随着电子技术的发展,打印机已经广泛应用到各个领域,成为各种智能数字化仪器仪表的重要数据输出手段。而其中热敏打印机凭其体积小、重量轻、可靠性高、打印字符清晰、无噪声、走纸均匀等独特能而越来越受到青睐,更是成为小型医疗仪器如心电图机的首先。下面以笔者课题组开发的12导同步心电图机为例,介绍以普通52单片机
4、为主控芯片应用串行热敏打印机实现多种方式的心电图形打印,并重点描述了12导联同步打印方式的程序实现方案。1系统硬件设计系统配置了一个内置式数字打印机,它主要由热敏打印头(OS集成芯片构成的1728位移位寄存器,还包含借助高密度厚膜工艺制成的加热元件。这些加热元件通过锁存和切换晶体管驱动,可在热敏打印纸上产生1728个点,对应的打印宽度为216mm,分辨率为8dot/mm。热敏打印头所需的打印数据为串行数据,数据传输遵循SPI口的通信协议。系统采用了口线模拟SPI的工作方式与打印头通信,电路如图1所示。考虑到52单片机内部
5、令有256字节的内部RAM,系统还外扩1片HM628128存储12导心电数据和中间转换结果。2系统软件编写数字打印实现的两个关键问题:①如何将心电数据转换成打印数据;②如果将数据输出到数字打印机。通常采用的方法是转换数据同时将其输出到打印机打印。这样节省了存储器空间;缺点是程序实现复杂,通用性差(不同打印方式的数据输出程序不同),系统功能不易扩展,数据转换和输出都要考虑打印点位置,并且每输出一点的数据都要调用一次程序,加大了系统开销。系统软件中没有采有这种方式,而是在内存中开辟216字节打印缓冲区,将热敏打印头1728个
6、点与216×8位数据相对应,每次将要打印的一线数据都转换完再输出。这样只需在数据转换时考虑打印位置和方式,输出程序只需将216字节的数据按位输出即可,并且每打印一线数据只需调用一次输出子程序,字节了系统开销。缺点是占用系统资源,这一点在12导同步打印表现得尤为明显。系统程序实现三种打印方式:分两次打印12导联数据,每次打印6导、12导同步打印、纵向打印(打印效果如图2)。在每一种打印程序中实现模拟SPI口将打印数据送至数字打印机的子程序共用,不同处在于如何将心电数据转换成打印数据。2.1I/O口线模拟SPI口SPI(Se
7、rialPeripheralInterface)总线串口是由Motorola公司提出的一种同步串行外设接口,通过四根线进行通信:时钟线(SPKCLK)、数据输出线(SPIMISO)、数据输出线(SPIMOSI)、片选线(CS),内部通过SPIDAT寄存器完成串-并/并-串转换。它主要工作在主从式系统中,一个主器件可以带多个从器件,主器件通过片选线控制总线冲突,使同一时刻只有一个从器件与从器件交换数据。系统应用的串行热阵式打印机数据传输采用SPI时序,但普通52单片机无SPI口,所以采用I/O口线模拟SPI时序。考虑到系统
8、中MCU作为主器件总是发送数据,而数字打印机作为唯一从器件又总是接收数据,所以只需用口线模拟SPI口的时钟线(SPIKCLK)、数据输出线(SPIMOSI),程序模拟SPIDAT完成并-串转换即可。如前所提到打印头打印的数据点数为1728点,分辨率为8mm/mV,对应216字节的数据,为此从内部RAM中分配出216字节的空间作为打印缓冲区,程序从缓冲区依次读数据,在模拟时钟线的控制下将并行数据转换成的串行数据按位依次送至打印机的移位寄存器中,结束后送LATCH锁存信号和打印头加热脉冲STROBE,从而在热敏打印纸打印出一
9、线心电图形,驱动步进电机向前走纸即可以连续打印。SPI口模拟程序如下:OUTPUT:现场保护LCALLINTRAM;初始化内部打印缓冲区MOVR0,#Dat_Buff;初始化R0为缓冲区末位地址DAT_OUT:MOVA,R0;从缓冲区读数据MOVR7,#08H;初始化R7控制并/串数据转换CONT_CHG:RRCA;
此文档下载收益归作者所有