版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 主要內(nèi)容:設計一個產(chǎn)生各種波形的波形發(fā)生器</p><p> 基本要求:利用單片機P1.0引腳輸出頻率范圍1Hz – 1000Hz的正弦波、方波、三角波、梯形波、鋸齒波,并用示波器觀察。</p><p><b> 一、設計目的</b></p><p> ?。?)利用所學單片機的理論知識進行軟硬件整體設計,鍛煉學生理論聯(lián)
2、系實際、提高我們的綜合應用能力。 (2)我們這次的課程設計是以單片機為基礎,設計并開發(fā)能輸出多種波形(正弦波、三角波、鋸齒波、方波、梯形波等)且頻率、幅度可變的函數(shù)發(fā)生器。 (3)掌握各個接口芯片(如0832等)的功能特性及接口方法,并能運用其實現(xiàn)一個簡單的微機應用系統(tǒng)功能器件。 (4)在平時的學習中,我們所學的知識大都是課本上的,在機房的練習大家也都是分散的對各個章節(jié)的內(nèi)容進行練習。因此,缺乏一種系統(tǒng)的設計鍛煉。在課
3、程所學結(jié)束以后,這樣的課程設計十分有助于學生的知識系統(tǒng)的總結(jié)到一起。</p><p><b> 二、方案要求及設計</b></p><p><b> 2.1設計要求</b></p><p> 使用計算機和數(shù)模轉(zhuǎn)換器構(gòu)成信號發(fā)生器,可以產(chǎn)生方波、三角波、鋸齒波和正弦波等多種波形,波形的周期、頻率可調(diào)。</p&g
4、t;<p> 要求完成計算機和DAC的選型,了解不同波形的產(chǎn)生原理和設計方案,畫出硬件電路圖,并編程完成軟件部分,最后調(diào)試觀察產(chǎn)生不同類型的波形信號。</p><p> ?。?)課程設計論文內(nèi)容要正確,概念要清楚;</p><p> ?。?)完成任務書所規(guī)定的內(nèi)容;</p><p> ?。?)附有電路原理圖及程序流程圖,以及程序清單;</p&g
5、t;<p> ?。?)文字要通順,書寫要工整,設計圖紙必須符合規(guī)范。</p><p><b> 2.2方案設計</b></p><p> 采用AT89C51單片機和DAC0832芯片,直接連接鍵盤和顯示。該種方案主要對AT89C51單片機的各個I/O口充分利用. P1口是連接鍵盤以及接顯示電路,P2口連接DAC0832輸出波形.這樣總體來說,能對單片
6、機各個接口都利用上,而不在多用其它芯片,從而減小了系統(tǒng)的成本.也對按照系統(tǒng)便攜式低頻信號發(fā)生器的要求所完成.占用空間小,使用芯片少,低功耗。</p><p><b> 三、硬件電路設計</b></p><p> 3.1設計思路、元件選型</p><p><b> 設計思路:</b></p><p&
7、gt; ?。ㄒ唬⒄n設需要各個波形的基本輸出。如輸出鋸齒波、三角波、方波、正弦波。這些波形的實現(xiàn)的具體步驟:鋸齒波實現(xiàn)很簡單,只需要一開始定義一個初值,然后不斷的加1,當溢出后又重初值開始加起,就這樣循環(huán)下去。三角波的實驗過程是先加后減,實現(xiàn)方法是先是從00H開始加1直到溢出后就執(zhí)行減1操作,就這樣不斷調(diào)用這個循環(huán)。方波的實現(xiàn)方法是連續(xù)輸出一個數(shù),到某個時候就改變一下值,可以把值定義為正極性的,也可以是負極性。正弦波的實現(xiàn)是非常麻煩的。
8、它的實現(xiàn)過程是通過定義一些數(shù)據(jù),然后執(zhí)行時直接輸出定義的數(shù)據(jù)就可以了。</p><p> ?。ǘ?、通過P1口和開關K0-K4相連接來控制各個波形的輸出。能根據(jù)k0-k5鍵狀態(tài)進行波形切換,當某一按鍵按下時,輸出相對應的波形。 </p><p> 元件選型:單片機AT89C51系統(tǒng),DAC0832一片,PC機一臺,運算放大器</p><p><b>
9、3.2原理圖</b></p><p> 3.3主要芯片介紹 </p><p> ?。?)、DAC0832芯片介紹:</p><p> 0832采用雙緩沖接口方式,其傳送控制端接地,輸入所存允許斷ILE與+5V電源相連,利用一個地址碼進行二次輸出操作,完成數(shù)據(jù)的傳送和激動轉(zhuǎn)換,第一次操作室P2.6為高電平,將P0口數(shù)據(jù)線上的數(shù)據(jù)鎖存于DAC0832的輸
10、入寄存器中。第二次操作是寫控制信號由效,傳送控制端為低電平,將輸入寄存器中的內(nèi)容鎖存入0832的DAC寄存器中,D/A轉(zhuǎn)換器便開始對鎖存于DAC寄存器的8位數(shù)據(jù)進行轉(zhuǎn)換,約經(jīng)過1/2時鐘周期后,在輸出端(IOUT2、IOUT1)建立穩(wěn)定的電流輸出。運放的作用是將0832輸出的模擬電流信號轉(zhuǎn)換為電壓波形。DAC0832為一個8位D/A轉(zhuǎn)換器,單電源供電,在+5~+15V范圍內(nèi)均可正常工作?;鶞孰妷旱姆秶鸀?#177;10V,電流建立時間為
11、1μs,CMOS工藝,低功耗20mW。DAC0832的內(nèi)部結(jié)構(gòu)框圖如下圖所示。</p><p> 圖2-2 DAC0832工作原理圖</p><p> DAC0832的外部引腳及功能介紹圖如下:</p><p> 圖1 DAC0832引腳圖</p><p> DAC0832內(nèi)部結(jié)構(gòu)資料:芯片內(nèi)有兩級輸入寄存器,使DAC0832具備雙緩
12、沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路D/A異步輸入、同步轉(zhuǎn)換等)。D/A轉(zhuǎn)換結(jié)果采用電流形式輸出。要是需要相應的模擬信號,可通過一個高輸入阻抗的線性運算放大器實現(xiàn)這個供功能。運放的反饋電阻可通過RFB端引用片內(nèi)固有電阻,還可以外接</p><p> DI0~DI7:數(shù)據(jù)輸入線,TLL電平。 </p><p> ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效。
13、 </p><p> CS:片選信號輸入線,低電平有效。 </p><p> WR1:為輸入寄存器的寫選通信號。 </p><p> XFER:數(shù)據(jù)傳送控制信號輸入線,低電平有效。 </p><p> WR2:為DAC寄存器寫選通輸入線。 </p><p> Iout1:電流輸出線。當輸入全為1時Iout1最
14、大。 </p><p> Iout2: 電流輸出線。其值與Iout1之和為一常數(shù)。 </p><p> Rfb:反饋信號輸入線,芯片內(nèi)部有反饋電阻. </p><p> Vcc:電源輸入線 (+5v~+15v) </p><p> Vref:基準電壓輸入線 (-10v~+10v) </p><p> AG
15、ND:模擬地,摸擬信號和基準電源的參考地. </p><p> DGND:數(shù)字地,兩種地線在基準電源處共地比較好</p><p> (2)單片機AT89C51介紹:</p><p> AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓
16、、高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統(tǒng)提供了
17、一種靈活性高且價廉的方案。外形及引腳排列如下圖所示:</p><p> 圖2 AT89C51引腳圖</p><p> AT89C51管腳說明:</p><p> VCC:供電電壓。 </p><p><b> GND:接地。 </b></p><p> P0口:P0口為一個8位漏級開路雙
18、向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 </p><p> P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作
19、輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 </p><p> P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址
20、外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 </p><p> P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平
21、,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。 </p><p> ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對
22、外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 </p><p> /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)
23、存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 </p><p> /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 </p><p> XTAL1:反向振蕩放大器
24、的輸入及內(nèi)部時鐘工作電路的輸入。 </p><p> XTAL2:來自反向振蕩器的輸出。</p><p><b> 3.4硬件連線圖</b></p><p><b> 四、軟件設計</b></p><p> 利用中斷,當5個開關中有任意一個閉合時,跳轉(zhuǎn)至中斷程序,在中斷程序中判斷是哪一個按鍵
25、閉合,跳轉(zhuǎn)至相應的程序,執(zhí)行輸出波形的操作,每輸出一個點之后,判斷按鍵是否斷開,如果依舊閉合,則繼續(xù)輸出,如果已經(jīng)斷開,則結(jié)束中斷程序。</p><p><b> 程序如下:</b></p><p><b> ORG 0000H</b></p><p><b> LJMP MAIN</b><
26、;/p><p> ORG 0003H;外部中斷0</p><p> LJMP INT00</p><p><b> ORG 0040H</b></p><p> MAIN: MOV SP,60H;更改堆棧指針,避免堆棧與工作寄存器區(qū)發(fā)生沖突</p><p> SETB IT0
27、;外部中斷請求0為下降沿觸發(fā)方式</p><p> SETB EA;中斷允許總開關打開</p><p> SETB EX0;允許外部中斷0中斷</p><p> INT00: CLR EA;關中斷</p><p> PUSH PSW;現(xiàn)場保護</p><p><b> P
28、USH Acc</b></p><p> SETB EA;開中斷</p><p> JNB P1.0,IR0;如果K0鍵閉合,則跳轉(zhuǎn)至IR0輸出鋸齒波</p><p> JNB P1.1,IR1;如果K1鍵閉合,則跳轉(zhuǎn)至IR1輸出梯形波</p><p> JNB P1.2,IR2;如果K2鍵閉合,則跳轉(zhuǎn)至
29、IR2輸出三角波</p><p> JNB P1.3,IR3;如果K3鍵閉合,則跳轉(zhuǎn)至IR3輸出方波</p><p> JNB P1.4,IR4;如果K4鍵閉合,則跳轉(zhuǎn)至IR4輸出正弦波</p><p> INTIR: CLR EA;關中斷</p><p> POP Acc;現(xiàn)場恢復</p><
30、;p><b> POP PSW</b></p><p> SETB EA;開中斷</p><p><b> RETI</b></p><p> 4.1鋸齒波的產(chǎn)生過程</p><p> 鋸齒波的實現(xiàn)過程是首先定義一個初值然后進行加法操作,加的步數(shù)的多少則根據(jù)要求的頻率來進行。然
31、后加到某個數(shù)之后就再重新設置為初值,再重復執(zhí)行剛剛的操作,如此循環(huán)下去。</p><p> 鋸齒波發(fā)生子程序如下:</p><p> IR0:MOV R0,#0FEH ;設置端口地址</p><p> MOV A,#00H</p><p> LOOP:MOVX @R0,A ;寫入</p><p> JB
32、 P1.0,INTIR ;如果k0鍵已經(jīng)斷開,則返回</p><p> INC A ;A加一</p><p> SJMP LOOP ;循環(huán)</p><p> LJMP INTIR ;返回</p><p> 4.2梯形波產(chǎn)生過程</p><p> 梯形波的實現(xiàn)是設置一個初值,然后進
33、行加一,當加到某個數(shù)時延時,之后減一,減到初值時在返回到之前的操作,繼續(xù)加一、延時、減一。</p><p> 梯形波發(fā)生子程序如下:</p><p> IR1:MOV R0,#0FEH;設置端口地址</p><p> MOV A,#00H</p><p> UP:MOVX @R0,A;寫入</p><
34、p> JB P1.1,INTIR;如果k1鍵已經(jīng)斷開,則返回</p><p> INC A;A加一</p><p> JNZ UP;循環(huán)</p><p> DEC A;如果已經(jīng)溢出,則減一,減一之后A的值為255</p><p> LCALL DELAY;延時</p><p&
35、gt; JB P1.1,INTIR;如果k1鍵已經(jīng)斷開,則返回</p><p> DOWN:DEC A</p><p> MOVX @R0,A;寫入</p><p> JB P1.1,INTIR;如果k1鍵已經(jīng)斷開,則返回</p><p> JNZ DOWN;循環(huán)</p><p> SJ
36、MP UP;如果減到0,則跳轉(zhuǎn)至UP,繼續(xù)執(zhí)行加一操作</p><p> LJMP INTIR;返回</p><p> DELAY:MOV R7,#100;延時子程序 </p><p> DELAY1:MOV R6,#10</p><p><b> NOP</b></p>&l
37、t;p> DELAY2:DJNZ R6,DELAY2</p><p> DJNZ R7,DELAY1</p><p><b> RET</b></p><p> 4.3 三角波的產(chǎn)生過程</p><p> 三角波的實現(xiàn)是設置一個初值,當加到某個值的時候,執(zhí)行減一操作,減到初值時,再加一。</p>
38、;<p> 三角波發(fā)生子程序如下:</p><p> IR2:MOV R0,#0FEH;設置端口地址</p><p> MOV A,#00H</p><p> UP2:MOVX @R0,A;寫入</p><p> JB P1.2,INTIR;如果k2鍵已經(jīng)斷開,則返回</p><p&
39、gt; INC A;A加一</p><p> JNZ UP2;循環(huán)</p><p> DOWN2:DEC A;A減一</p><p> MOVX @R0,A;寫入</p><p> JB P1.2,INTIR;如果k2鍵已經(jīng)斷開,則返回</p><p> JNZ DOWN2
40、;循環(huán)</p><p> SJMP UP2;如果減到0,則跳轉(zhuǎn)至UP2,繼續(xù)加一操作</p><p> LJMP INTIR;返回</p><p> 4.4 方波的產(chǎn)生過程</p><p> 方波的實現(xiàn)只需開始的時候設置一個初值然后直接輸出這個值就行了,輸出一段時間后,然后再重新置一個數(shù)據(jù),然后再輸出這個數(shù)據(jù)一段時間,但是此
41、時的時間一定要等于前面那段時間。這樣才是一個方波,如果兩個時間不相同,那就相當于一個脈沖波了。</p><p> 方波發(fā)生子程序如下:</p><p> IR3:MOV R0,#0FEH;設置端口地址</p><p> POSI:MOV A,#00H;給A賦值0x00</p><p> MOVX @R0,A;寫入<
42、;/p><p> LCALL DELAY;延時</p><p> JB P1.3,INTIR;如果k3鍵已經(jīng)斷開,則返回</p><p> NEGA:MOV A,#0FFH;給A賦值0xFF</p><p> MOVX @R0,A;寫入</p><p> LCALL DELAY;延時<
43、/p><p> JB P1.3,INTIR;如果k3鍵已經(jīng)斷開,則返回</p><p> SJMP POSI;跳轉(zhuǎn)至POSI,繼續(xù)下一個波形的輸出</p><p> LJMP INTIR;返回</p><p> 4.5正弦波的產(chǎn)生過程</p><p> 正弦波的實現(xiàn)需要查表,每查一次表,輸出一個數(shù)值
44、,之后查下一個數(shù)值繼續(xù)輸出,當一個波形的256個數(shù)值全部輸出之后,從頭開始繼續(xù)輸出。</p><p> 正弦波發(fā)生子程序如下:</p><p> IR4:MOV R0,#0FEH;設置端口地址</p><p> MOV R1,#00H</p><p> XX:MOV A,R1</p><p>
45、 LCALL HANSHU;調(diào)用查表函數(shù)</p><p> MOVX @R0,A;寫入</p><p> JB P1.4,INTIR;如果k4鍵已經(jīng)斷開,則返回</p><p><b> INC R1</b></p><p> SJMP XX;繼續(xù)查表</p><p&
46、gt; LJMP INTIR;返回</p><p> HANSHU: MOV DPTR,#TAB1</p><p> MOVC A,@A+DPTR</p><p><b> RET</b></p><p> TAB1: db 080h,083h,086h,089h,08ch,090h,093h,096h
47、,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0aeh</p><p> db 0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d8h</p><p><b> ......</b></p><p><b&
48、gt; 五、調(diào)試與仿真</b></p><p> 本次的設計主要應用了protues和keil c軟件進行系統(tǒng)設計和仿真,經(jīng)過仿真后,結(jié)果較好,示波器可以正確的輸出鋸齒波、梯形波、三角波、方波、正弦波。</p><p> 函數(shù)圖像如下圖所示:</p><p><b> 鋸齒波:</b></p><p>
49、;<b> 梯形波:</b></p><p><b> 三角波:</b></p><p><b> 方波;</b></p><p><b> 正弦波:</b></p><p><b> 六、總結(jié)</b></p>
50、<p> 本次的設計中利用AT89C51和DAC0832以及放大器完成電路的設計,用開關來控制各種波形的發(fā)生及轉(zhuǎn)換,用單片機輸出后,經(jīng)過模數(shù)轉(zhuǎn)換器生成波形,最終可以通過示波器觀察。這次課程設計,使我的動手能力得到了很大的提高,更使我們懂得理論知識的重要性,沒有理論的指導一切實際行動都是盲目的,且實際操作是我們得到的理論知識得到驗證,更能增加對理論知識的理解。</p><p><b> 七
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計(波形發(fā)生器)
- 單片機課程設計---波形發(fā)生器
- 單片機課程設計—波形發(fā)生器
- 課程設計--單片機波形發(fā)生器
- 單片機課程設計-波形發(fā)生器
- 單片機課程設計--波形發(fā)生器的設計
- 單片機課程設計報告--波形發(fā)生器
- 單片機課程設計--簡易波形發(fā)生器
- 波形發(fā)生器的設計單片機課程設計
- 單片機課程設計--多波形發(fā)生器
- 單片機課程設計---函數(shù)波形發(fā)生器
- 單片機波形發(fā)生器課程設計報告
- 基于單片機的波形發(fā)生器課程設計
- 單片機波形發(fā)生器課程設計報告 (2)
- 單片機課程設計報告---基于單片機的波形發(fā)生器
- 單片機實現(xiàn)波形發(fā)生器的課程設計報告
- 課程設計基于單片機之波形發(fā)生器的設計
- 課程設計基于單片機之波形發(fā)生器的設計
- 單片機波形發(fā)生器的設計
- 單片機優(yōu)質(zhì)課程設計波形發(fā)生器報告
評論
0/150
提交評論