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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  設計(論文)題目 基于單片機的信號發(fā)生器</p><p><b>  摘要</b></p><p>  信號發(fā)生器又稱信號源或振蕩器,在生產實踐和科技領域中有著廣泛的應用。各種波形曲線均可以用三角函數方程式來表示。能夠產生多種波形,如三角波、鋸齒波、矩形波(含方波)、正弦波的電路被稱為函數信號發(fā)生器。函數信號發(fā)生器在電路實驗和設備檢測中具有十

2、分廣泛的用途。例如在通信、廣播、電視系統(tǒng)中,都需要射頻(高頻)發(fā)射,這里的射頻波就是載波,把音頻(低頻)、視頻信號或脈沖信號運載出去,就需要能夠產生高頻的振蕩器。在工業(yè)、農業(yè)、生物醫(yī)學等領域內,如高頻感應加熱、熔煉、淬火、超聲診斷、核磁共振成像等,都需要功率或大或小、頻率或高或低的振蕩器。 </p><p>  本文利用AT89C51單片機作為控制核心來設計信號發(fā)生器,通過程序設計的方法產生正弦波、方波

3、、三角波,并在Protues電子設計平臺上對此方案進行了仿真,得到與理論相應的波形。通過D/A轉換器將數字信號轉換成模擬信號,最終由示波器顯示出來。通過按鍵來控制這幾種波形的類型選擇,而且可控制頻率的變化,在一定范圍內波形的幅度和頻率可任意改變。本次設計消除了傳統(tǒng)信號發(fā)生器存在元器件分散性造成波形失真的缺陷,并且其設計簡單,價格低廉,產生的波形穩(wěn)定,可用于多種需要低頻信號源的場合,實用性強。</p><p>  

4、【關鍵詞】信號發(fā)生器 D/A轉換 AT89C51 頻率 幅度</p><p><b>  Abstract</b></p><p>  Signal generator is also known as signal source or oscillator, in the production practice and technology is widel

5、y used in the field of. Each kind of wave may use the trigonometric function equation. Can produce a variety of waveforms, such as the triangle wave, sawtooth wave, rectangular wave (including square wave ), sine wave ci

6、rcuit is called the function signal generator. Function signal generator in electric circuit experiment and the equipment examination has a very wide range of uses. Fo</p><p>  This paper design a signal gen

7、erator, and AT89C51 is used as a control microcontroller core, It can generate sine wave, square wave, triangle wave through the method of program design , and the simulation by the computer soft ware Proteus is been

8、 done , and those results consistent with the theory.converting a digital signal into an analog signal through the D/A converter ,and ultimately displayed by the oscilloscope. Through the button to control the options o

9、f waveform types and can chan</p><p>  【keywords】Signal Generator D / A converter AT89C51 Frequency Margin</p><p><b>  目錄</b></p><p><b>  第一章緒論4</b>&l

10、t;/p><p>  1.1課題研究的動態(tài)和意義4</p><p>  1.2單片機概述4</p><p>  1.3信號發(fā)射器分類4</p><p>  1.4設計任務和要求4</p><p>  第二章 方案的設計與選擇5</p><p>  2.1 方案的比較5</p>

11、<p>  2.2 設計原理5</p><p>  2.3 設計功能6</p><p>  第三章 主要電路元器件介紹6</p><p>  3.1 AT89C51單片機簡介6</p><p>  3.2 DAC0832簡介8</p><p>  第四章 硬件實現和單元電路設計9</p&

12、gt;<p>  4.1 硬件原理框圖9</p><p>  4.2 復位電路10</p><p>  4.3 D/A轉換電路11</p><p>  4.4 按鍵接口電路12</p><p>  4.5 時鐘模塊設計12</p><p>  4.6 顯示模塊設計13</p>&

13、lt;p>  第五章 軟件設計14</p><p>  5.1 程序流程圖14</p><p>  5.2初始化程序15</p><p>  5.3鍵掃描程序16</p><p>  5.4波形產生程序16</p><p>  5.5波形仿真17</p><p>  第六章安

14、裝調試和問題解決21</p><p>  6.1 調試過程21</p><p>  6.2 出現問題與解決方法22</p><p><b>  實驗總結22</b></p><p><b>  致謝23</b></p><p><b>  參考文獻23&

15、lt;/b></p><p>  附錄1 電路原理圖23</p><p>  附錄2 源程序24</p><p><b>  緒論</b></p><p>  1.1課題研究的動態(tài)和意義</p><p>  信號發(fā)生器也被稱為函數發(fā)生器,主要作為試驗用的信號源,是現金各種電子電路實驗設計

16、中不可或缺的儀器設備之一。目前市場上常見的波形發(fā)生器多為純硬件搭接而成,波形種類為正弦波、方波、三角波等各種波形。用分立元件組成函數發(fā)生器,難以達到很高的頻率,其工作也不穩(wěn)定,用集成芯片的函數發(fā)生器則可以改善這一缺點。既可以達到較高的頻率,又能產生多種易于調試的波形。利用單片集成芯片,成本也比較高。</p><p>  在計算機控制技術、電子技術飛速發(fā)展的今天,信號發(fā)生器的應用越來越廣,對信號發(fā)生器的頻率穩(wěn)定度、

