基帶編碼軟件課程設(shè)計(jì)設(shè)計(jì)報(bào)告_第1頁
基帶編碼軟件課程設(shè)計(jì)設(shè)計(jì)報(bào)告_第2頁
基帶編碼軟件課程設(shè)計(jì)設(shè)計(jì)報(bào)告_第3頁
基帶編碼軟件課程設(shè)計(jì)設(shè)計(jì)報(bào)告_第4頁
基帶編碼軟件課程設(shè)計(jì)設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 課程設(shè)計(jì)報(bào)告書設(shè)計(jì)題目 : 基帶碼型編碼軟件 學(xué)院(系): 物理與電子工程學(xué)院 專 業(yè): 通信工程 年級(jí)班級(jí) : 2006級(jí)通信工程(1)班 學(xué) 號(hào): 106263010 學(xué)生姓名 : xxx 起止日期 : 2011年8月29日至2011年9月16日 指導(dǎo)教師: xxx 內(nèi)容摘要:數(shù)字基帶傳輸是數(shù)字傳輸技術(shù)的一種基本形式,是研究數(shù)字頻帶傳輸系統(tǒng)的基礎(chǔ)。數(shù)字基帶碼型的選擇對(duì)于數(shù)字基帶傳輸系統(tǒng)的性能具有重要意義?;赼mi碼、hdb3碼、cmi碼、曼切斯特碼、差分曼切斯特碼的編碼原理,用visual c+6.0設(shè)計(jì)ami碼、hdb3碼、cmi碼、曼切斯特碼、差分曼切斯特碼的編碼軟件,能夠根據(jù)用戶

2、輸入的二進(jìn)制信息序列及設(shè)定的編碼類型給出對(duì)應(yīng)的編碼結(jié)果,并以圖形化的方式顯示出波形來。本軟件編碼器詳細(xì)敘述了其相關(guān)編碼算法和關(guān)鍵技術(shù),系統(tǒng)以mfc的單文檔為模板,界面設(shè)計(jì)人性化,操作簡易明了。編碼算法有多種參數(shù)設(shè)置。對(duì)學(xué)習(xí)ami、hdb3碼、cmi碼、曼切斯特碼、差分曼切斯特碼有很大的幫助,使學(xué)習(xí)者可以更加直觀了認(rèn)識(shí)這幾個(gè)碼型的編碼規(guī)則,同時(shí)也可以應(yīng)用于實(shí)際中某些適合這類碼型傳輸?shù)南到y(tǒng),為這些系統(tǒng)提供編碼使其更利于傳輸。關(guān)鍵詞:visual c+6.0,hdb3,ami,cmi,曼切斯特碼,編碼器,隨機(jī)碼,極性,線條寬度,顏色,波形目 錄一、設(shè)計(jì)要求:4二、設(shè)計(jì)意義:4三、設(shè)計(jì)原理43.1、

3、ami碼43.2、hdb3碼43.3、cmi碼53.4、 曼徹斯特碼53.5、系統(tǒng)設(shè)計(jì)方法分析53.6、系統(tǒng)的設(shè)計(jì)思路5四、系統(tǒng)的具體設(shè)計(jì)與實(shí)現(xiàn)64.1編碼算法設(shè)計(jì)64.1.1 ami編碼算法64.1.2 hdb3 編碼算法84.1.3 cmi 編碼算法104.1.4 曼徹斯特碼編碼算法124.1.5 隨機(jī)信號(hào)生成算法144.2、 畫圖設(shè)計(jì)14五、調(diào)試結(jié)果與現(xiàn)象分析15六、系統(tǒng)不足之處18七、心得體會(huì)18八、參考文獻(xiàn)19一、設(shè)計(jì)要求:基本要求:用c+等高級(jí)語言設(shè)計(jì)ami碼、hdb3碼的編碼軟件,要求能根據(jù)用戶輸入的二進(jìn)制信息序列及設(shè)定的編碼類型給出對(duì)應(yīng)的編碼結(jié)果,并以圖形化的方式顯示出波形來。

