<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > PC1O4總線雷達信號顯示卡的設計與實現

          PC1O4總線雷達信號顯示卡的設計與實現

          作者: 時間:2011-01-11 來源:網絡 收藏

          b.JPG

          計算機通過PC104設置顯示卡的工作方式和讀取采集到的數據。為了多通道同時使用,每個顯示器卡有一通道號,軟件逐個設置好各通道狀態(tài)后可以同時或分別使能觸發(fā)。各通道的外觸發(fā)輸入可用于多通道在同一觸發(fā)時刻采樣記錄。PC機可通過I/O、DMA、中斷等多種方式與示波器卡進行通訊或采樣數據讀取。

          2 系統(tǒng)軟件設計
          顯示卡的整個結構是由PC104接口電路和功能電路兩部分構成的,而功能電路部分單片機是核心,因此單片機軟件的編寫也是一個很重要的部分。單片機的程序是用C語言編寫的,主要結構如下:
          (1)和上位機的通信程序。其中包括讀取上位機的命令,把測試數據傳送給上位機,報告功能電路的狀態(tài)。
          (2)功能函數。其中包括AD采集程序、設置量程、復位、自動調零、自檢、中斷服務程序等等。
          因此,顯示卡軟件由主程序和中斷程序組成,程序如框圖3和圖4所示。
          c.JPG

          主程序完成開辟與遙控幀格式一致的數據區(qū)域、芯片的初始化以及串行異步數據的發(fā)送和接收。串行異步數據發(fā)送接收期間,MPU會關閉中斷O和1,但這并不會影響MPU對按鍵的相應和處理。當82C79檢測到有按鍵按下時,要么能夠在數據發(fā)送完畢后的時間空隙內申請中斷并得到處理,要么多等待30ms,而后請求中斷并得到處理。多出來的30ms與下一次按鍵的時間間隔(最少為幾百毫秒)相比少得多,因此關閉中斷的過程不影響按鍵的處理。
          中斷程序/INT0中,MPU將讀取82C79中的鍵值,并判斷按鍵類型。當按鍵為普通按鍵時,MPU并不改變82C79的工作方式,只將按鍵對應的指令代碼填充到數據區(qū)域的相應字節(jié)位,并將R4賦值#01H。當按鍵為“長按”按鍵時,MPU將指令代碼填充到數據區(qū)域的相應字節(jié)位后,會立即改變82C79 的工作方式,將其設置在傳感器掃描工作方式。當“長按”按鍵斷開時,由于傳感器矩陣發(fā)生了變化,82C79能再次通過IRQ信號通知MPU。再次進入中斷程序時,MPU將82C79的工作方式再改回到鍵盤掃描方式后,才將R4賦值#01H,至此一個完整的按鍵過程完成。對于配合旋鈕開關的“長按”按鍵,按鍵閉合的時候,MPU還需要打開A/D轉換;按鍵斷開時,MPU則要關閉A/D轉換。
          中斷程序TO中,每經過兩次中斷即80ms(MPU的工作頻率決定了其最大定時到達不了80ms),MPU就將串行數據發(fā)送指針置位。

          3 結論
          解決PC104數據傳輸的瓶頸問題,合理分配硬件資源。PC104總線的突出優(yōu)點是結構簡單、易于開發(fā),但其傳輸速率較慢。通過實際應用證明基于PC104總線顯示能克服以上設計缺陷,特別是能充分滿足便攜式設計特點的要求,適應維修訓練要求。

          本文引用地址:http://www.ex-cimer.com/article/195148.htm

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();