c語(yǔ)言-時(shí)鐘信號(hào)_第1頁(yè)
c語(yǔ)言-時(shí)鐘信號(hào)_第2頁(yè)
c語(yǔ)言-時(shí)鐘信號(hào)_第3頁(yè)
c語(yǔ)言-時(shí)鐘信號(hào)_第4頁(yè)
c語(yǔ)言-時(shí)鐘信號(hào)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、中北大學(xué)課程設(shè)計(jì)說(shuō)明書學(xué)生姓名: 崔寶月 學(xué) 號(hào): 1305054215 學(xué)生姓名: 南 帥 學(xué) 號(hào): 1305054230 學(xué) 院: 信息與通信工程學(xué)院 專 業(yè): 信息對(duì)抗技術(shù)專業(yè) 題 目: 軟件信息處理課程設(shè)計(jì) 利用C語(yǔ)言,生成一個(gè)時(shí)鐘信號(hào) 指導(dǎo)教師: 姚金杰 劉賓 楊光 2016年 6月 26 日中北大學(xué)課程設(shè)計(jì)任務(wù)書 2015/2016 學(xué)年第 二 學(xué)期 學(xué) 院: 信息與通信工程學(xué)院 專 業(yè): 信息對(duì)抗技術(shù) 學(xué)生姓名: 崔寶月 學(xué) 號(hào): 1305054215 學(xué)生姓名: 劉學(xué)文 學(xué) 號(hào): 1305054219 學(xué)生姓名: 南 帥 學(xué) 號(hào): 1305054230 學(xué)生姓名: 田 剛 學(xué)

2、號(hào): 1305054244 課程設(shè)計(jì)題目: 軟件信息處理課程設(shè)計(jì) 射頻信號(hào)相位分析與測(cè)量軟件模塊設(shè)計(jì) 起 迄 日 期: 2016年6月12 日2015年6月27日 課程設(shè)計(jì)地點(diǎn): 信息對(duì)抗技術(shù)專業(yè)綜合實(shí)驗(yàn)室 指 導(dǎo) 教 師: 姚金杰 劉賓 楊光 學(xué) 科部主 任: 張丕狀 課 程 設(shè) 計(jì) 任 務(wù) 書1設(shè)計(jì)目的:(1)通過(guò)本課程設(shè)計(jì)的學(xué)習(xí),學(xué)生將復(fù)習(xí)所學(xué)的專業(yè)知識(shí),使課堂學(xué)習(xí)的理論知識(shí)應(yīng)用于實(shí)踐,通過(guò)本課程設(shè)計(jì)的實(shí)踐使學(xué)生具有一定的實(shí)踐操作能力;(2)掌握C語(yǔ)言的編程方法,能熟練運(yùn)用;(3)通過(guò)軟件信息處理實(shí)踐的課程設(shè)計(jì),掌握設(shè)計(jì)信息處理系統(tǒng)的思維方法和基本開(kāi)發(fā)過(guò)程。2設(shè)計(jì)內(nèi)容和要求(包括原始數(shù)據(jù)

3、、技術(shù)參數(shù)、條件、設(shè)計(jì)要求等):(1)熟悉C語(yǔ)言開(kāi)發(fā)平臺(tái)a、熟悉C的運(yùn)行環(huán)境;b、學(xué)會(huì)并掌握C語(yǔ)言編程;c、根據(jù)所選題目的需要,會(huì)合理安排程序流程,最終優(yōu)化程序設(shè)計(jì)。(2)實(shí)踐設(shè)計(jì)要求:a、根據(jù)所選題目,設(shè)計(jì)相應(yīng)的流程框圖。b、編寫C語(yǔ)言程序,給出相應(yīng)的波形。(3)參考題目題目1 射頻信號(hào)相位分析與測(cè)量軟件模塊設(shè)計(jì)基本要求與目的:l 了解相位分析在方向和距離測(cè)量中作用l 學(xué)習(xí)相位測(cè)量的基本原理l 學(xué)習(xí)嵌入式系統(tǒng)的輪詢軟件結(jié)構(gòu)設(shè)計(jì)l 學(xué)習(xí)MATLAB在仿真分析中的作用l 學(xué)習(xí)C語(yǔ)言編程技巧和流程繪制培養(yǎng)能力;掌握斷點(diǎn)設(shè)置、單步、變量觀測(cè)等軟件調(diào)試的一般方法和技巧。初步學(xué)習(xí)PLL的原理和時(shí)鐘調(diào)節(jié)的