4、能夠設(shè)置一些參數(shù):如線的顏色、寬度;能夠控制是否顯示網(wǎng)格線、是否在編碼波形旁邊顯示其編碼結(jié)果等。能產(chǎn)生由用戶設(shè)定信息序列長度的隨機(jī)序列,并給出此序列的編碼結(jié)果,并以圖形化的方式顯示出波形來。擴(kuò)展要求:能夠?qū)ζ渌R娀鶐Тa型,如manchester碼、差分manchester碼、多電平碼等進(jìn)行編碼和顯示。 二、設(shè)計(jì)意義:通過本次課程設(shè)計(jì),系統(tǒng)了解和掌握通信系統(tǒng)的基帶碼型編碼軟件設(shè)計(jì)過程、方法及實(shí)現(xiàn);掌握運(yùn)用c+高級(jí)語言設(shè)計(jì)通信軟件的方法,為以后設(shè)計(jì)和實(shí)現(xiàn)通信系統(tǒng)打下良好基礎(chǔ)。三、設(shè)計(jì)原理3.1、 ami碼 ami碼全稱是傳號(hào)交替反轉(zhuǎn)碼。其編碼規(guī)則是將二進(jìn)制消息代碼“1”(傳號(hào))交替地變換為傳輸碼

5、的“+1”和“-1”,而“0”(空號(hào))保持不變。例如消息碼100110000000110011ami碼:+1001+10000000-1+100-1+1ami碼對(duì)應(yīng)的基帶信號(hào)是正負(fù)極性交替的脈沖序列,而0電位持不變的規(guī)律。ami碼的優(yōu)點(diǎn)是,由于+1與-1 交替, ami碼的功率譜中不含直流成分,高、低頻分量少,能量集中在頻率為1/2碼速處。位定時(shí)頻率分量雖然為0,但只要將基帶信號(hào)經(jīng)全波整流變?yōu)閱螛O性歸零波形,便可提取位定時(shí)信號(hào)。此外,ami碼的編譯碼電路簡單,便于利用傳號(hào)極性交替規(guī)律觀察誤碼情況。鑒于這些優(yōu)點(diǎn),ami碼是ccitt建議采用的傳輸碼性之一。 ami碼的不足是,當(dāng)原信碼出現(xiàn)連“0”

6、串時(shí),信號(hào)的電平長時(shí)間不跳變,造成提取定時(shí)信號(hào)的困難。解決連“0”碼問題的有效方法之一是采用hdb3碼。 3.2、hdb3碼 hdb3碼的全稱是三階高密度雙極性碼,它是ami碼的一種改進(jìn)型, 其目的是為了保持ami碼的優(yōu)點(diǎn)而克服其缺點(diǎn), 使連“0”個(gè)數(shù)不超過3個(gè)。其編碼規(guī)則如下: (1) 當(dāng)信碼的連“0”個(gè)數(shù)不超過3時(shí),仍按ami碼的規(guī)則編,即傳號(hào)極性交替; (2)當(dāng)連“0”個(gè)數(shù)超過3時(shí),則將第4個(gè)“0”改為非“0”脈沖,記為+v或-v,稱之為破壞脈沖。相鄰v碼的極性必須交替出現(xiàn),以確保編好的碼中無直流; (3)為了便于識(shí)別, v碼的極性應(yīng)與其前一個(gè)非“0”脈沖的極性相同,否則,將四連“0”的

7、第一個(gè)“0”更改為與該破壞脈沖相同極性的脈沖,并記為+b或-b;(4) 破壞脈沖之后的傳號(hào)碼極性也要交替。 例如: 消息代碼:1000010000110000l1ami碼:-10000+10000-1+10000-1+1hdb3碼:-1000-v+1000+v-1+1-b00-v+1-1 其中的v脈沖和b脈沖與1脈沖波形相同,用v或b符號(hào)的目的是為了示意是將原信碼的“0”變換成“1”碼。 雖然hdb3碼的編碼規(guī)則比較復(fù)雜,但譯碼卻比較簡單。 從上述原理看出,每一個(gè)破壞符號(hào)v總是與前一非0符號(hào)同極性(包括b在內(nèi))。這就是說,從收到的符號(hào)序列中可以容易地找到破壞點(diǎn)v,于是也斷定v符號(hào)及其前面的3個(gè)

