2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  目錄</b></p><p><b>  摘要2</b></p><p>  Abstract3</p><p><b>  1.緒論4</b></p><p><b>  1.1 前言4</b></p>

2、<p>  1.2 系統(tǒng)的功能和特點(diǎn)4</p><p>  1.3 系統(tǒng)的邏輯模型描述5</p><p>  1.4 系統(tǒng)的性能描述5</p><p>  1.4.1 電源電壓及其波動(dòng)范圍5</p><p>  1.4.2 頻率和幅度范圍5</p><p>  1.4.3 環(huán)境要求6</

3、p><p>  1.5 系統(tǒng)開發(fā)進(jìn)度安排6</p><p>  2. 系統(tǒng)開發(fā)中的相關(guān)技術(shù)7</p><p>  2.1 Embest EduKit-IV實(shí)驗(yàn)平臺(tái)7</p><p>  2.2 Intel Xscale270處理器介紹7</p><p>  2.3 DAC模塊詳細(xì)介紹8</p>&l

4、t;p>  2.3.1 主要芯片原理功能表述8</p><p>  2.3.2 內(nèi)部功能模塊圖8</p><p>  2.3.3 芯片引腳排列9</p><p>  2.3.4 ADC的硬件連接10</p><p>  2.4 Windows CE操作系統(tǒng)11</p><p>  2.5 Visual

5、Studio 2005集成開發(fā)環(huán)境12</p><p>  3. 系統(tǒng)總體設(shè)計(jì)13</p><p>  3.1 軟件總體結(jié)構(gòu)描述13</p><p>  3.2 軟件各功能模塊的描述14</p><p>  4. 系統(tǒng)詳細(xì)設(shè)計(jì)18</p><p>  4.1 系統(tǒng)人機(jī)界面設(shè)計(jì)18</p>&l

6、t;p>  4.1.1 “產(chǎn)生單一波形”模塊界面及詳細(xì)說明18</p><p>  4.1.2 “產(chǎn)生組合波形”模塊界面及詳細(xì)說明19</p><p>  4.1.3 “相關(guān)說明”模塊界面及詳細(xì)說明20</p><p>  4.2算法說明21</p><p>  4.3 系統(tǒng)各個(gè)功能模塊詳細(xì)說明28</p>&l

7、t;p>  5. 軟件測(cè)試61</p><p><b>  6. 結(jié)束語62</b></p><p><b>  參考文獻(xiàn)63</b></p><p><b>  致謝64</b></p><p><b>  摘要</b></p>

8、<p>  傳統(tǒng)的函數(shù)發(fā)生器成本高、精度低、體積大,嵌入式產(chǎn)業(yè)的快速發(fā)展為設(shè)計(jì)成本低、精度高和體積小的便攜性函數(shù)發(fā)生器提供了技術(shù)基礎(chǔ)。本次畢業(yè)設(shè)計(jì)就是利用相關(guān)的嵌入式技術(shù)設(shè)計(jì)一個(gè)成本低、精度高和體積小的便攜性智能函數(shù)發(fā)生器原型。</p><p>  本次設(shè)計(jì)使用VS2005集成開發(fā)環(huán)境、英蓓特公司的Edukit-IV開發(fā)板和Intel PXA270處理器,在Windows CE操作系統(tǒng)上,結(jié)合Edu

9、kit-IV實(shí)驗(yàn)箱上的DAC模塊,開發(fā)了一個(gè)具有一定智能的函數(shù)發(fā)生器原型。該系統(tǒng)既能產(chǎn)生方波、脈沖波、正弦波、三角波和鋸齒波5種單一的周期信波形信號(hào),又可以將上述5種波形信號(hào)中的任意兩種信號(hào)進(jìn)行組合而得到新的波形信號(hào)。對(duì)于單一的波形信號(hào),既可以在LCD屏上顯示輸出,又可以在輸出端子上顯示輸出;對(duì)于組合的波形信號(hào),只能在LCD屏上顯示輸出。對(duì)于在輸出端子上顯示輸出的波形信號(hào),可以調(diào)節(jié)波形信號(hào)的頻率、幅度和通道值;而對(duì)于在LCD屏上顯示輸出

10、的波形信號(hào),可以調(diào)節(jié)波形信號(hào)的頻率、幅度和相位值。</p><p>  本文主要介紹了智能函數(shù)發(fā)生器原型的設(shè)計(jì)方案及設(shè)計(jì)實(shí)現(xiàn)過程。其中需求分析階段主要說明了系統(tǒng)的功能、特點(diǎn)和性能,而總體設(shè)計(jì)階段則闡述了系統(tǒng)的整體結(jié)構(gòu)和模塊調(diào)用關(guān)系,在詳細(xì)設(shè)計(jì)階段詳細(xì)地說明了各個(gè)模塊的算法和數(shù)據(jù)結(jié)構(gòu),最后經(jīng)過測(cè)試完善了整個(gè)系統(tǒng)。除此,本文還詳細(xì)地介紹了系統(tǒng)開發(fā)設(shè)計(jì)過程中所用的軟硬件環(huán)境,特別是Edukit-IV實(shí)驗(yàn)箱上的DAC模塊

11、。</p><p>  關(guān)鍵字: 函數(shù)發(fā)生器 DAC模塊 WinCE PXA270</p><p><b>  Abstract</b></p><p>  Traditional function generators have the disadvantages of high cost, low precision a

12、nd big volume. Fast development of embedded industry provides the technical basis for designing an intellective function generator, which has the features of low cost, high precision and small volume. Using related embed

13、ded technology, this graduation project designed an intellective function generator prototype with the advantages above.</p><p>  The function generator prototype was developed on Windows CE operating system

14、, using Visual Studio 2005 IDE, Embest’s EduKit-IV development board, Intel PXA270 processor and DAC module. The prototype not only can generate five-kind of single waves——square wave, impulse wave, sin wave, triangle wa

15、ve and sawtooth wave, but also can combine two different waves in the five into a new wave. For a single wave, it can be showed on the LCD screen and an output device. But for a combined wave, it can onl</p><p

16、>  This paper mainly introduced the design and the implementation process of the intellective function generator prototype. Firstly, the requirement analysis mainly explained the functions, features and performance of

17、 the system. Then, the system design showed the overall structure of the system and the relation between modules and each other. Besides, in the detail design, this paper accounted for the algorithms and data structures

18、of each module. At last, the whole system was tested and improved.</p><p>  Keywords: Function generator DAC module WinCE PXA270</p><p><b>  緒論</b></p><p><

19、b>  1.1 前言</b></p><p>  隨著世界高科技技術(shù)的發(fā)展,中國(guó)電子測(cè)量?jī)x器走進(jìn)了高科技發(fā)展的道路。作為基礎(chǔ)測(cè)量?jī)x器的函數(shù)發(fā)生器,自從它問世以來,已被廣泛應(yīng)用于調(diào)試、自動(dòng)控制系統(tǒng)和教學(xué)實(shí)驗(yàn)等領(lǐng)域。隨著電子、電力、通信行業(yè)的不斷擴(kuò)大,該儀器的應(yīng)用領(lǐng)域也在不斷地?cái)U(kuò)大和深入,現(xiàn)已深入到人類經(jīng)濟(jì)發(fā)展的很多領(lǐng)域。</p><p>  函數(shù)發(fā)生器以往多由硬件組成,產(chǎn)品

