娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月07日(星期五)

正在發生

2020年02月07日 | PIC單片機A/D轉換數據存儲以及串口效率

發布者:sokaku 來源: eefocus關鍵字:PIC單片機  D轉換  數據存儲  串口效率 手機看文章 掃描二維碼
隨時隨地手機看文章

PIC 單片機A/D 轉換后的數據通常需要占用兩個8 位寬的RAM 單元, 而PIC 單片機的存儲單元有限,因此造成了單片機的存儲單元不能被有效利用, 同時通過串口向上位機傳送數據時也需要花費較多的時間。


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


引言


在由單片機和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結論


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


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

關鍵字:PIC單片機  D轉換  數據存儲  串口效率 引用地址:PIC單片機A/D轉換數據存儲以及串口效率

上一篇:PIC單片機各功能模塊介紹
下一篇:關于PIC單片機之探討低功耗

推薦閱讀

????新浪科技訊 北京時間2月6日凌晨消息,本周一,在有消息稱蘋果公司將選用英特爾作為下一代iPhone的調制解調器芯片供應商而不選用高通公司后,高通的股價下跌了3%。  高通多年以來都是蘋果公司的芯片供應商,但在去年蘋果控告高通對其芯片定價過高并拒絕支付大約10億美元退款后,高通和蘋果的關系開始惡化。  在一份有關芯片供應商的報告中,日...
像任何的技術一樣,當新硬件進入市場時,舊的技術要么被取而代之,要么接受改造。2018年的一些新技術,從許多方面改變了我們的生活。從家庭助手到幫助拯救環境,機器人將繼續進化,承擔起我們分配的任何任務。下面就來看看過去一年出現的一些新機器人,順便展望一下未來。1.波士頓動力公司的Atlas人形機器人表演跑酷自2013年推出以來,波士頓動力公司(Bost...
剛剛過去的2019年,對于PC市場有著重要的意義。“壓抑”多年的PC,無論是出貨量還是產品形態上都有了新的突破。 根據IDC公布的統計數據,2019年第四季度全球PC出貨量達到7180萬臺,創下近四年來的新高,全球PC出貨量同比增長2.7%,這也是自2011年以來的首個全年增長。這也標志著全球PC市場正式進入回暖狀態。已于1月初停止支持的Windows 7系統,也會成為...
1、位域詳細介紹參考文章:位域位域可以實現在信息在存儲時,并不需要占用一個完整的字節, 而只需占幾個或一個二進制位。例如在存放一個開關量時,只有0和1 兩種狀態, 用一位二進位即可。為了節省存儲空間,并使處理簡便,C語言又提供了一種數據結構,稱為“位域”或“位段”。所謂“位域”是把一個字節中的二進位劃分為幾 個不同的區域, 并說明每...

史海拾趣

問答坊 | AI 解惑

systemc的資料

我的個人博客,里面收集了些軟件方面的東西。 micbot.com 希望大家喜歡。…

查看全部問答∨

大家好,創建了DSP C3X系列芯片的討論群,希望大家加入討論。

大家好,創建了DSP C3X系列芯片的討論群,希望大家加入討論。共同學習,共同進步~~QQ 群號:88424445…

查看全部問答∨

困惑,得不到數據包協議類型

Packet = PacketArray;         NdisQueryPacket(Packet,NULL,&BufLength,&pBuffer,&PacketSize);         if(!BufLength)              ...…

查看全部問答∨

【MSP430共享】基于MSP430的便攜式醫療監護系統的設計

關于建立醫療監護系統的設計 對于想對提高醫療水平的可以看看…

查看全部問答∨

各位高手,44B0初級問題呀

這個程序怎么有這樣的運行效果 ????環境是ADS1.2 PE口接了幾個LED;我是初學者,想從最基本的開始,44B0板我就寫一個短短的程序就讓一個LED閃爍,就遇到這么多問題.我不用外部RAM,用內部8K的RAM.在編譯之前是不是得改一下RO BASE  ...…

查看全部問答∨

求教:編譯連接是出現很多的警告和錯誤

從網上下載了一個程序,自己新建了一個工程,把頭文件什么的都包含進去了,但一編譯就出現如圖那么多問題,是函數庫不兼容,還是其他問題?要怎么解決?…

查看全部問答∨

arduino avr開發

請問有沒有大神會把Arduino的程序挪到Avr開發板上的?學習學習~…

查看全部問答∨

串口里,有隊列和只有緩沖區的程序區別在哪,如何區別應用?

如題,看到有的串口程序。設置了隊列。還有頭尾指針,數據計數。而有的只設置了緩沖區。請問,什么時候用哪種方式呢?    另: 都是用隊列, 有的用的蠻細:出隊列,入隊列。頭指針&尾指針的比較,從而判斷隊列 空&滿。弄的好細微。比 ...…

查看全部問答∨

DIY手機+藍雨夜

DIY手機+藍雨夜 1、 實現的功能a、基本功能打電話 指定號碼接聽電話接收短信b  擴展功能 TTS語音合成應答 盡量體積小巧,能夠佩帶在手上!適合小孩使用如圖 2、所需硬件TI的TIVA C系列 TM4C123G2.4寸TFT LCDTI電源管理,DCDC,電量監測 ...…

查看全部問答∨

【TIVA C launchpad 學習筆記一】 LCD12864顯示,可顯示ASCII,中文,描點繪圖

/******************************************* 開發壞境:CCSv5 程序功能:LCD12864顯示,可描點繪圖,顯示漢字,ASCII 程序說明:并行模式,PA2,PA3,PA4分別對應RS,RW,E,PB0-PB7對應數據口        PSB接高電平 編程者: ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 墨江| 交口县| 宣威市| 赤城县| 封开县| 济源市| 和政县| 吉木乃县| 汉川市| 堆龙德庆县| 革吉县| 津南区| 临城县| 宁武县| 肃宁县| 门源| 沿河| 澳门| 山阴县| 石家庄市| 古交市| 腾冲县| 邵东县| 高密市| 逊克县| 平定县| 阿克苏市| 孟村| 石屏县| 汕尾市| 扬州市| 寿阳县| 北流市| 杨浦区| 吉木萨尔县| 文昌市| 慈溪市| 汉中市| 兴国县| 鄯善县| 武城县|