基于單片機的函數(shù)信號發(fā)生器設計畢業(yè)論文_第1頁
已閱讀1頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設計任務書</b></p><p>  設計題目: 函數(shù)信號發(fā)生器設計</p><p>  系 部: 電子工程系 </p><p>  專 業(yè): 應用電子技術 </p><p>  學 號: </p>

2、<p>  姓 名: </p><p>  指導教師: </p><p><b>  2012年11月</b></p><p><b>  摘 要</b></p><p>  信號發(fā)生器是一種常用的信號源,廣泛地應用于電

3、子電路、自動控制系統(tǒng)和教學實驗等領域。目前使用的信號發(fā)生器大部分是函數(shù)信號發(fā)生器,且特殊波形發(fā)生器的價格昂貴。所以本設計使用的是AT89C51單片機構成的發(fā)生器,可產(chǎn)生三角波、方波、正弦波等多種特殊波形和任意波形,波形的頻率可用程序控制改變。在單片機上加外圍器件距陣式鍵盤,通過鍵盤控制波形頻率的增減以及波形的選擇,并用了LCD顯示頻率大小。在單片機的輸出端口接DAC0832進行D/A轉換,再通過運放進行波形調整,最后輸出波形接在示波器上

4、顯示。本設計具有線路簡單、結構緊湊、價格低廉、性能優(yōu)越等優(yōu)點。</p><p>  在介紹DAC0832芯片特性的基礎上,論述了采用DAC0832芯片設計數(shù)字函數(shù)信號發(fā)生器的原理以及整機的結構設計。對其振蕩頻率控制、信號輸出幅度控制以及頻率和幅度數(shù)顯的實現(xiàn)作了較詳細的論述。該函數(shù)信號發(fā)生器可輸出三角波,方波和正弦波。</p><p>  關鍵詞: 信號發(fā)生器 單片機 DAC0832 波形調

5、整 LED</p><p><b>  Abstract</b></p><p>  Signal-generator is a kind of signal source in common use, broadly applied at the electronics electric circuit, auto control system and teachi

6、ng experiment etc. Currently used mostly function signal generator signal generator, waveform generator and a special price of expensive . So the dissertation is usage of the AT89s51 single-chip microcomputer constitute

7、of wave-form generator, which can generate triangle wave, square wave, sine wave etc variety wave-form, the period of wave can be controll</p><p>  Based on the introduction of MAX038 , we discussed the prin

8、ciple and the whole frame of the digital function signal generator. We described the control of the oscillatory frequent , amplitude and the digital display in detail. Thegenerator can output three kinds of waves : sine

9、wave , square wave , triangle wave.</p><p>  Keywords: signal generator  MCU  DAC0832 wave-form adjustment LED</p><p><b>  目 錄</b></p><p><b>  摘 要2

10、</b></p><p><b>  第1章 緒論</b></p><p>  1.1 課題的來源與技術背景5</p><p>  1.2 研究信號發(fā)生器的目的及意義5</p><p>  1.3 主要研究內容6</p><p>  第2章 電路方案的確定</p>

11、<p>  2.1 方案的提出和選擇8</p><p>  2.2 電路框圖及工作原理9</p><p>  第3章 單元電路設計</p><p>  3.1 單片機模塊10</p><p>  3.2 電源模塊11</p><p>  3.3 D/A轉換模塊12</p><

12、;p>  3.4 鍵盤輸入模塊15</p><p>  3.5 顯示模塊16</p><p>  3.6 I/V轉化模塊17</p><p>  第4章 電路軟件設計</p><p>  4.1 系統(tǒng)總框圖19</p><p>  4.2 顯示子程序20</p><p>

13、;  4.3 按鍵子程序21</p><p>  第5章 設計實現(xiàn)與總結</p><p><b>  致 謝26</b></p><p><b>  參考文獻27</b></p><p><b>  附 錄28</b></p><p>

14、<b>  第1章 緒論</b></p><p>  1.1 課題的來源與技術背景</p><p>  不論是在生產(chǎn)還是在科研與教學上,信號發(fā)生器都是電子工程師仿真實驗的最佳工具。隨著我國經(jīng)濟和科技的發(fā)展,對相應的測試儀器和測試手段也提出了更高的要求,信號發(fā)生器己成為測試儀器中至關重要的一類,因此開發(fā)信號發(fā)生器具有重大意義。傳統(tǒng)的信號發(fā)生器采用專用芯片,成本高,控制

