4.系統(tǒng)軟件設計
系統(tǒng)軟件的主要特點是,以實時數據為核心,以功能獨立化、結構模塊化為軟件設計模式。系統(tǒng)開發(fā)采用了結構化的,從上到下的模塊劃分及從底到上的硬件功能封裝的軟件開發(fā)設計方法。本系統(tǒng)采用C96語言進行軟件系統(tǒng)開發(fā)。
(1)數據采集程序
數據采集到整個系統(tǒng)最重要的問題。如何實現數據采集,保證數據采集的實時性,并且能高效率地進行數據采集,盡可能少的時間占用少的系統(tǒng)資源,對于多參數同時監(jiān)護的情況下,是確保系統(tǒng)處理的實時性的重要因素。
在軟件設計中,我們利用硬件定時器及軟件定時器,進行定時中斷,進行多通道、多采樣點的數據采集流程設計。由于人體生理信號的變化較緩慢,采用此種方法已經可以確保高精度、實時性的數據采集。
?。?)液晶顯示控制
系統(tǒng)顯示功能的實現,實際上是對顯示控制器SED1330的編程控制。SED1330控制器具有系統(tǒng)控制、顯示操作、繪制操作、存儲操作等共15條指令。
在進行系統(tǒng)顯示模塊的編程時,我們利用C96語言對SED1330的指令功能進行分類組合、封裝,編制了一個基本的顯示控制圖函數庫。通過對子函數的調用,非常方便地實現了復雜的人機界面程序設計。
設計的子函數如下:
lnitCD(); /*初始化SED1330*/
ClearDispBufffer(); /*對顯示緩存區(qū)清零*/
ChooseScreen(screen); /*選擇顯示緩存區(qū)*/
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); /*對矩形區(qū)域反顯*/
Clear(left,top,right,bottom); /*清除矩形區(qū)域*/
部分液晶顯示子程序示例如下:
# 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;}
}
/*************************/
lnitl_CD()
{
* comm_reg=0x40; /*SYSTEM SET */
* pram_reg=0x34;/P1 CGRAM font dot array(now is:8x16)*/
* pram_reg=0x87; /*P2 */
* pram_reg=0x07;
* pram_reg=80;
* pram_reg=93; /*P5 93 */
* pram_reg=200;
* pram_reg=80; /*P7 */
* pram_reg=0; /*P8 */
* comm_reg=0x44; /*SetSooll() */
/*set SAD1 */
* pram_reg=0x0; /*P1 */
* pram_reg=200; /*P3 */
/* set SAD2 */
* pram_reg=0x80; /*P4 */
* pram_reg=0x3e;
* pram_reg=200; /*P6 */
/*set SAD3 */
* pram_reg=0x00; /*P7 */
* pram_reg=0x7d; /*P8 */
/*set SAD4 */
┆
* comm_reg=0xf58; /*Set Display(OFF)*/
/* *pram_reg=0; */
* comm_reg=0x5d; /*SetCsrForm()*/
* pram_reg=6;
* pram_reg=0x86;
* comm_reg=0x5a; /*set HDOT SCR*/
* pram_reg=0; /*must be clear*/
* comm_reg=0x4c; /*set csr dis is:RIGHT*/
* comm_reg=0x5b; /*SetOvlay */
* pram_reg=0x1c; /*three graphics display zone*/
* comm_reg=0x5c; /*SetCGRAM(addr)*/
* pram_reg=0xf0; /*turn off the CGAM */
* pram_reg=0;
* comm_reg=0x59; /*SetDisplay(ON)*/
* pram_reg=0x16;
ClearDispBuffer();
}
………………
利用LCD顯示屏進行顯示時,需要解決的問題是清除圖形間斷現象。模擬波形是連續(xù)圖形,但顯示屏是以離散點加以顯示的,這樣會造成波形快速升降沿間斷的現象。
為此,我們設計了一比較子程序。當相鄰兩列的點的幅值差大于2時,就將兩點間的所有點“點亮”,使顯示的圖形連續(xù)。
?。?)中斷系統(tǒng)的應用
本系統(tǒng)功能的實現,主要由中斷程序程序實現。如采用鍵盤輸入中斷、數據采集中斷、雙機通信、上下位機間的通信等中斷服務。中斷服務在整個系統(tǒng)軟件中起著不可缺少的作用。
本系統(tǒng)還利用PC機功能強,處理信息量大的特點,把監(jiān)護儀采集到的數據通過RS-232串行口傳送到PC機。由PC機進行數據的存儲和數據的進一步處理,并采用各種圖表等形式顯示參數、趨勢圖畫面,為操作者提供了非常友好的軟件界面
電子發(fā)燒友App





























評論