單片機課程設計—波形發生器_第1頁
單片機課程設計—波形發生器_第2頁
單片機課程設計—波形發生器_第3頁
單片機課程設計—波形發生器_第4頁
單片機課程設計—波形發生器_第5頁
已閱讀5頁,還剩16頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、. . . . - 1 - / 21輕工業學院計算機與通信工程學院計算機與通信工程學院單片機與接口技術單片機與接口技術課程設計總結報告課程設計總結報告設計題目設計題目:波形發生器學生學生:系別系別:專業專業:班級班級:學號學號:指導教師指導教師:. . . . - 2 - / 212011 年 12 月 22 日輕工業學院課程設計任務書課程設計任務書題目題目波形發生器波形發生器專業、班級專業、班級學號學號姓名姓名薛茹主要容:設計一個產生各種波形的波形發生器主要容:設計一個產生各種波形的波形發生器基本要求:利用單片機基本要求:利用單片機 P1.0P1.0 引腳輸出頻率圍引腳輸出頻率圍 1Hz1H

2、z 1000Hz1000Hz 的正的正弦波、方波、三角波、梯形波、鋸齒波,并用示波器觀察。弦波、方波、三角波、梯形波、鋸齒波,并用示波器觀察。. . . . - 3 - / 21目錄目錄一、設計目的與意義一、設計目的與意義- - 4 4 - -1.1 設計目的- 4 -1.2 設計意義- 4 -二、方案論證二、方案論證- - 4 4 - -2.1 設計要求- 4 -2.2 方案論證- 5 -三、硬件電路設計三、硬件電路設計- - 5 5 - -3.1 設計思路、元件選型- 5 -3.2 原理圖- 6 -3.3 主要芯片介紹- 6 -3.4 硬件連線圖- 9 -四、軟件設計四、軟件設計- - 1

3、010 - -4.1 鋸齒波的產生過程- 11 -4.2 梯形波的產生過程- 12 -4.3 三角波的產生過程- 14 -4.4 方波的產生過程- 15 -4.5 正弦波的產生過程- 16 -五、調試與仿真五、調試與仿真- - 1717 - -六、總結六、總結- - 2020 - -七、參考文獻:七、參考文獻:- - 2020 - -. . . . - 4 - / 21一、設計目的與意義一、設計目的與意義1.11.1 設計目的設計目的(1)利用所學單片機的理論知識進行軟硬件整體設計,鍛煉學生理論聯系實際、提高我們的綜合應用能力。(2)我們這次的課程設計是以單片機為基礎,設計并開發能輸出多種波形

4、(正弦波、三角波、鋸齒波、方波、梯形波等)且頻率、幅度可變的函數發生器。(3)掌握各個接口芯片(如 0832 等)的功能特性與接口方法,并能運用其實現一個簡單的微機應用系統功能器件。(4)在平時的學習中,我們所學的知識大都是課本上的,在機房的練習大家也都是分散的對各個章節的容進行練習。因此,缺乏一種系統的設計鍛煉。在課程所學結束以后,這樣的課程設計十分有助于學生的知識系統的總結到一起。(5)通過這幾個波形進行組合形成了一個函數發生器,使得我對系統的整個框架的設計有了一個很好的鍛煉。這不僅有助于大家找到自己感興趣的題目,更可以鍛煉大家微機知識的應用。1.21.2 設計意義設計意義波形發生器作為一

5、種常用的信號源,是現代測試領域應用最為廣泛的通用儀器之一。在研制、生產、測試和維修各種電子元件、部件以與整機設備時,都學要有信號源,由它產生不同頻率不同波形的電壓、電流信號并加到被測器件或設備上,用其他儀器觀察、測量被測儀器的輸出響應,以分析確定它們的性能參數。信號發生器是電子測量領域中最基本、應用最廣泛的一類電子儀器。它可以產生多種波形信號,如正弦波,三角波,方波等,因而廣泛用于通信、雷達、導航、宇航等領域。二、方案論證二、方案論證2.12.1 設計要求設計要求使用計算機和數模轉換器構成信號發生器,可以產生方波、三角波、鋸齒波和正弦波等多種波形,波形的周期、頻率可調。要求完成計算機和 DAC