15、方式不靈活。本設計充分利用單片機靈活的控制、豐富的外設處理能力,采用DDS技術,實現(xiàn)頻率、幅值可調的函數(shù)波形的輸出,同時可以根據(jù)需要方便地實現(xiàn)各種比較復雜的調頻、調相和調幅功能,具有良好的實用性。</p><p>  根據(jù)其頻率發(fā)生方法又可分為諧振法和合成法兩種。一般的傳統(tǒng)發(fā)生器都是采用的諧振法,即用具有頻率選擇性的回路來產(chǎn)生正弦振蕩,來獲得所需頻率,也可以根據(jù)頻率合成技術來獲得所需頻率。</p>

16、<p>  利用頻率合成技術制成的合成波形發(fā)生器,通常被稱為頻率合成器或頻率綜合器。頻率綜合器是指利用頻率合成技術合成的頻率源,它常常是沒有調制的,也沒有足夠寬的和足夠準確的輸出電平調節(jié),其工作范圍往往也不寬,最小頻率間隔也比較大,一般做專用設備使用,或做某一個系統(tǒng)中的一個組成部分。</p><p>  1.2 研究信號發(fā)生器的目的及意義</p><p>  波形發(fā)生器是信號源的

17、一種,主要給被測電路提供所需要的己知信號(各種波形),然后用其它儀表測量感興趣的參數(shù)??梢娦盘栐丛诟鞣N實驗應用和試驗測試處理中,它的應用非常廣泛。它不是測量儀器,而是根據(jù)使用者的要求,作為激勵源,仿真各種測試信號,提供給被測電路,以滿足測量或各種實際需要。</p><p>  目前我國己經(jīng)開始研制波形發(fā)生器,并取得了可喜的成果。但總的來說,我國波形發(fā)生器還沒有形成真正的產(chǎn)業(yè)。就目前國內的成熟產(chǎn)品來看,多為一些PC

18、儀器插卡,獨立的儀器和VXI系統(tǒng)的模塊很少,并且我國目前在波形發(fā)生器的種類和性能都與國外同類產(chǎn)品存在較大的差距,因此加緊對這類產(chǎn)品的研制顯得迫在眉睫。函數(shù)波形發(fā)生器發(fā)展很快近幾年來,國際上波形發(fā)生器技術發(fā)展主要體現(xiàn)在以下幾個方面: </p><p> ?。?)過去由于頻率很低應用的范圍比較狹小,輸出波形頻率的提高,使得波形發(fā)生器能應用于越來越廣的領域。波形發(fā)生器軟件的開發(fā)正使波形數(shù)據(jù)的輸入變得更加方便和容易。波形

19、發(fā)生器通常允許用一系列的點、直線和固定的函數(shù)段把波形數(shù)據(jù)存入存儲器。同時可以利用一種強有力的數(shù)學方程輸入方式,復雜的波形可以由幾個比較簡單的公式復合成v=f(t)形式的波形方程的數(shù)學表達式產(chǎn)生。從而促進了波形發(fā)生器向任意波形發(fā)生器的發(fā)展,各種計算機語言的飛速發(fā)展也對任意波形發(fā)生器軟件技術起到了推動作用。目前可以利用可視化編程語言(如Visual Basic, Visual C等等)編寫任意波形發(fā)生器的軟面板,這樣允許從計算機顯示屏上輸入

20、任意波形,來實現(xiàn)波形的輸入。</p><p>  (2)與VXI資源結合。目前,波形發(fā)生器由獨立的臺式儀器和適用于個人計算機的插卡以及新近開發(fā)的VXI模塊。由于VXI總線的逐漸成熟和對測量儀器的高要求,在很多領域需要使用VXI系統(tǒng)測量產(chǎn)生復雜的波形,VXI的系統(tǒng)資源提供了明顯的優(yōu)越性,但由于開發(fā)VXI模塊的周期長,而且需要專門的VXI機箱的配套使用,使得波形發(fā)生器VXI模塊僅限于航空、軍事及國防等大型領域。在民用

