基于51的波形發(fā)生器設(shè)計(共21頁)_第1頁
基于51的波形發(fā)生器設(shè)計(共21頁)_第2頁
基于51的波形發(fā)生器設(shè)計(共21頁)_第3頁
基于51的波形發(fā)生器設(shè)計(共21頁)_第4頁
基于51的波形發(fā)生器設(shè)計(共21頁)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上目 錄4.5正弦波的產(chǎn)生過程.175 總結(jié).19專心-專注-專業(yè)1 概述1.1 研究背景波形發(fā)生器作為一種常用的信號源,是現(xiàn)代測試領(lǐng)域內(nèi)應(yīng)用最為廣泛的通用儀器之一。在研制、生產(chǎn)、測試和維修各種電子元件、部件以及整機(jī)設(shè)備時,都學(xué)要有信號源,由它產(chǎn)生不同頻率不同波形的電壓、電流信號并加到被測器件或設(shè)備上,用其他儀器觀察、測量被測儀器的輸出響應(yīng),以分析確定它們的性能參數(shù)。信號發(fā)生器是電子測量領(lǐng)域中最基本、應(yīng)用最廣泛的一類電子儀器。它可以產(chǎn)生多種波形信號,如正弦波,三角波,方波等,因而廣泛用于通信、雷達(dá)、導(dǎo)航、宇航等領(lǐng)域。波形發(fā)生器是能夠產(chǎn)生大量的標(biāo)準(zhǔn)信號和用戶定義信號,并保

2、證高精度、高穩(wěn)定性、可 重復(fù)性和易操作性的電子儀器。函數(shù)波形發(fā)生器具有連續(xù)的相位變換、和頻率穩(wěn)定性等優(yōu)點,不僅可以模擬各種復(fù)雜信號,還可對頻率、幅值、相移、波形進(jìn)行動態(tài)、及時的控制,并能夠與其它儀器進(jìn)行通訊,組成自動測試系統(tǒng),因此被廣泛用于自動控制系統(tǒng)、震動激勵、通訊和儀器儀表領(lǐng)域。1.2 設(shè)計思想及基本功能隨著電子技術(shù)的飛快發(fā)展,單片機(jī)也應(yīng)用得越來越廣泛,基于單片機(jī)的智能儀器的設(shè)計技術(shù)不斷成熟。單片機(jī)構(gòu)成的儀器具有高可靠性,高性價比。單片機(jī)技術(shù)在智能儀表和自動化等諸多領(lǐng)域有了極為廣泛的應(yīng)用,并用到各種家庭電器,單片機(jī)技術(shù)的廣泛應(yīng)用推動了社會的進(jìn)步。采用AT89C51單片機(jī)和DAC0

3、832芯片,直接連接鍵盤和顯示。該種方案主要對AT89C51單片機(jī)的各個I/O口充分利用. P1口是連接鍵盤以及接顯示電路,P2口連接DAC0832輸出波形.這樣總體來說,能對單片機(jī)各個接口都利用上,而不在多用其它芯片, 利用單片機(jī)采用程序設(shè)計方法來產(chǎn)生波形,線路相對簡單,結(jié)構(gòu)緊湊,價格低廉,頻率穩(wěn)定度高,抗干擾能力強(qiáng)等優(yōu)點,而且還能對波形進(jìn)行細(xì)微的調(diào)整,改良波形,易于程序控制。只要對電路稍加修改,調(diào)整程序,就能實現(xiàn)功能的升級。本系統(tǒng)利用單片機(jī)AT89C52采用程序設(shè)計方法產(chǎn)生鋸齒波、三角波、正弦波、梯形波四種波形,再通過D/A轉(zhuǎn)換器DAC0832將數(shù)字信號轉(zhuǎn)換成模擬信號,濾波放大,最終由示波

