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

下載本文檔

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

文檔簡介

1、<p>  本科畢業(yè)設(shè)計(論文)資料</p><p><b>  2014屆</b></p><p>  本科畢業(yè)設(shè)計(論文)資料</p><p>  第一部分 畢業(yè)論文</p><p><b>  摘 要</b></p><p>  為了設(shè)計一款操作簡便、靈活

2、,結(jié)構(gòu)簡單、性能優(yōu)良的信號波形發(fā)生器,通過詳細(xì)了解STC89C52單片機(jī)和DAC0832數(shù)模轉(zhuǎn)換器的主要功能和工作原理,設(shè)計了一種以這兩個芯片為核心元件的信號波形發(fā)生器。通過硬件電路設(shè)計和軟件編程相結(jié)合方式來實現(xiàn)這個設(shè)計。采用STC89C52單片機(jī)作為控制核心,外圍采用數(shù)字/數(shù)模轉(zhuǎn)換電路(DAC0832)、運放電路(LM324)和按鍵等。采用軟件編程的方法來實現(xiàn)波形,將產(chǎn)生波形的程序用子程序從形式編寫,在需要哪種波形時調(diào)用相應(yīng)的子程序。

3、按鍵可以控制產(chǎn)生正弦波、方波、三角波和鋸齒波類型且可以方便地調(diào)節(jié)其頻率和幅值。設(shè)計中詳細(xì)介紹了該信號發(fā)生器的工作原理、硬件電路、軟件流程及技術(shù)關(guān)鍵。與傳統(tǒng)的信號發(fā)生器相比,該設(shè)計具有輸出波形穩(wěn)定、精度高等特色,且電路結(jié)構(gòu)緊湊、體積小,得到的輸出波形失真度低、頻譜純度高,具有非常大的現(xiàn)實意義。此種信號波形發(fā)生器可以廣泛地被應(yīng)用于自動控制系統(tǒng)、電子電路和教學(xué)實驗等領(lǐng)域。</p><p>  關(guān)鍵詞:信號波形發(fā)生器,A

4、T89C52單片機(jī),DAC0832數(shù)模轉(zhuǎn)換器,運算放大器</p><p><b>  ABSTRACT</b></p><p>  In order to design a simple-structured and flexible signal waveform generator which is easy to operate with excellent p

5、erformance,understand the main functions and work principle of signal chip computer STC89C52 and DAC0832 to design a kind of signal generator which is based on them.To achieve the design through hardware design and softw

6、are programming.Using STC89C52 as control core,peripheral circuit use DAC0832,LM324 and button and so on.Adopting the method of software programming to realize t</p><p>  Keywords: ,Signal generator, STC89C5

7、2, DAC0832,Operational amplifier </p><p><b>  目 錄</b></p><p><b>  摘 要I</b></p><p>  ABSTRACTII</p><p><b>  第1章 緒論1</b></p>

8、;<p>  1.1信號波形發(fā)生器發(fā)展歷程1</p><p>  1.2課題研究背景及前景1</p><p>  1.3課題研究的主要內(nèi)容2</p><p>  第2章 系統(tǒng)總體設(shè)計3</p><p>  2.1系統(tǒng)總體設(shè)計3</p><p>  2.2 主要芯片簡介3</p>

9、<p>  2.2.1 STC89C52單片機(jī)簡介3</p><p>  2.2.2 DAC0832 8位D/A轉(zhuǎn)換器芯片簡介5</p><p>  2.2.3運算放大器LM324簡介6</p><p>  第3章 系統(tǒng)硬件設(shè)計8</p><p><b>  3.1主控電路8</b></p&

10、gt;<p>  3.1.1外接晶振引腳XTAL1與XTAL29</p><p>  3.1.2 復(fù)位與復(fù)位電路9</p><p>  3.1.3 EA/VDD片內(nèi)程序存儲器選用端9</p><p>  3.2 D/A數(shù)模轉(zhuǎn)換電路10</p><p>  3.3按鍵接口電路10</p><p>

11、  第4章 系統(tǒng)軟件設(shè)計13</p><p>  4.1 主程序流程圖及程序13</p><p>  4.2各波形子程序14</p><p>  4.2.1 正弦波子程序14</p><p>  4.2.2 方波子程序14</p><p>  4.2.3 三角波子程序15</p><p

12、>  4.2.4 鋸齒波子程序15</p><p>  4.3 鍵盤掃描程序15</p><p><b>  結(jié) 論17</b></p><p><b>  參考文獻(xiàn)18</b></p><p><b>  致 謝19</b></p><

13、p>  附錄1 硬件電路原理圖20</p><p>  附錄2 設(shè)計源程序清單21</p><p><b>  第1章 緒論</b></p><p>  1.1 信號波形發(fā)生器發(fā)展歷程</p><p>  信號發(fā)生器是一種常用的信號源,廣泛應(yīng)用于電子電路、自動控制和科學(xué)實驗等領(lǐng)域。它是一種為電子測量和計量工作

14、提供符合嚴(yán)格技術(shù)要求的電信號設(shè)備。因此信號波形發(fā)生器和示波器、電壓表、頻率計等儀器一樣是最普通、最基本的,也是應(yīng)用最廣泛的電子儀器之一,幾乎所有的電參量的測量都需要用到信號發(fā)生器[8]。</p><p>  波形發(fā)生器作為一種常用的應(yīng)用電子儀器設(shè)備,傳統(tǒng)的波形發(fā)生器可以完全用硬件電路搭建,如應(yīng)用555振蕩電路可以產(chǎn)生正弦波,三角波,方波等波形,傳統(tǒng)的波形發(fā)生器多這種方式設(shè)計,這種方式不應(yīng)用單片機(jī),但是這種方式存在

15、波形質(zhì)量差,控制難,可調(diào)范圍小,電路復(fù)雜和體積大等缺點[10]。</p><p>  自六十年代以來,信號發(fā)生器有了迅速的發(fā)展,出現(xiàn)了函數(shù)信號發(fā)生器、掃頻信號發(fā)生器、合成信號發(fā)生器、程控信號發(fā)生器等新種類。各類信號發(fā)生器的主要性能指標(biāo)也都有 了大幅度的提高,同時再簡化機(jī)械結(jié)構(gòu)、小型化、多功能等各方面也有了顯著的進(jìn)展[8]。</p><p>  今年來隨著GSM、GPRS、3G、Blueto