21、方面,VXI模塊遠遠不如臺式儀器更為方便。</p><p>  (3)隨著信息技術蓬勃發(fā)展,臺式儀器在走了一段下坡路之后,又重新繁榮起來。不過現(xiàn)在新的臺式儀器的形態(tài),和幾年前的己有很大的不同。這些新一代臺式儀器具有多種特性,可以執(zhí)行多種功能。而且外形尺寸與價格,都比過去的類似產(chǎn)品減少了一半。</p><p>  1.3 主要研究內容</p><p> ?。?)理論基

22、礎分析。了解波形發(fā)生器的相關理論,包括幾種常用波形,如正弦波、方波等,然后介紹了波形發(fā)生器的主要方案及原理。</p><p>  (2)硬件系統(tǒng)設計。主要包括以下幾個模塊:串口電路;鍵盤、LED顯示電路;單片機系統(tǒng);DAC芯片和放大電路設計。 </p><p> ?。?)軟件系統(tǒng)設計。主要有:系統(tǒng)總體流程設計;串口程序設計;單片機程序設計;鍵盤響應程序設計;LED顯示程序設計;DAC控制程

23、序設計。</p><p> ?。?)系統(tǒng)仿真調試。通過計算機進行模擬仿真調試。</p><p><b>  常用波形介紹</b></p><p>  函數(shù)波形的一般表達式可以表示為 ,下面來介紹幾種常用的函數(shù)波形[3]:</p><p><b>  正弦函數(shù)</b></p><p

24、>  正弦信號與余弦信號,兩者只是在相位上相差2π,可以統(tǒng)稱為正弦信號。</p><p><b>  其一般形式為</b></p><p>  f (t)=Asin(ωt+θ ) (1)</p><p>  式中,A 為振幅,ω 是角頻率,θ 為初相位。上述三量是正弦信號的三要素。它的波形見圖1。正弦信號是周期信

25、號,其周期T 與頻率f 及角頻率ω 之間的關系為:</p><p><b> ?。?)</b></p><p><b>  圖1 正弦波形</b></p><p>  在實際應用中經(jīng)常遇到單邊指數(shù)衰減的正弦信號,其波形如圖2所示,表達式為:</p><p><b> ?。?)</b&

26、gt;</p><p>  圖2 指數(shù)衰減的正弦信號波形</p><p><b>  方波波形函數(shù)</b></p><p>  方波函數(shù)是一種常用的波形函數(shù),其表達式為:</p><p><b>  (4)</b></p><p>  方波的波形如圖2-3所示:</p&

27、gt;<p><b>  圖3 方波波形</b></p><p>  第2章 電路方案的確定</p><p>  2.1 方案的提出和選擇 </p><p>  方案一:采用單片函數(shù)發(fā)生器(如8038),8038可同時產(chǎn)生正弦波、方波等,而且方法簡單易行,用D/A轉換器的輸出來改變調制電壓,也可以實現(xiàn)數(shù)控調整頻率,但產(chǎn)生信號的頻

28、率穩(wěn)定度不高。</p><p>  方案二:采用鎖相式頻率合成器,利用鎖相環(huán),將壓控振蕩器(VCO)的輸出頻率鎖定在所需頻率上,該方案性能良好,但難以達到輸出頻率覆蓋系數(shù)的要求,且電路復雜。</p><p>  方案三:采用單片機編程的方法來實現(xiàn),利用數(shù)模轉換器DAC0832通過查表得方式輸出需要的波形,該方法可以通過編程的方法來控制信號波形的頻率和幅度,而且在硬件電路不變的情況下,通過改

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

30、;<p>  2.2 電路框圖及工作原理</p><p>  數(shù)字信號可以通過數(shù)/模轉換器轉換成模擬信號,因此可通過產(chǎn)生數(shù)字信號再轉換成模擬信號的方法來獲得所需要的波形。89C51單片機本身就是一個完整的微型計算機,具有組成微型計算機的各部分部件:中央處理器、CPU、隨機存取存儲器RAM、只讀存儲器ROM、I/O接口電路、定時器/計數(shù)器以及串行通訊接口等,只要將89C51再配置鍵盤及其接口、顯示器及

31、其接口、數(shù)模轉換及波形輸出、指示燈及其接口等四部分,即可構成所需的波形發(fā)生器,其信號發(fā)生器構成原理框圖如圖2.1所示。</p><p>  圖2.1 信號發(fā)生器原理框圖</p><p>  89C51是整個波形發(fā)生器的核心部分,通過程序的編寫和執(zhí)行,產(chǎn)生各種各樣的信號,并從鍵盤接收數(shù)據(jù),進行各種功能的轉換和信號幅度的調節(jié)。當數(shù)字信號經(jīng)過接口電路到達轉換電路,將其轉換成模擬信號也就是所需要