20、的體積大、精度低、系統(tǒng)結(jié)構(gòu)比較復(fù)雜,可維護(hù)性和可操作性也不佳,無法滿足用戶對(duì)精度和便攜性的要求。同時(shí),由于一般傳統(tǒng)的函數(shù)發(fā)生器都難以產(chǎn)生特別精確的波形,并且波形的種類也不夠豐富。因此,迫切需要一種體積小、功能強(qiáng)、精度高和便攜性好的智能型函數(shù)發(fā)生器。</p><p>  本畢業(yè)設(shè)計(jì)利用EduKit-IV型實(shí)驗(yàn)箱及該實(shí)驗(yàn)箱上的DAC模塊,使用Intel PXA270處理器,結(jié)合VS2005集成開發(fā)環(huán)境,開發(fā)了一個(gè)便攜

21、的智能函數(shù)發(fā)生器原型。該系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單、成本低、使用方便和實(shí)用價(jià)值高等優(yōu)點(diǎn)。</p><p>  1.2 系統(tǒng)的功能和特點(diǎn)</p><p>  通過分析總結(jié),本系統(tǒng)的功能和特點(diǎn)如下: </p><p>  1)可以產(chǎn)生正弦波、方波、三角波、鋸齒波和脈沖波5種周期性信號(hào);</p><p>  2)上述5種信號(hào)既可以在LCD屏上顯示出來,又可以

22、在實(shí)際的輸出端子上輸出;</p><p>  3)能夠?qū)⑸鲜?種信號(hào)任意兩兩組合,形成新的周期性信號(hào),并在LCD屏上將新信號(hào)顯示出來;</p><p>  4)具有調(diào)節(jié)各種信號(hào)波形的幅度和頻率大小的功能;</p><p>  5)對(duì)于在LCD屏上顯示的波形信號(hào),還可以調(diào)節(jié)波形的相位值;對(duì)于在實(shí)際輸出端子上顯示的波形信號(hào),還可以調(diào)節(jié)信號(hào)選擇的輸出通道;</p&g

23、t;<p>  6)擁有專門用于顯示系統(tǒng)目前在進(jìn)行什么操作的狀態(tài)欄。</p><p>  更詳細(xì)的信息如下表所示:</p><p>  表1-1 函數(shù)發(fā)生器功能詳圖</p><p>  1.3 系統(tǒng)的邏輯模型描述</p><p>  弄清系統(tǒng)的功能和特點(diǎn)以后,就基本上明白了整個(gè)系統(tǒng)的邏輯模型??梢愿鶕?jù)系統(tǒng)中數(shù)據(jù)的流向畫出數(shù)據(jù)流圖

24、,本系統(tǒng)的數(shù)據(jù)流圖如圖1-1所示:</p><p>  圖1-1 系統(tǒng)的數(shù)據(jù)流圖</p><p>  1.4 系統(tǒng)的性能描述</p><p>  1.4.1 電源電壓及其波動(dòng)范圍</p><p>  電源:3.3V~5VDC,+/-10%</p><p>  功耗:125mA@3.3V;70~90mA(省電狀態(tài))<

25、;/p><p>  1.4.2 頻率和幅度范圍 </p><p>  輸出頻率:12.5Hz~2500Hz </p><p>  輸出幅度:0mV~1643mV</p><p>  1.4.3 環(huán)境要求</p><p>  儲(chǔ)存溫度:-25℃~70℃</p><p>  工作溫度:0℃~70℃<

26、;/p><p>  相對(duì)濕度:5%~95%</p><p>  1.5 系統(tǒng)開發(fā)進(jìn)度安排</p><p>  第1-3周:根據(jù)任務(wù)書作調(diào)研,根據(jù)調(diào)研的資料撰寫開題報(bào)告。</p><p>  第4-5周:熟悉VS2005集成開發(fā)環(huán)境、Windows CE操作系統(tǒng)和EduKit-IV實(shí)驗(yàn)平臺(tái),閱覽關(guān)于Windows CE操作系統(tǒng)和MFC編程的資料。&

27、lt;/p><p>  第6-7周:編寫一些簡(jiǎn)單的應(yīng)用程序,學(xué)會(huì)在VS2005中編程的技巧和調(diào)試的方法。</p><p>  第8-9周:進(jìn)行問題定義,弄清楚應(yīng)該要做什么。接著進(jìn)行需求分析和可行性分析,初步確定系統(tǒng)應(yīng)該要實(shí)現(xiàn)的功能。然后進(jìn)行總體設(shè)計(jì),構(gòu)造整個(gè)系統(tǒng)的結(jié)構(gòu)和模塊調(diào)用關(guān)系。</p><p>  第10-12周:進(jìn)行詳細(xì)設(shè)計(jì),弄清楚每個(gè)模塊的算法和數(shù)據(jù)結(jié)構(gòu)。然后

28、編寫代碼,并進(jìn)行調(diào)試和單元測(cè)試。</p><p>  第13-15周:進(jìn)行集成測(cè)試和驗(yàn)收測(cè)試,分析整個(gè)系統(tǒng)的功能是否達(dá)到了預(yù)定的要求和目標(biāo),分析系統(tǒng)的優(yōu)點(diǎn)及不足之處,并進(jìn)行必要的修改和補(bǔ)充。</p><p>  第16-18周:整理文檔,完成論文,將畢業(yè)論文相關(guān)材料裝訂成冊(cè),準(zhǔn)備論文答辯。</p><p>  2. 系統(tǒng)開發(fā)中的相關(guān)技術(shù)</p><

29、;p>  2.1 Embest EduKit-IV實(shí)驗(yàn)平臺(tái)</p><p>  Embest EduKit-IV教學(xué)實(shí)驗(yàn)平臺(tái)是一款功能強(qiáng)大的32位嵌入式ARM實(shí)驗(yàn)開發(fā)平臺(tái),是深圳市英蓓特信息技術(shù)有限公司推出的更具創(chuàng)新意識(shí)的EduKit系列第四代嵌入式教學(xué)實(shí)驗(yàn)平臺(tái)。</p><p>  Embest EduKit-IV嵌入式ARM教學(xué)實(shí)驗(yàn)系統(tǒng)采用了模塊化的設(shè)計(jì)思路,整個(gè)硬件平臺(tái)的接口信

30、號(hào)定義完整,包含各種功能模塊的接口,如GPRS、PWM電機(jī)、藍(lán)牙、DAC數(shù)模轉(zhuǎn)換等模塊,用戶可以方便地在平臺(tái)上進(jìn)行各種實(shí)驗(yàn)與實(shí)踐。除了具有豐富的接口資源外,該教學(xué)系統(tǒng)還具備了良好的擴(kuò)展性,比如,EduKit-IV預(yù)留了32位擴(kuò)展總線接口,從而大大減輕了用戶擴(kuò)展新功能的負(fù)擔(dān),方便用戶開發(fā)自已的目標(biāo)系統(tǒng)。該實(shí)驗(yàn)平臺(tái)的外觀和各種模塊如圖2-1所示:</p><p>  圖2-1 EduKit-IV教學(xué)實(shí)驗(yàn)平臺(tái)及模塊圖&

