(5) A/D转换完成后数据的传送
图中用到ADC0809芯片的两路模拟转换通道,即通道0和通道1,通道0接袖带压力信号,通道1接脉搏波信号,ADC0809分别对这两路模拟信号进行转换。转换后得到的数据应及时传送给单片机进行处理,而数据传送的关键问题是如何确认A/D转换的完成。将ADC0809的EOC引脚直接接到单片机P3.7口,转换结束后,EOC=1为高电平,此时P3.7口接受此高电平并向单片机发出转换结束的提醒,以便单片机读取转换结果。
图9 数模转化电路的仿真电路图
3.7 显示模块
图10 数据的显示电路
由于系统要显示的是收缩压和舒张压,内容较简单,显示量不多,所以显示模块选用数码管既方便又经济。
为了节省端口及降低功耗,本设计采用动态扫描显示方式。把所有LED的各段码对应连接起来,并把它们接到单片机数据输出口上,每个数码管的COM端还要受到位选信号的控制,位选信号可以接到另外一个输出口上,在某一时刻只让其中的一个COM出现低电平或高电平而只选通一位LED[12]。
显示用一片8位LED,最左边一位用来显示舒张压与收缩压的代码,用数字1来代表收缩压,用数字2来代表舒张压,右边三位则用来显示压力值。LED的位码由单片机的P3.0、P3.1、P3.2口控制,因为一片八位LED有四个位码,所以我用一个三八译码器来实现位选这一功能,即可以用74LS138的Y0、Y1、Y2、Y3来控制,图中的按键2用来切换舒张压与收缩压的显示。
3.8 气泵控制和报警电路
图11 气泵控制和血压报警电路
51系列单片机没有PWM输出功能[13],因此我采用单片机控制直流电机来进行气泵的充气和放气。当下图中P2.4口输出高电平时电机立即工作,输出低电平时充气立即停止工作。
如图所示,单片机P2.5所接键盘为开关,按下此键盘,单片机的P2.4口就输出高电平,立即启动电机工作,气泵开始充气,当袖带压力达到200mmHg时,单片机P2.4口输出低电平,此时气泵开始放气。单片机P3.3口接报警电路,当测量的血压值超出收缩压的正常范围或是低于舒张压的正常范围时,报警电路报警观察者的注意。
4.系统软件设计
4.1 系统流程图
图13 系统流程图
按流程图表示的依次进行,首先初始化完成后,系统判断按键是否按下,如果判断按键有效,那么单片机的控制口就会立即启动气泵充气。气泵是否停止充气的判定标准是:ADC信道0测到的血压直流分量是否大于4V,如果血压直流分量大于4V,这就表示气压已足够,已经可以停止充气了,此时气压值一般是略大于200mmHg。然后在气袖放气的过程当中,由ADC信道1采样血压交流分量并测出每个脉冲的峰峰值,于此同时也要计算出这个脉冲时间段内ADC信道0测到的袖带压力信号的平均值。然后把峰峰值和直流平均值作为一对数据记录起来,每次测量均要记录这么一对数据。ADC信道0测到的血压直流分量是否小于1V表示气压是否低于50mmHg,如果血压直流分量小于1v,则标志着单次测量的结束。
然后系统的工作就是统计记录下来的若干组峰峰值和直流平均值,并从这若干组数据中找出峰峰值最大的值,然后再以最大峰峰值为基准向前找到最接近最大值的0.5倍的一对数据,这对数据中的血压直流分量即为收缩压;以最大峰峰值为基准向后找到最接近最大值的0.7倍的一对数据,这对数据中的血压直流分量即为舒张压。然后判断测出的收缩压和舒张压的值是否落在合理的数据范围内,如:收缩压应在80~190mmHg范围内和舒张压50~120mmHg范围内。将计算出的落在合理数据范围内的收缩压和舒张压结果输出至LED显示,用按键2切换显示收缩压与舒张压。如果血压值超出了正常范围,系统就会启动报警。 AT89C51单片机的便携式电子血压计的设计+流程图(6):http://www.751com.cn/zidonghua/lunwen_970.html