8、符號(hào)必是連0符號(hào),從而恢復(fù)4個(gè)連0碼,再將所有-1變成+1后便得到原消息代碼。 hdb3碼保持了ami碼的優(yōu)點(diǎn)外,同時(shí)還將連“0”碼限制在3個(gè)以內(nèi),故有利于位定時(shí)信號(hào)的提取。hdb3碼是應(yīng)用最為廣泛的碼型,a律pcm四次群以下的接口碼型均為hdb3碼。3.3 cmi碼cmi碼是傳號(hào)反轉(zhuǎn)碼的簡稱,與雙相碼類似,它也是一種雙極性二電平碼。其編碼規(guī)則是:“1”碼交替用“11”和“00”兩位碼表示;“0”碼固定地用“01”表示。例如:消息碼100110000000110011cmi碼:110101001101010101010101001101011100cmi碼易于實(shí)現(xiàn),含有豐富的定時(shí)信息。此外,由

9、于10喂禁用碼組,不會(huì)出現(xiàn)三個(gè)以上的連碼,這個(gè)規(guī)律可用于宏觀檢錯(cuò)。3.4曼徹斯特碼曼徹斯特碼即雙性碼,它用一個(gè)周期的正負(fù)對(duì)稱方波表示“0”,而用其反相波形表示“1”。編碼規(guī)則之一是:“1”碼用“10”兩位碼表示;“0”碼用“01”表示。例如:消息碼100110000000110011曼徹斯特碼:100101101001010101010101101001011010其波形是一種雙極性nrz波形,只有極性相反的兩個(gè)電平。它在每個(gè)碼元間隔的中心點(diǎn)都存在電平跳變,所以含有豐富的位定時(shí)信息,且沒有直流分量,編碼過程也簡單。缺點(diǎn)是占用帶寬加倍,使頻帶利用率降低。3.5、系統(tǒng)設(shè)計(jì)方法及系統(tǒng)主要功能概述在該

10、編碼系統(tǒng)設(shè)計(jì)中,我們采用了面向?qū)ο蟮募夹g(shù)。基于ami碼、hdb3碼、cmi碼和曼徹斯特碼的編碼原理,本編碼器采用visual c+6.0設(shè)計(jì)。所采用編譯器的是visual c+6.0,它是微軟開發(fā)的基于windows下的面向?qū)ο竦木幊誊浖兄鴱?qiáng)大的mfc支持,在可視化設(shè)計(jì)方面有著強(qiáng)大的優(yōu)勢,并且高度支持c+標(biāo)準(zhǔn),是一個(gè)進(jìn)行c+編程的超強(qiáng)集成環(huán)境。本設(shè)計(jì)為實(shí)現(xiàn)用戶友好交互信息,采用拆分單文檔實(shí)現(xiàn),一部分實(shí)現(xiàn)用戶輸入信息序列及相關(guān)信息的顯示,另一部分實(shí)現(xiàn)編碼結(jié)果圖形顯示。本設(shè)計(jì)中用戶可有ami碼、hdb3碼、cmi碼和曼徹斯特碼四種編碼類型可選擇。并能對(duì)前一個(gè)1碼或前一個(gè)v碼的正負(fù)極性,坐標(biāo)軸

11、與分割線的顯示與否,圖形線條寬度、顏色等相關(guān)參數(shù)進(jìn)行設(shè)置。輸入原始信號(hào),系統(tǒng)經(jīng)過特定算法編碼給出編碼結(jié)果并畫出編碼波形給與用戶形象化的結(jié)果。系統(tǒng)會(huì)實(shí)時(shí)對(duì)用戶所做的操作進(jìn)行結(jié)果反饋,有很好的用戶交互性。3.6、系統(tǒng)的設(shè)計(jì)思路軟件編碼器的基本操作流程是:用戶選擇編碼類型并設(shè)置相關(guān)參數(shù)設(shè)置,然后輸入原始信號(hào)(或通過隨機(jī)碼按鈕產(chǎn)生相應(yīng)長度的隨機(jī)碼信號(hào)),系統(tǒng)經(jīng)過特定算法編碼給出編碼結(jié)果并畫出編碼波形給與用戶形象化的結(jié)果。系統(tǒng)會(huì)實(shí)時(shí)對(duì)用戶所做的操作進(jìn)行結(jié)果反饋,有很好的用戶交互性。根據(jù)上述分析,系統(tǒng)結(jié)構(gòu)如圖3.4.1所示圖3.4.1用戶層提供用戶與仿真系統(tǒng)交互的接口。系統(tǒng)層根據(jù)接口層的輸入,建立仿真模塊