31、lt;/p><p>  本次畢業(yè)設(shè)計(jì)中采用的CPU核心模塊是Mini270核心子板,該核心子板利用處理器Intel Xscale pxa270提供的各種控制接口擴(kuò)展了功能模塊,這些接口信號(hào)最終通過核心板輸送到主板上。比如,在核心板上可以通過CPU引出LCD控制信號(hào),然后再將該信號(hào)輸送到主板上的LCD連接器上。而本次設(shè)計(jì)中采用的應(yīng)用模塊則是DAC模塊,該模塊能夠?qū)崿F(xiàn)數(shù)模轉(zhuǎn)換的功能。下面有關(guān)于本次使用的CPU模塊和應(yīng)用模

32、塊的更詳細(xì)介紹。</p><p>  2.2 Intel Xscale270處理器介紹</p><p>  Intel PXA270是Intel公司推出的基于ARM微處理核的嵌入式處理器,它被廣泛地應(yīng)用于PDA、智能手機(jī)等領(lǐng)域,這源于它具有卓越的性能。</p><p>  PXA270具有較高的主頻,最高可達(dá)624MHz。PXA270最引人注目的是加入了Wirele

33、ss MMX技術(shù),大大提升了多媒體處理能力。同時(shí)PXA270還加入了Intel SpeedStep動(dòng)態(tài)電源管理技術(shù),在保證CPU性能的情況下,最大限度地降低了移動(dòng)設(shè)備功耗。SpeedStep技術(shù)原用于Intel移動(dòng)處理器,這種技術(shù)用通俗的語言表述就是系統(tǒng)需要多高的主頻,它就調(diào)節(jié)到多高的頻率,系統(tǒng)不需要時(shí),它就將處理器主頻調(diào)節(jié)到最低。從技術(shù)資料上可以了解到,SpeedStep技術(shù)可以將PXA270的主頻在26MHz~624MHz(最高)之

34、間自由調(diào)節(jié),也就是說,在系統(tǒng)完全空閑時(shí),PXA270可以運(yùn)行在26MHz的主頻下,此時(shí)它的功耗將低于0.1毫安。Mini270核心子板使用的就是這種處理器。</p><p>  2.3 DAC模塊詳細(xì)介紹</p><p>  2.3.1 主要芯片原理功能表述</p><p>  DAC模塊中的主要芯片是AD7528BN,它是8位雙通道的數(shù)字—模擬轉(zhuǎn)換器,內(nèi)部集成了數(shù)

35、據(jù)鎖存器。數(shù)據(jù)通過8位數(shù)據(jù)線傳送至兩個(gè)DAC數(shù)據(jù)鎖存器,控制輸入端的DACA/DACB,以決定哪一個(gè)數(shù)據(jù)被裝載。該器件的訪問與隨機(jī)存儲(chǔ)器類似,能方便地與大多數(shù)MCU相接。AD7528BN工作電壓5~15V,功耗小于15mW。2或4象限乘法功能使這種器件成為許多MCU控制的增益設(shè)置和信號(hào)控制應(yīng)用的良好選擇。與電流輸出相比較,它更適合于電壓輸出。</p><p>  2.3.2 內(nèi)部功能模塊圖</p>

36、<p>  圖2-2 內(nèi)部功能模塊圖</p><p>  2.3.3 芯片引腳排列</p><p>  圖2-3 AD7528BN引腳圖</p><p>  各引腳的功能說明如表2-1所示:</p><p>  表2-1 AD7528BN引腳功能說明</p><p>  AD7528BN芯片(如圖2-3所示)

37、可根據(jù)一個(gè)輸入數(shù)字量輸出對(duì)應(yīng)的模擬量(電壓)。其接口的邏輯信息為:</p><p>  DAC選擇:兩個(gè)DAC鎖存共享一個(gè)通用8位輸入端口。通過控制輸入引腳 /DACB來決定哪個(gè)通道接受輸入端口的數(shù)據(jù)。</p><p>  模式選擇:輸入引腳和控制所選擇的DAC通道的操作模式(如表2-2所示)。</p><p>  寫模式:當(dāng)和都為低電平時(shí),所選擇的DAC通道處于

38、寫模式。該通道所輸入的鎖存數(shù)據(jù)輸出,輸出電壓大小與DB0-DB7引腳信號(hào)相關(guān)。</p><p>  保持模式:所選擇的DAC所鎖存的數(shù)據(jù)是或變高之前DB0-DB7的狀態(tài)。</p><p>  表2-2 模式選擇表</p><p>  L表示低電平,H表示高電平,X表示與高或低電平無關(guān)。</p><p>  2.3.4 ADC的硬件連接<

39、/p><p>  在本系統(tǒng)中,AD7528BN的DB0-DB7連接到Intel Xscale pxa270處理器的數(shù)據(jù)總線DB0-DB7;/DACB連到處理器的地址總線的ADDR7(如圖2-4所示);連到處理器的NWE寫信號(hào);連到一個(gè)3/8譯碼器的輸出引腳Y0,3/8譯碼器的輸入為地址總線的A18-A20(如圖2-6所示)。最后,daa和dab連到兩個(gè)LED燈上用來表示對(duì)應(yīng)通道的電壓大?。ㄈ鐖D2-5所示)。</

40、p><p>  圖2-4 AD7528BN引腳連接圖</p><p>  圖2-5 AD7528BN與LED連接圖</p><p>  圖2-6 3/8譯碼器</p><p>  2.4 Windows CE操作系統(tǒng)</p><p>  Microsoft Windows CE是為各種嵌入式系統(tǒng)和產(chǎn)品設(shè)計(jì)的一種開放的、可升

41、級(jí)的32位操作系統(tǒng),是基于掌上型電腦類的電子設(shè)備操作系統(tǒng)。</p><p>  該系統(tǒng)的模塊化設(shè)計(jì)使嵌入式系統(tǒng)開發(fā)者和應(yīng)用開發(fā)者能夠定制各種產(chǎn)品,例如家用電器、專門的工業(yè)控制器和嵌入式通信設(shè)備等等。Windows CE支持各種硬件外圍設(shè)備以及網(wǎng)絡(luò)系統(tǒng),包括鍵盤、鼠標(biāo)設(shè)備、觸摸屏、串行端口、以太網(wǎng)連接器、調(diào)制解調(diào)器、通用串行總線(USB)設(shè)備、音頻設(shè)備、并行端口、打印設(shè)備及存儲(chǔ)設(shè)備,例如PC卡等。</p>

42、;<p>  此外,Windows CE支持超過1000個(gè)公共Microsoft Win32 API和幾種附加的編程接口,用戶可利用它們來開發(fā)應(yīng)用程序。這些接口包括:組件對(duì)象模型(COM)、Microsoft 基礎(chǔ)類(MFC)、Microsoft ActiveX 控件、Microsoft 活動(dòng)模板庫(kù)(ATL)等。</p><p>  2007年,微軟正式發(fā)布了自己的第六代嵌入式系統(tǒng)工具套裝:Wind

43、ows Embedded CE 6.0,并完全開放了其核心源代碼。在Linux不斷奪取嵌入式系統(tǒng)市場(chǎng)、生產(chǎn)商對(duì)透明度的要求越來越高的今天,微軟不但發(fā)布了自己的新系統(tǒng),還宣布向消費(fèi)者和BSquare、Centrality、Micros Systems等嵌入式廠商完全開放CE 6.0的核心源代碼,并提供Visual Studio 2005 Professional的免費(fèi)拷貝,使現(xiàn)有的Platform Builder集成開發(fā)環(huán)境(IDE)成為