6、 的選型,了解不同波形的產生原理和設計方案,畫出硬件電路圖,并編程完成軟件部分,最后調試觀察產生不同類型的波形信號。(1)課程設計論文容要正確,概念要清楚;(2)完成任務書所規定的容;(3)附有電路原理圖與程序流程圖,以與程序清單;(4)文字要通順,書寫要工整,設計圖紙必須符合規。. . . . - 5 - / 212.22.2 方案論證方案論證信號發生器的實現方法通常有以下幾種:方案一:用分立元件組成的函數發生器:通常是單函數發生器且頻率不高,其工作不很穩定,不易調試。方案二:可以由晶體管、運放 IC 等通用器件制作,更多的則是用專門的函數信號發生器 IC 產生。早期的函數信號發生器 IC,

7、如L8038、BA205、XR2207/2209 等,它們的功能較少,精度不高,頻率上限只有300kHz,無法產生更高頻率的信號,調節方式也不夠靈活,頻率和占空比不能獨立調節,二者互相影響。方案三:利用專用直接數字合成芯片的函數發生器:能產生任意波形并達到很高的頻率。但成本較高。方案四:采用 AT89C51 單片機和 DAC0832 芯片,直接連接鍵盤和顯示。該種方案主要對 AT89C51 單片機的各個 I/O 口充分利用. P1 口是連接鍵盤以與接顯示電路,P2 口連接 DAC0832 輸出波形.這樣總體來說,能對單片機各個接口都利用上,而不在多用其它芯片,從而減小了系統的成本.也對按照系統

8、便攜式低頻信號發生器的要求所完成.占用空間小,使用芯片少,低功耗。綜合考慮,方案四各項性能和指標都優于其他幾種方案,能使輸出頻率有較好的穩定性,充分體現了模塊化設計的要求,而且這些芯片與器件均為通用器件,在市場上較常見,價格也低廉,樣品制作成功的可能性比較大,所以本設計采用方案四。三、硬件電路設計三、硬件電路設計3.13.1 設計思路、元件選型設計思路、元件選型設計思路:設計思路:(一) 、課設需要各個波形的基本輸出。如輸出鋸齒波、三角波、方波、正弦波。這些波形的實現的具體步驟:鋸齒波實現很簡單,只需要一開始定義一個初值,然后不斷的加 1,當溢出后又重初值開始加起,就這樣循環下去。三角波的實驗

9、過程是先加后減,實現方法是先是從 00H 開始加 1 直到溢出后就執行減 1 操作,就這樣不斷調用這個循環。方波的實現方法是連續輸出一個數,到某個時候就改變一下值,可以把值定義為正極性的,也可以是負極性。正弦波的實現是非常麻煩的。它的實現過程是通過定義一些數據,然后執行時直接輸出定義的數據就可以了。(二) 、通過 P1 口和開關 K0-K4 相連接來控制各個波形的輸出。能根據 k0-k5 鍵狀態進行波形切換,當某一按鍵按下時,輸出相對應的波形。元件選型:元件選型:單片機 AT89C51 系統,DAC0832 一片,PC 機一臺,運算放大器. . . . - 6 - / 213.23.2 原理圖

10、原理圖3.33.3 主要芯片介紹主要芯片介紹(1) 、DAC0832 芯片介紹:0832 采用雙緩沖接口方式,其傳送控制端接地,輸入所存允許斷 ILE 與+5V電源相連,利用一個地址碼進行二次輸出操作,完成數據的傳送和激動轉換,第一次操作室 P2.6 為高電平,將 P0 口數據線上的數據鎖存于 DAC0832 的輸入寄存器中。第二次操作是寫控制信號由效,傳送控制端為低電平,將輸入寄存器中的容鎖存入 0832 的 DAC 寄存器中,D/A 轉換器便開始對鎖存于 DAC 寄存器的 8 位數據進行轉換,約經過 1/2 時鐘周期后,在輸出端(IOUT2、IOUT1)建立穩定的電流輸出。運放的作用是將

11、0832 輸出的模擬電流信號轉換為電壓波形。DAC0832 為一個 8 位 D/A 轉換器,單電源供電,在+5+15V 圍均可正常工作。基準電壓的圍為10V,電流建立時間為 1s,CMOS 工藝,低功耗 20mW。DAC0832 的部結構框圖如下圖所示。開開關關AT89C51D/A轉轉換換運運放放各各種種波波形形各各種種波波形形輸輸出出. . . . - 7 - / 21圖 2-2 DAC0832 工作原理圖DAC0832 的外部引腳與功能介紹圖如下:VREF8GND3VCC20CS1WR12DI34DI25DI16D107RFB9GND10IOUT111IOUT212DI713DI614DI