12、的動(dòng)態(tài)模型,并調(diào)用相應(yīng)的算法返回仿真結(jié)果。數(shù)據(jù)層存儲(chǔ)仿真層運(yùn)行算法處理的各種中間數(shù)據(jù)。獲取用戶數(shù)據(jù) 根據(jù)編碼類型進(jìn)行編碼 根據(jù)編碼結(jié)果進(jìn)行繪圖四、系統(tǒng)的軟件設(shè)計(jì)流程及描述4.1編碼算法設(shè)計(jì)4.1.1 ami編碼算法(1)流程圖:開始碼型標(biāo)識(shí)符號(hào)變量codechoos=“ami”獲取輸入信號(hào)及其長度,flag1保存前一個(gè)1碼的極性第i位信號(hào)=1?前一個(gè)1碼為正?將此1碼編為-1,flag1=-1將此1碼編為+1,flag1=+1結(jié)束是否是否(2)具體描述:獲取輸入信號(hào)及其長度,保存前一個(gè)1碼極性 1)在ami碼編碼函數(shù)中將編碼碼型標(biāo)識(shí)符號(hào)變量codechoose賦值為“ami”。定義字符串變量s

13、trami來存儲(chǔ)用getdlgitemtext獲取的輸入信號(hào)和編碼結(jié)果,并定義整形變量signallength存儲(chǔ)用getlength來獲取的輸入信號(hào)長度,定義變量flag1來保存前一個(gè)1碼的極性。2)然后用for語句對(duì)輸入信號(hào)進(jìn)行檢測,用getat(i)來獲取第i位信號(hào),并用if語句進(jìn)行判斷,若輸入信號(hào)為1再判斷前一個(gè)1碼的極性,若前一個(gè)1碼為正,則此輸入信號(hào)1碼應(yīng)編為負(fù)極性碼,用setat將其替換為e(代表-1),并將flag1賦值為“-1”保存當(dāng)前1碼的極性。若前一個(gè)1碼為負(fù),則此輸入信號(hào)1碼應(yīng)編為正極性碼,用setat將其替換為e(代表+1),并將flag1賦值為“+1”保存當(dāng)前1碼的

14、極性。3)設(shè)置好每位輸入信號(hào)后退出for語句,定義變量stramitemp來保存編碼的中間結(jié)果,以供繪圖使用。用replace將“e”取代“-1”, 將“e”取代“+1”,用 setdlgitemtext將編碼結(jié)果顯示在編碼結(jié)果編輯框中。使主框架類指針變量pcdrmframe指向當(dāng)前視圖類的父框架類指針。主框架類的公有成員變量code存放編碼結(jié)果的中間結(jié)果stramitemp,并用invalidate();語句強(qiáng)迫調(diào)用畫圖函數(shù)ondraw();這就完成了ami碼的編碼。(3)實(shí)現(xiàn)代碼如下:/ ami碼編碼void cbianmaview:onradioami() codechoose = am

15、i;/ todo: add your control notification handler code herethis-getdlgitem(idc_static_setpolar)-showwindow( sw_show );this-getdlgitem(idc_static_setpolar)-setwindowtext(ami碼設(shè)置);this-getdlgitem(idc_static_polarv)-showwindow(sw_hide);/隱藏前一個(gè)v碼極性的選項(xiàng)this-getdlgitem(idc_radio_posv)-showwindow(sw_hide);this-