4、方法,了解可編程的概念,了解軟件無(wú)線電的內(nèi)涵l 培養(yǎng)資料查閱能力和團(tuán)隊(duì)合作精神和組織能力課 程 設(shè) 計(jì) 任 務(wù) 書3設(shè)計(jì)工作任務(wù)及工作量的要求包括課程設(shè)計(jì)計(jì)算說(shuō)明書(論文)、圖紙、實(shí)物樣品等:(1) 要求設(shè)計(jì)組的每個(gè)成員都要了解設(shè)計(jì)的要求和整體思路;(2) 子題目小組的同學(xué)各完成一份設(shè)計(jì)說(shuō)明書,突出各自的工作內(nèi)容;(3) 要求有正確的運(yùn)行結(jié)果及結(jié)果分析。4主要參考文獻(xiàn):l 譚浩強(qiáng).C程序設(shè)計(jì)(第二版).清華大學(xué)出版社.1999年12月l 袁志祥.數(shù)據(jù)結(jié)構(gòu)(c語(yǔ)言版)例題詳解與課程設(shè)計(jì)指導(dǎo)第二版. 中國(guó)科學(xué)技術(shù)大學(xué)出版社出版l 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)題解與上機(jī)指導(dǎo).清華大學(xué)出版社.2000年11

5、月l 陳朔鷹, 陳英主.C語(yǔ)言程序設(shè)計(jì)習(xí)題集(第二版).人民郵電出版社.2003年2月l 田淑清.C語(yǔ)言程序設(shè)計(jì)輔導(dǎo)與習(xí)題集.中國(guó)鐵道出版社.2000年1月l 王明泉.信號(hào)與系統(tǒng).科學(xué)出版社.2010年6月5設(shè)計(jì)成果形式及要求:每個(gè)子題目小組提供詳細(xì)的設(shè)計(jì)說(shuō)明書一份設(shè)計(jì)說(shuō)明書中包含:1、關(guān)鍵詞解釋,設(shè)計(jì)方案基本原理;2、軟件框圖;3、斷點(diǎn)設(shè)置位置、單步運(yùn)行的變量值;4、附錄軟件源代碼6工作計(jì)劃及進(jìn)度:2016年6月12日 2016年6月18日:學(xué)習(xí)C預(yù)研有關(guān)編程方法;2016年6月19日 2016年6月23日:在指導(dǎo)教師指導(dǎo)下實(shí)現(xiàn)程序設(shè)計(jì);2016年6月24日 2016年6月26日:撰寫課程設(shè)

6、計(jì)說(shuō)明書; 2016年6月27日:答辯。學(xué)科部主任審查意見(jiàn): 簽字: 年 月 日目 錄一 設(shè)計(jì)目的簡(jiǎn)介與題目解讀11.1目的簡(jiǎn)介11.2題目解讀:1二 設(shè)計(jì)主要理論介紹及方案12.1理論介紹12.1.1基本原理12.1.2關(guān)鍵字的理解:22.2方案:32.2.1方案選擇:32.2.2設(shè)計(jì)原理:3三、設(shè)計(jì)主要步驟63.1.創(chuàng)建客戶端應(yīng)用程序,采用對(duì)話框架構(gòu)63.2.為對(duì)話框界面添加控件對(duì)象83.3為對(duì)話框中的控件對(duì)象定義相應(yīng)的成員變量103. 4添加響應(yīng)消息的事件處理成員函數(shù)113.5手工添加其他代碼123.6添加事件處理函數(shù):163.7.根據(jù)實(shí)際結(jié)果調(diào)整控件的位置以防遮擋或被遮擋16四、 設(shè)計(jì)

7、結(jié)果與分析174.1輸出界面:174.2選擇諧波次數(shù)為0 , 相位抖動(dòng)參數(shù)為 0174.3選擇諧波次數(shù)為7 , 相位抖動(dòng)參數(shù)為 1184.4相位抖動(dòng)參數(shù)為3 諧波次數(shù)為33 時(shí):194.5相位抖動(dòng)參數(shù)為5 諧波次數(shù)為55 時(shí):19五設(shè)計(jì)評(píng)述及收獲體會(huì)201、設(shè)計(jì)評(píng)述202、設(shè)計(jì)過(guò)程203、收獲體會(huì):20六 參考文獻(xiàn)211 設(shè)計(jì)目的簡(jiǎn)介與題目解讀1.1目的簡(jiǎn)介(1)通過(guò)本課程設(shè)計(jì)的學(xué)習(xí),學(xué)生將復(fù)習(xí)所學(xué)的專業(yè)知識(shí),使課堂學(xué)習(xí)的理論知識(shí)應(yīng)用于實(shí)踐,通過(guò)本課程設(shè)計(jì)的實(shí)踐使學(xué)生具有一定的實(shí)踐操作能力;(2)掌握C語(yǔ)言的編程方法,能熟練運(yùn)用;(3)通過(guò)軟件信息處理實(shí)踐的課程設(shè)計(jì),掌握設(shè)計(jì)信息處理系統(tǒng)的思維