16、oth 乃至已經(jīng)投入運營的標(biāo)準(zhǔn)的4G等移動通信以及LMDS、無線本地環(huán)路等無線接入的發(fā)展,同時加上合成孔徑雷達(dá)、多普勒沖雷達(dá)等現(xiàn)代軍事、國防、航空航天等在科技上的不斷創(chuàng)新與進(jìn)步,世界各國非常重視信號波形發(fā)生器的發(fā)展。所有的這些社會需求以及微電子技術(shù)、計算機(jī)技術(shù)、信號處理技術(shù)等本身的不斷進(jìn)步都極大刺激了信號波形發(fā)生器的發(fā)展。可以預(yù)料,隨著高性價比、更高集成度、更高處理速度的單片機(jī)的發(fā)展,基于單片機(jī)的信號波形發(fā)生器的應(yīng)用前景不可估量[8]。

17、</p><p>  1.2 課題研究背景及前景</p><p>  信號發(fā)生器是指產(chǎn)生所需參數(shù)的電測試信號的儀器,信號發(fā)生器又稱信號源或振蕩器。按信號波形可分為正弦信號、函數(shù)(波形)信號、脈沖信號和隨機(jī)信號發(fā)生器等四大類。在通信、廣播、電視系統(tǒng),在工業(yè)、農(nóng)業(yè)、生物醫(yī)學(xué)領(lǐng)域內(nèi),函數(shù)信號發(fā)生器在實驗室和設(shè)備檢測中都具有十分廣泛的用途。目前市場上大多數(shù)函數(shù)信號發(fā)生器都是非單片機(jī)控制的,但是這種

18、電路存在波形質(zhì)量差,功能簡單,控制難,可調(diào)范圍小,電路復(fù)雜和體積大等缺點。采用單片機(jī)函數(shù)信號發(fā)生器可產(chǎn)生正弦波、方波、三角波鋸齒波等,操作簡單易行[1]。</p><p>  基于單片機(jī)的信號發(fā)生器的設(shè)計,以性價比相對較大的STC89C52單片機(jī)為核心,以簡單、廉價的元器件構(gòu)筑,能夠產(chǎn)生高精度、高純度的正弦波、方波、三角波、和鋸齒波,同時可以實現(xiàn)波形自由切換,以及頻率和幅度在線調(diào)整[2]。利用單片機(jī)通過程序設(shè)計方

19、法來產(chǎn)生低頻信號,其頻率底線很低,具有線路相對簡單、結(jié)構(gòu)緊湊、體積小、價格低廉、頻率穩(wěn)定度搞、抗干擾能力強(qiáng)、用途廣泛等優(yōu)點,而且如果想產(chǎn)生新的波形時,只需對程序進(jìn)行修改即可[3]。</p><p>  我國信號發(fā)生器行業(yè)運行目前發(fā)展形勢良好,該行業(yè)企業(yè)正逐步向規(guī)模化、產(chǎn)業(yè)化方向發(fā)展,隨著我國信號發(fā)生器行業(yè)需求市場的不斷擴(kuò)大以及出口增長,我國信號發(fā)生器行業(yè)運行將會迎來一個新的發(fā)展機(jī)遇。了解國內(nèi)外信號發(fā)生器生產(chǎn)核心技

20、術(shù)的研發(fā)方向、工藝設(shè)備及趨勢,對于企業(yè)提升產(chǎn)品技術(shù)規(guī)格,提高市場競爭力十分關(guān)鍵。同時伴隨著我國信號發(fā)生器市場的迅猛發(fā)展,與之相關(guān)的核心生產(chǎn)技術(shù)應(yīng)用與研發(fā)必將成為業(yè)內(nèi)企業(yè)關(guān)注的焦點。而在我們大學(xué)生身邊,高校開展實驗過程中用到的多是低頻函數(shù)信號發(fā)生器,如果在高校實驗領(lǐng)域能夠應(yīng)用這項設(shè)計來取代傳統(tǒng)信號發(fā)生器,將具有非常重要的現(xiàn)實意義[8]。</p><p>  1.3 課題研究的主要內(nèi)容</p><

21、p>  以單片機(jī)為控制核心,設(shè)計一款結(jié)構(gòu)簡單,性能優(yōu)良的信號發(fā)生器。</p><p>  (1)使波形發(fā)生器產(chǎn)生大量的標(biāo)準(zhǔn)信號,并保證高精度、高穩(wěn)定性、可重復(fù)性和易操作性的電子儀器。</p><p>  (2)波形發(fā)生器具有連續(xù)的相位變換和頻率穩(wěn)定性等優(yōu)點,且可對頻率、幅值、波形進(jìn)行動態(tài)、及時地控制。</p><p>  (3)波形發(fā)生器具體功能是:實現(xiàn)利用單

22、片機(jī)STC89C52和8位D/A轉(zhuǎn)換芯片DAC0832共同實現(xiàn)正弦波、方波、三角波、鋸齒波這四種常見波形的發(fā)生,并且通過按鍵和利用DAC接口實現(xiàn)波形發(fā)生器可以產(chǎn)生鋸齒波、三角波、方波、正弦波等常用波形。</p><p>  (4)主要性能指標(biāo):波形的頻率范圍:8.3Hz—500Hz</p><p>  幅度的調(diào)節(jié)范圍:5V—15V</p><p>  (5)波形發(fā)生

23、器系統(tǒng)功能的軟件設(shè)計:采用C語言編寫應(yīng)用程序,輸出不同波形,可以調(diào)節(jié)相應(yīng)頻率。而信號波形的幅值通過放大電路的滑動變阻器調(diào)節(jié),最后波形可以直接接示波器進(jìn)行顯示。</p><p>  第2章 系統(tǒng)總體設(shè)計</p><p><b>  2.1系統(tǒng)總體設(shè)計</b></p><p>  采用的是STC89C52單片機(jī)用軟件實現(xiàn)信號的輸出。該單片機(jī)是一個

24、微型計算機(jī),包括中央處理器CPU、ROM、RAM、I/O接口電路、定時計數(shù)器、串行通訊等,是信號波形發(fā)生器設(shè)計的核心。設(shè)計的信號發(fā)生器總體系統(tǒng)框圖如2.1所示:</p><p>  圖2.1 總體系統(tǒng)框圖</p><p> ?。?)總體設(shè)計方案:采用單片機(jī)(STC89C52)和數(shù)模轉(zhuǎn)換芯片(DAC0832)為核心元件實現(xiàn)波形的產(chǎn)生,波形的產(chǎn)生由軟件編程控制,向D/A的輸入端按一定規(guī)律發(fā)送數(shù)