16、getdlgitem(idc_radio_negv)-showwindow(sw_hide);cstring strami;this-getdlgitemtext(idc_edit_input,strami);/取輸入信號(hào)cstring flag1=polar1;/保存1碼的極性int signallength=strami.getlength();/獲得輸入信號(hào)的長度for(int i=0;isetdlgitemtext(idc_edit_ouput,strami);/在編碼結(jié)果編輯框中顯示編碼結(jié)果pcdrmframe= (cmainframe*)this-getparentframe();

17、pcdrmframe-codechoose = ami;pcdrmframe-code=stramitemp;pcdrmframe-invalidate();4.1.2 hdb3 編碼算法(1)流程圖: 獲取輸入信號(hào)及其長度,flag1保存前1碼極性,flagv保存前v碼極性,連0個(gè)數(shù)計(jì)數(shù)變量zerocount=0將此第四個(gè)0碼編為+v, flagv=+v將第一個(gè)0碼編為+b,flag1=+1flag1=-1?否開始碼型標(biāo)識(shí)符號(hào)變量codechoos=“hdb3”第i位信號(hào)=1?是否zerocount=0;結(jié)束將此1碼編為-1,flag1=-1前一個(gè)1碼為正?將此1碼編為+1,flag1=+1

18、否是zerocount+;zerocount=4?zerocount=0;flagv=+v?flag1=+1?將此第四個(gè)0碼編為-v,flagv=-v將第一個(gè)0碼編為-b,flag1=-1是是是是否否否(2)具體描述:獲取輸入信號(hào)及其長度,保存前一個(gè)1碼極性 1)在hdb3碼編碼函數(shù)中將編碼碼型標(biāo)識(shí)符號(hào)變量codechoose賦值為“hdb3”。定義字符串變量sthdb3來存儲(chǔ)用getdlgitemtext獲取的輸入信號(hào)和編碼結(jié)果,并定義整形變量signallength存儲(chǔ)用getlength來獲取的輸入信號(hào)長度,定義變量flag1來保存前一個(gè)1碼的極性, flagv來保存前一個(gè)v碼的極性,z

19、erocount來計(jì)算連0個(gè)數(shù)。2)然后用for語句對(duì)輸入信號(hào)進(jìn)行檢測,用getat(i)來獲取第i位信號(hào),并用if語句進(jìn)行判。3)若輸入信號(hào)為1,zerocount清0,再判斷前一個(gè)1碼的極性,若前一個(gè)1碼為正,則此輸入信號(hào)1碼應(yīng)編為負(fù)極性碼,用setat將其替換為e(代表-1),并將flag1賦值為“-1”保存當(dāng)前1碼的極性。若前一個(gè)1碼為負(fù),則此輸入信號(hào)1碼應(yīng)編為正極性碼,用setat將其替換為e(代表+1),并將flag1賦值為“+1”保存當(dāng)前1碼的極性。4)若輸入信號(hào)為0,zerocount+1,判斷zerocount是否等于4,若等于4,判斷前一個(gè)v碼極性.。若為+v將第四個(gè)0替換

20、為x(代表-v),并將flagv賦值為-v,再判斷此時(shí)的前一個(gè)1碼極性,若為正極性,則將第一個(gè)0碼替換為y(代表-b),并將flag1賦值為-1。若為-v將第四個(gè)0替換為x(代表+v),并將flagv賦值為+v,再判斷此時(shí)的前一個(gè)1碼極性,若為正負(fù)極性,則將第一個(gè)0碼替換為y(代表+b),并將flag1賦值為+1。5)設(shè)置好每位輸入信號(hào)后退出for語句,定義變量strhdb3temp來保存編碼的中間結(jié)果,以供繪圖使用。用replace將“e”取代“-1”, 將“e”取代“+1”, “x”取代“-v”, “x”取代“+v”, “y”取代“-b”, “y”取代“+b”,用 setdlgitemte

21、xt將編碼結(jié)果顯示在編碼結(jié)果編輯框中。使主框架類指針變量pcdrmframe指向當(dāng)前視圖類的父框架類指針。主框架類的公有成員變量code存放編碼結(jié)果的中間結(jié)果strhdb3temp,并用invalidate();語句強(qiáng)迫調(diào)用畫圖函數(shù)ondraw();這就完成了hdb3碼的編碼。實(shí)現(xiàn)代碼如下:/ hdb3碼編碼void cbianmaview:onradiohdb3() / todo: add your control notification handler code herecodechoose=hdb3;if(getcheckedradiobutton(idc_radio_posv,idc

22、_radio_negv)=0) polarv=+v;checkradiobutton(idc_radio_posv,idc_radio_negv,idc_radio_posv);this-getdlgitem(idc_static_setpolar)-showwindow( sw_show ); this-getdlgitem(idc_static_setpolar)-setwindowtext(hdb碼設(shè)置);this-getdlgitem(idc_static_polarv)-showwindow(sw_show);this-getdlgitem(idc_radio_posv)-showw