8、方法和基本開(kāi)發(fā)過(guò)程。(4)學(xué)習(xí)Windows程序設(shè)計(jì)的語(yǔ)言、過(guò)程、思想與方法。全面地學(xué)習(xí)Windows程序設(shè)計(jì)所涉及的細(xì)枝末節(jié),要求我們從高屋建瓴的角度,建立完整的知識(shí)體系,為以后的職業(yè)生涯奠定良好的基礎(chǔ)。即要學(xué)習(xí)基礎(chǔ)知識(shí),著重學(xué)習(xí)Windows程序設(shè)計(jì)中關(guān)于圖形的編寫與實(shí)現(xiàn)。1.2題目解讀: 利用C語(yǔ)言,生成一個(gè)時(shí)鐘信號(hào),要求:1、頻率為30MHz. 2、時(shí)鐘相位抖動(dòng)參數(shù)、諧波頻率參數(shù)可設(shè)置,3 繪制波形 4生成文件 (4人合作完成)2 設(shè)計(jì)主要理論介紹及方案2.1理論介紹2.1.1基本原理 1、相位測(cè)量的基本原理:通過(guò)測(cè)量無(wú)線電信號(hào)到達(dá)不同檢測(cè)地點(diǎn)的天線單元時(shí)間差,來(lái)對(duì)發(fā)射無(wú)線電信號(hào)的發(fā)射

9、源進(jìn)行定位。TDOA定位流程:1.從監(jiān)測(cè)站將同一時(shí)間測(cè)量同一信號(hào)得到的數(shù)據(jù)發(fā)送到主監(jiān)測(cè)站;2.主監(jiān)測(cè)站分別計(jì)算出無(wú)線電信號(hào)到達(dá)兩個(gè)監(jiān)測(cè)站天線的時(shí)間差(利用相關(guān)算法);3.根據(jù)兩站之間時(shí)間差轉(zhuǎn)換為距離差,可以得到一條雙曲線;4.通過(guò)三個(gè)或多個(gè)無(wú)線電監(jiān)測(cè)站測(cè)得的時(shí)間差可以得到兩條或多條雙曲線相交來(lái)實(shí)現(xiàn)發(fā)射源的定位。 2、PLL(Phase Locked Loop):為鎖相回路或鎖相環(huán),用來(lái)統(tǒng)一整合時(shí)脈訊號(hào),使內(nèi)存能正確的存取資料。PLL用于振蕩器中的反饋技術(shù)。鎖相環(huán)是一種反饋電路,其作用是使得電路上的時(shí)鐘和某一外部時(shí)鐘的相位同步。PLL通過(guò)比較外部信號(hào)的相位和由壓控晶振(VCXO)的相位來(lái)實(shí)現(xiàn)同步

10、的,在比較的過(guò)程中,鎖相環(huán)電路會(huì)不斷根據(jù)外部信號(hào)的相位來(lái)調(diào)整本地晶振的時(shí)鐘相位,直到兩個(gè)信號(hào)的相位同步。2.1.2關(guān)鍵字的理解:1.時(shí)鐘信號(hào):時(shí)鐘信號(hào)是提供給同步內(nèi)存做訊號(hào)同步之用,同步記憶體的存取動(dòng)作必需與時(shí)鐘信號(hào)同步。時(shí)鐘信號(hào)是一個(gè)特定類型的振蕩之間的高和低的狀態(tài),并利用像一個(gè)節(jié)拍器協(xié)調(diào)電路的動(dòng)作的信號(hào)。(有固定周期并與運(yùn)行無(wú)關(guān)的信號(hào)量)2.信號(hào)抽樣:采樣也稱抽樣,是信號(hào)在時(shí)間上的離散化,即按照一定時(shí)間間隔t在模擬信號(hào)x(t)上逐點(diǎn)采取其瞬時(shí)值。它是通過(guò)采樣脈沖和模擬信號(hào)相乘來(lái)實(shí)現(xiàn)的。3.抽樣頻率:定義了每單位時(shí)間內(nèi)的樣品數(shù)(通常為秒 ),從連續(xù)信號(hào)作出離散信號(hào)。4.諧波:諧波是指電流中所