32、的輸出波形。</p><p>  第3章 單元電路設計</p><p><b>  3.1 單片機模塊</b></p><p>  本次設計選用的單片機芯片是AT89C51單片機。AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機,片內含4k bytes的可反復擦寫的只讀程序存儲器(PEROM)和128 bytes的隨

33、機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),兼容標準MCS-51指令系統(tǒng),片內置通用8位中央處理器(CPU)和Flash存儲單元。</p><p>  AT89C51中有一個用于構成內部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶休或陶瓷諧振器一起構成自激振蕩器。外接石英晶體(或陶瓷諾振器)及電容C1

34、, C2接在放大器的反饋回路中構成并聯(lián)振蕩電路。對外接電容C1, C2雖然沒有十分嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性,這里選擇使用石英晶休,我們的電容使用30pF。如使用陶瓷諧振器的話,應選擇40pF士10pF的容值的電容。也可以采用外部時鐘。采用外部時鐘的電路的情況時,外部時鐘脈沖接到XTAL1端,即內部時鐘發(fā)生器的輸入端,XTAL2則懸空。</p>&l

35、t;p>  圖3-1:單片機最小系統(tǒng)</p><p>  1、主電源引腳(2根) </p><p>  VCC(Pin40):電源輸入,接+5V電源</p><p>  GND(Pin20):接地線</p><p>  2、外接晶振引腳(2根)</p><p>  XTAL1(Pin19):片內振蕩電路的輸入端&

36、lt;/p><p>  XTAL2(Pin20):片內振蕩電路的輸出端</p><p>  3、控制引腳(4根)</p><p>  RST/VPP(Pin9):復位引腳,引腳上出現(xiàn)2個機器周期的高電平將使單片機復位。</p><p>  ALE/PROG(Pin30):地址鎖存允許信號</p><p>  PSEN(Pi

37、n29):外部存儲器讀選通信號</p><p>  EA/VPP(Pin31):程序存儲器的內外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內部程序存儲器讀指令。</p><p>  4、可編程輸入/輸出引腳(32根)</p><p>  AT89S51單片機有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個口有8位(8根引腳),共32

38、 根。每一根引腳都可以編程。 </p><p>  PO口(Pin39~Pin32):8位雙向I/O口線,名稱為P0.0~P0.7</p><p>  P1口(Pin1~Pin8):8位準雙向I/O口線,名稱為P1.0~P1.7 </p><p>  P2口(Pin21~Pin28):8位準雙向I/O口線,名稱為P2.0~P2.7 </p><

39、p>  P3口(Pin10~Pin17):8位準雙向I/O口線,名稱為P3.0~P3.7</p><p><b>  3.2電源模塊</b></p><p>  圖3-2-1:單片機的電源模塊</p><p>  函數(shù)信號發(fā)生器的電源包括兩部分,包括單片機和外部電路用的電壓+5V和運算放大器的電壓+-12V,所以電源模塊選擇了常用的三端穩(wěn)

40、壓器7805,7912和7812,由市電220V經(jīng)變壓器輸出24V電壓,通過7812和7912輸出正負12V的電壓用于運算放大器的供電,7812的輸出端接7805將輸出的12V電壓轉為5V用于單片機和其他外設電路的供電使用。</p><p>  圖3-2-2:7805的原理圖</p><p>  通過差分對管和負反饋電路,使得輸出的電壓穩(wěn)定在+5V。</p><p>

41、;  3.3 D/A轉換模塊</p><p>  本次試驗選擇的D/A轉化器是DAC0832,是一款8分辨率的D/A轉換集成芯片。與微處理器完全兼容。這個DA芯片以其價格低廉、接口簡單、轉換控制容易等優(yōu)點,在單片機應用系統(tǒng)中得到廣泛的應用。D/A轉換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉換電路及轉換控制電路構成。</p><p>  圖3-3-1:DAC0832內部結構圖<

42、;/p><p>  DAC0832內部有輸入寄存器和DAC寄存器,所以無需外部連接專門的鎖存器。</p><p>  圖3-3-2:DACA0832引腳圖</p><p><b>  各引腳的功能如下:</b></p><p>  D0~D7:8位數(shù)據(jù)輸入線,TTL電平,有效時間應大于90ns(否則鎖存器的數(shù)據(jù)會出錯);&l

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

