《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 提升PIC單片機AD轉換數據存儲及串口效率的設計
提升PIC單片機AD轉換數據存儲及串口效率的設計
摘要: PIC單片機A/D轉換后的數據通常需要占用兩個8位寬的RAM單元,而PIC單片機的存儲單元有限,因此造成了單片機的存儲單元不能被有效利用,同時通過串口向上位機傳送數據時也需要花費較多的時間。為此提出一種數據打包的方法,使得相同的數據量占用較少的存儲空間,并可提高傳輸效率。
Abstract:
Key words :

  0 引言

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

  單片機的存儲空間有限,以單片機為例,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 的數組。程序原文如下:

     

  程序首先利用一個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 結論

  根據以上程序,我們可以按照類似的方法把12位的A/D 轉化結果進行組合,將12 位的A/D 轉換結果拆成低8 位和高4 位,再將2 個高4 位重新組合成一個8 位的二進制數存儲,這樣對于12 位的A/D 轉化結果可以節省1/4 存儲空間,縮短1/4 傳輸時間。

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

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 免费看污污的网站| 国产精品lululu在线观看| 久久精品国产91久久综合麻豆自制| 男人边吃奶边做弄进去免费视频| 国产又黄又大又粗的视频| 97日日碰人人模人人澡| 成年女人毛片免费视频| 亚洲av无码不卡在线播放| 特区爱奴在线观看| 国产99视频精品免视看7| 亚洲视频一区二区三区四区| 天天躁天天狠天天透| 久久中文字幕2021精品| 欧美亚洲精品suv| 人人妻人人澡人人爽人人精品浪潮| 色婷婷亚洲综合| 国产第一页在线播放| 99国产欧美久久久精品| 成人在线综合网| 久久天天躁狠狠躁夜夜不卡| 欧美巨大xxxx做受中文字幕 | 一级大片免费看| 日韩v亚洲v欧美v精品综合| 亚洲国产成人精品无码区花野真一| 猫咪av成人永久网站在线观看| 啊v在线免费观看| 高清欧美一级在线观看| 国产精品乱码一区二区三区| 99久久综合狠狠综合久久| 开心久久婷婷综合中文字幕| 久久www成人看片| 日韩欧美aⅴ综合网站发布| 亚洲国产日韩女人aaaaaa毛片在线| 狠狠ady精品| 六月丁香婷婷天天在线| 老师在办公室被躁在线观看| 国产又黄又爽无遮挡不要vip| 中文免费观看视频网站| 国产麻豆精品久久一二三| ffee性护士vihaos中国| 思思久久99热只有频精品66|