17、頻譜純度、頻率范圍和輸出信號的頻率微調分辨率提出越來越高的要求,普通的頻率源已經不能滿足現代電子技術的高標準要求。國內外紛紛設計制作先進的信號發(fā)生器,從實用價值來看,各高校中信號發(fā)生器應用極為廣泛,能夠設計出低成本、高精度的信號發(fā)生器并推廣使用具有非常重要的意義。 基于單片機的信號發(fā)生器的設計,以性價比相對較高的AT89C51單片機為核心,以簡單、廉價的元器件構筑,能夠產生高精度、高純度的方波、三角波、、正弦波,同時可以實現波形自由

18、切換,以及頻率和幅度在線調整。目前購買的信號發(fā)生器價格昂貴,功能強大,實際在高校開展實驗過程中用到最多的是低頻函數信號發(fā)生器。如果能夠在高校實驗領域應用本文設計的儀器取代它們,將具有重要的實際意義。</p><p><b>  1.2單片機概述</b></p><p>  單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術把具有數據處理能力的中央處理器CPU隨機存

19、儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的計算機系統(tǒng)。單片機具有集成度高、系統(tǒng)結構簡單、使用方便、實現模塊化、可靠性高、處理功能強、速度快等特點,因為被廣泛應用于儀器儀表、家用電器、醫(yī)用設備、航空航天、專用設備的智能化管理及過程控制等領域。</p><p>  1.3信號

20、發(fā)射器分類</p><p>  信號發(fā)生器是指產生所需參數的電測試信號的儀器。因其應用廣泛,種類繁多,特性各異,分類也不盡一致。按信號波形可分為正弦信號、函數信號、脈沖信號和隨機信號發(fā)生器等四大類;按頻率覆蓋范圍分為低頻信號發(fā)生器、高頻信號發(fā)生器和微波信號發(fā)生器;按輸出電平可調節(jié)范圍和穩(wěn)定度分為簡易信號發(fā)生器、標準信號發(fā)生器和功率信號發(fā)生器;按頻率改變的方式分為調諧式信號發(fā)生器、掃頻式信號發(fā)生器、程控式信號發(fā)生器

21、和頻率合成式信號發(fā)生器等。信號發(fā)生器又稱信號源或振蕩器,在生產實踐和科技領域中有著廣泛的應用。</p><p>  1.4設計任務和要求</p><p>  本文是做基于單片機的信號發(fā)生器的設計,將采用編程的方法來實現方波、三角波、正弦波的發(fā)生。根據設計的要求,對各種波形的頻率和幅度進行程序的編寫,并將所寫程序裝入單片機的程序存儲器中。在程序運行中,當接收到來自外界的命令,需要輸出某種波形

22、時再調用相應的中斷服務子程序和波形發(fā)生程序,經電路的數/模轉換器和運算放大器處理后,從信號發(fā)生器的輸出端口輸出。 </p><p>  第二章 方案的設計與選擇</p><p><b>  2.1 方案的比較</b></p><p>  方案一:采用單片函數發(fā)生器(如8038),8038可同時產生正弦波、方波等,而且方法簡單易行,用D/

23、A轉換器的輸出來改變調制電壓,也可以實現數控調整頻率,但產生信號的頻率穩(wěn)定度不高。</p><p>  方案二:利用MAX038芯片組成的電路輸出波形。MAX038是精密高頻波形產生電路,能夠產生準確的三角波、方波和正弦波三種周期性波形。但此方案成本高,程序復雜度高。</p><p>  方案三:采用單片機編程的方法來實現。該方法可以通過編程的方法來控制信號波形的頻率和幅度,而且在硬件電路

24、不變的情況下,通過改變程序來實現頻率的變換。此外,由于通過編程方法產生的是數字信號,所以信號的精度可以做的很高。</p><p>  鑒于方案一的信號頻率不夠穩(wěn)定和方案二的電路復雜,所以決定采用方案三的設計方法。它不僅采用軟硬件結合,軟件控制硬件的方法來實現,使得信號頻率的穩(wěn)定性和精度的準確性得以保證,而且它使用的幾種元器件都是常用的元器件,容易得到,且價格便宜,使得硬件的開銷達到最省。</p>&

25、lt;p><b>  2.2 設計原理</b></p><p>  本系統(tǒng)利用AT89C51單片機作為控制核心,采用程序設計的方法產生三角波、正弦波、方波等幾種波形,再通過D/A轉換器DAC0832將數字信號轉換成模擬信號,濾波放大,最終由示波器顯示出來,通過鍵盤來控制三種波形的類型選擇、頻率變化。其系統(tǒng)框圖如圖2-1所示。</p><p>  圖2.1 信號

26、發(fā)生器原理框圖</p><p>  89C51是整個波形發(fā)生器的核心部分,通過程序的編寫和執(zhí)行,產生各種各樣的信號,并從鍵盤接收數據,進行各種功能的轉換和信號幅度的調節(jié)。當數字信號經過接口電路到達轉換電路,將其轉換成模擬信號也就是所需要的輸出波形。</p><p><b>  2.3 設計功能</b></p><p> ?。?)本方案利用815

27、5擴展8個獨立式按鍵,6個LED顯示器。其中“S0”號鍵代表方波輸出,“S1”號鍵代表正弦波輸出,“S2”號鍵代表三角波輸出,“S3” 號鍵代表鋸齒波輸出。</p><p>  (2)“S4”號鍵為10Hz的頻率信號,“S5”號鍵為100Hz的頻率信號,“S6”號鍵為500Hz的頻率信號,“S7”號鍵為1KHz的頻率信號,6個LED顯示器輸出信號的頻率值,選用共陽極LED。</p><p>

