PIC單片機AD轉換數據存儲及串口效率_第1頁
PIC單片機AD轉換數據存儲及串口效率_第2頁
PIC單片機AD轉換數據存儲及串口效率_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、PIC 單片機 A/D 轉換數據存儲及串口效率PIC 單片機 A/D 轉換后的數據通常需要占用兩個 8 位寬的 RAM 單元, 而 PIC 單片機的存儲 單元有限 , 因此造成了單片機的存儲單元不能被有效利用 , 同時通過串口向上位機傳送數據 時也需要花費較多的時間。為此提出一種數據打包的方法 , 使得相同的數據量占用較少的存儲空間 , 并可提高傳 輸效率。引言在由單片機和 PC 機構成的檢測系統中 , 通常會由多個單片機采集數據并將經過 A/D 轉換的數據通過串口送往上位 PC 機進行數據處理。 PIC 單片機 A/D 轉換后的結果大多是 8 位或 10 位的, 8 位的 A/D 轉換不涉及

2、該問題。以 10 位的數據為例 , 在單片機內進行存儲 時需要占用 2 個8 位的字節 , 低8 位和高 2位分別存儲在 2 個字節中 , 但是用于存儲高位 數據的8位寬的RAM單元中僅有2位是有效數據。單片機的存儲空間有限 , 以 PIC16F877 單片機為例 , RAM 數據存儲器按功能分為通用 寄存器和特殊功能寄存器兩個部分,除去特殊功能寄存器外,僅有368個8位寬的RAM單元, 單片機能夠存儲的數據量很有限。假設將每次 A/D 轉換的數據直接存儲 ,每個數據都要占用 2 個字節 , 理想狀態下也只能存儲 184 個數據 ; 假設需要存儲 100 個 A/D 轉換的數據 , 就要占用

3、200 個字節的單元 , 這樣的存儲方式并未將單片機的存儲空間 充分利用 , 同時 , 如果將 A/D 轉換后的數據通過串口直接上傳 , 串口就要向上傳送 200 幀 的數據 , 有效傳輸速率比較低 , 沒有充分利用數據幀中的數據位。為此 ,本文提出如下方法 將 A/D 轉換后的數據先進行處理后再存儲或上傳。1 程序設計思路以 10 位的 A/D 轉換為例 , 可以將 A/D 轉換的結果暫存在 asize 中 , 然后把數組 a 中的數據一位一位地取出 , 把低8 位和高 8 位拆開分別存放 , 低8 位存放在數組 b 中, 高 8 位存放在數組 c 中, 由于高 8 位的數據中只有 2 位是

4、有效數據 , 我們可以把有效數據取 出組合成一個新的數據存放 , 當上傳數據后再用相反的方法解碼 , 把數據恢復到原先的狀 態。這樣對于 10 位的 A/D 轉換來說可以節省 3/8 的空間 , 需要向上位機傳送的數據也會 比較少 , 數據傳輸時間僅為原來的 5/8 。A/D 轉換后的數據暫存在數組 asize 中 , 程序框圖見圖 1。開始圖1 A/D轉換數據存儲程序框圖2米用C語言編寫的程序asize 為是int8 的本文采用PIC16F877單片機進行試驗。其中定義i、h、j、n、m為int8,int16 的數組,用于暫存 A/D 轉換的結果;bnumber、cnumber、dnumbe

5、r 數組。程序原文如下:vo idc on vert ()h= j;for ( i= 0 ; i 8)&0x03;j+ ;m= n;for ( i= 0 ; i size/4 ; i+ + )dm+i= (c4*i 2) |c4*i+ 1 ;dm+i= (dm+i 4) |(c4*i+ 2 2) ;dm+i= dm+i|c4*i+3;n+ ;程序首先利用一個 for 循環將 A/D 轉換后的數據拆開 , 將低 8 位存放在數組 b 中 , 高 2 位暫時存放在數組 c 中。由于數組 c 中的 8 位二進制數據都是僅有低 2 位是有效數據 , 所以第二個 for 循環將 ci 、ci+1 、ci

6、+2 、ci+3 中的 2 位有效數據取出 , 按照由低 到高的順序重新組合成一個 8 位的二進制數 , 放入數組 d, 構成一個新的數組。 這樣 A/D 轉 換結果由原來用數組 a 表示變成了由數組 b 表示低 8 位、數組 d 表示高 2 位的狀態。程序中的 h、j 、n、m 用于記錄最后轉換的數據存儲在數組的位置, 在下一次轉換的時候 , 數據可以接在上一次的數據后面 , n 和 j 在主程序中 convert ( ) 被調用之前首先被 賦值為 0。3 結論根據以上程序 , 我們可以按照類似的方法把 12 位的 A/D 轉化結果進行組合 , 將 12 位 的 A/D 轉換結果拆成低 8 位和高 4 位 , 再將 2 個高 4 位重新組合成一個 8 位的二進制數 存儲 , 這樣對于 12 位的 A/D 轉化結果可以節省 1/4 存儲空間 , 縮短 1/4 傳輸時間。該程序的執行時間僅為 990us, 相對于數據的傳輸時間是很小的。在單片機空間小的情況下 , 以程序的執行時間來換取單片機的存儲空間是值得的。 上傳時間 , 提高有效數據的傳輸速率。但是在數據量較少的時候 的數據 , 這樣做反而會耗費時間、降低效率。同時又能有效地縮短數據的, 比如只有 1 個 A/D 轉換參考

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論