4、器顯示出來,并通過按鍵來控制五種波形的類型選擇。本次設(shè)計主要由信號發(fā)生模塊、數(shù)模轉(zhuǎn)換模塊和仿真模塊。2 總體方案設(shè)計2.1 方案選取信號發(fā)生器的實現(xiàn)方法通常有以下幾種:方案一:用分立元件組成的函數(shù)發(fā)生器:通常是單函數(shù)發(fā)生器且頻率不高,其工作不很穩(wěn)定,不易調(diào)試。方案二:可以由晶體管、運(yùn)放IC等通用器件制作,更多的則是用專門的函數(shù)信號發(fā)生器IC產(chǎn)生。早期的函數(shù)信號發(fā)生器IC,如L8038、BA205、XR2207/2209等,它們的功能較少,精度不高,頻率上限只有300kHz,無法產(chǎn)生更高頻率的信號,調(diào)節(jié)方式也不夠靈活,頻率和占空比不能獨立調(diào)節(jié),二者互相影響。方案三:利用專用直接數(shù)字合成芯片的函數(shù)

5、發(fā)生器:能產(chǎn)生任意波形并達(dá)到很高的頻率。但成本較高。方案四:采用AT89C51單片機(jī)和DAC0832芯片,直接連接鍵盤和顯示裝置。該種方案主要對AT89C51單片機(jī)的各個I/O口充分利用. P1口是連接鍵盤以及接顯示電路,P2口連接DAC0832輸出波形.這樣總體來說,能對單片機(jī)各個接口都利用上,而不在多用其它芯片,從而減小了系統(tǒng)的成本.也對按照系統(tǒng)便攜式低頻信號發(fā)生器的要求所完成.占用空間小,使用芯片少,低功耗。綜合考慮,方案四各項性能和指標(biāo)都優(yōu)于其他幾種方案,能使輸出頻率有較好的穩(wěn)定性,充分體現(xiàn)了模塊化設(shè)計的要求,而且這些芯片及器件均為通用器件,在市場上較常見,價格也低廉,樣品制作成功的可

6、能性比較大,所以本設(shè)計采用方案四。2.2 系統(tǒng)框圖3 硬件電路設(shè)計3.1 設(shè)計思路、元件選型設(shè)計思路:(一)、課設(shè)需要各個波形的基本輸出。如輸出鋸齒波、三角波、方波、正弦波。這些波形的實現(xiàn)的具體步驟:鋸齒波實現(xiàn)很簡單,只需要一開始定義一個初值,然后不斷的加1,當(dāng)溢出后又重初值開始加起,就這樣循環(huán)下去。三角波的實驗過程是先加后減,實現(xiàn)方法是先是從00H開始加1直到溢出后就執(zhí)行減1操作,就這樣不斷調(diào)用這個循環(huán)。方波的實現(xiàn)方法是連續(xù)輸出一個數(shù),到某個時候就改變一下值,可以把值定義為正極性的,也可以是負(fù)極性。正弦波的實現(xiàn)是非常麻煩的。它的實現(xiàn)過程是通過定義一些數(shù)據(jù),然后執(zhí)行時直接輸出定義的數(shù)據(jù)就可以了

7、。(二)、通過P1口和開關(guān)K0-K4相連接來控制各個波形的輸出。能根據(jù)k0-k4鍵狀態(tài)進(jìn)行波形切換,當(dāng)某一按鍵按下時,輸出相對應(yīng)的波形。 元件選型:單片機(jī)AT89C51系統(tǒng),DAC0832一片,PC機(jī)一臺,運(yùn)算放大器3.2 原理圖3.3 主要芯片介紹(1)、DAC0832芯片介紹:DAC0832是使用較多的一種8位D/A轉(zhuǎn)換器,其轉(zhuǎn)換時間為1us,工作電壓為+5V+15V,基準(zhǔn)電壓為+-10V。根據(jù)對DAC0832的輸入寄存器和DAC寄存器的不同控制方法,可有3種工作方式:單緩沖方式、雙緩沖方式和直通方式。單緩沖方式的應(yīng)用:此方式適用于只有一路模擬量輸出或幾路模擬量非同步輸出的情形。在這種方式