25、據(jù),經(jīng)過D/A轉(zhuǎn)換器和LM324運算放大器輸出,通過延時程序控制波形頻率。此方案通過軟件編程簡化了外部電路,原理簡單,容易實現(xiàn)[10]。</p><p>  具體是利用STC89C52單片機(jī)結(jié)合程序設(shè)計方法產(chǎn)生正弦波、方波、三角波、鋸齒波四種波形,然后通過D/A轉(zhuǎn)換器DAC0832將數(shù)字信號轉(zhuǎn)換成模擬信號,再經(jīng)過放大后輸出到示波器上顯示。通過按鍵電路來控制四種波形的類型選擇、頻率變化。</p>&l

26、t;p> ?。?)主要功能及使用介紹:本設(shè)計采用C語言編程設(shè)計波形產(chǎn)生程序,分別包括:鍵盤掃描程序、外部中斷程序、正弦波產(chǎn)生程序、方波產(chǎn)生程序、三角波產(chǎn)生程序、鋸齒波產(chǎn)生程序。主控電路通過STC89C52控制產(chǎn)生波形,并接有復(fù)位電路和振蕩電路。鍵盤電路通過三個按鍵控制波形循環(huán)選擇(KEY0)、頻率步進(jìn)加(KEY1)和頻率步進(jìn)減(KEY2)。三個按鍵通過上拉電阻接地,且通過或門芯片74HC4075BI并聯(lián)至P3.0、P3.1和P3.

27、2。頻率的加減由P3.1和P3.2調(diào)節(jié),幅度的調(diào)節(jié)由放大電路中的滑動變阻器來調(diào)節(jié)。數(shù)模轉(zhuǎn)換電路與放大電路組合一起,由P0口產(chǎn)生數(shù)字波形,經(jīng)DAC0832數(shù)模轉(zhuǎn)換和濾波放大輸出到示波器。</p><p>  (3)性能指標(biāo):產(chǎn)生的波形有:正弦波、方波、三角波、鋸齒波。</p><p>  頻率的調(diào)節(jié)范圍:8.3Hz-500Hz</p><p>  幅值調(diào)節(jié)范圍:5V-

28、15V</p><p>  2.2 主要芯片簡介</p><p>  2.2.1 STC89C52單片機(jī)簡介</p><p>  STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的

29、8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案[11]。</p><p>  具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM,32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個16 位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu)),全雙工串行口。另外 STC89

30、C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。最高運作頻率35MHz,6T/12T可選[11]。</p><p>  在此設(shè)計中,主要通過單片機(jī)的P1口8位I/O總線作為數(shù)據(jù)總線輸出數(shù)據(jù)到DCA0832,而用P2.6,P2

31、.7口作為控制總線來控制輸出波形的類型和數(shù)值。主控電路如圖2.2所示:</p><p>  圖2.2 STC89C52單片機(jī)引腳</p><p>  2.2.2 DAC0832 8位D/A轉(zhuǎn)換器芯片簡介</p><p>  DAC0832是采用CMOS工藝制成的單片電流輸出型并行8位D/A轉(zhuǎn)換器,工作電壓為+5—+15V,基準(zhǔn)電壓為+10V,而其轉(zhuǎn)化時間是1us.

32、DAC0832主要由兩個8位D/A轉(zhuǎn)換器組成,正是因為其片內(nèi)有輸入數(shù)據(jù)寄存器和DAC寄存器兩級數(shù)字量緩沖寄存器,故可以直接方便地與單片機(jī)接口。數(shù)字量進(jìn)入DAC寄存器的同時,D/A轉(zhuǎn)換器就開始數(shù)字量到模擬量的轉(zhuǎn)換工作,DAC寄存器中的數(shù)字量不變,則模擬輸出量也不變。DAC0832是以電流形式輸出的,而最終輸出需要用電壓形式,則可以外接運算放大器。</p><p>  一個8位D/A轉(zhuǎn)換器有8個輸入端(其中每個輸入端

33、是8位二進(jìn)制數(shù)的一位),有一個模擬輸出端。輸入可有28=256個不同的二進(jìn)制組態(tài),輸出為256個電壓之一,即輸出電壓不是整個電壓范圍內(nèi)任意值,而只能是256個可能值[11]。DAC0832的邏輯框圖和引腳排列圖如圖2.3所示:</p><p>  (a) DAC0832內(nèi)部結(jié)構(gòu)框圖 (b) DAC0832引腳圖</p><p>  圖2.3 DAC0832內(nèi)部結(jié)構(gòu)框

34、圖和引腳圖</p><p>  D0~D7:數(shù)字信號輸入端。</p><p>  ILE:輸入寄存器允許,高電平有效。</p><p>  CS:片選信號,低電平有效。</p><p>  WR1:寫信號1,低電平有效。</p><p>  XFER:傳送控制信號,低電平有效。</p><p>

35、  WR2:寫信號2,低電平有效。</p><p>  IOUT1、IOUT2:DAC電流輸出端。</p><p>  RFB:是集成在片內(nèi)的外接運放的反饋電阻。</p><p>  VREF:基準(zhǔn)電壓(-10~10V)。</p><p>  VCC:是源電壓(+5~+15V)。</p><p><b>  

36、AGND:模擬地</b></p><p>  NGND:數(shù)字地,可與AGND接在一起使用。</p><p>  DAC0832有如下3種工作方式:</p><p>  (1)單緩沖方式:LE1或LE2一直為高電平,只控制其中一級寄存器。單緩沖方式是控制輸入寄存器和DAC寄存器同時接收資料,或者只用輸入寄存器而把DAC寄存器接成直通方式。此方式適用于只有一

37、路模擬量輸出或幾路模擬量不要求同步輸出的情形。</p><p>  (2)雙緩沖方式:不讓LE1和LE2一直為高,控制兩級寄存器??刂芁E1從高變低,將從D0-D7進(jìn)入的數(shù)據(jù)存入“輸入寄存器”,而控制LE2從高變低,將輸入寄存器的數(shù)據(jù)存入DAC寄存器,同時開始D/A轉(zhuǎn)換。雙緩沖方式是先使輸入寄存器接收資料,再控制輸入寄存器的輸出資料到DAC寄存器,即分兩次鎖存輸入資料。此方式適用于多個D/A轉(zhuǎn)換同步輸出的情形。&