28、; ?。?)利用兩片DAC0832實現幅度可調的信號源,(其中一片用來調節(jié)幅度,另外一片用來實現信號源的輸出)。</p><p>  (4)頻率范圍:10~1000Hz。</p><p> ?。?)輸出波形幅度為0~5V。</p><p>  第三章 主要電路元器件介紹</p><p>  3.1 AT89C51單片機簡介</p>

29、<p>  3.1.1單片機簡介</p><p>  單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計數器等功能集成到一塊半導體硅片上構成的一個小而完善的微型計算機系統(tǒng),在工業(yè)控制領域的廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發(fā)展到現在的32位300M的高速單片機。</

30、p><p>  在本次設計中所使用的單片機是AT89C51。AT89C51是美國ATMEL公司生產的低電壓,高性能CMOS 8位單片機[13],片內含4k bytes的可反復擦寫的Flash只讀程序存儲器(PEROM)和128 bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統(tǒng),片內置通用8位中央處理器(CPU)和Flash存儲單元,功能強大的

31、AT89C52單片機可提供許多高性價比的應用場合,可靈活應用于各種控制領域[14]。其外形及引腳排列如圖3-2所示。</p><p>  圖3-2 AT89C51引腳圖</p><p>  AT89C51為8 位通用微處理器,采用工業(yè)標準的C51內核,在內部功能及管腳排布上與通用的8xc52 相同,其主要用于會聚調整時的功能控制[15]。功能包括對會聚主IC 內部寄存器、數據RAM及外部接

32、口等功能部件的初始化,會聚調整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19 腳)和XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9 腳)為復位輸入端口,外接電阻電容組成的復位電路。VCC(40 腳)和VSS(20 腳)為供電端口,分別接+5V電源的正負端。P0~P3 為可編程通用I/O 腳,其功能用途通常由軟件定義[16] 。</p>

33、<p>  3.1.2 管腳功能說明</p><p>  VCC:供電電壓4~6V典型值5V);</p><p><b>  GND:接地;</b></p><p>  復位引腳輸入高電平使89C51復位,返回低電平退出復位;</p><p>  EA/Vpp:運行方式時, EA為程序存儲器選擇信號,EA接地

34、時CPU總是從外部存</p><p>  儲器中取指令,EA接高電平時CPU可以從內部或外部取指令;FLASH編程方式時,該引腳為編程電源輸入端Vpp(=5V或12V);</p><p>  PSEN:外部程序存儲器讀選通信號,CPU從外部儲存器取指令時,從PSEN引腳輸出讀選通信號(負脈沖);</p><p>  ALE/PROGALE:運行方式時,ALE為外部儲

35、存器低8位地址鎖存信號,FLASH編程方式時,該引腳為負脈沖輸入端;</p><p>  XTAL1,XTAL2為內部振蕩器電路(反相放大器)的輸入端和輸出端,外接晶振電路; </p><p>  P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIAS

36、H編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高;</p><p>  P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出</p><p>  4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接

37、收;</p><p>  P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數據存儲器進行

38、讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號;</p><p>  P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p>  3.2 DAC0832簡介&

39、lt;/p><p><b>  3.2.1工作原理</b></p><p>  DAC0832是8分辨率的D/A轉換集成芯片,由8位輸入鎖存器、8位DAC寄存器、8位D/A轉換器及轉換控制電路四部分構成。8位輸入鎖存器用于存放主機送來的數字量,使輸入數字得到緩沖和鎖存,并加以控制;8位DAC寄存器用于存放存放待轉換的數字量,并加以控制;8位D/A轉換器輸出與數字量成正比的

40、模擬電流,由與門、與非門組成的輸入控制的輸入電路來控制2個寄存器的選通或鎖存狀態(tài)。</p><p>  當WR2和XFER同時有效時,8位DAC寄存器端為高電平“1”,此時DAC寄存器的輸出端Q跟隨輸入端D也就是出入寄存器Q端得電平變化,反之,當端為低電平“0”時,第一級8位輸入寄存器Q端得狀態(tài)則鎖存到第二級8位DAC寄存器中,以便第三極8位DAC轉換器進行D/A轉換。</p><p> 

41、 3.2.2 DAC0832簡介</p><p><b>  分辨率為8位;</b></p><p>  電流穩(wěn)定時間1us;</p><p>  可單緩沖、雙緩沖或直接數字輸入;</p><p>  只需在滿量程下調整其線性度;</p><p>  單一電源供電(+5V~+15V);</p

42、><p><b>  低功耗,20mW。</b></p><p><b>  引腳功能:</b></p><p>  D0~D7:8位數據輸入線,TTL電平,有效時間應大于90ns(否則鎖存器的數據會出錯);</p><p>  ILE:數據鎖存允許控制信號輸入線,高電平有效;</p>&

43、lt;p>  CS:片選信號輸入線(選通數據鎖存器),低電平有效;</p><p>  WR1:數據鎖存器寫選通輸入線,負脈沖(脈寬應大于500ns)有效。由ILE</p><p>  CS、WR1的邏輯組合產生LE1,當LE1為高電平時,數據鎖存器狀態(tài)隨輸入數據線變換,LE1的負跳變時將輸入數據鎖存;</p><p>  XFER:數據傳輸控制信號輸入線,低