12、515DI416XFER17WR218ILE(BY1/BY2)19U1DAC0832圖 1 DAC0832 引腳圖DAC0832 部結構資料:芯片有兩級輸入寄存器,使 DAC0832 具備雙緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路 D/A 異步輸入、同步轉換等)。D/A 轉換結果采用電流形式輸出。要是需要相應的模擬信號,可通過一個高輸入阻抗的線性運算放大器實現這個供功能。運放的反饋電阻可通過RFB 端引用片固有電阻,還可以外接DI0DI7:數據輸入線,TLL 電平。ILE:數據鎖存允許控制信號輸入線,高電平有效。CS:片選信號輸入線,低電平有效。WR1:為輸入寄存器的

13、寫選通信號。XFER:數據傳送控制信號輸入線,低電平有效。WR2:為 DAC 寄存器寫選通輸入線。Iout1:電流輸出線。當輸入全為 1 時 Iout1 最大。Iout2: 電流輸出線。其值與 Iout1 之和為一常數。Rfb:反饋信號輸入線,芯片部有反饋電阻. Vcc:電源輸入線 (+5v+15v) . . . . - 8 - / 21Vref:基準電壓輸入線 (-10v+10v) AGND:模擬地,摸擬信號和基準電源的參考地. DGND:數字地,兩種地線在基準電源處共地比較好(2)單片機 AT89C51 介紹:AT89C51 是一種帶 4K 字節閃存可編程可擦除只讀存儲器(FPEROMFl

14、ash Programmable and Erasable Read Only Memory)的低電壓、高性能 CMOS 8 位微處理器,俗稱單片機。AT89C2051 是一種帶 2K 字節閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除 1000 次。該器件采用ATMEL 高密度非易失存儲器制造技術制造,與工業標準的 MCS-51 指令集和輸出管腳相兼容。由于將多功能 8 位 CPU 和閃爍存儲器組合在單個芯片中,ATMEL 的AT89C51 是一種高效微控制器,AT89C2051 是它的一種精簡版本。AT89C 單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方

15、案。外形與引腳排列如下圖所示:圖 2 AT89C51 引腳圖AT89C51 管腳說明:VCC:供電電壓。GND:接地。P0 口:P0 口為一個 8 位漏級開路雙向 I/O 口,每腳可吸收 8TTL 門電流。當P1 口的管腳第一次寫 1 時,被定義為高阻輸入。P0 能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在 FIASH 編程時,P0 口作為原碼輸入口,當 FIASH 進行校驗時,P0 輸出原碼,此時 P0 外部必須被拉高。. . . . - 9 - / 21P1 口:P1 口是一個部提供上拉電阻的 8 位雙向 I/O 口,P1 口緩沖器能接收輸出 4TTL 門電流。P1 口

16、管腳寫入 1 后,被部上拉為高,可用作輸入,P1 口被外部下拉為低電平時,將輸出電流,這是由于部上拉的緣故。在 FLASH 編程和校驗時,P1 口作為第八位地址接收。P2 口:P2 口為一個部上拉電阻的 8 位雙向 I/O 口,P2 口緩沖器可接收,輸出 4 個 TTL 門電流,當 P2 口被寫“1”時,其管腳被部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2 口的管腳被外部拉低,將輸出電流。這是由于部上拉的緣故。P2 口當用于外部程序存儲器或 16 位地址外部數據存儲器進行存取時,P2 口輸出地址的高八位。在給出地址“1”時,它利用部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2 口

17、輸出其特殊功能寄存器的容。P2 口在 FLASH編程和校驗時接收高八位地址信號和控制信號。P3 口:P3 口管腳是 8 個帶部上拉電阻的雙向 I/O 口,可接收輸出 4 個 TTL門電流。當 P3 口寫入“1”后,它們被部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3 口將輸出電流(ILL)這是由于上拉的緣故。RST:復位輸入。當振蕩器復位器件時,要保持 RST 腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節。在 FLASH 編程期間,此引腳用于輸入編程脈沖。在平時,ALE 端以不變的頻率周期輸出正脈沖信號,此頻率

18、為振蕩器頻率的 1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個 ALE 脈沖。如想禁止 ALE 的輸出可在 SFR8EH 地址上置 0。此時, ALE只有在執行 MOVX,MOVC 指令是 ALE 才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態 ALE 禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN 有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN 信號將不出現。 /EA/VPP:當/EA 保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH)