38、lt;/p><p> ?。?)直通方式:LE1和LE2一直為高電平,數(shù)據(jù)可以直接進(jìn)入D/A轉(zhuǎn)換器。直通方式是資料不經(jīng)兩級鎖存器鎖存,即 CS,XFER ,WR1 ,WR2 均接地,ILE接高電平。</p><p>  2.2.3 運算放大器LM324簡介</p><p>  LM324是四運放集成電路,它采用14腳雙列直插塑料封裝,外形如圖所示。它的內(nèi)部包含四組形式完全

39、相同的運算放大器, 除電源共用外,四組運放相互獨立。每一組運算放大器可用圖1所示的符號來表示,它有5個引出腳,其中“+”、“-”為兩個信號輸入端,“V+”、“V-”為正、負(fù)電源端,“Vo”為輸出端。兩個信號輸入端中,Vi-(-)為反相輸入端,表示運放輸出端Vo的信號與該輸入端的位相反;Vi+(+)為同相輸入端,表示運放輸出端Vo的信號與該輸入端的相位相同[11]。LM324的 引腳排列如圖2.4所示:</p><p&

40、gt;  (a) LM324運算放大器功能圖 (b)LM324運算放大去引腳圖</p><p>  圖2.4 LM324運算放大器功能圖和引腳圖</p><p>  由于LM324四運放電路具有電源電壓范圍寬,靜態(tài)功耗小,可單電源使用,價格低廉等優(yōu)點,因此被廣泛應(yīng)用在各種電路中[11]。</p><p>  2.2.4 或門芯片74HC

41、4075簡介</p><p>  74HC4075是三輸入或門芯片,74HC4075的邏輯功能和引出端排列與CC4075相一致,其工作速度與LS_TTL相似,而功耗仍與COMS4000系列一樣。該器件所有輸入輸出均有內(nèi)部保護(hù)電路,以減少由于靜電感應(yīng)而損壞器件的可能性。74HC4075就有高抗噪聲度和大的驅(qū)動負(fù)載的能力[11]。其寬的電源電壓范圍是2—6V,低的輸入的電流是1uA,高的負(fù)載能力是10個LS_TTL負(fù)

42、載,高的工作速度(典型值)是tpd=11ns(VCC=5V,C=15pF)和低的電源電流20uA。</p><p><b>  2.3 本章小結(jié)</b></p><p>  本章主要介紹設(shè)計的總體方案和硬件的基礎(chǔ)知識,為后面的硬件設(shè)計和軟件設(shè)計作準(zhǔn)備。其中總體方案本著“廉價成本,性能穩(wěn)定,簡單靈活”的設(shè)計原則,接著詳細(xì)闡述本設(shè)計的總體思路,以設(shè)計框圖的形式呈現(xiàn),簡單明

43、了。后面對設(shè)計的信號波形發(fā)生器的工作原理和使用作了詳細(xì)的說明和介紹,其中工作原理是采用STC89C52控制器產(chǎn)生波形數(shù)字信號,再結(jié)合數(shù)模轉(zhuǎn)換芯片DAC0832對數(shù)字信號進(jìn)行轉(zhuǎn)換輸出模擬信號,而由于DAC0832的工作特性和工作方式,需要設(shè)計一個放大電路對模擬信號進(jìn)行放大處理,從而實現(xiàn)信號的穩(wěn)定輸出,進(jìn)而實現(xiàn)對信號波形的幅度調(diào)節(jié)。對于此信號波形發(fā)生器的操作使用,主要從外部鍵盤接口電路和復(fù)位電路進(jìn)行說明,為了實現(xiàn)信號波形發(fā)生器使用的靈活性和

44、易操作性,我采用或門芯片連接,結(jié)合單片機(jī)的豐富的輸入輸出接口,從而實現(xiàn)鍵盤電路的簡單易操作。總體方案作為系統(tǒng)設(shè)計的骨架和精髓,我對方案進(jìn)行了反復(fù)的修改和驗證,以求方案的完整和可行性。</p><p>  第二個主要部分是對所用到的相關(guān)芯片作了詳細(xì)介紹,不僅包括各個芯片的外部框圖和功能引腳圖,后面還詳細(xì)介紹芯片的使用規(guī)則和使用功能。所用到的芯片包括核心芯片STC89C52單片機(jī)和DAC0832數(shù)模轉(zhuǎn)換芯片,還有運算

45、放大器芯片LM324和或門芯片74HC4075。通過各個芯片的使用介紹和功能介紹為后續(xù)工作做好了鋪墊,也對自己靈活使用相關(guān)芯片提供準(zhǔn)備,這對后面的硬件設(shè)計電路圖和軟件程序靈活設(shè)計有很大的幫助。</p><p>  第3章 系統(tǒng)硬件設(shè)計</p><p><b>  3.1 主控電路</b></p><p>  STC89C52是一種低功耗、高性

46、能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器,因此這種芯片構(gòu)成的最小系統(tǒng)簡單、可靠。用STC89C52單片機(jī)構(gòu)成最小應(yīng)用系統(tǒng)時,再接上時鐘電路和復(fù)位電路即可。由于芯片面積限制、集成度的非常高,最小應(yīng)用系統(tǒng)只能用作一些小型的控制單元。本設(shè)計使用其大量的I/O口線和三個16位可編程的定時器/計數(shù)器。定時器/計數(shù)器可以工作在計數(shù)和定時兩種模式并且有4種工作方式。在波形發(fā)生器中,將其作定時器使用,通過計算來精確地確定波形的兩

47、個采樣點輸出之間所需的延遲時間。其中模式1采用的是16位計數(shù)器方式,當(dāng)T0和T1被允許計數(shù)后,從設(shè)定的初值開始加計數(shù),最高位產(chǎn)生溢出時CPU發(fā)中斷請求,從而完成波形頻率的調(diào)節(jié)[1]。這些操作由固化在STC89C52的程序自動控制。主控電路如圖3.1所示:</p><p>  圖3.1 主控電路</p><p><b>  主控電路功能:</b></p>

48、<p> ?。?)主控電路包括復(fù)位電路和晶體振蕩電路,其中復(fù)位電路是上電復(fù)位與手動復(fù)位一體,晶體振蕩電路產(chǎn)生振蕩頻率。</p><p> ?。?)作為信號發(fā)生器的核心電路之一,主控電路芯片STC89C52通過執(zhí)行反映控制要求的用戶程序來實現(xiàn)各種數(shù)字波形的輸出,主要使用單片機(jī)豐富的I/O接口、定時器和外部中斷。定時器應(yīng)用于延時以達(dá)到按鍵去抖和頻率的調(diào)節(jié),外部中斷應(yīng)用于按鍵控制,I/O接口用于數(shù)字量的傳輸

