心音是能反映心脏正常或者病理的音响,它是由于心脏搏动过程中各瓣膜的开闭以及心肌和血液运动所产生的震动形成的。心音听诊是诊断心脏疾病的重要依据。传统的方法是采用听诊器听诊心音,诊断的依据主要是医师的经验。这种方法比较简单,但由于人耳对声音的感知是声强与频率的综合效应,因而有些病理特性难以捕捉,且准确性较差。设计一种新的电子听诊器对听诊音进行定量、准确的分析很有必要。目前,国内电子听诊器产品的价格和功能与国外相比还存在较大差距,多数只是将心音采集后放大,虽然在一定程度上改良了听诊器,但是还不能很好地反映心音波形。本文研制的可视听诊器实现了这一功能。它集听诊和心电信号监测功能于一体,可以实时记录并显示心率及心音图,使诊断更准确,且便于医学教学。同时具有可存储、实时显示、简单易用、成本低、体积小等优点。本文对该可视听诊器的结构及工作原理作了较详细的介绍。
1 硬件设计
可视听诊器的系统结构图如图1所示。该可视听诊器由采集处理和波形显示二部分组成,具体由声音传感器、信号调理采样电路和键盘显示电路组成。
由于听诊器接收到的是微弱的宽带频率信号,因此由声音传感器转换成电信号后,需要经过滤波检波放大电路对心电波形进行调理,然后经由A/D转换送给单片机进行处理、存储,并根据用户设置在液晶显示屏上实时显示出来,以便用户仔细观察心音波形。另外,波形数据可以通过串行通信方式传给上位机(PC机),再利用上位机强大的处理功能和模拟示波器软件来显示心电波形。
1.1 拾音头
由于心音频率较低(20~600Hz),在人耳可听频域范围的低频段,因此选用传声器(话筒——将声信号转换成电信号的换能器)作为声音传感器。声音传感器(话筒)有很多种类,如驻极体式、动圈式和电容式等。本系统对传感器的选取原则是:灵敏度高,抗干扰能力强,除了要提取微弱的心音信号外,还要求它不受人声、工频等信号的干扰。经多次实验比较,设计中选用驻极体式话筒。拾音器MIC的制作选用老式听诊器的振膜头部分。在振膜耳把套上20cm长的橡皮管,另一头挤压入一只微型驻极体话筒,话筒的2根导线用屏蔽电缆接到电路中的MIC处,驻极体话筒处用热缩套管加固,以防止操作时产生不必要的噪声干扰。
1.2 信号调理电路
信号调理电路如图2所示,主要由三部分组成:(1)信号输入级(第1级)。拾音头输出音频信号经耦合电容C1输入信号处理电路,为保证拾音头正常工作须提供较大的负载电阻,为此设计中采用了由NPN三极管构成的射极跟随器作为输入级。(2)滤波放大(第2级)。经测量,心音频率较低,因此在信号放大的同时可将频率在600Hz以上的信号全部滤除,以提高系统的抗干扰能力。设计中采用一阶低通滤波电路。(3)检波放大(第3级)。由于声波图形类似于调幅波形,故需用检波电路把迅速变化的电压信号转变成变化较慢的直流电压信号。检波电路可分为峰值检波、平均值检波和均方根值检波。本电路中采用了峰值检波,它能给出一定时间间隔内的最大值。另外为便于采集并有效地利用A/D的转换范围,信号要放大到相应的电平范围之内,故设计中使用了比例放大电路。
1.3 信号采样
心音频率f在20Hz~600Hz之间,根据香农(Shannon)采样定理,只要采样的频率高于或等于原来频率的2倍,就可以完整地重现原波形,因此选择的A/D转换器的转换速率应在1 200Hz以上,故设计中选用了串行A/D转换器TLC0831。
信号采样电路的工作原理:把调理电路的模拟输出信号用A/D转换器变成数字量后,再由单片机送到液晶显示屏显示。
1.4 键盘显示
本系统选用了精电蓬远的QH12864T点阵式液晶显示(LCD)模块。该模块由控制器T6963C、列驱动器T6A39、行驱动器T6A40及与外部设备的接口等部分组成,它既能显示字符(中文和西文字符),又能显示图形,还能够将字符与图形混合显示。
LCD与单片机的接口方法分为直接访问方式和间接控制方式。直接访问方式是把液晶模块作为存储器接在CPU的数据线、地址线和控制线上,同时把它的数据总线接在89S52的P0口上,片选以及寄存器选择信号线由P2口提供,读写操作由单片机的读写操作信号控制。这种方式是以访问存储器的方式来访问液晶显示模块。间接控制方式不使用单片机的数据系统,而是利用它的I/O口来实现与显示模块的通信,即将液晶显示模块的数据线与单片机的P0口连接作为数据总线,另外3根时序控制信号线通常利用89S52的P3口中未被使用的I/O口来控制。这种访问方式不占用CPU的存储器空间,它的接口电路与时序无关,其时序完全靠软件编程实现。间接控制方式的速度较直接访问方式快,所以本设计中采用的是间接控制方式,具体连接如图3所示。
另外系统设置了6个按键,用于图形的拉伸、缩放、存储、回放及菜单式操作。
2 调理电路的调试
一个正常人的心音图如图4所示,其中s1是第1心音,s2是第2心音;Systole代表心脏收缩期,Diastole代表心脏舒张期。
经过信号调理电路后的心音变成如图5所示的波形。
3 系统软件设计
系统选用的LCD是在图形工作方式下,通过建立坐标系,利用位操作实现对心音波形的逼真显示。下面详细介绍液晶显示屏绘图编程的算法和波形连续显示。
3.1 绘图编程的算法
系统选用的是128×64点阵式图形液晶显示模块。要绘制心音波形只要根据A/D转换来的数据在液晶显示器的对应位置上绘点显示。首先在液晶平面上建立如图6所示的显示坐标系。
图中画出了液晶显示器在图形工作方式下液晶平面的每一处所对应的显示缓冲区地址情况,数据为十六进制,并建立以左下角为坐标原点的坐标系。这样坐标(X,Y)的值都为正值,简化了算法。其中X表示1~128个点,Y表示各个点所对应的幅值。由于A/D采样的数值为0~255,而LCD的行取值为0~63,所以把幅值缩小一定的倍数,即Y=D/B,D为A/D采集的数字量,B为该数缩小的倍数。由图可以看出幅值Y加1,显示缓冲区地址K就减少10H,从而得到缓冲区地址的表达式:K=X/8-10H*Y+0BF0H。而缓冲区地址字节中对应X除以8的余数的位就正好是要绘点的位置。只要利用位操作命令对它置位就可实现绘点。
3.2 波形显示
把采集的数据存放在RAM中,RAM共存了8KB波形数据。而液晶显示器1次只能显示128个点,因此可以通过改变在RAM中读数间隔来控制波形的横向显示,即每显示完1个数据,RAM地址加N,通过改变N的大小来拉开或回缩信号波形,以便于观察。
如果相邻2个点的幅值稍有不同,2个点的距离就会分开,造成显示不连续,影响视觉效果。因而怎样使波形显示连续,是显示信号波形中一个很重要的问题。本系统中对这一问题的解决方法:在LCD上每显示完1个点后,判断它与前1个点的幅值差距,即Y值值差,若大于8,就要在2点之间插入若干点(X值不变,只变Y值),使2点连续起来,然后再进行下1个点的显示。利用这种方法,可很好地实现心音波形的显示。波形显示程序流程图如图7所示。
4 结束语
本文介绍的可视听诊器能实时显示心率和心音波形,并能进行波形拉伸、变换和回放,形象直观、操作方便,适合向临床教学和医疗领域推广应用。