8、下,將兩級寄存器的控制信號并接,輸入數(shù)據(jù)在控制信號作用下,直接送入DAC寄存器中。也可以采用把WR2、XFER這兩個信號固定接地的方法。雙緩沖方式的應(yīng)用:此方式主要用于同時輸出幾路模擬信號的場合。此時,每一路模擬量輸出需一片DAC0832,構(gòu)成多個0832同步輸出系統(tǒng)。其傳送控制端接地,輸入所存允許斷ILE與+5V電源相連,利用一個地址碼進(jìn)行二次輸出操作,完成數(shù)據(jù)的傳送和激動轉(zhuǎn)換,第一次操作室P2.6為高電平,將P0口數(shù)據(jù)線上的數(shù)據(jù)鎖存于DAC0832的輸入寄存器中。第二次操作是寫控制信號由效,傳送控制端為低電平,將輸入寄存器中的內(nèi)容鎖存入0832的DAC寄存器中,D/A轉(zhuǎn)換器便開始對鎖存于D

9、AC寄存器的8位數(shù)據(jù)進(jìn)行轉(zhuǎn)換,約經(jīng)過1/2時鐘周期后,在輸出端(IOUT2、IOUT1)建立穩(wěn)定的電流輸出。運(yùn)放的作用是將0832輸出的模擬電流信號轉(zhuǎn)換為電壓波形。DAC0832為一個8位D/A轉(zhuǎn)換器,單電源供電,在+5+15V范圍內(nèi)均可正常工作。基準(zhǔn)電壓的范圍為±10V,電流建立時間為1s,CMOS工藝,低功耗20mW。DAC0832的內(nèi)部結(jié)構(gòu)框圖如下圖所示。圖2-2 DAC0832工作原理圖DAC0832的外部引腳及功能介紹圖如下:圖1 DAC0832引腳圖DAC0832內(nèi)部結(jié)構(gòu):DAC0832主要由兩個8位寄存器和一個8位D/A轉(zhuǎn)換器組成.使用兩個寄存器(輸入寄存器和DAC寄存

10、器)的好處是可以進(jìn)行兩級緩沖操作,使該期間的操作有更大的靈活性.DAC0832芯片為20腳雙列直插式封裝,各引腳功能如下: DI0DI7:數(shù)據(jù)輸入線,TLL電平,有效時間應(yīng)大于90ns。ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效。 CS:片選信號輸入線,低電平有效。 WR1:為輸入寄存器的寫選通輸入端。負(fù)脈沖有效(脈沖寬度應(yīng)大于500ns)。當(dāng)CS為“0”,ILE為“1”,WR1有效時,DI0DI7狀態(tài)被鎖存到輸入寄存器。 XFER:數(shù)據(jù)傳送控制信號輸入線,低電平有效。 WR2:為DAC寄存器寫選通輸入端,負(fù)脈沖(脈沖寬度應(yīng)大于500ns)有效。當(dāng)XFER為“0”且WR2有效時,輸入寄存器

11、的狀態(tài)被傳送到DAC寄存器中。 Iout1:電流輸出線。當(dāng)輸入全為“1”時,Iout1最大。 Iout2: 電流輸出線。其值與Iout1之和為一常數(shù)。 Rfb:反饋信號輸入線,芯片內(nèi)部此端與Iout1之間已接有一個15歐姆的電阻。. Vcc:電源電壓端,范圍為 (+5v+15v) Vref:基準(zhǔn)電壓輸入端,范圍為(-10v+10v)。此端電壓決定D/A輸出電壓的范圍。如果Vref接+10V,則輸出電壓范圍為0V-10V;如果Vref接-5V,則輸出電壓范圍為+5V0V。 AGND:模擬地,摸擬信號和基準(zhǔn)電源的參考地. DGND:數(shù)字地,為工作電源地和數(shù)字邏輯地,兩種地線在基準(zhǔn)電源處共地比較好D