44、VS2005的一個(gè)插件。Windows CE 5.0發(fā)布的時(shí)候,微軟根據(jù)資源共享計(jì)劃公開了56%的核心源代碼,而到了Windows CE 6.0,微軟將這一比例提高到了100%,不過是核心源代碼,而不是整個(gè)CE 6.0工具套裝。Windows CE 6.0的新核心經(jīng)過了重新設(shè)計(jì),在性能上的改善非常明顯,如并發(fā)進(jìn)程數(shù)從32個(gè)猛增至32000個(gè)、每個(gè)進(jìn)程的最大虛擬內(nèi)存利用量高達(dá)2GB、可提供實(shí)時(shí)數(shù)據(jù)連接等,還有組件可以利用Windows V

45、ista內(nèi)建的新功能來遙控桌面并在投影儀上顯示給觀眾,</p><p>  由于該操作系統(tǒng)的界面和Windows有很大的相似之處,因此使用起來非常方便。</p><p>  2.5 Visual Studio 2005集成開發(fā)環(huán)境</p><p>  Visual Studio 2005 包含了一系列高效的、智能的開發(fā)工具,不論是為開發(fā)初學(xué)者,還是為經(jīng)驗(yàn)豐富的企業(yè)開

46、發(fā)團(tuán)隊(duì)都提供了很多全新的、強(qiáng)大的功能。具體如下所示:</p><p>  全方位的工具平臺(tái):不論用戶是一位編程初學(xué)者還是一個(gè)富有經(jīng)驗(yàn)的企業(yè)開發(fā)團(tuán)隊(duì)中的一員,都可以提供高效的開發(fā)工具;</p><p>  減少開發(fā)的復(fù)雜度:確保用戶能更加輕松地發(fā)布基于 Framework 的解決方案,包括 Windows、Web、移動(dòng)和基于Office的應(yīng)用;</p><p>  第

47、三方的生態(tài)系統(tǒng):允許用戶利用來自 Visual Studio行業(yè)合作伙伴參與研發(fā)的產(chǎn)品,并體驗(yàn)用來補(bǔ)充Visual Studio 2005第三方解決方案的全面部署;</p><p>  改善團(tuán)隊(duì)的溝通:給用戶提供高效智能的生命周期工具,通過使用 Visual Studio 2005 Team System,來增強(qiáng) IT 周期參與者之間的交流與協(xié)作。</p><p><b>  3

48、. 系統(tǒng)總體設(shè)計(jì)</b></p><p>  3.1 軟件總體結(jié)構(gòu)描述</p><p>  智能型函數(shù)發(fā)生器原型比較龐大,其總體結(jié)構(gòu)層次圖如下所示:</p><p>  圖3-1 智能函數(shù)發(fā)生器系統(tǒng)總體層次圖</p><p>  由該層次圖可知,整個(gè)智能型函數(shù)發(fā)生器原型主要有三個(gè)功能模塊:分別是“產(chǎn)生單一波形”模塊、“產(chǎn)生組合波形

49、”模塊和“相關(guān)說明”模塊?!跋嚓P(guān)說明”模塊相對(duì)比較簡(jiǎn)單,描述了本系統(tǒng)主要能夠?qū)崿F(xiàn)的功能。而“產(chǎn)生單一波形”模塊和“產(chǎn)生組合波形”模塊則需要調(diào)用各自的子模塊才能實(shí)現(xiàn)產(chǎn)生波形信號(hào)的功能,下面將詳細(xì)論述這兩個(gè)模塊。</p><p>  “產(chǎn)生單一波形”模塊主要完成的功能有輸出方波、正弦波、脈沖波、鋸齒波和三角波5種波形信號(hào),并能實(shí)現(xiàn)停止波形信號(hào)輸出的功能。需要說明的是,這些波形信號(hào)不僅能夠在實(shí)際輸出端子上輸出,還能夠在

50、LCD屏上輸出顯示,使用戶不使用輸出端子也能夠看到信號(hào)輸出的效果。也就是說,對(duì)應(yīng)于每一種波形信號(hào)輸出需要調(diào)用兩個(gè)子模塊,這兩個(gè)子模塊分別完成在輸出端子上顯示波形和在LCD屏上顯示波形信號(hào)的功能,以方波為例,調(diào)用過程如圖3-2所示。</p><p>  圖3-2 “方波信號(hào)”模塊的層次圖</p><p>  除此,該模塊還能進(jìn)行相關(guān)的選擇與配置,即能調(diào)節(jié)波形信號(hào)的幅度和周期的大小。對(duì)于在LC

51、D屏上顯示的波形信號(hào),還能控制信號(hào)的相位,而對(duì)于在輸出端子上顯示的波形信號(hào),可以控制信號(hào)輸出的通道。通過對(duì)這些參數(shù)的選擇,可以輸出特定的波形,滿足更多用戶的需求。</p><p>  “產(chǎn)生組合波形”模塊主要完成的功能是將方波、正弦波、脈沖波、鋸齒波和三角波5種波形信號(hào)中的任意兩種波形進(jìn)行疊加得到組合波形,并在LCD屏上將組合波形顯示出來。對(duì)于該模塊,首先要選擇兩種波形信號(hào),然后設(shè)置這兩種波形信號(hào)的周期、幅度和相

52、位,并對(duì)所設(shè)置的值進(jìn)行判斷,看是否合法,如果合法,則在LCD上顯示組合后的波形,因此該模塊的層次圖如圖3-1中所示。</p><p>  3.2 軟件各功能模塊的描述</p><p>  完成軟件的整體結(jié)構(gòu)設(shè)計(jì)以后,接下來需要對(duì)整體結(jié)構(gòu)中所涉及到的各個(gè)模塊進(jìn)行設(shè)計(jì)。以下是在系統(tǒng)總體設(shè)計(jì)中對(duì)各個(gè)模塊的功能所進(jìn)行的描述,以及它們的IPO圖:</p><p>  1.“產(chǎn)

53、生單一波形”模塊</p><p><b>  (1)功能描述</b></p><p>  該模塊的主要功能是在用戶選擇波形信號(hào)的種類、周期、幅度、相位和通道值之后,在輸出端子和LCD屏上正確地顯示所選擇的波形信號(hào)。</p><p><b> ?。?)IPO圖</b></p><p>  圖3-3 “

54、產(chǎn)生單一波形”模塊的IPO圖</p><p>  2.“方波信號(hào)”模塊</p><p><b> ?。?)功能描述</b></p><p>  該模塊的主要功能是在輸出端子和LCD屏上輸出符合要求的方波信號(hào)。</p><p><b> ?。?)IPO圖</b></p><p>

55、;  圖3-4 “方波信號(hào)”模塊的IPO圖</p><p>  “正弦波信號(hào)”模塊、“脈沖波信號(hào)”模塊、“三角波信號(hào)”模塊和“鋸齒波信號(hào)”模塊的“功能描述”和“IPO圖”與“方波信號(hào)”模塊的類似,只是波形種類不同而已,在這里就不再贅述了。</p><p>  3.“停止信號(hào)產(chǎn)生”模塊</p><p><b>  (1)功能描述</b></