11、含有的頻率為基波的整數(shù)倍的電量,一般是指對(duì)周期性的非正弦電量進(jìn)行傅里葉級(jí)數(shù)分解,其余大于基波頻率的電流產(chǎn)生的電量。5.時(shí)鐘抖動(dòng):時(shí)鐘抖動(dòng)是指兩個(gè)時(shí)鐘周期之間存在的差值,這個(gè)誤差是在時(shí)鐘發(fā)生器內(nèi)部產(chǎn)生的,和晶振或者PLL內(nèi)部電路有關(guān),布線對(duì)其沒(méi)有影響。除此之外,還有一種由于周期內(nèi)信號(hào)的占空比發(fā)生變化而引起的抖動(dòng),稱之為半周期抖動(dòng)??偟膩?lái)說(shuō),抖動(dòng)可以認(rèn)為在時(shí)鐘信號(hào)本身在傳輸過(guò)程中的一些偶然和不定的變化之總和。6.相位:是描述信號(hào)波形變化的度量,通常以度(角度)作為單位,也稱作相角。當(dāng)訊號(hào)波形以周期的方式變化,波形循環(huán)一周即為360º。7.相位噪聲:相位噪聲是衡量頻率標(biāo)準(zhǔn)源(高穩(wěn)晶振、原子

12、頻標(biāo)等)頻穩(wěn)質(zhì)量的重要指標(biāo)。相位噪聲一般是指在系統(tǒng)內(nèi)各種噪聲作用下引起的輸出信號(hào)相位的隨機(jī)起伏。通常相位噪聲又分為頻率短期穩(wěn)定度和頻率長(zhǎng)期穩(wěn)定度。所謂頻率短期穩(wěn)定度, 是指由隨機(jī)噪聲引起的相位起伏或頻率起伏。至于因?yàn)闇囟?、老化等引起的頻率慢漂移,則稱之為頻率長(zhǎng)期穩(wěn)定度。8.頻率分量:周期性交流量的傅里葉級(jí)數(shù)中次數(shù)高于1的分量,其頻率為基波頻率的整數(shù)倍。9.文件讀寫操作:文件的讀操作以頁(yè)為單位進(jìn)行。內(nèi)核每次會(huì)傳送幾頁(yè)(文件的預(yù)讀)。用戶發(fā)出read()系統(tǒng)調(diào)用后,內(nèi)核先查看要操作的文件是否在緩存中,如果在緩存之中就給進(jìn)程的用戶空間拷貝一份,若所要讀的文件的頁(yè)不在緩沖區(qū),則會(huì)在換中區(qū)中分配一個(gè)頁(yè)框

13、,然后把相應(yīng)的頁(yè)框加入到頁(yè)高速緩存之中,然后從磁盤讀取相應(yīng)的頁(yè)到緩沖區(qū)并給進(jìn)程的用戶空間拷貝一份。10.文件頭:文件頭是位于文件開(kāi)頭的一段承擔(dān)一定任務(wù)的數(shù)據(jù),一般都在開(kāi)頭的部分。頭文件作為一種包含功能函數(shù)、數(shù)據(jù)接口聲明的載體文件,用于保存程序的聲明,而定義文件用于保存程序的實(shí)現(xiàn)。2.2方案: 2.2.1方案選擇: 方案一 :利用VC+中MFC部分直接寫出方波各個(gè)點(diǎn)的坐標(biāo),利用畫筆連接,直接做出所需方波,即生成時(shí)鐘信號(hào)。接著通過(guò)對(duì)方波的各個(gè)點(diǎn)的坐標(biāo)進(jìn)行左移或右移實(shí)現(xiàn)相位的抖動(dòng)。 方案二:同樣利用VC+中MFC部分,但是并不僅僅畫出各個(gè)點(diǎn)再連線,而是通過(guò)方波的傅里葉級(jí)數(shù)的展開(kāi)式的基波分量及諧波分量