44、電平有效,負脈沖(脈寬應大于500ns)有效; </p><p>  WR2:DAC寄存器選通輸入線,負脈沖(脈寬應大于500ns)有效。</p><p>  IOUT1:電流輸出端1,其值隨DAC寄存器的內容線性變化;</p><p>  IOUT2:電流輸出端2,其值與IOUT1值之和為一常數;</p><p>  Rfb:反饋信號輸入線

45、,改變Rfb端外接電阻值可調整轉換滿量程精度;</p><p>  Vcc:電源輸入端,Vcc的范圍為+5V~+15V;</p><p>  VREF:基準電壓輸入線,VREF的范圍為-10V~+10V;</p><p>  AGND:模擬信號地</p><p>  DGND:數字信號地</p><p>  根據對DA

46、C0832的數據鎖存器和DAC寄存器的不同的控制方式,DAC0832有三種工作方式:直通方式、單緩沖方式和雙緩沖方式。其引腳圖如圖3-3所示。</p><p>  圖3-3 DAC0832引腳圖</p><p>  D/A轉換結果采用電流形式輸出。若需要相應的模擬電壓信號,可通過一個高輸入阻抗的線性運算放大器實現[18] 。運放的反饋電阻可通過RFB端引用片內固有電阻,也可外接。DAC08

47、32邏輯輸入滿足TTL電平,可直接與TTL電路或微機電路連接,它其以價格低廉、接口簡單、轉換控制容易等優(yōu)點,在單片機應用系統(tǒng)中得到廣泛應用[19] 。</p><p>  第四章 硬件實現和單元電路設計</p><p>  4.1 硬件原理框圖</p><p>  硬件原理方框圖如圖4.1所示。</p><p>  圖4.1 硬件原理框圖&

48、lt;/p><p><b>  4.2 復位電路</b></p><p>  復位電路中,單片機是利用電容充電來實現復位的。在電源接通瞬間,電容兩端相當于短路,于是RST引腳上的電位是高電平,電源接通后對電容進行快速充電,隨著充電的進行,RST引腳上的電位也會逐漸下降為低電平。只要保證RST端電壓下降,降到一定程度,即為低電平,且其引腳上高電平出現的時間大雨兩個機器周期,

49、便可以實現正常復位,單片機開始工作。</p><p>  按鍵復位電路中,當按鍵沒有按下時,電路同上電復位電路。如果在單片機運行過程中,按下RESET鍵,已經充好電的電容會快速通過所接電阻的回路放電,從而使得RST引腳上的電位快速變?yōu)楦唠娖?,此高電平會維持到按鍵釋放,從而滿足單片機復位的條件實現按鍵復位。 單片機的初始化工作就是復位,復位后中央處理器CPU和單片機內的其它功能部件都處在一定的初始狀態(tài),并從

50、這個狀態(tài)開始工作。為了防止程序執(zhí)行過程中失步或運行紊亂,在本次設計中我們采用了上電復位及手動復位電路,電路圖如圖4-2所示。</p><p>  圖4.2 復位電路圖</p><p>  4.3 D/A轉換電路</p><p>  由于單片機產生的是數字信號,要想得到所需要的波形,就要把數字信號轉換成模擬信號,所以本次設計選用價格低廉、接口簡單、轉換控制容易并具有

51、8位分辨率的數模轉換器DAC0832。</p><p>  DAC0832是一個具有兩個輸入數據寄存器的8位DAC。目前生產的DAC芯片分為兩類,一類芯片內部設置有數據寄存器,不需要外加電路就可以直接與微型計算機接口。另一類芯片內部沒有數據寄存器,輸出信號隨數據輸入線的狀態(tài)變化而變化,因此不能直接與微型計算機接口,必須通過并行接口與微型計算機接口。DAC0832是具有20條引線的雙列直插式CMOS器件,它內部具有

52、兩級數據寄存器,完成8位電流D/A轉換,故不需要外加電路。 </p><p>  單片機通過P0口向0832發(fā)送數字編碼,產生不同的輸出。先利用采樣定理對各波形進行抽樣,然后把各采樣值進行編碼,得到的數字量存入各個波形表,執(zhí)行程序時通過查表方法依次取出,經過D/A轉換后輸出就可以得到波形。假如N個點構成波形的一個周期,則0832輸出N個樣值點后,樣值點形成運動軌跡,即一個周期。重復輸出N個點,成為第二個周期。利用

53、單片機的晶振控制輸出周期的速度,也就是控制了輸出的波形的頻率。這樣就控制了輸出的波形及其頻率。其數模轉換電路如圖4-3所示。</p><p>  圖4-3數模轉換電路</p><p>  這樣,通過對系統(tǒng)的硬件部分設計,我們就可以從單片機直接得到所需的方波,從DAC0832數模轉換器得到符合要求的正弦波和三角波,并且完成其輸出轉換。</p><p>  4.4 按鍵

54、接口電路</p><p>  在本次設計中,控制系統(tǒng)設定為最小化工作模式,P1.0~P1.2口作為輸入口接三個按鍵,其中T1為頻率增加鍵,T2為頻率減小鍵,T3為正弦波與三角波選擇按鍵。當其中一個按鍵按下時,就會執(zhí)行相應的功能。其電路接法如圖4-4所示。</p><p>  圖4.4 按鍵接口</p><p>  4.5 時鐘模塊設計</p><