56、p><p>  該模塊的主要功能是使輸出端子和LCD屏上無波形顯示,即函數(shù)發(fā)生器原型既不向DAC模塊輸送波形數(shù)據(jù),又不在LCD屏上畫模擬波形。</p><p><b> ?。?)IPO圖</b></p><p>  圖3-5 “停止信號(hào)產(chǎn)生”模塊的IPO圖</p><p>  4.“產(chǎn)生組合波形”模塊</p>

57、<p><b> ?。?)功能描述</b></p><p>  該模塊的主要功能是選擇5種單一波形中的任意兩種波形信號(hào)進(jìn)行組合,將組合得到的信號(hào)顯示在LCD屏上。</p><p><b>  (2)IPO圖</b></p><p>  圖3-6 “產(chǎn)生組合波形”模塊的IPO圖</p><p&g

58、t;  5.“選擇2種波形信號(hào)”模塊</p><p><b> ?。?)功能描述</b></p><p>  該模塊的主要功能是選擇2種待組合的波形信號(hào),確定哪一種信號(hào)是第一種波形信號(hào),哪一種信號(hào)是第二種波形信號(hào)。</p><p><b> ?。?)IPO圖</b></p><p>  圖3-7“選

59、擇2種波形信號(hào)”模塊的IPO圖</p><p>  6.“組合信號(hào)”模塊</p><p><b>  (1)功能描述</b></p><p>  該模塊的主要功能是設(shè)置兩種波形的周期、幅度和相位值以后,在LCD屏上顯示兩種波形疊加后的組合波形信號(hào)。</p><p><b> ?。?)IPO圖</b>

60、</p><p>  圖3-8 “組合信號(hào)”模塊的IPO圖</p><p>  7.“判斷參數(shù)”模塊</p><p><b>  (1)功能描述</b></p><p>  該模塊的主要功能是判斷所選擇的2種單一波形信號(hào)的周期、幅度和相位值是否合法。</p><p><b> ?。?)I

61、PO圖</b></p><p>  圖3-9 “判斷參數(shù)”模塊的IPO圖</p><p>  8.“顯示新信號(hào)”模塊</p><p><b> ?。?)功能描述</b></p><p>  該模塊的主要功能是在LCD屏上顯示出組合后的新波形信號(hào)。</p><p><b>  

62、(2)IPO圖</b></p><p>  圖3-10 “顯示新信號(hào)”模塊的IPO圖</p><p><b>  4. 系統(tǒng)詳細(xì)設(shè)計(jì)</b></p><p>  系統(tǒng)詳細(xì)設(shè)計(jì)階段的主要任務(wù)是設(shè)計(jì)出程序的詳細(xì)規(guī)格說明,在這個(gè)階段將詳細(xì)地設(shè)計(jì)每個(gè)模塊,確定每個(gè)功能模塊所需要的算法和數(shù)據(jù)結(jié)構(gòu)。根據(jù)本系統(tǒng)的實(shí)際情況,本系統(tǒng)的詳細(xì)設(shè)計(jì)主要分為

63、系統(tǒng)人機(jī)界面設(shè)計(jì)、算法說明和系統(tǒng)各個(gè)功能模塊詳細(xì)說明三個(gè)部分。</p><p>  4.1 系統(tǒng)人機(jī)界面設(shè)計(jì)</p><p>  本系統(tǒng)主要由“產(chǎn)生單一波形”模塊、“產(chǎn)生組合波形”模塊和“相關(guān)說明”模塊三個(gè)功能模塊組成,為了使設(shè)計(jì)出來的界面簡(jiǎn)單明了,本系統(tǒng)采用選項(xiàng)卡的形式來分別說明各個(gè)模塊。選項(xiàng)卡中有三個(gè)頁(yè)面,分別是“產(chǎn)生單一波形”模塊的頁(yè)面、“產(chǎn)生組合波形”模塊的頁(yè)面和“相關(guān)說明”模塊的

64、頁(yè)面,具體如下所示。</p><p>  4.1.1 “產(chǎn)生單一波形”模塊界面及詳細(xì)說明</p><p>  “產(chǎn)生單一波形”模塊的界面如圖4-1所示: </p><p>  圖4-1 “產(chǎn)生單一波形”模塊界面</p><p>  該界面總體上分為“單一波形參數(shù)選擇”、“波形種類選擇”和“狀態(tài)信息顯示”三個(gè)部分,各部分的詳細(xì)說明如下:<

65、/p><p>  1)“單一波形參數(shù)選擇”部分:這部分要求選擇波形的幅度、周期、通道和相位值。波形的幅度值在默認(rèn)情況下是1000毫伏,用戶可以根據(jù)需要輸入0到1643毫伏之間的數(shù)字,以此來控制波形的幅度,如果輸入的幅度值不在0到1643毫伏之間,則會(huì)提示出錯(cuò)。類似的,波形的周期值在默認(rèn)情況下是500微秒,用戶也可以根據(jù)自己的需要輸入0到8000微秒之間的數(shù)字,由此控制波形的周期。如果輸入的周期值不在0到8000微秒之

66、間,也會(huì)提示出錯(cuò)。而波形的相位值在默認(rèn)情況下則是0度,用戶也可以根據(jù)需要輸入一個(gè)非負(fù)的整數(shù)值,從而控制波形的相位。同時(shí),由于DAC模塊有兩個(gè)通道,A通道和B通道,用戶可以人為地選擇使用哪一個(gè)通道,通過界面上的通道選擇下拉列表來選擇合適的通道。</p><p>  2)“波形種類選擇”部分:這部分主要是選擇要輸出的波形的種類。本系統(tǒng)可以輸出方波、正弦波、脈沖波、鋸齒波和三角波5種波形,用戶可以根據(jù)需要選擇其中的一種

67、輸出。如果想停止目前正在輸出的波形,選中“波形停止”單選按鈕即可。</p><p>  3)“狀態(tài)信息顯示”部分:該部分主要用于顯示目前DAC模塊的狀態(tài)和系統(tǒng)所輸出的波形的種類、周期、幅度和通道值,并且也可以顯示波形停止輸出的情況。</p><p>  4.1.2 “產(chǎn)生組合波形”模塊界面及詳細(xì)說明</p><p>  “產(chǎn)生組合波形”模塊的界面如圖4-2所示: &

68、lt;/p><p>  圖4-2 “產(chǎn)生組合波形”模塊界面</p><p>  該界面總體上分為“幅度、周期和相位選擇”、“波形種類選擇”、“狀態(tài)信息顯示”三個(gè)部分,各部分的作用與“產(chǎn)生單一波形”模塊中對(duì)應(yīng)部分的作用類似,下面詳細(xì)介紹與“產(chǎn)生單一波形”模塊不同的地方:</p><p>  1)“幅度、周期和相位選擇”部分:這部分也是要選擇波形信號(hào)的周期、幅度和相位值,但

69、是要選擇兩種波形信號(hào)的周期、幅度和相位值。每一種波形信號(hào)的幅度值在0到820毫伏之間,而周期值仍然是介于0到8000微秒之間,相位值為非負(fù)整數(shù)即可。由于組合波形信號(hào)不需要被顯示在輸出端子上,因此,沒有通道選擇這一項(xiàng)。</p><p>  2)“波形種類選擇”部分:這部分需要選擇任意兩種將被組合的波形信號(hào),如果選擇的波形種類沒有兩種或者超過了兩種,則會(huì)提示出錯(cuò),要求重新選擇波形的種類。</p><

