新聞中心

        EEPW首頁 > 醫療電子 > 設計應用 > 基于便攜式微電腦的多參數生理監護儀研制

        基于便攜式微電腦的多參數生理監護儀研制

        作者: 時間:2010-04-20 來源:網絡 收藏

        (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;}
        }
        /*************************/



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 大石桥市| 个旧市| 堆龙德庆县| 林周县| 雅安市| 淮南市| 广西| 肃宁县| 都江堰市| 渝中区| 策勒县| 山西省| 朔州市| 苏尼特右旗| 确山县| 临沂市| 婺源县| 安阳市| 上思县| 余姚市| 石家庄市| 长治市| 建水县| 资源县| 肇东市| 和政县| 思茅市| 白城市| 紫云| 桓台县| 怀安县| 泸水县| 河东区| 曲阜市| 育儿| 大石桥市| 高密市| 黄梅县| 台山市| 桃江县| 湄潭县|