55、;p>  單片機工作時,從取指令到譯碼再進行微操作,必須在時鐘信號控制下才能有序地進行,時鐘電路就是為單片機工作提供基本時鐘的。單片機的時鐘信號通常有兩種產生方式:內部時鐘方式和外部時鐘方式。 內部時鐘方式實在單片機XTAL1和XTAL2引腳上跨接上一個晶振和兩個穩(wěn)頻電容,可以與單片機內的電路構成一個穩(wěn)定的自激振蕩器。晶振的取值范圍一般為0~24MHz,常用的晶振頻率有6MHz、12 MHz、11.0592 MHz、24

56、MHz等。一些新型的單片機還可以選擇更高的頻率。外界電容的作用是對振蕩器進行頻率微調,使振蕩信號預晶振頻率一致,同時祈禱穩(wěn)定頻率的作用,一般選用20-30pF的瓷片電容。</p><p>  外部使時鐘方式則是在單片機XTAL1引腳上外接一個穩(wěn)定的時鐘信號源,它一般適用于多片單片機同時工作的情況,用同一時鐘信號可以保證單片機的工作同步。 對于AT89C51單片機,一般的晶振可以在1.2MHZ~12MHZ之間

57、選擇[20],此時電容可以選擇的范圍是10pf~30pf。在本次設計中,因為只需使用一片AT89C52芯片,所以采用內部時鐘方式,所用電容是30pf,晶振選擇12MHZ。此時對應的時鐘電路如圖3-1所示,其一條引腳接XTAL1,另一條接XTAL2。</p><p>  圖4.5 時鐘電路</p><p>  4.6 顯示模塊設計</p><p>  顯示電路是用來

58、顯示波形信號的頻率,使得整個系統(tǒng)更加合理,從經濟的角度出發(fā),所以顯示器件采用LED數碼管顯示器。而且LED數碼管是采用共陽極接法,當主控端口輸出一個低電平后,與其相對應的數碼管即變亮,顯示所需數據。其器件模型如圖4.6所示。</p><p>  圖4.6 LED顯示電路</p><p>  這樣,通過對系統(tǒng)的硬件部分設計,我們就可以從單片機直接得到所需的方波,從DAC0832數模轉換器得

59、到符合要求的正弦波和三角波,并且完成其輸出轉換。</p><p><b>  第五章 軟件設計</b></p><p><b>  5.1 程序流程圖</b></p><p>  本文中子程序的調用是通過按鍵的選擇來實現,在取得按鍵相應的鍵值后,啟動計時器和相應的中斷服務程序,再直接查詢程序中預先設置的數據值,通過轉換輸

60、出相應的電壓,從而形成所需的各種波形。</p><p>  主程序的流程圖如圖5.1所示,在程序開始運行之后,首先是對8155進行初始化,之后判斷信號頻率值,如符合所需的頻率,則重置時間常數,并通過顯示器顯示出來,不符則返回。在中斷結束后,還要來判斷波形是否符合,如符合,則顯示其頻率,不符則返回,重新判斷。</p><p>  5.1 主程序流程圖</p><p>

61、;  圖5.2為各波形子程序的流程圖。如圖所示,在中斷服務子程序開始后,通過判斷來確定各種波形的輸出,當判斷選擇的不是方波后,則轉向對正弦波的判斷,如此反復。如果選擇的是方波,則用查表的方法求出相應的數據,并通過D/A轉換器將數據轉換成模擬信號,形成所需波形信號。</p><p>  圖5.2 子程序流程圖</p><p><b>  5.2初始化程序</b><

62、;/p><p>  初始化子函數的主要是設置定時器的工作模式、初值預置、開中斷和打開定時器等。在這里,定時器T1工作于16位定時模式,單片機按定時時間重復的把波形送到DAC0832的寄存器。其程序流程圖如圖5-3所示</p><p>  5-3初始化程序流程圖 </p><p><b>  5.3鍵掃描程序</b></p><

63、p>  對于鍵掃描程序,其主要目的是對三個按鍵進行檢測,當其中有一個按鍵按下時,就執(zhí)行對應的功能。在三個按鍵中,兩個分別用于增加頻率和減小頻率,另外一個是執(zhí)行正弦波和三角波的選擇功能。鍵掃描程序流程圖如圖5-4所示。</p><p><b>  N</b></p><p><b>  Y</b></p><p>  

64、圖5-4 鍵掃描流程圖</p><p><b>  5.4波形產生程序</b></p><p>  定時器T1的中斷程序就是波形產生程序。若定時器計數溢出時,就會產生一次中斷。在中斷發(fā)生后,單片機將按次序將數據表中的波形數據依次送入數模轉換器DAC0832,DAC8032根據輸入的數據大小輸出對應電壓。波形數據產生函數流程圖如圖5-5所示。</p>&l

65、t;p><b>  N</b></p><p><b>  Y</b></p><p>  圖5-5 波形產生流程圖</p><p><b>  5.5波形仿真</b></p><p>  通過前面的軟、硬件設計,整個電路的設計已基本完成,下面將進行正弦波、方波、三角波等

66、波形的仿真與測試。本文中波形信號的仿真是以Proteus這一款軟件為平臺,裝入波形發(fā)生程序,驗證硬件電路和程序的正確性。</p><p>  5.51 正弦波的仿真</p><p>  如圖所示,此波形為幅度為5V,頻率為500HZ的正弦波,是通過查表轉換的方法老實現的。而要實現其他如10HZ、100HZ、1KHZ等頻率的波形,則需要調用延時子程序 ,改變波形發(fā)生的時間常數。</p&