44、p><p>  XFER:數(shù)據(jù)傳輸控制信號輸入線,低電平有效,負脈沖(脈寬應大于500ns)有效;</p><p>  WR2:DAC寄存器選通輸入線,負脈沖(脈寬應大于500ns)有效。由WR1、XFER的邏輯組合產(chǎn)生LE2,當LE2為高電平時,DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負跳變時將數(shù)據(jù)鎖存器的內容打入DAC寄存器并開始D/A轉換。</p><p>

45、;  IOUT1:電流輸出端1,其值隨DAC寄存器的內容線性變化;</p><p>  IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù);</p><p>  Rfb:反饋信號輸入線,改變Rfb端外接電阻值可調整轉換滿量程精度;</p><p>  Vcc:電源輸入端,Vcc的范圍為+5V~+15V;</p><p>  VREF:基

46、準電壓輸入線,VREF的范圍為-10V~+10V;</p><p>  AGND:模擬信號地</p><p>  DGND:數(shù)字信號地</p><p>  DAC0832主要性能參數(shù)</p><p>  1. 分辨率為8位;</p><p>  2. 電流穩(wěn)定時間1us;</p><p>  3

47、. 可單緩沖、雙緩沖或直接數(shù)字輸入;</p><p>  4. 只需在滿量程下調整其線性度;</p><p>  5. 單一電源供電(+5V~+15V);</p><p>  6. 低功耗,200mW。</p><p>  通常DAC0832有三種不同的工作方式,主要依據(jù)對數(shù)據(jù)鎖存器和DAC鎖存器的控制方式劃分:直通方式,單緩沖方式和雙緩沖方

48、式。</p><p>  其中直通方式CS,XFER,WR1和WR2直接接低電平,DAC0832隨時轉換輸入的數(shù)據(jù),這種方式比較簡單,占用的I/O口也比較少,但是當需要I/O口做擴展的時候容易受到干擾。</p><p>  單緩沖方式者把數(shù)據(jù)鎖存器和DAC鎖存器的使能端接在一起,只需要一組信號就能同時控制兩個寄存器的。</p><p>  雙緩沖方式是將數(shù)據(jù)鎖存器和

49、DAC鎖存器分開單獨控制,這種做法容易占用大量的I/0口。</p><p>  綜上所訴,本次設計采用了單緩沖控制方式。</p><p>  圖3-3-3.DAC0832的單緩沖方式連線圖 </p><p><b>  3.4鍵盤輸入模塊&

50、lt;/b></p><p>  本系統(tǒng)采用的鍵盤連接電路圖如下:</p><p><b>  圖(6)鍵盤</b></p><p>  圖中鍵盤引出的線分別接單片機的P2.4-P2.7口,因此在程序初始化時P2.7腳給低電平。如圖開關1用來切換輸出波形、開關2和3用來調節(jié)頻率的加減。當按開關2時輸出波形的頻率增加,按開關3時輸出波形的頻

51、率減小。開關4是用來顯示波形的種類和頻率的。</p><p><b>  3.5 顯示模塊</b></p><p>  本次設計要求對輸出波形的頻率,幅值和波形進行輸出,所以要擴展顯示模塊,常用的顯示模塊LCD有7端數(shù)碼管,LCD1602和12864等液晶顯示屏。</p><p>  為了降低設計的成本和擴展的難度,本次設計選擇使用7段數(shù)碼管。

52、</p><p>  圖3-5-1.數(shù)碼管原理圖</p><p>  常用的數(shù)碼管包括共陰極和共陽極兩種。</p><p>  其中共陰極數(shù)碼管的編碼方式如下:</p><p>  0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,</p><p>  0 1 2

53、3 4 5</p><p>  0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c ,</p><p>  6 7 8 9 A B</p><p>  0x39 , 0x5e , 0x79 , 0x71 , 0x00</p><p>  C D

54、 E F 無顯示</p><p>  LED顯示器工作方式有兩種:靜態(tài)顯示方式和動態(tài)顯示方式。靜態(tài)顯示的特點是每個數(shù)碼管的段選必須接一個8位數(shù)據(jù)線來保持顯示的字形碼。當送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。這種方法的優(yōu)點是占用CPU時間少,顯示便于監(jiān)測和控制。缺點是硬件電路比較復雜,成本較高。</p><p>  動態(tài)顯示的特點是將所有位數(shù)碼