14、合成而生成所需時(shí)鐘信號(hào),再對(duì)其相位及諧波頻率加入rand函數(shù)使其可調(diào)從而達(dá)到目的。多次討論之后,我們決定利用第二套方案。由于一方案中的諧波頻率不可調(diào),而且方法過(guò)于簡(jiǎn)單,實(shí)現(xiàn)起來(lái)較易但要求達(dá)不到,故棄之。2.2.2設(shè)計(jì)原理:1、信號(hào)頻譜信號(hào)頻譜可分為幅度頻譜和相位頻譜。幅度頻譜是將諧波振幅用線段高度表示并按各次諧波頻率的高低順序排列而得的圖形;相位頻譜與幅度頻譜類似,是各次諧波的初相與各次諧波頻率的關(guān)系圖形。由于各次諧波角頻率是基波角頻率的整數(shù)倍,因此,這種頻率是離散的“線性譜”。2、傅里葉級(jí)數(shù)(1)概念:任何周期函數(shù)都可以用正弦函數(shù)和余弦函數(shù)構(gòu)成的無(wú)窮級(jí)數(shù)來(lái)表示(選擇正弦函數(shù)與余弦函數(shù)作為基函

15、數(shù)是因?yàn)樗鼈兪钦坏模@種三角級(jí)數(shù)后世稱為傅立葉級(jí)數(shù)。傅里葉級(jí)數(shù)在數(shù)論、組合數(shù)學(xué)、信號(hào)處理、概率論、統(tǒng)計(jì)學(xué)、密碼學(xué)、聲學(xué)、光學(xué)等領(lǐng)域都有著廣泛的應(yīng)用。(2)傅里葉級(jí)數(shù)公式:傅里葉級(jí)數(shù)的展開(kāi)式:x(t)=+ x(t)=+式中,T為信號(hào)的周期;稱為x(t)的直流分量;=稱為x(t)的基波;稱為x(t)的k次諧波分量。各系數(shù)的求解如下: (3)設(shè)計(jì)步驟: 寫出所需方波的函數(shù)表達(dá)式,需要用題目給定條件30MHZ計(jì)算出其周期為s。則方波表達(dá)式為分段函數(shù),在為30,在為-30. 利用上式傅里葉級(jí)數(shù)公式,可以設(shè)方波函數(shù)為奇函數(shù),則公式可寫為 n=1,2,3 將f(x)帶入30,l帶入3。 通過(guò)運(yùn)算可以求出

16、 ,由已知=0 。將,帶入公式x(t)=+ 則可以計(jì)算出方波的傅里葉級(jí)數(shù)展開(kāi)式。(4)設(shè)計(jì)的平臺(tái)環(huán)境:在c+開(kāi)發(fā)平臺(tái)VC+ 中進(jìn)行代碼編寫,主要利用MFCMFC是Win32API的包裝類,需要理解文檔視圖類的結(jié)構(gòu),窗口類的結(jié)構(gòu),消息流向等等。 程序流程圖:文件>>新建工程創(chuàng)建基本對(duì)話框保存文件根據(jù)規(guī)則繪制波形加入隨機(jī)抖動(dòng)定義畫刷及諧波頻率變量初始化對(duì)話框添加控件 打開(kāi)控件響應(yīng)函數(shù)添加事件成員處理函數(shù)退出程序 圖2-1 方案程序框圖三、設(shè)計(jì)主要步驟3.1.創(chuàng)建客戶端應(yīng)用程序,采用對(duì)話框架構(gòu)3.1.1運(yùn)行VC+6.0軟件,并新建一個(gè)MFC工程,選擇”MFC AppWizard (exe

17、)” 選擇項(xiàng)目類型為MFC,工程名稱為CLOCK,工程路徑為:cusers.圖3-1 新建mfc工程3.1.2選擇基本對(duì)話框,點(diǎn)擊完成圖3-2 選擇基本對(duì)話框3.1.3出現(xiàn)新建工程對(duì)話框 新建工程信息如下: Win32:表明所創(chuàng)建的對(duì)話框是基于win32的應(yīng)用程序 Cclockcpp: 應(yīng)用程序類,對(duì)應(yīng)的程序是clock.h和clock.cpp cclockDlg:對(duì)話框類,對(duì)應(yīng)的程序是cclockDlg.h和cclockDlg.cpp MFC2.dll:使用公用的DLL表示MFC2.dll圖3-3 工程信息報(bào)表3.1.4默認(rèn)工程對(duì)話框和控件如下圖3-4 工作界面3.1.5建立 clock類的