70、;p>  3)“狀態(tài)信息顯示”部分:這部分主要用于顯示組合狀態(tài),例如,開始組合了沒有、哪種和哪種波形信號(hào)進(jìn)行組合了等等。</p><p>  4.1.3 “相關(guān)說明”模塊界面及詳細(xì)說明</p><p>  “相關(guān)說明”模塊主要介紹了整個(gè)系統(tǒng)所能實(shí)現(xiàn)的功能。其界面如下所示: </p><p>  圖4-3 “相關(guān)說明”模塊界面</p><p&

71、gt;  該界面主要分為“波形輸出說明”和“幅度和頻率的調(diào)節(jié)以及通道選擇說明”兩部分,前一部分介紹了系統(tǒng)能輸出的波形種類,后一部分則介紹了各個(gè)參數(shù)和它們的取值范圍。</p><p><b>  4.2算法說明</b></p><p>  本系統(tǒng)中的波形信號(hào)最終顯示在輸出端子或LCD屏上,因此,從某個(gè)角度來說,本系統(tǒng)主要包括“向輸出端子送波形信號(hào)”和“在LCD屏上畫模擬

72、波形”兩個(gè)部分。由于在本系統(tǒng)中,周期、幅度和相位的計(jì)算并不僅僅與單個(gè)模塊相關(guān),而是與系統(tǒng)里的很多模塊相關(guān),因此在這里進(jìn)行詳細(xì)的說明。</p><p>  1)“向輸出端子送波形信號(hào)”部分主要是利用描點(diǎn)畫圖的方法,依次描出相應(yīng)波形的各個(gè)點(diǎn),然后將各個(gè)點(diǎn)的數(shù)據(jù)依次送入DAC模塊,再通過輸出端子顯示相應(yīng)的波形,如圖4-4是一種斜三角波信號(hào)的形成原理。由于相鄰點(diǎn)之間的時(shí)間差是微秒級(jí)的,即各個(gè)取樣點(diǎn)之間非常密集,因此在輸出

73、端子上顯示出來的波形的鋸齒狀并不明顯。</p><p>  圖4-4 斜三角波形成原理</p><p>  在這里,為了便于說明,設(shè)周期值為m_cycle,幅度值為m_range。</p><p>  對(duì)于方波,如圖4-5所示:</p><p>  圖4-5 方波波形示意圖</p><p>  由于每個(gè)周期內(nèi)只有高、低

74、兩種電平的交替,并且這兩種電平持續(xù)的時(shí)間相等。因此,每個(gè)周期m_cycle時(shí)間內(nèi)要向DAC模塊輸入兩次數(shù)據(jù)(一次高電平數(shù)據(jù)和一次低電平數(shù)據(jù)),間隔m_cycle/2微秒的時(shí)間。在每輸入一次數(shù)據(jù)后的m_cycle/2微秒時(shí)間內(nèi),DAC模塊的電壓持續(xù)為高電平或低電平。幅度方面,由于DAC模塊的轉(zhuǎn)換精度為8位,在軟件上的精度可達(dá)到2的8次方,范圍從0~255,即DAC模塊理論上能輸出的最大電壓值是255mV。而實(shí)際所用的DAC模塊能輸出的最大

75、電壓值是3.3V,鑒于理論上DAC模塊能輸出的最大電壓值與實(shí)際上的最大值不同,因此要做一個(gè)轉(zhuǎn)換,轉(zhuǎn)換公式如下:</p><p>  理論幅度值=實(shí)際幅度值*理論電壓值/實(shí)際電壓值</p><p>  當(dāng)實(shí)際幅度值=m_range時(shí),理論幅度值=m_range*255mV/3300mV。又由于DAC模塊的范圍是0到255,那么中間值就為127(假設(shè)用中間值代表X軸所在的縱坐標(biāo)位置處)。因此對(duì)

76、于方波,前半周期輸送給DAC模塊的數(shù)字量就是127+ m_range*255/3300,而后半周期輸送給DAC模塊的數(shù)字量是127-m_range*255/3300(注意:為了保證127-m_range*255/3300不為負(fù)數(shù),m_range*255/3300的最大值只能達(dá)到127),最后就可以在輸出端子上看到方波了。關(guān)于“輸出端子上顯示方波”模塊的幅度和周期的算法可以參見算法清單4-2所示。</p><p>

77、  對(duì)于脈沖波,如圖4-6所示:</p><p>  圖4-6 脈沖波波形示意圖</p><p>  同樣由于每個(gè)周期內(nèi)只有高、低兩種電平的交替,并且高電平占1/4個(gè)周期,而低電平占3/4個(gè)周期(一種特殊的脈沖波)。因此,一個(gè)周期m_cycle時(shí)間內(nèi),當(dāng)向DAC模塊輸送代表高電平的數(shù)據(jù)以后,需等待m_cycle/4微秒的時(shí)間,再向DAC模塊輸送代表低電平的數(shù)據(jù),并再等待3*m_cycle/

78、4微秒的時(shí)間。脈沖波幅度值的變化與方波的相同,因此,在前1/4周期送入給DAC模塊的數(shù)字量是127+m_range*255/3300,而在后3/4周期輸送給DAC模塊的數(shù)字量是127-m_range*255/3300,最后就可以在輸出端子上看到脈沖波了。關(guān)于“輸出端子上顯示脈沖波”模塊的幅度和周期的算法可以參見算法清單4-4所示。</p><p>  對(duì)于正弦波,如圖4-7所示:</p><p

79、>  圖4-7 正弦波波形示意圖</p><p>  假設(shè)正弦曲線每變化一度描一個(gè)點(diǎn),則一個(gè)周期內(nèi)需描360個(gè)點(diǎn)。因此,一個(gè)周期m_cycle時(shí)間內(nèi)每次向DAC模塊輸入數(shù)據(jù)以后需要等待1/360 * m_cycle微秒的時(shí)間。而正弦波的幅度值是不停變化的,和方波一樣,需要做一個(gè)關(guān)于幅度的轉(zhuǎn)換,即m_range*255/3300,再利用變化的sin值與m_range*255/3300相乘,那么送入DAC模塊的

80、數(shù)字量就會(huì)相應(yīng)地變化了。同樣也需要加上127,即將127+ sin[i]*m_range*255/3300送入DAC模塊,這樣就可以在輸出端子上看到正弦波了。關(guān)于“輸出端子上顯示正弦波”模塊的幅度和周期的算法可以參見算法清單4-6所示。</p><p>  根據(jù)前面的敘述可知,在特定幅度m_range下,波形的上邊界是127+m_range*255/3300,下邊界是127- m_range*255/3300。因

81、此,對(duì)于三角波,當(dāng)要畫從左下角到右上角的邊時(shí),波形的縱坐標(biāo)需要慢慢地從127-m_range*255/3300變換到127+m_range*255/3300,如圖4-8所示,假設(shè)縱坐標(biāo)每變化1就描繪一個(gè)點(diǎn),則共要描繪2*m_range*255/3300個(gè)點(diǎn)。而總周期為m_cycle,那么每一邊就占m_cycle/2個(gè)周期(假設(shè)為等腰三角形),因此每次向DAC模塊輸送一個(gè)數(shù)據(jù)以后,需等待(m_cycle/2)/(2*m_range*255

82、/3300),即m_cycle/(4*m_range*255/3300)微秒的時(shí)間。同樣,當(dāng)要畫從左上角到右下角的邊時(shí),波形的縱坐標(biāo)需要慢慢地從127+m_range*255/3300變換到127-m_range*255/3300,并且每次向DAC模塊輸送一個(gè)數(shù)據(jù)以后,需要等待m_cycle/(4*m_range*255/3300)微秒的時(shí)間。關(guān)于“輸出端子上顯示三角波”模塊的幅度和周期的算法可以參</p><p&g