55、管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。選亮數(shù)碼管采用動態(tài)掃描顯示。所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時都在顯示。動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應略小于靜態(tài)顯示電路中的。</p><p>  圖3-5-2.7段數(shù)碼管動態(tài)顯示電路圖</p><p>  3.6 I/V

56、轉化模塊</p><p>  由于DA轉化器輸出的是電流信號,所以還需要將其轉化為電壓信號,為了各種波形的雙極性輸出還需要連接雙極性轉化電路。</p><p>  圖3-6.雙極性轉化電路 </p><p>  如圖為常用的雙極性轉化電路,第一個運算放大器將電流信號轉變?yōu)殡妷盒盘枺诙€運算放大器和電阻R1,R2共同組成方向加法器,由于電流輸出接的是第一個運算放大器

57、的反相輸出端,所以當滿足2*R2=R1且R2=R3的時候輸出電壓為</p><p>  Vout=Vi-(Vref/2)</p><p>  當要實現(xiàn)雙極性輸出的時候幅值的二進制碼要轉為偏移二進制碼,即將二進制碼對應的零值偏移到80H,在偏移之后,只有幅值二進制碼大于128的輸出才為正,后則為負。</p><p>  通常要得到偏移二進制碼,可以通過求原有二進制的補

58、碼,再加上80H,并舍棄其進位,使得其成為偏移二進制碼。</p><p>  第四章 電路軟件設計</p><p><b>  4.1系統(tǒng)總框圖</b></p><p>  圖4-1.系統(tǒng)總的框</p><p><b>  4.2 顯示子程序</b></p><p>  顯示

59、部分采用動態(tài)輸出的方式,通過控制兩個鎖存器來控制實現(xiàn)單個I/O分時控制輸出輸出數(shù)碼管的段選(字形的選擇)和位選(位權的選擇)。如圖3-5-2顯示電路圖中P0用于輸出數(shù)據(jù),而P2^0和P2^1用來控制寄存器的通斷來控制是輸出字段信息還是位權信息。</p><p>  圖4-2:顯示流程圖</p><p>  通常的數(shù)碼管動態(tài)顯示程序都要進行延時,然后靠人眼的余光實現(xiàn)數(shù)據(jù)的輸出,當延時時間太小

60、的時候會出現(xiàn)數(shù)碼閃爍甚至亂碼,當延時時間設定的太大的時候,有可能出現(xiàn)輸出斷續(xù)的可能,通常需延時5ms,6位數(shù)據(jù)顯示就是30ms,而按鍵的消抖時間不過10ms,所以時間片輪法的話會大大影響電路的正常工作,甚至不能檢測出按鍵輸入,或則按鍵輸入的時候出現(xiàn)顯示斷續(xù)的情況,所以本才設計采用了中斷顯示的方法,利用定時器進行延時,設定好定時器的初值,在固定的延時時間上溢出,然后調用顯示子程序顯示當前的輸出情況,由于定時器中斷程序 執(zhí)行一次只能顯示一位

61、數(shù)據(jù),所以要設定一個全局變量的顯示緩沖區(qū)和全局變量的位選標志。</p><p><b>  4.3 按鍵子程序</b></p><p>  本次設計由于要求對幅值和頻率進行控制,所以要求用相關的按鍵輸入,前面已經(jīng)介紹了各種按鍵的優(yōu)缺點,最后選擇了獨立式鍵盤,分別為+-頻率,+-幅值,模式選擇5位,共占用5個IP口,選擇單片機的P2.4-P2.7口作為按鍵輸入。<

62、/p><p>  圖4-3:按鍵子程序框圖</p><p>  Mode:模式選擇位,用于選擇輸出的波形。</p><p>  Ampl+:幅值+位,步進為0.5,系統(tǒng)的基準電壓為+-2.5V。</p><p>  Ampl-:幅值-位。</p><p>  Freq+:頻率+位,用于調整中斷時間。</p>

63、<p>  Freq-:頻率-位。</p><p>  程序中的模式選擇是通過MODE位輸入,通過設定一個模式標志位,當執(zhí)行一次模式位按鍵程序,標志位自動+1,并指向其所指定的波形。</p><p>  幅值選擇通過按鍵AMPL+和AMPL-輸入,當執(zhí)行了幅值子程序的時候,系統(tǒng)通過改變X9511抽頭的位置,改變其Vw的輸出電壓,通過VREF改變輸出電壓的幅值。</p>