18、主對(duì)話框 在MFC界面左方的工作區(qū)(workspace)中選擇resourceVIEW卡,從中選擇dialog,雙擊IDD-CLOCK-DIALOG.右邊會(huì)出現(xiàn)對(duì)話框,出現(xiàn)控制面板。圖3-5 主對(duì)話框3.2.為對(duì)話框界面添加控件對(duì)象 3.2.1刪除多余的控件,并修改剩余按鈕控件的ID和標(biāo)題如下:圖3-6 制作繪圖按鈕3.2.2添加兩個(gè)”靜態(tài)文本”控件,以便于對(duì)”編輯框”控件做標(biāo)注和解釋,并修改其標(biāo)題圖3-7 制作 靜態(tài)文本 控件3.2.3添加兩個(gè)”編輯框”控件,并將所有控件擺放成如下圖所示布局:圖3-8 界面中控件效果圖3.3為對(duì)話框中的控件對(duì)象定義相應(yīng)的成員變量圖3-9 向?qū)ь悓?duì)話框3.3.

19、1在對(duì)話框上單擊右鍵,選擇”建立類向?qū)А?,如下圖所示圖3-10 修改控件屬性3.2選擇Member Variables(成員變量卡),并選擇IDC_EDIT1和IDC_EDIT2,單擊右邊”Add Variable”為”編輯框”控件定義相應(yīng)的成員變量,具體定義如下所示:圖3-11 增加控件成員對(duì)話框3. 4添加響應(yīng)消息的事件處理成員函數(shù) 點(diǎn)擊菜單view/classwizar 進(jìn)入類向?qū)?duì)話框,選擇Message maps(消息映射)卡,確定class name 是CMYSOCKET ,從Messages(消息)欄中選擇事件消息,然后選擇事件信息。圖3-12 添加成員函數(shù)3.4.1在對(duì)話框上單

20、擊右鍵,選擇”建立類向?qū)А?,選擇Message Maps(消息映射卡),確認(rèn)Class name是”CClockDlg”,從Object IDs欄中選擇IDC_BUTTON(按鈕控件),并從Messages欄中選擇BN_CLICKED,然后點(diǎn)擊Add Function添加該事件,如下所示圖3-13 新建按鈕控件同樣的,給CClockDlg添加OnSetFont事件,如下圖所示圖3-14 新建按鈕控件3.5手工添加其他代碼3.4.1定義PI的值并且添加數(shù)學(xué)函數(shù)庫(kù)頭文件,代碼如下:#include "math.h" /調(diào)用數(shù)序函數(shù)庫(kù)頭文件#define PI 3.1415926

21、53 /定義PI的取值3.4.2為”編輯框”控件的消息響應(yīng)函數(shù)編寫如下代碼。void CClockDlg:OnSetFont(CFont* pFont) / TODO: Add your specialized code here and/or call the base classm_edit1=0; /此為添加代碼m_edit2=0; /此為添加代碼CDialog:OnSetFont(pFont);3.4.3在對(duì)話框類的OnInitDialog中添加如下代碼。int m_edit1;int m_edit2;UpdateData(FALSE);3.4.4對(duì)按鈕的單擊消息響應(yīng)函數(shù)OnButto