83、t;  圖4-8 三角波波形示意圖</p><p>  對(duì)于鋸齒波,如圖4-9所示:</p><p>  圖4-9 鋸齒波波形示意圖</p><p>  該波形的畫法與三角波的畫法基本相同。不同的是,它只需要畫一條從左下角到右上角的斜邊,該斜邊的縱坐標(biāo)也需要慢慢地從127-m_range*255/3300變換到127+m_range*255/3300,同樣假設(shè)縱坐標(biāo)

84、每變化1就描繪一個(gè)點(diǎn),則共需描出2*m_range*255/3300個(gè)點(diǎn)。而描這2*m_range*255/3300個(gè)點(diǎn)需要m_cycle的時(shí)間,因此每次向DAC模塊輸送一個(gè)數(shù)據(jù)以后,需要等待m_cycle/(2*m_range*255/3300),即m_cycle/(2*m_range*255/3300)微秒的時(shí)間。關(guān)于“輸出端子上顯示鋸齒波”模塊的幅度和周期的算法可以參見算法清單4-8所示。</p><p>

85、  2)“在LCD屏上畫模擬波形”部分主要是根據(jù)各個(gè)波形的不同情況,選定在120像素到300像素的范圍內(nèi)畫波形,將120像素(即crect.left+5,由于將背景圖放置在(115,165)位置處,并且背景圖有個(gè)5像素長(zhǎng)的邊框,因此120像素即crect.left+5位置處。為了簡(jiǎn)便起見,在后面的圖中省略了邊框)作為畫圖的左邊界,而將300像素作為畫圖的右邊界,這樣相差180像素的距離有助于對(duì)幅度和周期、相位的計(jì)算。在這部分中,同樣設(shè)周

86、期值為m_cycle,幅度值為m_range,而相位值則為m_phrase。</p><p>  為了確保輸出的波形在LCD屏上清晰好看,可以人為規(guī)定當(dāng)波形的周期值為500時(shí),在屏幕上可以看到2000/500=4個(gè)周期的波形,每個(gè)周期波形長(zhǎng)180/4=45像素;那么,當(dāng)波形的周期值為1000時(shí),每個(gè)周期波形長(zhǎng)就應(yīng)該為90像素,此時(shí),在屏幕上可以看到2個(gè)周期的波形。對(duì)于周期值為其它值的情況,可以依此類推……最后,根

87、據(jù)數(shù)學(xué)歸納法,可以總結(jié)出m_cycle與單個(gè)周期波形的長(zhǎng)度的關(guān)系:</p><p>  單個(gè)周期波形的長(zhǎng)度=180*m_cycle/2000</p><p>  而對(duì)于相位值m_phrase,由于理論上x度和x+360*n度(其中x為小于360的正整數(shù),n為正整數(shù))的波形是一樣的,因此m_phrase需要做“?!边\(yùn)算,即m_phrase%360,這樣得到的相位值將在0到360之間,再將該值

88、除以360就是該相位所占用的周期數(shù)。自然地,我們可以想到,((m_phrase%360)/360)*(180*m_cycle/2000)是一個(gè)周期內(nèi)相位差為m_phrase%360的兩點(diǎn)間波形在LCD屏上的所占有的水平長(zhǎng)度。再將各個(gè)波形中點(diǎn)的橫坐標(biāo)減去(m_phrase%360)*180*m_cycle/(360*2000)得到新的波形,改變m_phrase的值就可以改變波形的相位,因此就可以根據(jù)變量m_phrase控制波形的相位了。&

89、lt;/p><p>  對(duì)于方波,由于半個(gè)周期波形的長(zhǎng)度是90*m_cycle/2000,因此,橫坐標(biāo)的值一直是以90*m_cycle/2000為單位進(jìn)行變換,當(dāng)m_cycle變換時(shí),波形在屏幕上顯示的個(gè)數(shù)也會(huì)變換。而方波的縱坐標(biāo)只有兩個(gè)值,分別是crect.top+60+m_range*60*255/(127*3300)和crect.top+60-m_range*60*255/(127*3300)(如圖4-10所示

90、,其中crect.top是畫圖區(qū)域的上邊界,crect.top+60是畫圖區(qū)域的中間線,整個(gè)畫圖區(qū)域長(zhǎng)180,高120。由前面的描述可以知道,m_range*255/3300的最大值可以達(dá)到127,而在LCD屏上能顯示的波形的最大幅度值為60,為了使波形能完全顯示在屏上,m_range*255/3300需要乘以60/127,即得到m_range*60*255/(127*3300))。至于什么時(shí)候是加上m_range*60*255/(12

91、7*3300),什么時(shí)候是減去m_range*60*255/(127*3300),這就需要看詳細(xì)的算法說明。當(dāng)m_range變換時(shí),方波的縱坐標(biāo)也會(huì)變化,這樣就可以</p><p>  4-10 畫圖區(qū)域示意圖</p><p>  對(duì)于脈沖波,它的周期與幅度的計(jì)算方法與方波的類似。只是1/4周期長(zhǎng)的波形的縱坐標(biāo)是crect.top+60-m_range*60*255/(127*3300)、

92、3/4周期長(zhǎng)的波形的縱坐標(biāo)是crect.top+60+m_range*60*255/(127*3300),因此,其算法與方波的略有不同。關(guān)于“LCD屏上顯示脈沖波”模塊的幅度和周期的算法可以參見算法清單4-5所示。</p><p>  對(duì)于正弦波,由于單個(gè)周期波形長(zhǎng)度為180*m_cycle/2000,假設(shè)橫坐標(biāo)每變化1就描繪一個(gè)點(diǎn),則共要描繪180*m_cycle/2000個(gè)點(diǎn),而正弦波一個(gè)周期需要達(dá)到2PI,

93、因此相鄰兩個(gè)點(diǎn)之間的角度變化2*PI/(180*m_cycle/2000),即4000*PI/(180*m_cycle)。設(shè)當(dāng)前點(diǎn)與第一個(gè)點(diǎn)間的角度差為m1(初始值為0),則當(dāng)橫坐標(biāo)變化1時(shí),將有 m1=m1+4000*PI/(180*m_cycle)。由前所述可得,當(dāng)前點(diǎn)到X軸的垂直距離將為sin(m1) *m_range*60*255/(127*3300),那么可得當(dāng)前點(diǎn)的縱坐標(biāo)為crect.top+60-m_range*60*25

94、5*</p><p>  sin(m1)/(127*3300)。關(guān)于“LCD屏上顯示正弦波”模塊的幅度和周期的算法可以參見算法清單4-7所示。</p><p>  對(duì)于三角波,如圖4-11所示,當(dāng)幅度值為m_range時(shí),假設(shè)縱坐標(biāo)每次變化1就描繪一個(gè)點(diǎn),則需要描繪2*m_range個(gè)點(diǎn)。由于單個(gè)周期波形長(zhǎng)度=180*m_cycle/2000,則半個(gè)周期波形長(zhǎng)度為90*m_cycle/20