12、AC0832是電流型輸出,應(yīng)用時需要外接運(yùn)算放大器使之成為電壓型輸出。(2)、AT89C51單片機(jī)介紹: AT89C51單片機(jī)與Intel公司MCS-51系列的80C51型號單片機(jī)在芯片結(jié)構(gòu)與功能上基本相同,外部引腳完全相同。再一塊芯片上,集成了一臺微型計算機(jī)的各個主要部分。其中主要有CPU、存儲器、可編程I/O口、定時、計數(shù)器、串行口等,各個部分通過內(nèi)部總線相連。89C51是一種帶4K字節(jié)閃存可編程可擦除(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱。單片機(jī)的可擦除只讀存儲器可以反復(fù)

13、擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。89C51單片機(jī)有3種封裝形式,一種采用普通40腳塑料雙列只差封裝(PDIP)形式,一種是44個“J”形腳的方形封裝(PLCC)形式,一種是44腳的方形表面貼封裝(TQFP)形式,以下已PDIP封裝為例外形及引腳排列如下圖所示:AT89C51管腳說明:VCC(40腳):供電電壓,

14、主電源+5V。 GND(20腳):接地。P0P3是四個寄存器 ,也稱4個端口,是89C51單片機(jī)與外界聯(lián)系的4個8位雙向并行I/O口。猶豫在數(shù)據(jù)的傳輸過程中,CPU需要對接口電路中輸入輸出數(shù)據(jù)的寄存器驚醒讀寫操作,所以在單片機(jī)中對這些寄存器像對存儲單元一樣進(jìn)行編址。通常把接口電路中這些已編址并能進(jìn)行讀寫操作的寄存器稱為端口(Part),或簡稱口。P0.0P0.7(3932腳):P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,

15、當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1.0P1.7(18腳):P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2.0P2.7(2128腳):P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。

16、P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3.0P3.7(1017腳):P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。RST(9腳):復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。 ALE/

17、PROG(30腳):當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 PSEN(29腳):外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSE

18、N有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 EA/VPP(31腳):當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。(3)、運(yùn)算放大器運(yùn)算放大器最早被設(shè)計出來的目的是將電壓類比成數(shù)字,用來進(jìn)行加、減、乘、除的運(yùn)算,同時也成為實現(xiàn)模擬計算機(jī)(analog compute

19、r)的基本建構(gòu)方塊。然而,理想運(yùn)算放大器的在電路系統(tǒng)設(shè)計上的用途卻遠(yuǎn)超過加減乘除的計算。今日的運(yùn)算放大器,無論是使用晶體管(transistor)或真空管(vacuum tube)、分立式(discrete)元件或集成電路(integrated circuits)元件,運(yùn)算放大器的效能都已經(jīng)逐漸接近理想運(yùn)算放大器的要求。早期的運(yùn)算放大器是使用真空管設(shè)計,現(xiàn)在則多半是集成電路式的元件。但是如果系統(tǒng)對于放大器的需求超出集成電路放大器的需求時,常常會利用分立式元件來實現(xiàn)這些特殊規(guī)格的運(yùn)算放大器。運(yùn)放有兩個輸入端a(反相輸入端),b(同相輸入端)和一個輸出端o。也分別被稱為倒向輸入端非倒向輸入端和輸出

20、端。當(dāng)電壓U-加在a端和公共端(公共端是電壓為零的點,它相當(dāng)于電路中的參考結(jié)點。)之間,且其實際方向從a 端高于公共端時,輸出電壓U實際方向則自公共端指向o端,即兩者的方向正好相反。當(dāng)輸入電壓U+加在b端和公共端之間,U與U+兩者的實際方向相對公共端恰好相同。為了區(qū)別起見,a端和b 端分別用"-"和"+"號標(biāo)出,但不要將它們誤認(rèn)為電壓參考方向的正負(fù)極性。電壓的正負(fù)極性應(yīng)另外標(biāo)出或用箭頭表示。一般可將運(yùn)放簡單地視為:具有一個信號輸出端口(Out)和同相、反相兩個高阻抗輸入端的高增益直接耦合電壓放大單元,因此可采用運(yùn)放制作同相、反相及差分放大器。運(yùn)放的供電方

21、式分雙電源供電與單電源供電兩種。對于雙電源供電運(yùn)放,其輸出可在零電壓兩側(cè)變化,在差動輸入電壓為零時輸出也可置零。采用單電源供電的運(yùn)放,輸出在電源與地之間的某一范圍變化。運(yùn)放的輸入電位通常要求高于負(fù)電源某一數(shù)值,而低于正電源某一數(shù)值。經(jīng)過特殊設(shè)計的運(yùn)放可以允許輸入電位在從負(fù)電源到正電源的整個區(qū)間變化,甚至稍微高于正電源或稍微低于負(fù)電源也被允許。這種運(yùn)放稱為軌到軌(rail-to-rail)輸入運(yùn)算放大器。運(yùn)算放大器的輸出信號與兩個輸入端的信號電壓差成正比,在音頻段有:輸出電壓=A0(E1-E2),其中,A0 是運(yùn)放的低頻開環(huán)增益(如 100dB,即 倍),E1 是同相端的輸入信號電壓,E2 是反

22、相端的輸入信號電壓。運(yùn)算放大器是用途廣泛的器件,接入適當(dāng)?shù)姆答伨W(wǎng)絡(luò),可用作精密的交流和直流放大器、有源濾波器、振蕩器及電壓比較器。(4)、獨立式鍵盤獨立式鍵盤中,各按鍵相互獨立,每個按鍵各接一根輸入線,每根輸入線上的按鍵工作狀態(tài)不會影響其它輸入線上的工作狀態(tài)。因此,通過檢測輸入線的電平狀態(tài)就可以很容易的判斷按鍵是否被按下了。獨立式鍵盤電路配置靈活,軟件結(jié)構(gòu)簡單。但每個按鍵需占用一根輸入線,在按鍵數(shù)量較多時,輸入口浪費大,電路結(jié)構(gòu)顯得很繁雜,故此種鍵盤適用于按鍵較少或操作速度較高的場合。如圖所示。3.4 硬件連線圖4 系統(tǒng)軟件設(shè)計ORG 0000HLJMP MAINORG 0003H;外部中斷0