49、。</p><p>  3.1.1 外接晶振引腳XTAL1與XTAL2</p><p>  單片機(jī)之所以要加振蕩器是因為單片機(jī)內(nèi)CPU在執(zhí)行指定程序是,要經(jīng)過“取指”、“譯碼”,再定時給相關(guān)電路發(fā)出控制信號,以實現(xiàn)“機(jī)器碼指令”所要求的功能。這就要求內(nèi)部必須有一個基準(zhǔn)時鐘。可通過外接晶振或振蕩器信號二種方式來實現(xiàn),一般采用外接晶振的方法較方便。XTAL1(19),XTAL2(18)為外接晶

50、振的兩個引腳。接入晶振時,還要接入兩個20-30pF的瓷片電容C1,C2,晶振頻率因單片機(jī)工作速度而異,Intel MCS-51系列為1.2—12MHz。當(dāng)采用外部振蕩器時,信號接入(19)腳,(18)腳懸浮。振蕩器的12分頻為一個機(jī)器周期,當(dāng)外接12MHz晶振是,一個機(jī)器周期是1Us。[6] </p><p>  3.1.2 復(fù)位與復(fù)位電路</p><p>  單片機(jī)必須進(jìn)行復(fù)位,是

51、因為單片機(jī)內(nèi)的CPU“取指”過程即為CPU從PC指針?biāo)付ǖ某绦騼Υ嫫鱎OM地址單元中讀取“機(jī)器碼”過程。單片機(jī)加電后,PC指針應(yīng)指向ROM中某個固定的單元。當(dāng)然,程序開始的第一條指令也應(yīng)放在ROM的這一地址單元內(nèi),這樣整個程序才能有序的執(zhí)行。這個單元就是ROM的0000H單元。只有上電復(fù)位正常后,PC值才為0000H,即指向ROM的0000H。此外,專用寄存器SFR中SP為07H,即指向片內(nèi)數(shù)據(jù)儲存器(片內(nèi)RAM)07H單元,P0-P

52、3值為0FFH,其余專用寄存器值大多為00H。[6]</p><p>  復(fù)位的方法:當(dāng)振蕩器正常工作時,RST(9)腳上出現(xiàn)兩個機(jī)器周期的高電平將使單片機(jī)有效復(fù)位。考慮到振蕩器有一定的起振時間,該引腳必須保持10ms以上的高電平,才能有效復(fù)位。復(fù)位電路有開機(jī)自動復(fù)位和手動復(fù)位。注意:復(fù)位信號為2個以上機(jī)器周期的高電平,單片機(jī)復(fù)位后正常工作時應(yīng)該為低電平,如果未加復(fù)位電平或復(fù)位后復(fù)位電平仍未撤除,則單片機(jī)不能正常

53、工作,此時,可檢查RST電壓及相關(guān)器件[6]。</p><p>  3.1.3 EA/VDD片內(nèi)程序存儲器選用端</p><p>  單片機(jī)復(fù)位后,PC指針可能指向片內(nèi)ROM0000H或片外ROM0000H單元,這取決于EA/VDD(31)腳外接高電平(指向片內(nèi)ROM0000H)還是低電平(指向片外ROM0000H)。STC89C52內(nèi)部有8KBROM,這時EA(31)腳需外接高電位VCC

54、[6]。</p><p>  3.2 D/A數(shù)模轉(zhuǎn)換電路</p><p>  在DAC0832數(shù)模轉(zhuǎn)換器的三種工作方式中,較常用的是第二種方式。而單緩沖是適用于只有一路模擬量輸出或幾路模擬量異步輸出的情形。本設(shè)計采用的是第二種單緩沖方式。這種單緩沖方式是DAC0832的兩個緩沖器同時受控,將兩級寄存器的控制信號并接,輸入數(shù)據(jù)在控制信號的作用下,直接送入DAC寄存器。也可以采用把WR2和XF

55、ER這兩個信號固定接地的方法[5]。D/A數(shù)模轉(zhuǎn)換電路如圖3.2所示:</p><p>  圖3.2 數(shù)模轉(zhuǎn)換與放大電路</p><p>  圖中ILE接+5V電源,片選信號CS和傳送信號XFER都連接到P2.0口,寫選通線WR1和WR2相連同接單片機(jī)的P2.1口,CPU對DAC0832執(zhí)行一次寫操作,把一個數(shù)據(jù)就直接寫入DAC寄存器中,DAC0832的輸出模擬信號隨之相應(yīng)的變化。由于D

56、AC0832是電流型輸出,故在電路中采用運算放大器LM324實現(xiàn)I/V轉(zhuǎn)換。</p><p><b>  此電路功能:</b></p><p> ?。?)主要利用數(shù)模轉(zhuǎn)換芯片DAC0832和運算放大器LM324芯片的功能實現(xiàn)數(shù)模的轉(zhuǎn)換和信號的放大調(diào)節(jié)。</p><p> ?。?)信號波形幅度調(diào)節(jié)是通過LM324兩級放大電路中第二級的滑動變阻器的

57、調(diào)節(jié)來實現(xiàn)。</p><p>  其中放大倍數(shù)P=U0/Ui=(R3+RV)/R1……………………………………(3.1)</p><p>  3.3 按鍵接口電路</p><p>  鍵盤用的是上拉電阻,選通接地的形式。</p><p>  KEY0鍵功能:正弦波、方波、三角波、鋸齒波循環(huán)選擇。</p><p>  K

58、EY1鍵功能:頻率加鍵。</p><p>  KEY2鍵功能:頻率減鍵。</p><p>  按鍵電路通過邏輯或門芯片74HC0475連接到單片機(jī)STC89C52的P3.3/INT1(13)腳,產(chǎn)生外部中斷請求信號。同時并聯(lián)連接P3.0、P3.1和P3.2接口,通過中斷服務(wù)程序控制相關(guān)功能。按鍵接口電路如圖3.3所示:</p><p>  圖3.3 按鍵接口電路&l

59、t;/p><p><b>  按鍵電路功能:</b></p><p>  (1)按鍵電路運用三個按鍵實現(xiàn)對波形的循環(huán)選擇和頻率的調(diào)節(jié),頻率的調(diào)節(jié)是通過鍵盤掃面程序和延時程序來實現(xiàn)。</p><p>  (2)按鍵電路控制是通過按鍵連接或門芯片74HC4075輸入到外部中斷1接口實現(xiàn)的。</p><p>  (3)頻率調(diào)節(jié)范圍