95、00,因此每描一個(gè)點(diǎn),橫坐標(biāo)將變換(90*m_cycle/2000)/(2*range),即(45*m_cycle)/(2000*m_range),這樣就可以畫出三角波的一條邊了。同樣,畫另一條邊也按相同的計(jì)算方法。關(guān)于“LCD屏上顯示三角波”模塊的幅度和周期的算法可以參見算法清單4-11所示。</p><p>  圖4-11 三角波的幅度值與描點(diǎn)個(gè)數(shù)的關(guān)系</p><p>  對(duì)于鋸齒波

96、,它的周期與幅度的計(jì)算與三角波的類似。只是由于鋸齒波只需要畫一條邊,因此,每次當(dāng)邊的縱坐標(biāo)變化1時(shí),它的橫坐標(biāo)將會(huì)變換(90*m_cycle)/(2000*m_range)。關(guān)于“LCD屏上顯示鋸齒波”模塊的幅度和周期的算法可以參見算法清單4-9所示。</p><p>  4.3 系統(tǒng)各個(gè)功能模塊詳細(xì)說明</p><p>  本系統(tǒng)相對(duì)比較龐大,主要分為“產(chǎn)生單一波形”模塊、“產(chǎn)生組合波形

97、”模塊和“相關(guān)說明”模塊三個(gè)功能模塊。下面分別對(duì)“產(chǎn)生單一波形”模塊和“產(chǎn)生組合波形”模塊中比較重要的子模塊進(jìn)行詳細(xì)說明。</p><p>  其中1到8是“產(chǎn)生單一波形”模塊的子模塊,而9到12是“產(chǎn)生組合波形”模塊的子模塊。</p><p>  1. 系統(tǒng)初始化模塊</p><p><b>  1)模塊概述</b></p>&

98、lt;p>  該模塊的主要功能是打開或關(guān)閉DAC模塊。當(dāng)DAC模塊處于關(guān)閉狀態(tài)時(shí),該模塊可以打開DAC模塊,并產(chǎn)生5個(gè)掛起的線程,這些線程分別控制5種波形的輸出。而當(dāng)DAC模塊處于打開狀態(tài)時(shí),該模塊還可以關(guān)閉已經(jīng)打開的DAC模塊,終止各個(gè)線程的運(yùn)行。</p><p><b>  2)模塊流程圖</b></p><p>  該模塊的流程圖如下所示:</p&g

99、t;<p>  圖4-12 系統(tǒng)初始化模塊流程圖</p><p>  3)模塊主要算法說明</p><p>  本模塊主要是先判斷驅(qū)動(dòng)是否已經(jīng)被打開,如果沒有打開驅(qū)動(dòng),則打開驅(qū)動(dòng),并創(chuàng)建5個(gè)掛起的線程,改變狀態(tài)信息。否則,關(guān)閉驅(qū)動(dòng),掛起正在運(yùn)行的線程,改變狀態(tài)信息。主要算法如下所示:</p><p>  算法清單4-1 系統(tǒng)初始化模塊的算法</p

100、><p>  void Single::OpenOrCloseDrive()</p><p><b>  {</b></p><p>  if(dacdrivestate==false) // 如果驅(qū)動(dòng)關(guān)閉,則打開驅(qū)動(dòng)</p><p><b>  {</b>

101、;</p><p>  dacdrivestate=true;</p><p>  if(m_hDAC!=NULL)</p><p><b>  {</b></p><p>  MessageBox(_T("Device Open already"),_T("Open Device"

102、;),MB_OKCANCEL);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  m_hDAC = CreateFile(_T("DAC1:"),GENERIC

103、_READ | GENERIC_WRITE,0,</p><p>  NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL );</p><p><b>  }</b></p><p>  // 如果打開驅(qū)動(dòng)成功</p><p>  if( INVALID_HANDLE_VALUE

104、!= m_hDAC && m_hDAC != NULL )</p><p><b>  {</b></p><p>  創(chuàng)建五個(gè)線程用來輸出五種波形;</p><p><b>  改變狀態(tài)信息;</b></p><p><b>  }</b></p>

105、<p><b>  }</b></p><p>  else // 如果驅(qū)動(dòng)已打開,則關(guān)閉驅(qū)動(dòng)</p><p><b>  {</b></p><p>  dacdrivestate=false;</p>&

106、lt;p>  CloseHandle(m_hDAC); // 關(guān)閉m_hDAC句柄</p><p>  m_hDAC = NULL;</p><p><b>  改變狀態(tài)信息;</b></p><p>  掛起正在運(yùn)行的線程;</p><p><b>  }</

107、b></p><p><b>  }</b></p><p>  2. “方波信號(hào)”模塊</p><p><b>  1)模塊概述</b></p><p>  該模塊的功能是同時(shí)在輸出端子和LCD屏上顯示符合要求的方波,它調(diào)用了“LCD屏上顯示方波”和“輸出端子上顯示方波”兩個(gè)子模塊。<

108、/p><p>  “輸出端子上顯示方波”模塊主要是利用了描點(diǎn)的方法,描出構(gòu)造方波所需要的數(shù)據(jù),再將這些數(shù)據(jù)送給DAC模塊,DAC模塊經(jīng)過數(shù)模轉(zhuǎn)換,將送進(jìn)去的數(shù)字信號(hào)轉(zhuǎn)換為模擬電壓值,再將這些電壓值傳送給輸出端子,即可在輸出端子上看到方波。</p><p>  而在“LCD屏上顯示方波”模塊中,由于方波的周期、幅度和相位都已經(jīng)固定,因此該波形在LCD屏上是靜態(tài)的。</p><

109、p><b>  2)模塊流程圖</b></p><p>  “方波信號(hào)”模塊的流程圖如下所示:</p><p>  圖4-13 “方波信號(hào)”模塊的流程圖</p><p>  其中,“LCD屏上顯示方波”模塊的流程圖如下所示:</p><p>  圖4-14 “LCD屏上畫方波”模塊的流程圖</p>&

110、lt;p>  “Ready”函數(shù)的作用是做畫圖前的準(zhǔn)備工作,如創(chuàng)建畫筆、加載背景圖片等等。在后面幾個(gè)模塊中也會(huì)用到該函數(shù),作用都是相同的。</p><p>  3)模塊主要算法說明</p><p>  “方波信號(hào)”模塊是通過調(diào)用其子模塊來實(shí)現(xiàn)相應(yīng)的功能的,因此,在這里我們僅僅列出其子模塊的算法?!拜敵龆俗由巷@示方波”模塊主要是根據(jù)方波的特點(diǎn),在前半周期向DAC模塊輸送代表高電壓值的數(shù)

111、字,經(jīng)過一段時(shí)間的延時(shí),使電壓持續(xù)為高。然后,在后半周期向DAC模塊輸送代表低電壓值的數(shù)字,并使電壓在一段時(shí)間(該時(shí)間與電壓為高時(shí)延時(shí)的時(shí)間相同)內(nèi)持續(xù)為低。這樣不停地向DAC模塊交替地輸送高低電壓值,最后就可以在輸出端子上看到方波了。相關(guān)算法如下所示:</p><p>  算法清單4-2 “輸出端子上顯示方波”模塊的算法</p><p>  DWORD Single::OutputSqu

112、are(LPVOID lparam) // 輸出方波</p><p><b>  { </b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  data[0]=channel; // 輸出前半

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論