64、<p>  頻率的選擇則是通過FREQ+和FREQ-進行選擇的,當執(zhí)行頻率調節(jié)子程序的時候,通過改變定時的初值實現(xiàn)的,當使用12M晶振時候,正弦表位256位時,理想中最大的頻率可以達到4KHz,當頻率為10Hz的時候,計數(shù)初值為390。由于系統(tǒng)采用的最低的初值時間為100,所以最高只能產(chǎn)生20Hz的頻率。</p><p>  第五章 設計實現(xiàn)與總結</p><p>  輸出波

65、形的種類與頻率的測試</p><p>  測量儀器:穩(wěn)壓電源、示波器、數(shù)字萬用表。</p><p>  測量說明:正弦波、矩形波、三角波,鋸齒波信號的輸出,通過鍵盤來實現(xiàn)其的不同波形的輸出以及其頻率的改變。</p><p>  四種波形的仿真波形圖如下:</p><p><b>  圖(8)正弦波圖形</b></p

66、><p><b>  圖(9)三角波圖形</b></p><p>  圖(10)矩形波圖形</p><p>  圖(11)鋸齒波圖形</p><p>  波形種類及頻率顯示如下:</p><p><b>  總 結</b></p><p>  課程設計是培

67、養(yǎng)學生綜合運用所學知識、發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發(fā)展的日新日異,單片機已經(jīng)成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握單片機的開發(fā)技術是十分重要的。</p><p>  回顧起此次單片機課程設計,我仍感慨頗多。的確,從選題到定稿,從理論到實踐,在好幾個星期的日子里,可以說得是

68、苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不

69、足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對單片機C語言編程掌握得不好……通過這次課程設計之后,一定把以前所學過的知識重新溫故。</p><p>  這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在邢鵬康老師的辛勤指導下,終于游逆而解。同時,在刑陽老師那里我學得到很多實用的知識,在此我表示感謝!同時,對給過我?guī)椭乃型瑢W和各位指導老師再次表示忠心的感

70、謝!</p><p><b>  參考文獻</b></p><p>  [1] 朱清慧、張鳳蕊 .PROTEUS教程-電子線路設計、制版與仿真.清華大學出版社 2011</p><p>  [2] 王靜霞 單片機應用技術(C語言版).電子工業(yè)出版社 2009 </p><p>  [3] 周明德 微型計

71、算機系統(tǒng)原理及應用(第四版).北京:清華大學出版社 2002 </p><p>  [4] 杜華 任意波形發(fā)生器及應用[J].國外電子測量技術 2005 </p><p>  [5] 李相偉 微機系統(tǒng)原理與接口技術 北京:國防工業(yè)出版社 2005 </p><p>  [6] 李群芬 肖看.單片機原理、接口及應用-嵌入式系統(tǒng)技術基礎

72、.武漢:清華大學出版社 2005</p><p><b>  附錄A:系統(tǒng)程序</b></p><p>  /*-----------------------------------------------</p><p>  名稱:基于單片機的函數(shù)信號發(fā)生器</p><p><b>  編寫:maxiao&

73、lt;/b></p><p>  日期:2012.11</p><p>  內容:通過單片機程序控制,產(chǎn)生三角波、方波、正弦波、鋸齒波等</p><p>  ------------------------------------------------*/</p><p>  #include <reg51.h></

74、p><p>  #include <absacc.h></p><p>  #define uchar unsigned char</p><p>  #define DA0832 XBYTE[0xffff]</p><p>  uchar code tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7

75、d,0x07,0x7f,0x6f};</p><p>  uchar code tosin[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5</p><p>  ,0xc7,0xca,0xc

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

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

78、,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99</p><p>  ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0

79、x5a,0x57,0x55,0x51</p><p>  ,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16</p><p>  ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,

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

81、x13,0x15</p><p>  ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e </p><p>  ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x6

82、9,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 };/*正弦波碼 */</p><p>  uchar fun=1,b=0,c=0,d=0,e=0,tl,th;</p><p>  sbit P3_0=P3^0;</p><p>  sbit P3_1=P3^1;</p><p>  sbit P3_2=P3^