23、LJMP INT00ORG 0040HMAIN: MOV SP,60H;更改堆棧指針,避免堆棧與工作寄存器區(qū)發(fā)生沖突SETB IT0;外部中斷請求0為下降沿觸發(fā)方式SETB EA;中斷允許總開關(guān)打開SETB EX0;允許外部中斷0中斷INT00: CLR EA;關(guān)中斷PUSH PSW;現(xiàn)場保護(hù)PUSH AccSETB EA;開中斷JNB P1.0,IR0;如果K0鍵閉合,則跳轉(zhuǎn)至IR0輸出鋸齒波JNB P1.1,IR1;如果K1鍵閉合,則跳轉(zhuǎn)至IR1輸出梯形波JNB P1.2,IR2;如果K2鍵閉合,則跳轉(zhuǎn)至IR2輸出三角波JNB P1.3,IR3;如果K3鍵閉合,則跳轉(zhuǎn)至IR3輸出方波JNB

24、 P1.4,IR4;如果K4鍵閉合,則跳轉(zhuǎn)至IR4輸出正弦波INTIR: CLR EA;關(guān)中斷POP Acc;現(xiàn)場恢復(fù)POP PSWSETB EA;開中斷RETI4.1 鋸齒波的產(chǎn)生過程鋸齒波的實現(xiàn)過程是首先定義一個初值然后進(jìn)行加法操作,加的步數(shù)的多少則根據(jù)要求的頻率來進(jìn)行。然后加到某個數(shù)之后就再重新設(shè)置為初值,再重復(fù)執(zhí)行剛剛的操作,如此循環(huán)下去。鋸齒波發(fā)生流程圖如下圖所示:定義變量ifor(i=0;i<255;i+) P0=i判斷按鍵是否斷開否返回是開 始 鋸齒波發(fā)生子程序如下:IR0:MOV DPTR,#7FFFH ;選中DAC0832MOV A,#00HLOOP:MOVX DPTR