19、,不管是否有部程序存儲器。注意加密方式 1 時,/EA 將部鎖定為 RESET;當/EA 端保持高電平時,此間部程序存儲器。在 FLASH 編程期間,此引腳也用于施加 12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入與部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。3.43.4 硬件連線圖硬件連線圖. . . . - 10 - / 21圖 3 硬件連線圖四、軟件設計四、軟件設計總體方框圖總體方框圖函數發生器的設計K1鍵梯形波K2鍵三角波K3鍵方波K0鍵鋸齒波K4鍵正弦波圖 4 總體設計功能圖. . . . - 11 - / 21設計思路:設計思路:利用中斷,當 5 個開關中有

20、任意一個閉合時,跳轉至中斷程序,在中斷程序中判斷是哪一個按鍵閉合,跳轉至相應的程序,執行輸出波形的操作,每輸出一個點之后,判斷按鍵是否斷開,如果依舊閉合,則繼續輸出,如果已經斷開,則結束中斷程序。程序如下:ORG 0000HLJMP MAINORG 0003H;外部中斷 0LJMP INT00ORG 0040HMAIN: MOV SP,60H;更改堆棧指針,避免堆棧與工作寄存器區發生沖突SETB IT0;外部中斷請求 0 為下降沿觸發方式SETB EA;中斷允許總開關打開SETB EX0;允許外部中斷 0 中斷INT00: CLR EA;關中斷PUSH PSW;現場保護PUSH AccSETB

21、 EA;開中斷JNB P1.0,IR0;如果 K0 鍵閉合,則跳轉至 IR0 輸出鋸齒波JNB P1.1,IR1;如果 K1 鍵閉合,則跳轉至 IR1 輸出梯形波JNB P1.2,IR2;如果 K2 鍵閉合,則跳轉至 IR2 輸出三角波JNB P1.3,IR3;如果 K3 鍵閉合,則跳轉至 IR3 輸出方波JNB P1.4,IR4;如果 K4 鍵閉合,則跳轉至 IR4 輸出正弦波INTIR: CLR EA;關中斷POP Acc;現場恢復POP PSWSETB EA;開中斷RETI4.14.1 鋸齒波的產生過程鋸齒波的產生過程鋸齒波的實現過程是首先定義一個初值然后進行加法操作,加的步數的多少則根

22、據要求的頻率來進行。然后加到某個數之后就再重新設置為初值,再重復執行剛剛的操作,如此循環下去。. . . . - 12 - / 21鋸齒波發生流程圖如下圖所示:鋸齒波發生子程序如下:IR0:MOV R0,#0FEH ;設置端口地址MOV A,#00HLOOP:MOVX R0,A ;寫入 P1.0,INTIR ;如果 k0 鍵已經斷開,則返回INC A ;A 加一SJMP LOOP ;循環LJMP INTIR ;返回 4.24.2 梯形波產生過程梯形波產生過程梯形波的實現是設置一個初值,然后進行加一,當加到某個數時延時,之后減一,減到初值時在返回到之前的操作,繼續加一、延時、減一。梯形波發生流程

23、圖如下圖所示:定義變量 ifor(i=0;i255;i+) P0=i判斷按鍵是否斷開否返回是開 始. . . . - 13 - / 21梯形波發生子程序如下:IR1:MOV R0,#0FEH;設置端口地址MOV A,#00HUP:MOVX R0,A;寫入 P1.1,INTIR;如果 k1 鍵已經斷開,則返回INC A;A 加一JNZ UP;循環DEC A;如果已經溢出,則減一,減一之后 A 的值為 255LCALL DELAY;延時 P1.1,INTIR;如果 k1 鍵已經斷開,則返回DOWN:DEC AMOVX R0,A;寫入 P1.1,INTIR;如果 k1 鍵已經斷開,則返回JNZ DO

24、WN;循環SJMP UP;如果減到 0,則跳轉至 UP,繼續執行加一操作LJMP INTIR;返回DELAY: MOV R7,#100;延時子程序DELAY1:MOV R6,#10NOPDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RET開始定義變量 ifor(i=0;i0;i-)判斷按鍵是否斷開返回是否. . . . - 14 - / 214.34.3 三角波的產生過程三角波的產生過程三角波的實現是設置一個初值,當加到某個值的時候,執行減一操作,減到初值時,再加一。三角波發生流程圖如下圖所示:三角波發生子程序如下:IR2:MOV R0,#0FEH;設置端口地址MOV