67、gt;<p>  5.52 三角波的仿真</p><p>  如圖所示,此波形為幅度為5V,頻率為500HZ的三角波,是通過查表轉換的方法老實現的。而要實現其他如10HZ、100HZ、1KHZ等頻率的波形,則需要調用延時子程序 ,改變波形發(fā)生的時間常數 </p><p>  5.53 方波的仿真</p><p>  如圖所示,此波形為幅度為5V,頻率為

68、500HZ的方波,是通過查表轉換的方法老實現的。通過調用延時子程序 ,改變波形發(fā)生的時間常數,實現其他如10HZ、100HZ、1KHZ等頻率的波形。</p><p><b>  程序如下</b></p><p>  #include "reg51.h"</p><p>  #define uchar unsigned cha

69、r</p><p>  #define uint unsigned int</p><p>  #define key P1</p><p>  #define dataout P0</p><p>  /**********正弦波數據表*************/</p><p>  uchar code sin_t

70、ab[256]=</p><p>  {0x80,0x83,0x85,0x88,0x8A,0x8D,0x8F,0x92,</p><p>  0x94,0x97,0x99,0x9B,0x9E,0xA0,0xA3,0xA5,</p><p>  0xA7,0xAA,0xAC,0xAE,0xB1,0xB3,0xB5,0xB7,</p><p> 

71、 0xB9,0xBB,0xBD,0xBF,0xC1,0xC3,0xC5,0xC7,</p><p>  0xC9,0xCB,0xCC,0xCE,0xD0,0xD1,0xD3,0xD4,</p><p>  0xD6,0xD7,0xD8,0xDA,0xDB,0xDC,0xDD,0xDE,</p><p>  0xDF,0xE0,0xE1,0xE2,0xE3,0xE3,

72、0xE4,0xE4,</p><p>  0xE5,0xE5,0xE6,0xE6,0xE7,0xE7,0xE7,0xE7,</p><p>  0xE7,0xE7,0xE7,0xE7,0xE6,0xE6,0xE5,0xE5,</p><p>  0xE4,0xE4,0xE3,0xE3,0xE2,0xE1,0xE0,0xDF,</p><p>

73、  0xDE,0xDD,0xDC,0xDB,0xDA,0xD8,0xD7,0xD6,</p><p>  0xD4,0xD3,0xD1,0xD0,0xCE,0xCC,0xCB,0xC9,</p><p>  0xC7,0xC5,0xC3,0xC1,0xBF,0xBD,0xBB,0xB9,</p><p>  0xB7,0xB5,0xB3,0xB1,0xAE,0xAC

74、,0xAA,0xA7,</p><p>  0xA5,0xA3,0xA0,0x9E,0x9B,0x99,0x97,0x94,</p><p>  0x92,0x8F,0x8D,0x8A,0x88,0x85,0x83,0x80,</p><p>  0x7D,0x7B,0x78,0x76,0x73,0x71,0x6E,0x6C,</p><p>

75、;  0x69,0x67,0x65,0x62,0x60,0x5D,0x5B,0x59,</p><p>  0x56,0x54,0x52,0x4F,0x4D,0x4B,0x49,0x47,</p><p>  0x45,0x43,0x41,0x3F,0x3D,0x3B,0x39,0x37,</p><p>  0x35,0x34,0x32,0x30,0x2F,0X2

76、D,0x2C,0X2A,</p><p>  0x29,0x28,0x26,0x25,0x24,0x23,0x22,0x21,</p><p>  0x20,0x1F,0x1E,0x1D,0x1D,0x1C,0x1C,0x1B,</p><p>  0x1B,0x1A,0x1A,0x1A,0x19,0x19,0x19,0x19,</p><p&g

77、t;  0x19,0x19,0x19,0x19,0x1A,0x1A,0x1A,0x1B,</p><p>  0x1B,0x1C,0x1C,0x1D,0x1D,0x1E,0x1F,0x20,</p><p>  0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29,</p><p>  0X2A,0x2C,0X2D,0x2F,0x30,0x

78、32,0x34,0x35,</p><p>  0x37,0x39,0x3B,0x3D,0x3F,0x41,0x43,0x45,</p><p>  0x47,0x49,0x4B,0x4D,0x4F,0x52,0x54,0x56,</p><p>  0x59,0x5B,0x5D,0x60,0x62,0x65,0x67,0x69,</p><p&

79、gt;  0x6C,0x6E,0x71,0x73,0x76,0x78,0x7B,0x7D};</p><p>  /*************三角波數據表*************************/</p><p>  uchar code thr_tab[256]=</p><p>  {0x80,0x81,0x82,0x83,0x84,0x85,0x86

80、,0x87,</p><p>  0x89,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,</p><p>  0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,</p><p>  0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,</p><p>  0x

81、A0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,</p><p>  0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,</p><p>  0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,</p><p>  0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xB

82、E,0xBF,</p><p>  0xBF,0xBE,0xBD,0xBC,0xBB,0xBA,0xB9,0xB8,</p><p>  0xB7,0xB6,0xB5,0xB4,0xB3,0xB2,0xB1,0xB0,</p><p>  0xAF,0xAE,0xAD,0xAC,0xAB,0xAA,0xA9,0xA8,</p><p>  0

83、xA7,0xA6,0xA5,0xA4,0xA3,0xA2,0xA1,0xA0,</p><p>  0x9F,0x9E,0x9D,0x9C,0x9B,0x9A,0x99,0x98,</p><p>  0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90,</p><p>  0x8F,0x8E,0x8D,0x8C,0x8B,0x8A,0x

84、89,0x89,</p><p>  0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80,</p><p>  0x7F,0x7E,0x7D,0x7C,0x7B,0x7A,0x79,0x78,</p><p>  0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,</p><p>  

85、0x6F,0x6E,0x6D,0x6C,0x6B,0x6A,0x69,0x68,</p><p>  0x66,0x66,0x65,0x64,0x63,0x62,0x61,0x60,</p><p>  0x5F,0x5E,0x5D,0x5C,0x5B,0x5A,0x59,0x58,</p><p>  0x55,0x55,0x55,0x54,0x53,0x52,0

86、x51,0x50,</p><p>  0x4F,0x4E,0x4D,0x4C,0x4B,0x4A,0x49,0x48,</p><p>  0x44,0x44,0x45,0x44,0x43,0x42,0x41,0x40,</p><p>  0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,</p><p> 

87、 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,</p><p>  0x50,0x51,0x52,0x53,0x55,0x55,0x56,0x57,</p><p>  0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,</p><p>  0x60,0x61,0x62,0x63,0x66,0x65,

88、0x66,0x67,</p><p>  0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,</p><p>  0x70,0x71,0x72,0x73,0x77,0x75,0x76,0x77,</p><p>  0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F};</p><p>