60、的計算:由于延時程序是采用定時器0查詢方式延時1ms,則信號波形周期延時2ms,而按鍵的積累數(shù)目為0—60,那么最小頻率Fmin=1/(2*60)*1000=8.3Hz 最大頻率Fmax=1/2*1000=500Hz。</p><p><b>  3.3 本章小結(jié)</b></p><p>  本章主要對本設(shè)計的硬件電路設(shè)計作了詳細(xì)的介紹,包括其工作原理和主要功能介紹。

61、本章節(jié)詳細(xì)介紹了硬件電路的各個部分,包括主控電路、數(shù)模轉(zhuǎn)換電路及波形放大電路和鍵盤接口電路。</p><p>  主控電路詳細(xì)介紹了設(shè)計中核心部分之一,STC89C52單片機(jī)控制產(chǎn)生四種基本信號波形,主要運用單片機(jī)的豐富的輸入輸出接口和定時、外部中斷,配以單片機(jī)外部上電和手動復(fù)位電路及振蕩電路,實現(xiàn)數(shù)字信號波形的產(chǎn)生和復(fù)位控制。主控電路合理運用了單片機(jī)的輸入輸出接口,一是使硬件電路擁有簡約外觀,具有美感,二是使得

62、編程簡單化。</p><p>  數(shù)模轉(zhuǎn)換電路及放大電路是硬件電路設(shè)計另一個核心部分,數(shù)模轉(zhuǎn)換電路對輸入的數(shù)字信號波形進(jìn)行數(shù)模轉(zhuǎn)換,輸出模擬信號。數(shù)模轉(zhuǎn)換芯片擁有三種工作方式,我采用的是第二種工作方式。通過詳細(xì)了解了DAC0832數(shù)模轉(zhuǎn)換芯片引腳功能和接線方式,順利連接好相關(guān)接線口,從而實現(xiàn)數(shù)模轉(zhuǎn)換功能。由于數(shù)模轉(zhuǎn)換芯片的工作特性,需要配以相應(yīng)的放大電路以實現(xiàn)穩(wěn)定波形的輸出,也便于輸出波形的幅度的調(diào)節(jié)。</

63、p><p>  鍵盤接口電路是用戶操作信號波形發(fā)生器的界面,運用單片機(jī)的外部中斷和定時中斷,和或門芯片,實現(xiàn)了鍵盤電路的簡便和易操作,鍵盤電路包括三個主要按鍵,實現(xiàn)波形信號的循環(huán)選擇和頻率的調(diào)節(jié)。</p><p>  通過把硬件電路分各個部分電路進(jìn)行剖析,并進(jìn)行相應(yīng)功能介紹,以便使用硬件電路的合理連接實現(xiàn)設(shè)計功能。</p><p>  第4章 系統(tǒng)軟件設(shè)計</p

64、><p>  4.1 主程序流程圖及程序</p><p>  信號波形發(fā)生器的軟件設(shè)計主要包括:按鍵掃描與處理程序、正弦波產(chǎn)生子程序、方波產(chǎn)生子程序、三角波產(chǎn)生子程序、三角波產(chǎn)生子程序、鋸齒波產(chǎn)生子程序幾個主要部分。主程序的主要功能是接收用戶鍵輸入的數(shù)據(jù)(信號類型的選擇和數(shù)據(jù)的調(diào)節(jié))和控制指令,單片機(jī)發(fā)送數(shù)據(jù)及控制指令,按要求輸出信號[2]。系統(tǒng)主程序流程圖如圖4.1所示:</p>

65、<p><b>  開始</b></p><p>  系統(tǒng)初始化 </p><p><b>  波形顯示</b></p><p>  KEY0鍵是否按下 Y 由KEY4、KEY5鍵的輸入 調(diào)出正弦波子程序&

66、lt;/p><p><b>  頻率、幅度值調(diào)節(jié)</b></p><p><b>  N</b></p><p>  KEY1鍵是否按下 Y 由KEY4、KEY5鍵的輸入 調(diào)出方波子程序</p><p><b>  頻率、幅度值調(diào)節(jié)</b><

67、/p><p><b>  N</b></p><p>  KEY2鍵是否按下 Y 由KEY4、KEY5鍵的輸入 調(diào)出三角波子程序</p><p><b>  頻率、幅度值調(diào)節(jié)</b></p><p><b>  N</b></p>&

68、lt;p>  KEY3鍵是否按下 Y 由KEY4、KEY5鍵的輸入 調(diào)出鋸齒波子程序</p><p><b>  頻率、幅度值調(diào)節(jié)</b></p><p>  圖4.1 主程序流程圖</p><p>  根據(jù)設(shè)計要求,在程序運行時,當(dāng)接收到來自外界的命令,需要輸出某種波形時就調(diào)用相應(yīng)的波形子程序和延時程

69、序。系統(tǒng)子程序的調(diào)用是通過按鍵的選擇來實現(xiàn),然后根據(jù)按鍵的情況計算得出相應(yīng)的頻率和幅值,啟用延時程序進(jìn)行頻率的調(diào)節(jié)。</p><p>  主程序主要包括系統(tǒng)的初始化、按鍵的掃描、頻率幅度調(diào)節(jié)和子程序的調(diào)用。其中系統(tǒng)初始化指定時中斷和外部中斷的初始化,按鍵掃描主要是對按鍵接口電路的三個按鍵,通過循環(huán)選擇鍵選擇各種波形,頻率選擇鍵調(diào)節(jié)波形頻率,幅度調(diào)節(jié)通過放大電路的滑動變阻器調(diào)節(jié)。最后可以直接通過示波器顯示。<

70、/p><p><b>  4.2各波形子程序</b></p><p>  正弦波信號產(chǎn)生原理:單片機(jī)內(nèi)部數(shù)據(jù)只能以0、1輸出,所產(chǎn)生的信號也都是離散信號。為了能夠讓單片機(jī)實現(xiàn)正弦波信號輸出的功能,采用對信號采樣、量化的方法。在設(shè)計中,對正弦信號進(jìn)行采樣,通過查表來實現(xiàn)輸出不同的幅度值。采樣點越密,信號失真度也就越小[3]。</p><p>  方波

71、信號產(chǎn)生原理:通過等時間間隔地輸出上限電平和下限電平來產(chǎn)生,相等時間用延時程序來實現(xiàn)。</p><p>  三角波信號產(chǎn)生原理:通過從最小值到最大值和從最大值到最小值的循環(huán)來實現(xiàn)三角波的輸出,頻率由延時程序來調(diào)節(jié)。</p><p>  鋸齒波信號產(chǎn)生原理:通過累加產(chǎn)生鋸齒波形。頻率由延時程序來實現(xiàn)。</p><p>  4.2.1 正弦波子程序</p>