83、2;</p><p>  void key1(void);</p><p>  void key2(void);</p><p>  void key3(void);</p><p>  void key4(void);</p><p>  void judge(void);</p><p> 

84、 void main(void)</p><p><b>  {</b></p><p>  TMOD=0X01;</p><p><b>  th=0xff;</b></p><p><b>  tl=0x00;</b></p><p><b&g

85、t;  TH0=th;</b></p><p><b>  TL0=tl;</b></p><p><b>  ET0=1;</b></p><p><b>  EA=1;</b></p><p><b>  TR0=1;</b></p&

86、gt;<p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  judge();</b></p><p><b>  }</b></p><p><b>  }</b&g

87、t;</p><p>  void judge(void)</p><p><b>  {</b></p><p>  uchar line,de1,de2,keym;</p><p><b>  P2=0xff;</b></p><p><b>  keym=P2

88、;</b></p><p>  if(keym==0xff)return;</p><p>  for(de1=0;de1<200;de1++)</p><p>  for(de2=0;de2<125;de2++){;}</p><p><b>  P2=0xff;</b></p>

89、<p><b>  keym=P2;</b></p><p>  if(keym==0xff)return;</p><p><b>  P2=0xff;</b></p><p><b>  line=P2;</b></p><p>  if(P2==0xfe) ke

90、y1();</p><p>  if(P2==0xfd) key2();</p><p>  if(P2==0xfb) key3();</p><p>  if(P2==0xf7) key4();</p><p><b>  }</b></p><p>  void key1(void)

91、 //1鍵選擇發(fā)波類型,1為正弦波,2為三角波,3為方波,4為鋸齒波。</p><p><b>  {</b></p><p><b>  fun++;</b></p><p>  if(fun==5)fun=0x01;</p><p><b>  }</b>&l

92、t;/p><p>  void key2(void) //2鍵加大頻率</p><p><b>  {</b></p><p>  if(th<0xff)th++;</p><p><b>  }</b></p><p>  void key3(voi

93、d) //3鍵減小頻率</p><p><b>  {</b></p><p>  if(th>0x00)th--;</p><p><b>  }</b></p><p>  void key4(void) //4鍵顯示頻率</p>&l

94、t;p><b>  {</b></p><p><b>  double t;</b></p><p><b>  int f;</b></p><p>  TR0=0;//ET0的區(qū)別</p><p>  while (P2==0xf7)</p><

95、p><b>  {</b></p><p>  t=(65535-th*256-tl)*0.5;</p><p>  f=(int)(15625/(t*4));</p><p><b>  P3_0=0; </b></p><p><b>  P3_1=0; </b>&l

96、t;/p><p><b>  P3_2=0;</b></p><p>  P1=tab[f%10];</p><p><b>  f=f/10;</b></p><p>  P3_0=1; P3_1=0; P3_2=0;</p><p>  P1=tab[f%10];</

97、p><p><b>  f=f/10;</b></p><p>  P3_0=0; P3_1=1; P3_2=0;</p><p>  P1=tab[f%10];</p><p><b>  f=f/10;</b></p><p>  P3_0=1; P3_1=1; P3_2

98、=0;</p><p>  P1=tab[f];</p><p><b>  }</b></p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p>  void time0_int(void) interr

99、upt 1 //中斷服務程序</p><p><b>  {</b></p><p><b>  TR0=0;</b></p><p>  if(fun==1)</p><p><b>  {</b></p><p>  DA0832=tosin[b

100、]; //正弦波</p><p><b>  b++;</b></p><p><b>  }</b></p><p>  else if(fun==2) //三角波</p><p><b>  {</b></p>

101、;<p>  if(c<128)DA0832=c*2;</p><p>  else DA0832=(255-c)*2;</p><p><b>  c++;</b></p><p><b>  }</b></p><p>  else if(fun==3)

102、 // 方波</p><p><b>  {</b></p><p><b>  d++;</b></p><p>  if(d<=128)DA0832=0x00;</p><p>  else DA0832=0xff;</p><p><b>  }

103、</b></p><p>  else if(fun==4) // 鋸齒波</p><p><b>  {</b></p><p><b>  e++;</b></p><p><b>  DA0832=e;</b></p>

104、<p><b>  }</b></p><p><b>  TH0=th;</b></p><p><b>  TL0=tl;</b></p><p><b>  TR0=1;</b></p><p><b>  }</b&g

溫馨提示

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

評論

0/150

提交評論