PIC單片機(jī)AD轉(zhuǎn)換數(shù)據(jù)存儲(chǔ)及串口效率-技術(shù)方案_第1頁
PIC單片機(jī)AD轉(zhuǎn)換數(shù)據(jù)存儲(chǔ)及串口效率-技術(shù)方案_第2頁
PIC單片機(jī)AD轉(zhuǎn)換數(shù)據(jù)存儲(chǔ)及串口效率-技術(shù)方案_第3頁
PIC單片機(jī)AD轉(zhuǎn)換數(shù)據(jù)存儲(chǔ)及串口效率-技術(shù)方案_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

精品文檔-下載后可編輯PIC單片機(jī)AD轉(zhuǎn)換數(shù)據(jù)存儲(chǔ)及串口效率-技術(shù)方案PIC單片機(jī)A/D轉(zhuǎn)換后的數(shù)據(jù)通常需要占用兩個(gè)8位寬的RAM單元,而PIC單片機(jī)的存儲(chǔ)單元有限,因此造成了單片機(jī)的存儲(chǔ)單元不能被有效利用,同時(shí)通過串口向上位機(jī)傳送數(shù)據(jù)時(shí)也需要花費(fèi)較多的時(shí)間。

為此提出一種數(shù)據(jù)打包的方法,使得相同的數(shù)據(jù)量占用較少的存儲(chǔ)空間,并可提高傳輸效率。

0引言

在由單片機(jī)和PC機(jī)構(gòu)成的檢測系統(tǒng)中,通常會(huì)由多個(gè)單片機(jī)采集數(shù)據(jù)并將經(jīng)過A/D轉(zhuǎn)換的數(shù)據(jù)通過串口送往上位PC機(jī)進(jìn)行數(shù)據(jù)處理。PIC單片機(jī)A/D轉(zhuǎn)換后的結(jié)果大多是8位或10位的,8位的A/D轉(zhuǎn)換不涉及該問題。以10位的數(shù)據(jù)為例,在單片機(jī)內(nèi)進(jìn)行存儲(chǔ)時(shí)需要占用2個(gè)8位的字節(jié),低8位和高2位分別存儲(chǔ)在2個(gè)字節(jié)中,但是用于存儲(chǔ)高位數(shù)據(jù)的8位寬的RAM單元中僅有2位是有效數(shù)據(jù)。

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

1程序設(shè)計(jì)思路

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

2采用C語言編寫的程序

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

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

程序中的h、j、n、m用于記錄轉(zhuǎn)換的數(shù)據(jù)存儲(chǔ)在數(shù)組的位置,在下轉(zhuǎn)換的時(shí)候,數(shù)據(jù)可以接在上的數(shù)據(jù)后面,n和j在主程序中convert()被調(diào)用之前首先被賦值為0。

3結(jié)論

根據(jù)以上程序,我們可以按照類似的方法把12位的A/D轉(zhuǎn)化結(jié)果進(jìn)行組合,將12位的A/D轉(zhuǎn)換結(jié)果拆成低8位和高4位,再將2個(gè)高4位重新組合成一個(gè)8位的二進(jìn)制數(shù)存儲(chǔ),這樣對(duì)于12位的A/D轉(zhuǎn)化結(jié)果可以節(jié)省1/4存儲(chǔ)空間,縮短1/4傳輸時(shí)間。

該程序的執(zhí)行時(shí)間僅為990us,相對(duì)于數(shù)據(jù)的傳輸時(shí)間是很小的。在單片機(jī)空間小的情況下,以程序的執(zhí)行時(shí)間來換取單片

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論