72、<p>  void sin() //正弦波 </p><p><b>  { </b></p><p>  uchar i; </p><p><b>  CS_DA=0; </b></p><p><b>  WR_DA=0; </b></p

73、><p>  for(i=0;i<255;i++) </p><p><b>  { </b></p><p>  P0=SinTab[i]; </p><p>  delayms(f); </p><p><b>  }</b></p><p>&

74、lt;b>  }</b></p><p>  4.2.2 方波子程序</p><p>  void squwave() //方波 </p><p><b>  { </b></p><p><b>  uchar i; </b></p><p>&l

75、t;b>  CS_DA=0; </b></p><p><b>  WR_DA=0; </b></p><p>  for(i=100;i>0;i--) </p><p><b>  { </b></p><p><b>  P0=0; </b><

76、/p><p>  delayms(f); </p><p><b>  } </b></p><p>  for(i=100;i>0;i--) </p><p><b>  { </b></p><p><b>  P0=255; </b></p

77、><p>  delayms(f); </p><p><b>  } </b></p><p><b>  } </b></p><p>  4.2.3 三角波子程序</p><p>  void triwave() //三角波 </p><

78、p><b>  { </b></p><p><b>  uchar i; </b></p><p><b>  CS_DA=0; </b></p><p><b>  WR_DA=0; </b></p><p>  for(i=0;i<255

79、;i++) </p><p><b>  { </b></p><p><b>  P0=i; </b></p><p>  delayms(f); </p><p><b>  } </b></p><p>  while(i--) </p>

80、;<p><b>  { </b></p><p><b>  P0=i; </b></p><p>  delayms(f); </p><p><b>  } </b></p><p><b>  } </b></p>&l

81、t;p>  4.2.4 鋸齒波子程序</p><p>  void sawwave() //鋸齒波 </p><p><b>  { </b></p><p>  unsigned char i; </p><p><b>  CS_DA=0; </b></p><p