23、indow(sw_show);this-getdlgitem(idc_radio_negv)-showwindow(sw_show);cstring strhdb3;this-getdlgitemtext(idc_edit_input,strhdb3);/取輸入信號(hào) cstring flag1=polar1;/保存1碼的極性cstring flagv=polarv;/保存v碼的極性int zerocount=0;/計(jì)算連零個(gè)數(shù)int signallength=strhdb3.getlength();/獲得輸入信號(hào)的長度for(int i=0;isetdlgitemtext(idc_edit_o

24、uput,strhdb3);/在編碼結(jié)果編輯框中顯示編碼結(jié)果pcdrmframe= (cmainframe*)this-getparentframe();pcdrmframe-codechoose=hdb3; pcdrmframe-code=strhdb3temp; pcdrmframe-invalidate();4.1.3 cmi編碼算法(1)流程圖: 開始碼型標(biāo)識(shí)符號(hào)變量codechoos=“cmi”獲取輸入信號(hào)及其長度,flag1保存前一個(gè)1碼的極性第i位信號(hào)=1?前一個(gè)1碼為正?將此1碼編為11,flag1=-1將此1碼編為00,flag1=+1結(jié)束是否是否將此0碼編為01(2)具體描

25、述:獲取輸入信號(hào)及其長度,保存前一個(gè)1碼極性 1)在cmi碼編碼函數(shù)中將編碼碼型標(biāo)識(shí)符號(hào)變量codechoose賦值為“cmi”。定義字符串變量strcmi來存儲(chǔ)用getdlgitemtext獲取的輸入信號(hào)和編碼結(jié)果,并定義整形變量signallength存儲(chǔ)用getlength來獲取的輸入信號(hào)長度,定義變量flag1來保存前一個(gè)1碼的極性。2)然后用for語句對(duì)輸入信號(hào)進(jìn)行檢測,用getat(i)來獲取第i位信號(hào),并用if語句進(jìn)行判斷,若輸入信號(hào)為1再判斷前一個(gè)1碼的極性,若前一個(gè)1碼為正,則此輸入信號(hào)1碼應(yīng)編為11,用setat將其替換為c(代表11),并將flag1賦值為“-1”保存當(dāng)前

26、1碼的極性。若前一個(gè)1碼為負(fù),則此輸入信號(hào)1碼應(yīng)編為00,用setat將其替換為c(代表00),并將flag1賦值為“+1”保存當(dāng)前1碼的極性。若輸入信號(hào)為0則將此碼編為01,用setat將其替換為o(代表01).3)設(shè)置好每位輸入信號(hào)后退出for語句,定義變量strcmitemp來保存編碼的中間結(jié)果,以供繪圖使用。用replace將“c”取代“11”, 將“c”取代“00”, 將“o”取代“01”,用 setdlgitemtext將編碼結(jié)果顯示在編碼結(jié)果編輯框中。使主框架類指針變量pcdrmframe指向當(dāng)前視圖類的父框架類指針。主框架類的公有成員變量code存放編碼結(jié)果的中間結(jié)果strcm

27、itemp,并用invalidate();語句強(qiáng)迫調(diào)用畫圖函數(shù)ondraw();這就完成了cmi碼的編碼。實(shí)現(xiàn)代碼如下:/ cmi碼編碼void cbianmaview:onradiocmi() codechoose=cmi;/ todo: add your control notification handler code herethis-getdlgitem(idc_static_setpolar)-showwindow( sw_show );this-getdlgitem(idc_static_setpolar)-setwindowtext(cmi碼設(shè)置); this-getdlgit

28、em(idc_static_polarv)-showwindow( sw_hide );this-getdlgitem(idc_radio_posv)-showwindow( sw_hide );this-getdlgitem(idc_radio_negv)-showwindow( sw_hide );cstring strcmi;this-getdlgitemtext(idc_edit_input,strcmi);/取輸入信號(hào) cstring flag1=polar1;/保存1碼的極性int signallength=strcmi.getlength();/獲得輸入信號(hào)的長度for(int

29、i=0;isetdlgitemtext(idc_edit_ouput,strcmi);/在編碼結(jié)果編輯框中顯示編碼結(jié)果pcdrmframe= (cmainframe*)this-getparentframe();pcdrmframe-codechoose=cmi;pcdrmframe-code=strcmitemp;pcdrmframe-invalidate();4.1.4 manchester編碼算法(1)流程圖: 開始碼型標(biāo)識(shí)符號(hào)變量codechoos=“manchester”獲取輸入信號(hào)及其長度第i位信號(hào)=1?將此1碼編為10結(jié)束是否將此0碼編為01(2)具體描述:獲取輸入信號(hào)及其長度,

30、保存前一個(gè)1碼極性 1)在manchester碼編碼函數(shù)中將編碼碼型標(biāo)識(shí)符號(hào)變量codechoose賦值為“manchester”。定義字符串變量strmanchester來存儲(chǔ)用getdlgitemtext獲取的輸入信號(hào)和編碼結(jié)果,并定義整形變量signallength存儲(chǔ)用getlength來獲取的輸入信號(hào)長度。2)然后用for語句對(duì)輸入信號(hào)進(jìn)行檢測,用getat(i)來獲取第i位信號(hào),并用if語句進(jìn)行判斷,若輸入信號(hào)為1則此輸入信號(hào)編為10,用setat將其替換為m(代表10),若輸入信號(hào)為0則將此碼編為01,用setat將其替換為m(代表01).3)設(shè)置好每位輸入信號(hào)后退出for語句,

