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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 示波器監(jiān)控程序設(shè)計方案

          示波器監(jiān)控程序設(shè)計方案

          作者: 時間:2012-10-17 來源:網(wǎng)絡(luò) 收藏

          系統(tǒng)硬件電路

          硬件電路

          6系統(tǒng)軟件設(shè)計

          6.1一鍵多義鍵盤程序設(shè)計

          在鍵盤分析中,運用一個工作狀態(tài)寄存器保存鍵盤的現(xiàn)狀態(tài),當(dāng)鍵盤掃描到一個按鍵時,根據(jù)現(xiàn)狀態(tài)的值從分析程序入口表中找到分析程序狀態(tài)表地址,從該地址處進入分析程序狀態(tài)表,找到相匹配的值,把下一狀態(tài)送到現(xiàn)狀態(tài)單元里,取出動作號,根據(jù)動作號計算出動作子程序入口地址,再執(zhí)行相應(yīng)子程序。圖4為鍵碼匹配子程序的流程圖。

          6.2編碼開關(guān)程序設(shè)計

          由圖1可以看出,引腳1和引腳2有同時為高電平的情況,之后如果引腳2比引腳1先到達高電平則表示左旋,如果引腳1比引腳2先到達高電平則表示右旋。編程的時候依據(jù)這個特點來判斷引腳1、引腳2的狀態(tài)即可。以1引腳接P4.0,2引腳接P4.1為例:

          鍵碼匹配子程序的流程圖

          6.3模數(shù)轉(zhuǎn)換軟件設(shè)計

          通過設(shè)置ADCO控制寄存器ADCOCN位3~2(ADOCM1~O)A/D轉(zhuǎn)換啟動方式選擇位,來啟動A/D轉(zhuǎn)換:位3~2為00時,向ADOBUSY(ADCOCN位4)寫1啟動A/D轉(zhuǎn)換;位3~2為01時,定時器3溢出啟動A/D轉(zhuǎn)換;位3~2為10時,CNVSTR上升沿啟動A/D轉(zhuǎn)換;位3~2為11時,定時器2溢出啟動A/D轉(zhuǎn)換。本設(shè)計采用第一種啟動方式。

          由于單片機的工作量并不大,所以軟件設(shè)計時采用查詢的方式。單片機不斷地查詢鍵盤、編碼開關(guān)以及電位器的狀態(tài),如果有變化時,單片機將動作信息傳遞給ARM主MCU,等待主MCU的處理。由于單片機模數(shù)轉(zhuǎn)換的速度非???,因此在程序中加延時,以便觀察到模數(shù)轉(zhuǎn)換的變化量。另外,硬件設(shè)計時沒有考慮濾波,故用軟件實現(xiàn)濾波。一般的濾波的方法有限幅濾波法、中位置濾波法、算術(shù)平均濾波法等,現(xiàn)在提出一種新的濾波方法。由于使用12位A/D,但只要8位就可以達到所要的精度,所以可以采用去掉低4位的方法來實現(xiàn)濾波的目的。由于篇幅有限,下面只給出程序的一部分,以AIN0為例:

          22.jpg

          結(jié)語

          本文介紹的一鍵多義的按鍵管理程序,對多按鍵的智能儀表可以通用。編碼開關(guān)的編程方法簡單易懂。在A/D轉(zhuǎn)換部分,提出的去掉低4位的軟件濾波方法可靠可行,對精度要求不高的場合非常適用。這3部分構(gòu)成了一個完整的,當(dāng)單片機監(jiān)控到某一部分有變化時,就將其動作信息傳遞給ARM主CPU,主CPU進行相應(yīng)的處理。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();