《電子技術應用》
您所在的位置:首頁 > 模拟设计 > 设计应用 > PIC单片机A/D转换数据存储效率的提升
PIC单片机A/D转换数据存储效率的提升
摘要: 本文提出一种数据打包的方法,使得相同的数据量占用较少的存储空间,并可提高传输效率。
Abstract:
Key words :

引言

在由單片機和PC 機構成的檢測系統中, 通常會由多個單片機采集數據并將經過A/D 轉換的數據通過串口送往上位PC 機進行數據處理。PIC 單片機A/D 轉換后的結果大多是8 位或10 位的, 8 位的A/D轉換不涉及該問題。以10 位的數據為例, 在單片機內進行存儲時需要占用2 個8 位的字節, 低8 位和高2位分別存儲在2 個字節中, 但是用于存儲高位數據的8 位寬的RAM 單元中僅有2 位是有效數據。

單片機的存儲空間有限, 以PIC16F877 單片機為例, RAM 數據存儲器按功能分為通用寄存器和特殊功能寄存器兩個部分, 除去特殊功能寄存器外, 僅有368 個8 位寬的RAM 單元, 單片機能夠存儲的數據量很有限。假設將每次A/D 轉換的數據直接存儲, 每個數據都要占用2 個字節, 理想狀態下也只能存儲184 個數據; 假設需要存儲100 個A/D 轉換的數據, 就要占用200 個字節的單元, 這樣的存儲方式并未將單片機的存儲空間充分利用, 同時, 如果將A/D 轉換后的數據通過串口直接上傳, 串口就要向上傳送200 幀的數據, 有效傳輸速率比較低, 沒有充分利用數據幀中的數據位。為此,本文提出如下方法將A/D 轉換后的數據先進行處理后再存儲或上傳。

1 程序設計思路

以10 位的A/D 轉換為例, 可以將A/D 轉換的結果暫存在a[size] 中, 然后把數組a 中的數據一位一位地取出, 把低8 位和高8 位拆開分別存放, 低8 位存放在數組b 中, 高8 位存放在數組c 中, 由于高8 位的數據中只有2 位是有效數據, 我們可以把有效數據取出組合成一個新的數據存放, 當上傳數據后再用相反的方法解碼, 把數據恢復到原先的狀態。這樣對于10 位的A/D 轉換來說可以節省3/8 的空間, 需要向上位機傳送的數據也會比較少, 數據傳輸時間僅為原來的5/8。

2 采用C 語言編寫的程序

本文采用PIC16F877 單片機進行試驗。其中定義i、h、j、n、m 為int8, a[size] 為int16 的數組, 用于暫存A/D 轉換的結果; b[number]、c[number]、d[number] 是int8 的數組。程序原文如下:

vo idcONvert ()

{

h= j;

for ( i= 0 ; i< size ; i+ + )

{

b[h+i]= a[i];

c[i] = (a[i]>> 8)&0x03;

j++ ;

}

m= n;

for ( i= 0 ; i< size/4 ; i+ + )

{

d[m+i]= (c[4*i]<< 2) |c[4*i+ 1 ];

d[m+i]= (d[m+i]<< 4) |(c[4*i+ 2 ]<< 2) ;

d[m+i]= d[m+i]|c[4*i+3];

n++ ;

}

}

程序首先利用一個for 循環將A/D 轉換后的數據拆開, 將低8 位存放在數組b 中, 高2 位暫時存放在數組c 中。由于數組c 中的8 位二進制數據都是僅有低2 位是有效數據, 所以第二個for 循環將c[i]、c[i+1]、c[i+2]、c[i+3]中的2 位有效數據取出, 按照由低到高的順序重新組合成一個8 位的二進制數,放入數組d, 構成一個新的數組。這樣A/D 轉換結果由原來用數組a 表示變成了由數組b 表示低8 位、數組d 表示高2 位的狀態。

程序中的h、j、n、m 用于記錄最后轉換的數據存儲在數組的位置, 在下一次轉換的時候, 數據可以接在上一次的數據后面, n 和j 在主程序中convert ( ) 被調用之前首先被賦值為0。

3 結論

該程序的執行時間僅為990us, 相對于數據的傳輸時間是很小的。在單片機空間小的情況下, 以程序的執行時間來換取單片機的存儲空間是值得的。同時又能有效地縮短數據的上傳時間, 提高有效數據的傳輸速率。但是在數據量較少的時候, 比如只有1 個A/D 轉換的數據, 這樣做反而會耗費時間、降低效率。

 

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 精品国产一区二区三区久久久狼 | 国产精品成久久久久三级| 国产一区视频免费观看| www.日韩免费| 国产日韩中文字幕| 欧美精品自拍视频| 在线一区亚洲V| 国产成一区二区| 九九九九九九精品| 日韩精品成人一区二区在线观看| 国产精品国产精品国产专区不卡| 久久免费99精品久久久久久| 国产成人欧美在线观看| 欧美精品一区在线| 青青久久av北条麻妃黑人| 无码av天堂一区二区三区 | 国产九九精品视频| 久久综合电影一区| 欧美精品久久久久| 欧美另类69精品久久久久9999| 99在线观看视频免费| 国产精品亚洲天堂| 国产精品视频二| 国产日韩在线亚洲字幕中文 | 日韩欧美视频一区二区三区四区| 91高潮在线观看| 91精品国产91久久久久| 99免费在线观看视频| 99精品视频在线看| www婷婷av久久久影片| www.色综合| 亚洲91精品在线亚洲91精品在线| 视频一区二区三区免费观看| 不卡视频一区二区| 亚洲国产一区二区在线| 日韩欧美一区三区| 日韩免费观看网站| 国产精品久久久91| 国产精品美女免费看| 国产精品大全| 亚洲午夜精品久久久久久人妖|