25、A,#00HUP2:MOVX R0,A;寫入 P1.2,INTIR;如果 k2 鍵已經斷開,則返回INC A;A 加一JNZ UP2;循環DOWN2: DEC A;A 減一MOVX R0,A;寫入 P1.2,INTIR;如果 k2 鍵已經斷開,則返回JNZ DOWN2;循環SJMP UP2;如果減到 0,則跳轉至 UP2,繼續加一操作LJMP INTIR;返回開始定義變量 ifor(i=0;i0;i-)判斷按鍵是否斷開返回是否. . . . - 15 - / 21 4.44.4 方波的產生過程方波的產生過程方波的實現只需開始的時候設置一個初值然后直接輸出這個值就行了,輸出一段時間后,然后再重新

26、置一個數據,然后再輸出這個數據一段時間,但是此時的時間一定要等于前面那段時間。這樣才是一個方波,如果兩個時間不一樣,那就相當于一個脈沖波了。方波發生流程圖如下圖所示:循環開始 給 A 賦值 0 x00延時給 A 賦值 0 xff延時判斷按鍵是否斷開返回開 始是否方波發生子程序如下:IR3:MOV R0,#0FEH;設置端口地址POSI:MOV A,#00H;給 A 賦值 0 x00MOVX R0,A;寫入LCALL DELAY;延時 P1.3,INTIR;如果 k3 鍵已經斷開,則返回NEGA:MOV A,#0FFH;給 A 賦值 0 xFFMOVX R0,A;寫入. . . . - 16 -

27、 / 21LCALL DELAY;延時 P1.3,INTIR;如果 k3 鍵已經斷開,則返回SJMP POSI;跳轉至 POSI,繼續下一個波形的輸出LJMP INTIR;返回4.54.5 正弦波的產生過程正弦波的產生過程正弦波的實現需要查表,每查一次表,輸出一個數值,之后查下一個數值繼續輸出,當一個波形的 256 個數值全部輸出之后,從頭開始繼續輸出。正弦波發生流程圖如下圖所示:正弦波發生子程序如下:IR4:MOV R0,#0FEH;設置端口地址MOV R1,#00HXX:MOV A,R1LCALL HANSHU;調用查表函數MOVX R0,A;寫入 P1.4,INTIR;如果 k4 鍵已經

28、斷開,則返回INC R1SJMP XX;繼續查表LJMP INTIR;返回HANSHU: MOV DPTR,#TAB1MOVC A,A+DPTRRETTAB1: db 080h,083h,086h,089h,08ch,090h,093h,096h,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0aeh db 0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d8h db 開始查表并輸出判斷按鍵是否斷開返回是否. . . . - 17 - / 210dah,0dch,0d

29、eh,0e0h,0e2h,0e4h,0e6h,0e8h,0eah,0ebh,0edh,0efh,0f0h,0f1h,0f3h,0f4h db 0f5h,0f6h,0f8h,0f9h,0fah,0fah,0fbh,0fch,0fdh,0fdh,0feh,0feh,0feh,0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh,0feh,0feh,0feh,0fdh,0fdh,0fch,0fbh,0fah,0fah,0f9h,0f8h,0f6h db 0f5h,0f4h,0f3h,0f1h,0f0h,0efh,0edh,0ebh,0eah,0e8h,0e6h,0e4h,0e2

30、h,0e0h,0deh,0dch db 0dah,0d8h,0d5h,0d3h,0d1h,0ceh,0cch,0c9h,0c7h,0c4h,0c1h,0bfh,0bch,0b9h,0b6h,0b3h db0b1h,0aeh,0abh,0a8h,0a5h,0a2h,09fh,09ch,099h,096h,093h,090h,08ch,089h,086h,083h db 080h,07dh,07ah,077h,074h,070h,06dh,06ah,067h,064h,061h,05eh,05bh,058h,055h,052h db 04fh,04dh,04ah,047h,044h,041h,03

31、fh,03ch,039h,037h,034h,032h,02fh,02dh,02bh,028h db 026h,024h,022h,020h,01eh,01ch,01ah,018h,016h,015h,013h,011h,010h,00fh,00dh,00ch db 00bh,00ah,008h,007h,006h,006h,005h,004h,003h,003h,002h,002h,002h,001h,001h,000h db 000h,000h,001h,001h,002h,002h,002h,003h,003h,004h,005h,006h,006h,007h,008h,00ah db 00bh,00ch,00dh,00fh,010h,011h,013h,015h,016h,018h,01ah,01ch,01eh,020h,022h,024h db 026h,028h,02bh,02dh,02fh,032h,034h,037h,039h,03ch,03fh,041h,044h,047h,04ah,04dh db 04

溫馨提示

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

評論

0/150

提交評論