基于便携式微电脑的多参数生理监护仪研制
(5)外围器件控制
系统各外围器件的片选信号由74LS373锁存的地址信号,经芯片GAL16V8C译码产生。GAL芯片是可编程逻辑阵列,通过对其引脚的编程,将其作为译码器,依据P4口高字节8位地址进行片选,其编程方便,使用灵活。系统除用作译码器外,在单片机2中,还用作控制气泵和气阀的开关。
通过簇已分配给气泵或气阀I/O口地址,写上“0”或“1”,则输出引脚OUT1、OUT2为低或高电平。该电平将保持,直到再次往同一地址写“1”或 “0”,如此,可定时控制气泵或气阀开关。
4.系统软件设计
系统软件的主要特点是,以实时数据为核心,以功能独立化、结构模块化为软件设计模式。系统开发采用了结构化的,从上到下的模块划分及从底到上的硬件功能封装的软件开发设计方法。本系统采用C96语言进行软件系统开发。
(1)数据采集程序
数据采集到整个系统最重要的问题。如何实现数据采集,保证数据采集的实时性,并且能高效率地进行数据采集,尽可能少的时间占用少的系统资源,对于多参数同时监护的情况下,是确保系统处理的实时性的重要因素。
在软件设计中,我们利用硬件定时器及软件定时器,进行定时中断,进行多通道、多采样点的数据采集流程设计。由于人体生理信号的变化较缓慢,采用此种方法已经可以确保高精度、实时性的数据采集。
(2)液晶显示控制
系统显示功能的实现,实际上是对显示控制器SED1330的编程控制。SED1330控制器具有系统控制、显示操作、绘制操作、存储操作等共15条指令。
在进行系统显示模块的编程时,我们利用C96语言对SED1330的指令功能进行分类组合、封装,编制了一个基本的显示控制图函数库。通过对子函数的调用,非常方便地实现了复杂的人机界面程序设计。
设计的子函数如下:
lnitCD(); /*初始化SED1330*/
ClearDispBufffer(); /*对显示缓存区清零*/
ChooseScreen(screen); /*选择显示缓存区*/
SetCsrAbsAddr(addr); /*设置光标绝对位置*/
SetCsrDir(dir); /*设置光标移动方向*/
PutChar16xy(x,y,data); /*显示点阵为16×16的字体*/
SetPutPixel(x,y); /*在显示屏上显示一点*/
H_line(x1,x2,y,linestyle); /*画水平线*/
V_line(x1,y1,x2,y2); /*画垂直线*/
lnvert(x1,y1,x2,y2); /*对矩形区域反显*/
Clear(left,top,right,bottom); /*清除矩形区域*/
部分液晶显示子程序示例如下:
# include 80c196.h
# include “data.dat”
# include init.c
# define UP 0x4e
# define DOWN 0x4f
# define LEFT 0x4d
# define RIGHT 0x4c
# define AP 80
# define SA1 0
# define SAD2 0x3e80
# define Max_X 640
# define Max_Y 200
# define ECQ_Y 128
# define PLUSE_Y 50
# define NORMAL ox4f
# define DOT_1 0xaa
# define DOT_2 0x66
unsigned char * comm_reg;
unsigned char * pram_reg;
unsigned int_sad;
/************************/
/* var screensvalue is:1 or 2.*/
ChooseScreen(screen)
Unsigned char screen;
{
switch(screen){
case 1:
_sad=SAD1;break;
case 2:
_sad=SAD2;break;
defaulf:
_sad=SAD1;}
}
/*************************/
评论