31、定義變量strmanchestertemp來保存編碼的中間結(jié)果,以供繪圖使用。用replace將“m”取代“10”, 將“m”取代“01”,用 setdlgitemtext將編碼結(jié)果顯示在編碼結(jié)果編輯框中。使主框架類指針變量pcdrmframe指向當(dāng)前視圖類的父框架類指針。主框架類的公有成員變量code存放編碼結(jié)果的中間結(jié)果strmanchestertemp,并用invalidate();語句強(qiáng)迫調(diào)用畫圖函數(shù)ondraw();這就完成了manchester碼的編碼。實(shí)現(xiàn)代碼如下:/ manchester碼編碼void cbianmaview:onradiomanchester() codech

32、oose=manchester;cstring strmanchester;this-getdlgitemtext(idc_edit_input,strmanchester);/取輸入信號(hào)int signallength=strmanchester.getlength();/獲得輸入信號(hào)的長度 for(int i=0;isetdlgitemtext(idc_edit_ouput,strmanchester);/在編碼結(jié)果編輯框中顯示編碼結(jié)果pcdrmframe= (cmainframe*)this-getparentframe();pcdrmframe-codechoose=mancheste

33、r; pcdrmframe-code=strmanchestertemp;pcdrmframe-invalidate();4.1.5 隨機(jī)信號(hào)生成算法為了方便信號(hào)生成,本系統(tǒng)還設(shè)計(jì)了可隨用戶自定義長度的隨機(jī)原始信號(hào)生成算法。實(shí)現(xiàn)代碼如下:void cbianmaview:onbutton1() / todo: add your control notification handler code hereupdatedata(1);cstring str,strtemp;str=;int j;srand( (unsigned)time( null ) ); /設(shè)置一個(gè)隨機(jī)起點(diǎn)for(int i=

34、0;isetwindowtext(str); onchangeeditinput();4.2、 畫圖設(shè)計(jì)為了使用戶能對(duì)編碼結(jié)果能有更形象化的了解,該系統(tǒng)還設(shè)計(jì)了編碼結(jié)果圖形顯示。各種碼型編碼后畫波形由以下程序?qū)崿F(xiàn)。實(shí)現(xiàn)代碼如下:void cdrawview:ondraw(cdc* pdc) cdocument* pdoc = getdocument();crect rect; cwnd* pwnd = pdc-getwindow(); pwnd-getwindowrect(rect); cmainframe*pcdrmframe = (cmainframe*)this-getparentfra

35、me();if(pcdrmframe-code.getlength() = 0)return;if(pcdrmframe-showcoodinate) drawcoordinate(pdc,pcdrmframe-m_linewith);/畫坐標(biāo)軸if(pcdrmframe-showdottedline)drawdottedline(pdc,pcdrmframe-code.getlength();/畫虛線if(pcdrmframe-codechoose=ami)drawami(pdc, pcdrmframe-code, pcdrmframe-color1, pcdrmframe-color2,

36、pcdrmframe-m_linewith); /畫ami編碼drawthecode(pdc,pcdrmframe-firstcode); /畫輸入信號(hào)原碼if(pcdrmframe-codechoose=hdb3)drawhdb3(pdc, pcdrmframe-code, pcdrmframe-color1, pcdrmframe-color2, pcdrmframe-m_linewith); /畫hdb3編碼drawthecode(pdc,pcdrmframe-firstcode); /畫輸入信號(hào)原碼if(pcdrmframe-codechoose=cmi)drawcmi(pdc, pcdrm

溫馨提示

  • 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)論