22、n編寫代碼,實(shí)現(xiàn)目標(biāo),得出最終結(jié)果,代碼如下。/以下為OnButton中的循環(huán)求和函數(shù)double make_y(int i,double r)double y=0;for(;i>-1;i-)y+=(-12)/(2*i+1)*PI)*sin(2*i+1)*r)*30;return y;void CClockDlg:OnButton() / TODO: Add your control notification handler code herechar buff116; / 定義字符數(shù)組,用于存放與X軸交點(diǎn)坐標(biāo)(顯示只能是字符)FILE *fp1;fp1 = fopen("諧波

23、.txt","w+"); / 打開(kāi)文件if( NULL = fp1 ) / 打開(kāi)文件失敗的話,直接 返回return;char buff216; / 定義字符數(shù)組,用于存放與X軸交點(diǎn)坐標(biāo)(顯示只能是字符)FILE *fp2;fp2 = fopen("抖動(dòng).txt","w+"); / 打開(kāi)文件if( NULL = fp2 ) / 打開(kāi)文件失敗的話,直接 返回return;/諧波參數(shù)可調(diào)繪圖代碼CRect rc(0,0,1200,350); / 構(gòu)造畫刷矩形區(qū)域rcCPen pen,cpen; / 創(chuàng)建pen和cpen畫筆pen

24、.CreatePen(PS_SOLID,2,RGB(0,0,0); / 創(chuàng)建一支黑色實(shí)心畫筆cpen.CreatePen(PS_SOLID,2,RGB(0,0,255); / 創(chuàng)建一支藍(lán)色實(shí)心畫筆CDC* pDC=GetDC(); /創(chuàng)建CDC類畫圖pDC->FillSolidRect(rc,RGB(255,255,255); /使用白色填充矩形rc區(qū)域pDC->SelectObject(&cpen); /將定義畫筆cpen選入設(shè)備上下文pDC->SetViewportOrg(100,200); /設(shè)置可視區(qū)域上下文的初始位置為(100,200)/繪制坐標(biāo)軸int a

25、=0; / 初始化參數(shù)(初始原點(diǎn)坐標(biāo))int b=0;pDC->MoveTo(a,b); / 移動(dòng)畫筆在原點(diǎn)處pDC->TextOut(a-15,b,"O"); / 添加原點(diǎn)字母OpDC->LineTo(a+1000,b); / 繪制X軸直線pDC->MoveTo(a,b); / 畫筆回到原點(diǎn)pDC->LineTo(a,b-150); / 繪制Y軸上半軸直線pDC->MoveTo(a,b); pDC->LineTo(a,b+150); / 繪制Y軸下半軸直線pDC->MoveTo(a,b); pDC->TextOut(a

26、+1010,b-5,"X/*(10-8)s"); / 為x軸添加標(biāo)識(shí)X/*(10-8)spDC->TextOut(a-15,b-150,"Y"); / 為y軸添加標(biāo)識(shí)YUpdateData(); /將EDIT控件值賦值給成員變量int i;double x,y=0,r;pDC->SelectObject(&pen); /將定義畫筆pen選入設(shè)備上下文for(x=0.0;x<1000;x=x+0.01) /制定諧波規(guī)則,并繪圖r=x/(30*2)*PI;y=make_y(m_edit2,r); pDC->MoveTo(dou

27、ble)x,(double)y); pDC->LineTo(double)x,(double)y);for(x=0;x<1000;x=x+60) /標(biāo)注橫坐標(biāo)值sprintf(buff1,"%.3f",x/4*0.1111); / 把橫坐標(biāo)值轉(zhuǎn)換成字符類型pDC->TextOut(x,5,buff1); / 顯示橫坐標(biāo)刻度值fprintf(fp1, "(%.3f,%d)n",x/4*0.1111,0); / 寫入文檔中cpen.DeleteObject(); /釋放畫筆pen.DeleteObject(); /釋放畫筆/相位抖動(dòng)參數(shù)可調(diào)

28、繪圖代碼int n; / 坐標(biāo)參數(shù)int c=100;int d=500;int freq=70;int freq1 = 1; / 定義一個(gè)臨時(shí)變量,用于判斷畫刷是否上升或下降CRect rc1(0,380,1200,820); / 構(gòu)造畫刷矩形區(qū)域rc1CPen apen,bpen; / 創(chuàng)建apen和bpen畫筆apen.CreatePen(PS_SOLID,1,RGB(0,0,0); / 創(chuàng)建一支黑色實(shí)心畫筆bpen.CreatePen(PS_SOLID,2,RGB(0,0,255); / 創(chuàng)建一支藍(lán)色實(shí)心畫筆CDC* pDC1=GetDC(); / 利用CDC類繪圖pDC1->F

29、illSolidRect(rc1,RGB(255,255,255); /使用白色填充矩形rc1區(qū)域pDC1->SelectObject(&bpen); /將定義畫筆bpen選入設(shè)備上下文/繪制坐標(biāo)軸pDC1->MoveTo(c,d); / 確定畫筆起點(diǎn)pDC1->TextOut(c-15,d,"O"); / 添加原點(diǎn)字母OpDC1->LineTo(c+1000,d); / 繪制X軸直線pDC1->MoveTo(c,d); / 畫筆回到起點(diǎn)pDC1->LineTo(c,d-150); / 繪制Y軸上半軸直線pDC1->Move

30、To(c,d); pDC1->LineTo(c,d+150); / 繪制Y軸下半軸直線pDC1->MoveTo(c,d); pDC1->TextOut(c+1005,d-5,"X/(*10-8)s"); / 為x軸添加標(biāo)識(shí)X/*(10-8)spDC1->TextOut(c-15,d-150,"Y"); / 為y軸添加標(biāo)識(shí)YpDC1->SelectObject(&apen); /將定義畫筆apen選入設(shè)備上下文for(n = c;n<c+1000;n = n+freq+(rand()%(m_edit1+1)-1)

31、*10) /制定方波規(guī)則,并作圖pDC1->LineTo(n,d); / 移動(dòng)畫筆if(1 = freq1) / 如果在橫坐標(biāo)d = 400; / 畫上升沿freq1 = 0; / 改變臨時(shí)變量狀態(tài)elsed = 600; / 畫下降沿freq1 = 1; / 改變臨時(shí)變量狀態(tài),下次繪制時(shí)直接開(kāi)始繪制上升沿sprintf(buff2,"%.3f",(n-100)/4*0.1111); / 把橫坐標(biāo)值轉(zhuǎn)換成字符類型pDC1->TextOut(n,505,buff2); / 顯示橫坐標(biāo)刻度值fprintf(fp2, "(%.3f,%d)n",(n

32、-100)/4*0.1111,0); / 寫入文檔中pDC1->LineTo(n,d); / 移動(dòng)畫刷bpen.DeleteObject(); /釋放畫筆apen.DeleteObject(); /釋放畫筆3.6添加事件處理函數(shù): 在clockdlg.h中自動(dòng)添加三個(gè)事件處理函數(shù)的聲明圖3-15 添加事件處理函數(shù)3.7.根據(jù)實(shí)際結(jié)果調(diào)整控件的位置以防遮擋或被遮擋 4、 設(shè)計(jì)結(jié)果與分析 4.1輸出界面:點(diǎn)擊運(yùn)行后,進(jìn)入到輸出界面,界面中有 相位抖動(dòng)參數(shù) 和 諧波參數(shù) 兩個(gè)變量 分別控制時(shí)鐘信號(hào)的 延時(shí) 和 諧波組成 。圖4-1 輸出界面4.2選擇諧波次數(shù)為0 , 相位抖動(dòng)參數(shù)為 0圖4-2

33、 一次諧波 與 無(wú)延時(shí) 是輸出波形 分析:由于諧波次數(shù)為0,所以信號(hào)是由基波構(gòu)成,輸出為正弦波。橫坐標(biāo)是時(shí)間,從圖中可是信號(hào)的周期是,則頻率是30M Hz無(wú)延時(shí)體現(xiàn)在對(duì)信號(hào)抽樣、整形后周期沒(méi)變。4.3選擇諧波次數(shù)為7 , 相位抖動(dòng)參數(shù)為 1圖4-3 七次諧波與一次相位抖動(dòng)分析:圖中信號(hào)是由基波和七次諧波構(gòu)成,周期不變。加入時(shí)鐘抖動(dòng)參數(shù)后周期變大了,此時(shí)的時(shí)鐘信號(hào)頻率也小于了30M Hz4.4相位抖動(dòng)參數(shù)為3 諧波次數(shù)為33 時(shí):圖4.4波形14.5相位抖動(dòng)參數(shù)為5 諧波次數(shù)為55 時(shí):圖4.5波形2五設(shè)計(jì)評(píng)述及收獲體會(huì)1、設(shè)計(jì)評(píng)述本次課設(shè)是利用C語(yǔ)言生成一個(gè)時(shí)鐘信號(hào),在我們小組的通力合作下,成功的完成了本次課設(shè)的設(shè)計(jì)與制作。本次設(shè)計(jì)的重點(diǎn)是方波的傅里葉級(jí)數(shù)展開(kāi),在經(jīng)歷了多次失敗后,終于成功寫出了方波的傅里葉級(jí)數(shù)展開(kāi)式。在設(shè)計(jì)方波時(shí),我們將其寫為奇函數(shù),使得cos部分系數(shù)為零,減輕了傅里葉展開(kāi)式的復(fù)雜程度,而且使函數(shù)繪制的優(yōu)美,大氣。繼而在之后的相位抖動(dòng)參數(shù)中,我們將一些變量加入其公式中,并利用C語(yǔ)言rand語(yǔ)句讓其參數(shù)可以隨機(jī)改動(dòng),從而實(shí)現(xiàn)相位的抖動(dòng)。對(duì)于諧波頻率參數(shù)的設(shè)計(jì),我們?cè)诙啻斡懻撗芯恐?,決定利用C語(yǔ)言中的語(yǔ)句將其實(shí)現(xiàn),并使其參數(shù)可調(diào)。 本次設(shè)計(jì)中,對(duì)傅里葉級(jí)數(shù)進(jìn)行

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論