資源描述:
《多通道數(shù)字示波器》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、多通道數(shù)字示波器一構(gòu)建思想優(yōu)點(diǎn):1利用VC強(qiáng)大功能,可以在微機(jī)上進(jìn)行操作。2方便調(diào)整修改,滿足不同的信號(hào)處理要求。3能夠存儲(chǔ)大容量的數(shù)據(jù),方便對(duì)數(shù)據(jù)分析,提高工作效率。4占用內(nèi)存比較小,運(yùn)行速度快。二基本原理本示波器有2大部分組成1數(shù)據(jù)。包括數(shù)據(jù)的讀取,存儲(chǔ),即時(shí)讀取,后臺(tái)處理。2顯示。對(duì)數(shù)據(jù)的顯示功能。包括顯示即時(shí)數(shù)據(jù),顯示讀取存儲(chǔ)的數(shù)據(jù)。數(shù)據(jù)處理1建立合理高效的數(shù)據(jù)結(jié)構(gòu)。處理方法:建立結(jié)構(gòu)體。其中包括數(shù)據(jù)的一切屬性,使之與圖象聯(lián)系起來(lái),達(dá)到直觀,準(zhǔn)確的觀察效果。例:structcurAtt//通道線的屬性{uns
2、ignedintcolor;//線顏色unsignedintwidth;//線寬intboundY;//Y軸范圍intoffsetY;//中心軸偏移量excursionYfloatscale;//放大縮小系數(shù)intprecision[16];//靈敏度intexcursion[21];//中軸偏移}channel[8];structCanData{chardata[500000];//存儲(chǔ)數(shù)據(jù)緩沖}candata[8];structDataBuffer//數(shù)據(jù)顯示緩沖{chardata[MaxBuff];}datab
3、uffer[8];structDataSave//數(shù)據(jù)存儲(chǔ)緩沖{chardata[500000];}datasave[8];優(yōu)點(diǎn):數(shù)據(jù)反映全面,直觀。方便修改,為以后的程序更新提供了很好的基礎(chǔ)。2數(shù)據(jù)的存儲(chǔ)處理方法:建立大緩存,采取同存的方法,一次性處理4M甚至更大的數(shù)據(jù)。例:chartempdata[4000004];//臨時(shí)緩沖1chartempdata2[4000004];//臨時(shí)緩沖2unsignedcharonetime;//循環(huán)次數(shù)計(jì)數(shù)寫(xiě)數(shù)據(jù):長(zhǎng)度小于500000的處理方法{for(unsignedlon
4、gh=0;h<500000;h++){tempdata[h+4+500000*0]=candata[0].data[h];//1tempdata[h+4+500000*1]=candata[1].data[h];//2tempdata[h+4+500000*2]=candata[2].data[h];//3tempdata[h+4+500000*3]=candata[3].data[h];//4tempdata[h+4+500000*4]=candata[4].data[h];//5tempdata[h+4+5000
5、00*5]=candata[5].data[h];//6tempdata[h+4+500000*6]=candata[6].data[h];//7tempdata[h+4+500000*7]=candata[7].data[h];//8}}把8個(gè)通道的數(shù)據(jù)同時(shí)分段存到一個(gè)結(jié)構(gòu)體中。采用二進(jìn)制的存儲(chǔ)方式,速度快。//數(shù)據(jù)長(zhǎng)度超過(guò)500000萬(wàn)的處理方法{for(unsignedlongh=0;h<500000-datapo;h++){tempdata[h+4+500000*0]=candata[0].data[h+da
6、tapo];//1tempdata[h+4+500000*1]=candata[1].data[h+datapo];//2tempdata[h+4+500000*2]=candata[2].data[h+datapo];//3tempdata[h+4+500000*3]=candata[3].data[h+datapo];//4tempdata[h+4+500000*4]=candata[4].data[h+datapo];//5tempdata[h+4+500000*5]=candata[5].data[h+dat
7、apo];//6tempdata[h+4+500000*6]=candata[6].data[h+datapo];//7tempdata[h+4+500000*7]=candata[7].data[h+datapo];//8}for(h=0;h8、datapo]=candata[2].data[h];//3tempdata[h+4+500000*4-datapo]=candata[3].data[h];//4tempdata[h+4+500000*5-datapo]=candata[4].data[h];//5tempdata[h+4+500000*6-datapo]=candata[5