新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MXT8051的便攜式數字心電圖示儀

        基于MXT8051的便攜式數字心電圖示儀

        作者:謝興隆 大連理工大學電信學院 時間:2010-06-29 來源:電子產品世界 收藏

          軟件設計

        本文引用地址:http://www.104case.com/article/110396.htm

          本系統軟件設計的關鍵主要有以下三部分內容:

          1. ADC心電數據采集

          通過內部定時器0中斷方式控制ADC采樣率為1000Hz,其中每采集5個數據點做一次平均后,實際采樣率為200Hz,然后在數組a[320]中存儲320個心電波形數據。

          2. 從采用波形數據中檢測心率

          將采集到的320個數據存儲在一個數組a中,通過算法查找出數組最大值保存在max中,找一個值e=0.8*max,以e為數組的零點求出數組里值等于e項的數組索引數a1,a2,a3…….,根據得到的索引數求p=a3-a1,a3-a1即為兩個R波之間的采樣數據間隔數目,根據AD采樣率為200Hz ,可得到兩個心電R波波峰之間時間間隔T=p/200(s),由心率的計算公式(次/min) 即可計算出心率大小。

          3. 將采集的波形數據轉換為顯示數據

          LCD顯示屏為320×240點陣的圖形顯示模塊,內置RA8803 控制器。模塊不僅可以顯示單一的文本、圖形,而且可以實現雙圖層的(“或”、“異或”、“同或”、“與”四種邏輯關系)合成顯示。顯示屏的地址結構如圖10,由圖可知對顯示數據的操作最小單位為字節,因為的內嵌外部RAM為1K字節,顯示波形的區域為180*320,顯示一屏波形所需處理的數據為5.76K,故不可能同時處理一屏波形的全部數據,所以將一屏波形按字節分為40列,每次處理一列,處理完后直接顯示,然后處理下一列。將AD轉換所得的數據作為給LCD顯示器寫數據的列地址,因為一列數據為180字節,所以定義一個容量為180字節的數組lcd_buffer[180],lcd_buffer[]在初始時數據全為00H,因為每次對數據的操作至少是一個字節,而每次數據處理的是所顯示一個點,所以對每列數據處理8次,定義一個變量m,在一列數據處理之前將其賦值為m=10000000B,處理該列第1個點時讓該點垂直地址所對應的數組中的數據(00H)與m相或并將結果存入數組,再將變量m右移一位,即m=01000000B。讓第2點垂直地址所對應的數組中的數據與m相或并將結果存入數組,再將變量m右移一位,即m=00100000B ……,這樣直到一列數據中的8個點全處理完,重新給m賦值為m=10000000B,然后送顯示。為了有較好的顯示效果,將顯示相鄰的點用線連接起來,在處理第一個點時預讀出第二個點的垂直坐標,與第一個點的垂直坐標進行比較,如果比第一個點的垂直坐標小則從第一個點向第二個點拉線,如果比第一個點的垂直坐標大則從第二個點向第一個點拉線。 程序如下。

          for(j=0;j<40;j++) //將一屏數據分為40列

          { m=0x80;

          for(i=j*8;i<(j+1)*8;i++)//處理每列中8個點

          { k=cdd[i]; // 讀出采樣數據作為垂直坐標

          lcd_buffer[k]=(lcd_buffer[k]|m);

          if(cdd[i+q]

          { for(k=cdd[i+q];k

          { lcd_buffer[k]=(lcd_buffer[k]|m); }

          }

          else

          {for(k=cdd[i+q];k>cdd[i+q+1];k--)

          { lcd_buffer[k]=(lcd_buffer[k]|m); } }

          m>>=1; //將m的值右移一位

          }

          for(h=0;h<180;h++)//送顯示

          {

          SdCmd(0x60);SdCmd(j+5); //設置顯示X坐標

          SdCmd(0x70);SdCmd(h); //設置顯示Y坐標

          SdData(lcd_buffer[180-h]); //傳送顯示數據

          lcd_buffer[180-h]=0; //將已送出數據的存儲器單元清零

          } }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 运城市| 方城县| 成都市| 正蓝旗| 安新县| 钟山县| 洛川县| 霍林郭勒市| 颍上县| 顺昌县| 阳山县| 梅州市| 郴州市| 荥经县| 遵义市| 吉首市| 谢通门县| 靖边县| 精河县| 噶尔县| 峨眉山市| 嵩明县| 勃利县| 红桥区| 越西县| 镇赉县| 武功县| 余干县| 玛曲县| 林州市| 玉屏| 宿州市| 青神县| 新巴尔虎左旗| 台南市| 南雄市| 蓝田县| 镇巴县| 麟游县| 疏勒县| 泾川县|