25、,A ;向DAC0832輸出數(shù)據(jù)JB P1.0,INTIR ;如果k0鍵已經(jīng)斷開,則返回INC A ;累加器值加一SJMP LOOP ;循環(huán)LJMP INTIR ;返回4.2 三角波的產(chǎn)生過程三角波的實現(xiàn)是設(shè)置一個初值,當(dāng)加到某個值的時候,執(zhí)行減一操作,減到初值時,再加一。三角波發(fā)生流程圖如下圖所示:開始定義變量ifor(i=0;i<255;i+)for(i=255;i>0;i-)否判斷按鍵是否斷開是返回三角波發(fā)生子程序如下:IR1:MOV DPTR,#7FFFH ;選中DAC0832MOV A,#00HUP: MOVX DPTR,AJB P1.1,INTIR ;如果k1鍵已經(jīng)斷開

26、,則返回INC A ; JNZ UP ;上升到A中為FFHDOWN:DEC A MOVX DPTR,AJB P1.2,INTIR ;如果k2鍵已經(jīng)斷開,則返回JNZ DOWN ;下降到A中為00H INC ASJMP UP ;重復(fù) LJMP INTIR ;返回4.3 矩形波的產(chǎn)生過程矩形波的實現(xiàn)只需開始的時候設(shè)置一個初值然后直接輸出這個值就行了,輸出一段時間后,然后再重新置一個數(shù)據(jù),然后再輸出這個數(shù)據(jù)一段時間,但是此時的時間一定要等于前面那段時間。這樣才是一個方波,如果兩個時間不相同,那就相當(dāng)于一個脈沖波了。矩形波發(fā)生子程序如下:IR2:MOV DPTR,#7FFFHLP: MOV A,#da

27、taH ;置輸出矩形波上限MOVX DPTR,ALCALL DELAY ;調(diào)高電平延時程序JB P1.2,INTIR;如果k2鍵已經(jīng)斷開,則返回MOV A,#dataL ;置輸出矩形波下限MOVX DPTR,ALCALL DELAYJB P1.2,INTIR;如果k2鍵已經(jīng)斷開,則返回SJMP LP ;重復(fù)LJMP INTIR ;返回4.4 梯形波的產(chǎn)生過程梯形波的實現(xiàn)是設(shè)置一個初值,然后進(jìn)行加一,當(dāng)加到某個數(shù)時延時,之后減一,減到初值時在返回到之前的操作,繼續(xù)加一、延時、減一。梯形波發(fā)生流程圖如下圖所示:開始定義變量ifor(i=0;i<255;i+)延時for(i=255;i>

28、0;i-)否判斷按鍵是否斷開是返回梯形波發(fā)生子程序如下:IR3:MOV DPTR,#0FEH L1:MOV A,#dataL-1 ;下限-1送AUP:MOVX DPTR,AJB P1.3,INTIR ;如果k3鍵已經(jīng)斷開,則返回CJNE A,#dataH,L3 ;與上限比較L3: JC UPDOWN:LCALL DEL ;調(diào)上限延時程序L2: DEC A MOVX DPTR,A JB P1.3,INTIR ;如果k3鍵已經(jīng)斷開,則返回 CJNE A,#dataL,L4 ;與下限比較L4: JC L1 SJMP L2 LJMP INTIR ;返回4.5正弦波的產(chǎn)生過程正弦波的實現(xiàn)比較麻煩,需要查

29、表,每查一次表,輸出一個數(shù)值,之后查下一個數(shù)值繼續(xù)輸出,當(dāng)一個波形的256個數(shù)值全部輸出之后,從頭開始繼續(xù)輸出。正弦波發(fā)生流程圖如下圖所示:開始查表并輸出否判斷按鍵是否斷開是返回正弦波發(fā)生子程序如下:IR4:MOV R0,#0FEH;設(shè)置端口地址MOV R1,#00HXX:MOV A,R1LCALL HANSHU ;調(diào)用查表函數(shù)MOVX R0,A ;寫入JB P1.4,INTIR;如果k4鍵已經(jīng)斷開,則返回INC R1SJMP XX;繼續(xù)查表LJMP INTIR;返回HANSHU:MOV DPTR,#TAB1MOVC A,A+DPTRRET;-以下是通過正弦的值所建立的一個表SIN: DB 8

30、0H,83H,86H,89H,8DH,90H,93H,96H DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH DB 0FDH,0F

31、EH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H DB

32、 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H DB 02H, 03H, 04

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論