89、;  /******************************************/</p><p>  uint data THHL=65535;</p><p>  uchar data keyword,n=0;</p><p>  bdata sinthr;</p><p>  sbit sin_thr=sinthr^0;&l

90、t;/p><p>  sbit ww=P2^0;</p><p>  /**************鍵掃描子函數**************************/</p><p><b>  keyscan()</b></p><p><b>  {</b></p><p>

91、  keyword=key&0x07;</p><p>  if(keyword!=0x07)</p><p><b>  {</b></p><p>  while((key&0x07)!=0x07);</p><p>  switch(keyword)</p><p><

92、b>  {</b></p><p><b>  case 6:</b></p><p>  {if(THHL>=65235)THHL=65535;else{THHL=THHL+255;}break;}</p><p><b>  case 5:</b></p><p>  {

93、if(THHL<=500)THHL=0;else{THHL=THHL-255;}break;}</p><p><b>  case 3:</b></p><p>  {sin_thr=~sin_thr;break;}</p><p>  default:{break;}</p><p><b>  }&

94、lt;/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /**********初始化函數**************************/</p><p>  void clearmen()</p><p>

95、<b>  {</b></p><p>  key=0xff,dataout=0x00;THHL=65535;</p><p>  TH1=THHL/256;TL1=THHL&256;</p><p>  TMOD=0x11;ET1=1;TR1=1;EA=1;</p><p><b>  }</b

96、></p><p>  /***********主函數*************************/</p><p><b>  main()</b></p><p>  第六章安裝調試和問題解決</p><p><b>  6.1 調試過程</b></p><p&g

97、t;  1. 不通電,用萬用表根據電路圖仔細檢查各線路連接是否正常。 </p><p>  2. 首先是調試單片機部分,DA和運算放大器芯片不接。用STC_ISP_V483軟件通過串口下程序??词欠窨梢哉O鲁绦?。 </p><p>  3.當可以正常下程序時,給51單片機下一個讓所有I/0口一會兒輸入0,延時,再輸出1,以此類推。用萬用表測量各I/O口得電壓是不是一會兒高,一會兒低。 &

98、lt;/p><p>  4.安上DA和運算放大器芯片,給單片機下一個輸出正弦波的測試程序,通過示波器看輸出是否正常。 </p><p>  5. 給單片機下一個完整的程序,分別按下S1,看波形是否改變。按下S2,看頻率是否改變。 </p><p>  硬件調試比較費時,需要細心和耐心,也需要熟練掌握電路原理。 然后,用仿真軟件進行軟件調試,比如單片機C51編輯軟件KEI

99、L,該軟件提供一個集成開發(fā)環(huán)境uVision,它包括C編輯器、宏編輯器、連接器、庫管理和一個功能強大的仿真調試器。通過編譯、運行,可以檢查程序錯誤。但應用此方法,仍需要十分了解所使用元器件的工作方式和管腳連接方式。 在確定編程思路以后將各部分的程序及各子程序編好,使用 keil 進行編譯,根據提示的錯誤對程序進行修改。除了語法差錯和邏輯差錯外,當確認程序沒問題時,通過直接加載到 protues 軟件電路中進行仿真。</p>

100、<p>  6.2 出現問題與解決方法</p><p>  1. 調試單片機的串口時,發(fā)現不能正常的下程序。我想可能是單片機壞了借了一塊學習板測試了一下單片機芯片,發(fā)現可以正常下載。這說明很可能是MAX232的電路出了問題。我仔細查看了電路圖,又上網查了下其他的MAX232的電路圖,發(fā)現我的電路圖和別人的不一樣。于是我將MAX232的TIOU1接串口的第2腳,再下程序,終于可以正常下載了。 </

101、p><p>  2.剛開始寫的測試程序輸出的波形失真很大。我想可能是波形的ROM表里的數據值過小,導致DA輸出的誤差很大。因而臥將波形的ROM表里的數據值調大,在測試時發(fā)現波形變得好多了。</p><p>  3. 調試波形的時候我發(fā)現方波的失真比較大。我想可能是低通濾波器的截止頻率太低了,因而我將RC低通濾波器的電阻由1K換成100歐姆,效果好了很多。</p><p>

102、;<b>  實驗總結</b></p><p>  該信號發(fā)生器在調試時,總是出現許多的錯誤,軟件上除了許多的問題,之后糾正和向老師、同學請教慢慢的改了過來??墒窃诜抡鏁r依然存在很多的問題,開始的時候是仿真出不了波形,之后改了改電路的一根線,出現了。在頻率的調節(jié)問題更多,而使頻率無法調節(jié),同時信號的頻率無法在LED顯示,鑒于此,我認為應該是輸出中斷除了問題,造成所定義的頻率的個位,十位,百位

103、都沒有跟隨鍵盤的輸入而賦值,使其值時鐘為初始設定值。</p><p>  同時該信號源設計尚存在的不足之處,主要有兩個方面,第一為缺乏頻率準確顯示的手段,可以配備相應的數字頻率計模塊,但如何將顯示的精度與信號源的頻段配合有待討論研究;第二為D/A轉換時可以加一個鎖存器,并且放大電路有待進一步改進使其具有更強的輸出能力。</p><p>  經過近幾個月的學習和研究,通過在圖書館、網絡中查閱

104、有關資料,了解了單片機的起源和發(fā)展,并且加深了對單片機的運行過程、控制系統(tǒng)的認識,熟悉了程序在單片機控制系統(tǒng)中的運用,在所學知識的基礎上,利用已有的單片機控制系統(tǒng)設計及借鑒了前人的研究成果,對單片機控制系統(tǒng)做了深入的分析和研究。通過此次畢業(yè)設計,加強了我對原有知識理論有了更為系統(tǒng)化、理論化、實用化的理解。</p><p><b>  致謝</b></p><p>  

105、這次畢業(yè)設計終于順利完成了,要對我的指導老師**老師表示衷心的感謝。從方案的選取、審題。查找資料,到系統(tǒng)軟硬件的各部分設計工作,到最后報告的書寫和完成,老師在我的整個課程設計中給了我很大的幫助和支持。老師的諄諄教導,使我受益匪淺。</p><p>  其次,要對大學四年的所有給我授課的老師表示感謝。是他們教會了我大學應該掌握的知識和技能,給我打下了堅實的理論基礎。只有運用四年學習的基礎知識和經驗的積累,才能使我能

106、夠順利完成本次課程設計。</p><p>  最后,要感謝我們班的眾多同學。本次設計能夠圓滿完成,和各位同學的幫助是息息相關的。在本次設計中,我遇到了無數困難,在需要幫助的時候,各位同學給了我無私的幫助,幫我度過了一個又一個難關,在此表示最真摯的感謝。</p><p><b>  參考文獻</b></p><p>  [1] 程全.基于AT89

107、C52實現的多種波形發(fā)生器的設計[J].周口師范學院學報,2005.22(5):57~58.</p><p>  [2] 周明德.微型計算機系統(tǒng)原理及應用[M].北京:清華大學出版社,2002.341~364.</p><p>  [3] 劉樂善.微型計算機接口技術及應用[M].北京:北京航空航天大學出版社,2001.258~264.</p><p>  [4] 童

108、詩白.模擬電路技術基礎[M].北京:高等教育出版社,2000.171~202.</p><p>  [5] 杜華.任意波形發(fā)生器及應用[J].國外電子測量技術,2005.1:38~40.</p><p>  [6] 張友德.單片微型機原理、應用與實踐[M].上海:復旦大學出版社,2004.40~44. </p><p>  [7] 程朗.基于8051單片機的雙通道波

109、形發(fā)生器的設計與實現[J].計算機工程與應用,2004.8:100~103.</p><p>  [8] 張永瑞.電子測量技術基礎[M].西安:西安電子科技大學出版社,2006.61~101.</p><p>  [9] 李葉紫. MCS-51單片機應用教程[M].北京:清華大學出版社,2004.232~238.</p><p><b>  附錄1 電路原

110、理圖</b></p><p><b>  附錄2 源程序</b></p><p><b>  源程序:</b></p><p>  ORG 0000H</p><p><b>  AJM MAIN</b></p><p>  ORG 0

111、00BH</p><p><b>  LJMP TC0</b></p><p>  ORG 0030H</p><p>  MAIN:MOV DPTR,#9FFFH 指向DAC0832(1)</p><p>  MOV A,70H</p><p>  MOVX

112、 @DPTR,A DAC0832(1)輸出</p><p>  MOV DPTR,#7F00H 指向8155命令字端口地址</p><p>  MOV A,#06H 設置A口為輸入,B口、C口為輸出</p><p

113、>  MOVX @DPTR,A 送命令字</p><p>  MOV DPTR,#7F01H 指向A口地址</p><p>  MOVX A,@DPTR 讀入A口的開關數據</p><p>  JNB AC

114、C.4,K10H 判斷是否“4”號鍵,若是則轉輸出10Hz信號</p><p>  JNB ACC.5,K100H 判斷是否“5”號鍵,若是則轉輸出100Hz信號</p><p>  JNB ACC.6,K500H 判斷是否“6”號鍵,若是則轉

溫馨提示

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

評論

0/150

提交評論