82、><b>  WR_DA=0; </b></p><p>  for(i=255;i>0;i--) </p><p><b>  { </b></p><p><b>  P0=i; </b></p><p>  delayms(f); </p>

83、<p><b>  } </b></p><p><b>  } </b></p><p>  4.3 鍵盤掃描程序</p><p>  void service_INT1(void) interrupt 2 </p><p><b>  { </b></p

84、><p>  if(key0==0) </p><p><b>  { </b></p><p>  delayms(10);//按鍵消抖 </p><p>  if(key0==0) m++; </p><p>  while(!key0);//松手檢測 </p><p>&

85、lt;b>  } </b></p><p>  if(key1==0) </p><p><b>  { </b></p><p>  delayms(10); </p><p>  if(key1==0) f=f+1; </p><p>  while(!key1);//松手檢

86、測 </p><p><b>  } </b></p><p>  if(key2==0) </p><p><b>  { </b></p><p>  delayms(10); </p><p>  if(key2==0) f=f-1; </p><p

87、>  while(!key2);//松手檢測 </p><p><b>  } </b></p><p>  if(m>4) m=0; </p><p>  if(f>60) f=0; </p><p><b>  } </b></p><p><b

88、>  4.3 本章小結(jié)</b></p><p>  本章通過介紹總體的軟件編程流程圖,使得軟件設(shè)計的目標(biāo)一目了然.接下來通過五個主要子程序的介紹,詳細(xì)闡述了軟件設(shè)計的難點和重點.五個主要子程序包括:鍵盤掃描程序,正弦撥產(chǎn)生子程序,方波產(chǎn)生子程序,三角波產(chǎn)生子程序,和鋸齒波產(chǎn)生子程序.通過軟件編程大大簡化了硬件電路,也有利于消除硬件電路帶來的一些問題,如波形產(chǎn)生純度和噪聲問題等.</p>

89、;<p><b>  結(jié) 論</b></p><p>  (1)本設(shè)計按照簡單化,便捷化和價格低廉的原則,研究了基于OTC89C52單片機(jī)的信號波形發(fā)生器,采用軟硬件相結(jié)合的方式,通過相應(yīng)程序的控制,可以產(chǎn)生一系列有規(guī)律的信號波形,滿足了設(shè)計任務(wù)的要求。設(shè)計這樣一個信號波形發(fā)生器具有性價比高、結(jié)構(gòu)體積小、穩(wěn)定度高、實現(xiàn)方便、易于操作等特點,而且升級的空間很大(無論是硬件方面還

90、是軟件方面都有很大的提升空間)。由于此設(shè)計具有優(yōu)良的性能和高性價比,無論其在控制控制領(lǐng)域、實驗領(lǐng)域還是廣泛的電子領(lǐng)域都有非常大的現(xiàn)實意義。此方案解決了傳統(tǒng)信號發(fā)生器所面臨的低性價比和性能的不穩(wěn)定性等問題。 </p><p>  (2)當(dāng)然,此設(shè)計方案所設(shè)計的信號波形發(fā)生器尚存在不足之處,主要有兩個方面,第一是缺乏頻率準(zhǔn)確顯示的模塊,可以配備相應(yīng)的數(shù)字頻率計模塊,但如何將顯示的精度與信號源的頻段配合有待進(jìn)一步討論研

91、究:第二是輸出級可以配以幅度顯示的儀表,并且放大電路有待進(jìn)一步改進(jìn),使其具有更強(qiáng)的輸出能力,數(shù)模芯片也可優(yōu)化選擇。</p><p>  (3)此設(shè)計方案最大的特點是具有很大的升級空間,硬件設(shè)計方面可以考慮采用解決以上不足之處的方案,配以相應(yīng)的顯示模塊;而在軟件設(shè)計方面,如需要其他各種有規(guī)律波形,只要加入相應(yīng)的子程序即可,且頻率和幅度的調(diào)節(jié)也可精確量化。</p><p><b> 

92、 參考文獻(xiàn)</b></p><p>  [1] 李偉龍.基于單片機(jī)的函數(shù)信號發(fā)生器設(shè)計 [A].蘭州:西北民族大學(xué),2013.</p><p>  [2]  陳華敏, 任立民.基于AT89C51 的信號發(fā)生器的設(shè)計[J].現(xiàn)代電子技術(shù),2011,34(2):127-130.</p><p>  [3] 田蛟,展文豪,張宏偉.基于單片機(jī)的信

93、號發(fā)生器設(shè)計[A].石家莊:軍械工程學(xué)院光學(xué)與電子工程系,2010-11-8. </p><p>  [4] 一凡設(shè)計網(wǎng)[DB/OL].</p><p>  http://www.1-fun.com/design/article/2013-1-5/1187-1.html 2013-1-5.</p><p>  [5] 歐偉明,何靜,凌云,劉劍等.單片機(jī)原理與應(yīng)用

94、系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2009-7.</p><p>  [6] 梁巧艷,楊會彩,杜延虎.一種基于AT89C51低頻信號源的設(shè)計[J].延安:延安大學(xué),2008-05-08.</p><p>  [7] 胡應(yīng)坤.基于單片機(jī)的數(shù)字函數(shù)信號發(fā)生器設(shè)計[A].廣東揭陽:廣東環(huán)境保護(hù)工程職業(yè)學(xué)院,2013-7.</p><p>  [8] 豆丁網(wǎng).信號

95、發(fā)生器的發(fā)展過程及現(xiàn)狀[DB/OL].</p><p>  http://www.docin.com/p-145347825.html</p><p>  [9] 馬忠梅,籍順心,張凱,馬巖.單片機(jī)的C語言應(yīng)用程序設(shè)計[M].北京:北京航空航天大學(xué)出版社,2007-1.</p><p>  [10] 道客巴巴.基于DAC0832的波形發(fā)生器設(shè)計與實現(xiàn)[DB/OL]

96、.http://www.doc88.com/p-906975853177.html</p><p>  [11] 21ic基礎(chǔ)知識.LCD1602引腳圖[DB/OL].http://www.21ic.com/jichuzhishi/datasheet/LCD1602/dlu/189327.html</p><p><b>  致 謝</b></p>

97、<p>  從畢業(yè)論文的初期的起稿到現(xiàn)在的定稿,所花費的時間扎實有一個月。在這個過程,我遇到過很多困難,彷徨憂愁過,但在定稿時我懷揣著滿意與喜悅,更有一份感激之情。</p><p>  在這論文寫作期間,我衷心感謝我的論文指導(dǎo)老師**老師對我的細(xì)心教導(dǎo)和嚴(yán)格的批評。她嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度和對待學(xué)術(shù)研究的嚴(yán)格給我留下來很深刻的印象,過程中雖然有對老師的小抱怨,但現(xiàn)在懂得沒有嚴(yán)格的時間觀念和嚴(yán)謹(jǐn)?shù)膶W(xué)習(xí)工作態(tài)度是做

98、不好研究設(shè)計的。論文寫作中,**老師對我的論文的章節(jié)布局和寫作要點進(jìn)行了指導(dǎo),起了提綱攜領(lǐng)的作用。</p><p>  同時,這篇論文的寫作過程,我也得到好幾個同學(xué)的幫助。在硬件電路圖的繪制和仿真時,遇到了仿真軟件PROTEUS運用的一些困難,幾個同學(xué)相互交流后解決的。在這我想感謝這幾位同學(xué)的幫助,希望我們的友誼長存。</p><p>  最后,我感謝母校湖南工業(yè)大學(xué)給我這三年半時間的深造

99、機(jī)會,讓我學(xué)習(xí)相關(guān)專業(yè)知識,讓我體驗四年完整的豐富的大學(xué)生活。</p><p><b>  學(xué)生簽名:</b></p><p><b>  日 期:</b></p><p>  附錄1 硬件電路原理圖</p><p>  附錄2 設(shè)計源程序清單</p><p>  用C

100、語言高級語言編寫的系統(tǒng)源程序如下:</p><p>  #include <reg52.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  unsigned char m=0,f=0;</p>&

101、lt;p>  sbit CS_DA=P2^0;//控制端口與單片機(jī)的接口</p><p>  sbit WR_DA=P2^1;//控制端口與單片機(jī)的接口</p><p>  sbit key0=P3^0;//波形的循環(huán)選擇按鍵</p><p>  sbit key1=P3^1;//波形頻率加</p><p>  sbit key2=P3

102、^2;//波形頻率減</p><p>  uchar code SinTab[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,</p><p>  0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,

103、0xd1,0xd4,0xd6,0xd8,</p><p>  0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,</p><p>  0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff

104、,0xff,0xff,0xff,0xff,0xff,</p><p>  0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,</p><p>  0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd

105、6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,</p><p>  0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,</p><p>  0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x

106、72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,</p><p>  0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,</p><p>  0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0

107、x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,</p><p>  0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p>  0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,

108、0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,</p><p>  0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,</p><p>  0x35,0x38,0x3a,0x3d,0x40,0x43,0x45

109、,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,</p><p>  0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80};</p><p>  void delayms(uint t) </p><p><b>  { </b></p>

110、<p>  while(t--) </p><p><b>  { </b></p><p>  TH0=(65536-1000)/256;</p><p>  TL0=(65536-1000)%256;</p><p>  do{}while(!TF0);//延時1ms</p><p&

111、gt;<b>  TF0=0; </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  void INT1_init() </p><p><b>  { </b></p><p

112、>  IP=0x04;//置INT1高優(yōu)先級中斷</p><p>  IE=0x84;//INT1開中斷,CPU開中斷</p><p><b>  } </b></p><p>  void service_INT1(void) interrupt 2 </p><p><b>  { </b&g

113、t;</p><p>  if(key0==0) </p><p><b>  { </b></p><p>  delayms(10);//按鍵消抖 </p><p>  if(key0==0) m++; </p><p>  while(!key0);//松手檢測 </p>&l

114、t;p><b>  } </b></p><p>  if(key1==0) </p><p><b>  { </b></p><p>  delayms(10); </p><p>  if(key1==0) f=f+1; </p><p>  while(!key

115、1);//松手檢測 </p><p><b>  } </b></p><p>  if(key2==0) </p><p><b>  { </b></p><p>  delayms(10); </p><p>  if(key2==0) f=f-1; </p>

116、;<p>  while(!key2);//松手檢測 </p><p><b>  } </b></p><p>  if(m>4) m=0; </p><p>  if(f>60) f=0; </p><p><b>  } </b></p><p&

117、gt;  void sin() //正弦波 </p><p><b>  { </b></p><p>  uchar i; </p><p><b>  CS_DA=0; </b></p><p><b>  WR_DA=0; </b></p>&

118、lt;p>  for(i=0;i<255;i++) </p><p><b>  { </b></p><p>  P0=SinTab[i]; </p><p>  delayms(f); </p><p><b>  }</b></p><p><b>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論