簡易信號發(fā)生器單片機(jī)課程設(shè)計(jì)報告_第1頁
簡易信號發(fā)生器單片機(jī)課程設(shè)計(jì)報告_第2頁
簡易信號發(fā)生器單片機(jī)課程設(shè)計(jì)報告_第3頁
簡易信號發(fā)生器單片機(jī)課程設(shè)計(jì)報告_第4頁
簡易信號發(fā)生器單片機(jī)課程設(shè)計(jì)報告_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)(論文)任務(wù)書 電氣 學(xué)院 電力系統(tǒng)及其自動化 專業(yè) 12( 1 ) 班一、課程設(shè)計(jì)(論文)題目: 簡易信號發(fā)生器設(shè)計(jì) 二、課程設(shè)計(jì)(論文)工作自 2015年 1 月 12 日起至 2015 年 1月 16 日止。三、課程設(shè)計(jì)(論文) 地點(diǎn):電氣學(xué)院機(jī)房 10-303 四、課程設(shè)計(jì)(論文)內(nèi)容要求:1課程設(shè)計(jì)的目的(1)綜合運(yùn)用單片機(jī)原理及應(yīng)用相關(guān)課程的理論知識和實(shí)際應(yīng)用知識,進(jìn)行單片機(jī)應(yīng)用系統(tǒng)電路及程序設(shè)計(jì),從而使這些知識得到進(jìn)一步的鞏固,加深和發(fā)展;(2)熟悉和掌握單片機(jī)控制系統(tǒng)的設(shè)計(jì)方法,匯編語言程序設(shè)計(jì)及proteus 軟件的使用;(3)通過查閱圖書資料、以及書寫課程設(shè)計(jì)報告可

2、提高綜合應(yīng)用設(shè)計(jì)能力,培養(yǎng)獨(dú)立分析問題和解決問題的能力。 2課程設(shè)計(jì)的內(nèi)容及任務(wù)(1)可產(chǎn)生頻率可調(diào)的正弦波(64個點(diǎn))、方波、鋸齒波或三角波。 (2)顯示出仿真波形。 (3)通過按鍵選擇輸出波形的種類。 (4)在此基礎(chǔ)上使輸出波形的幅值可控。 3.課程設(shè)計(jì)說明書編寫要求(1)設(shè)計(jì)說明書用A4紙統(tǒng)一規(guī)格,論述清晰,字跡端正,應(yīng)用資料應(yīng)說明出處。(2)說明書內(nèi)容應(yīng)包括(裝訂次序):題目、目錄、正文、設(shè)計(jì)總結(jié)、參考文獻(xiàn)等。應(yīng)闡述整個設(shè)計(jì)內(nèi)容,要重點(diǎn)突出,圖文并茂,文字通暢。 (3)報告內(nèi)容應(yīng)包括方案分析;方案對比 ;整體設(shè)計(jì)論述 ;硬件設(shè)計(jì)(電路接線,元器件說明,硬件資源分配 );軟件設(shè)計(jì) (軟件

3、流程,編程思想,程序注釋,)調(diào)試結(jié)果;收獲與體會;附錄(設(shè)計(jì)代碼放在附錄部分,必須加上合理的注釋)(4)學(xué)生簽名: 2015年 1月 16 日課程設(shè)計(jì)(論文)評審意見(1)總體方案的選擇是否正確; 正確( )、較正確( )、基本正確( )(2)程序仿真能滿足基本要求; 滿足( )、較滿足( )、基本滿足( )(3)設(shè)計(jì)功能是否完善; 完善( )、較完善( )、基本完善( )(4)元器件選擇是否合理; 合理( )、較合理( )、基本合理( )(5)動手實(shí)踐能力; 強(qiáng)( )、較強(qiáng)( )、一般( )(6)學(xué)習(xí)態(tài)度; 好( )、良好( )、一般( )(7)基礎(chǔ)知識掌握程度; 好( )、良好( )、一般

4、( )(8)回答問題是否正確;正確( )、較正確( )、基本正確( )、不正確( )(9)程序代碼是否具有創(chuàng)新性 ; 全部( )、部分( )、無( )(10)書寫整潔、條理清楚、格式規(guī)范;規(guī)范()、較規(guī)范()、一般( )總評成績優(yōu)()、良()、中()、及格()、不及格()評閱人: 年 月 日第 31 頁 共 32 頁簡易信號發(fā)生器摘要:這次課設(shè)的主要目的自己動手做一個可以實(shí)現(xiàn)簡易信號發(fā)生器的設(shè)計(jì),在設(shè)計(jì)中考慮到波形可以在一定范圍里的頻率和幅值的調(diào)整和不同波形的變換,可以準(zhǔn)確地將信號在示波器中顯示出來。信號發(fā)生器應(yīng)用廣泛,種類繁多,性能各異,分類也不盡一致。按照頻率范圍分類可以分為:超低頻信號發(fā)

5、生器、低頻信號發(fā)生器、視頻信號發(fā)生器、高頻波形發(fā)生器、甚高頻波形發(fā)生器和超高頻信號發(fā)生器。按照輸出波形分類可以分為:正弦信號發(fā)生器和非正弦信號發(fā)生器。非正弦信號發(fā)生器又包括:脈沖信號發(fā)生器、函數(shù)信號發(fā)生器、掃頻信號發(fā)生器、數(shù)字序列波形發(fā)生器、圖形信號發(fā)生器、噪聲信號發(fā)生器等。按照信號發(fā)生器性能指標(biāo)可以分為一般信號發(fā)生器和標(biāo)準(zhǔn)信號發(fā)生器。前者指對輸出信號的頻率、幅度的準(zhǔn)確度和穩(wěn)定度以及波形失真等要求不高的一類信號發(fā)生器。后者是指其輸出信號的頻率、幅度、調(diào)制系數(shù)等在一定范圍內(nèi)連續(xù)可調(diào),并且讀數(shù)準(zhǔn)確、穩(wěn)定、屏蔽良好的中、高檔信號發(fā)生器。此次的簡易信號發(fā)生器的設(shè)計(jì),將采用單片機(jī)編程方式,通過數(shù)模轉(zhuǎn)換來

6、實(shí)現(xiàn)正弦波、三角波、鋸齒波、方波的輸出。在程序運(yùn)行中,當(dāng)接收到來自外界的命令,可按實(shí)際的需要調(diào)整信號波的頻率幅值及波形,需要輸出某種波形時再調(diào)用相應(yīng)的中斷服務(wù)子程序和波形發(fā)生程序,經(jīng)電路的數(shù)/模轉(zhuǎn)換器和運(yùn)算放大器處理后,從信號發(fā)生器的輸出端口輸出。目錄1、 總體方案論述.6 1.1任務(wù)分析.6 1.2方案對比.6 1.3系統(tǒng)總設(shè)計(jì).62、 硬件電路.7 2.1主控電路.7 2.2按鍵電路.7 2.3顯示電路.83、 軟件設(shè)計(jì).11 3.1正弦波.11 3.2方波.13 3.3鋸齒波.14 3.4三角波.15 3.5延時程序.16 3.6總程序.174、 系統(tǒng)調(diào)試結(jié)果.18 4.1Keil軟件調(diào)

7、試應(yīng)用.18 4.2Proteus軟件仿真過程.18 4.3仿真結(jié)果.195、 總結(jié)與體會.24 5.1收獲與體會.24 5.2不足與改進(jìn).24附錄.25參考文獻(xiàn).301、 總體方案論述1. 1任務(wù)分析(1) 可產(chǎn)生頻率可調(diào)的正弦波(64個點(diǎn))、方波、鋸齒波或三角波。我們設(shè)想將頻率可調(diào)功能通過按鍵來顯示,正弦波、方波、鋸齒波或三角波可以用單片機(jī)匯編語言程序?qū)懗霾⑼ㄟ^數(shù)模轉(zhuǎn)換顯示出來。(2) 顯示出仿真波形。通過片外數(shù)模轉(zhuǎn)換顯示。(3) 通過按鍵選擇輸出波形的種類??稍O(shè)置外部中斷使得通過按鍵來從容地切換各種波形。(4) 在此基礎(chǔ)上使輸出波形的幅值可控??赏ㄟ^按鍵來實(shí)現(xiàn)。1.2方案對比 在設(shè)計(jì)的過

8、程中,我們產(chǎn)生了如下方案:方案一:用四個按鍵來代表四個波形,然后用四個按鍵來代表各自波形的調(diào)頻功能,再用四個按鍵來代表各自波形的調(diào)幅功能。方案二:用四個按鍵來代表四個波形,然后用一個按鍵來控制四個波形的頻率,再用一個按鍵來控制除正弦波外其他波形的幅值。通過比較兩個方案,方案一器件較多,連線繁瑣,方案二較方案一簡單,也降低了寫代碼的難度。由于正弦波本身的特殊性,此次設(shè)計(jì)我們放棄了對正弦波幅值的調(diào)控。1.3系統(tǒng)總設(shè)計(jì)調(diào)頻按鍵調(diào)幅按鍵四個波形按鍵輸入輸入 輸入單片機(jī)輸出輸出波形D/A轉(zhuǎn)換器圖1.3.1系統(tǒng)總圖總體設(shè)想是:將調(diào)頻按鍵、調(diào)幅按鍵、波形按鍵作為輸入信號輸入到單片機(jī)內(nèi)來調(diào)用各自的程序通過D/

9、A轉(zhuǎn)換器顯示出來。2、 硬件設(shè)計(jì)2.1主控電路將總中斷EA接高電平,將四個波形按鍵通過四端輸入與門接入P3.2即外部中斷0,說明此次程序設(shè)計(jì)我們要用到外部中斷0了。圖2.1.1主控電路圖2.2按鍵電路由圖可知,正弦波按鍵、方波按鍵、三角波按鍵、鋸齒波按鍵分別接入單片機(jī)的P2.1、P2.2、P2.3、P2.4,當(dāng)按下去時對應(yīng)的接口為低電平,即當(dāng)檢測到某個接口為低電平時,就調(diào)用對應(yīng)的波形程序。調(diào)幅按鍵、調(diào)頻按鍵分別接入單片機(jī)的P2.6、P2.5,當(dāng)按下去時對應(yīng)的接口為低電平,即當(dāng)檢測到某個接口為低電平時,就調(diào)用對應(yīng)的調(diào)幅調(diào)頻程序。圖2.2.1按鍵電路圖2.3顯示電路由圖可知,單片機(jī)的P0.0P0.

10、7接入DAC0832的Dl0D17并接入上拉電阻,單片機(jī)的P2.0接入DAC0832的1、2、17、18號引腳,即此數(shù)模轉(zhuǎn)換器的地址為#0FEFFH。圖2.3.1顯示電路圖DAC0832芯片簡介:(1)DAC0832的特性DAC0832是采用CMOS/Si-Cr工藝制作而成的8位D/A轉(zhuǎn)換器。它可直接與AT89C51單片機(jī)相連,其主要特性如下:1 分辨率為8位。2 電流輸出,建立時間為1s。3 可雙緩沖輸入、單緩沖輸入或直接數(shù)字輸入。4 單一電源供電(+5+15V)。5 低功耗,20mW。(2) DAC0832的內(nèi)部結(jié)構(gòu)及外部引腳DAC0832有一個8位輸入寄存器、一個8位DAC寄存器和一個8

11、位D/A轉(zhuǎn)換器3個部分組成,它的兩個寄存器實(shí)現(xiàn)了輸入數(shù)據(jù)的兩級緩沖,D/A轉(zhuǎn)換器采用E-2RT形電阻網(wǎng)絡(luò)。DAC0832的內(nèi)部結(jié)構(gòu)如圖2.3.2所示?!?位輸入寄存器”用于存放單片機(jī)送來的數(shù)字量,由LE2控制;“8位D/A轉(zhuǎn)換器”受“8位DAC寄存器”輸出的數(shù)字量控制,能輸出和數(shù)字量成正比的模擬電流。因此,DAC0832通常需要外接有運(yùn)算放大器組成的I/V轉(zhuǎn)換電路,才能得到模擬輸出電壓。圖2.3.2DAC0832采用的是雙列直插式封裝,其引腳布置如圖2.3.3所示,其各引腳的功能如下。DI0DI7:8位數(shù)字信號輸入端,可與單片機(jī)的數(shù)據(jù)總線PO口相連,用于接收單片機(jī)送來的待轉(zhuǎn)換為模擬量的數(shù)字量。

12、CS:片選端,當(dāng)CS為低電平時,本芯片被選中。ILE:數(shù)據(jù)鎖存允許端,高電平有效。WR1:第一級輸入寄存器寫選通控制端,低電平有效,當(dāng)CS=0,ILE=1,WR1=0時,待轉(zhuǎn)換的數(shù)據(jù)信號被鎖存到第一級8位輸入寄存器中。WR2:DAC寄存器寫選通控制端,低電平有效。當(dāng)XFER=0,WR2=0時,輸入寄存器中待轉(zhuǎn)換的數(shù)據(jù)傳入8位DAC寄存器中。XFER:數(shù)據(jù)傳送控制信號,低電平有效。在XFER和WR2都有效時,LE2上產(chǎn)生正脈沖,LE2的負(fù)跳變將輸入寄存器內(nèi)容打入DAC寄存器。 圖2.3.3VREF:基準(zhǔn)電壓輸入,它與DAC內(nèi)的電阻網(wǎng)絡(luò)相連。VREF可在+10V范圍內(nèi)調(diào)節(jié)。IOUT1:D/A轉(zhuǎn)換器

13、電流輸出1端,輸入數(shù)字量全為1時,IOUT1最大;輸入數(shù)字量全為0時,IOUT1最小。IOUT2:D/A轉(zhuǎn)換器電流輸出2端,IOUT2+IOUT1=常數(shù)。Rfb:外部反饋信號輸入端,內(nèi)部已有反饋電阻Rfb,根據(jù)需要也可外接反饋電阻。VCC:電源輸入端。DGND:數(shù)字信號地。AGND:模擬信號地,最好與基準(zhǔn)電壓共地。本次使用的單緩沖方式。如圖2.3.4所示,由于DAC0832的CS和XFER都與P2.0相連,故DAC0832的輸入寄存器和DAC寄存器地址都為FEFFH。而WR1和WR2同時與AT89C51的WR引腳相連,因此,AT89C51單片機(jī)指向如下兩條指令就可在CS和XFER上同時產(chǎn)生低電

14、平信號,并在WR1和WR2端同時得到來自WR的負(fù)脈沖,進(jìn)而是DAC0832接收AT89C51送來的數(shù)字量。 圖2.3.4MOV DPTR,#0FEFFH ;DAC端口地址FEFFH DPTRMOV DPTR,A ;啟動D/A轉(zhuǎn)換。3、 軟件設(shè)計(jì)3.1正弦波正弦波外部地址累加器A正弦波表位尋址查表是按鍵是否按下開始通過64個16進(jìn)制的立即數(shù)所組成的點(diǎn)來顯示正弦波形,這64個點(diǎn)可通過查表方式獲取。否圖3.1.1正弦波程序流程圖正弦波程序: ZX: MOV R3,#00H LOOP0:MOV A,R3 MOV DPTR,#TABLE /查表 MOVC A,A+DPTR MOV DPTR,#0FEFF

15、H /定義DAC0832地址 MOVX DPTR,A /讀數(shù)據(jù) INC R3 CJNE R3,#255,LOOP0 MOV R3,#00H AJMP ZX /產(chǎn)生正弦波代碼 TABLE:DB080h,083h,086h,089h,08ch,090h,093h,096h,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0aehDB0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d8hDB0dah,0dch,0deh,0e0h,0e2h,0e4h,0e6h,0e8h,0ea

16、h,0ebh,0edh,0efh,0f0h,0f1h,0f3h,0f4hDB0f5h,0f6h,0f8h,0f9h,0fah,0fah,0fbh,0fch,0fdh,0fdh,0feh,0feh,0feh,0ffh,0ffh,0ffhDB0ffh,0ffh,0ffh,0ffh,0feh,0feh,0feh,0fdh,0fdh,0fch,0fbh,0fah,0fah,0f9h,0f8h,0f6hDB0f5h,0f4h,0f3h,0f1h,0f0h,0efh,0edh,0ebh,0eah,0e8h,0e6h,0e4h,0e2h,0e0h,0deh,0dchDB0dah,0d8h,0d5h,0d3h

17、,0d1h,0ceh,0cch,0c9h,0c7h,0c4h,0c1h,0bfh,0bch,0b9h,0b6h,0b3hDB0b1h,0aeh,0abh,0a8h,0a5h,0a2h,09fh,09ch,099h,096h,093h,090h,08ch,089h,086h,083hDB080h,07dh,07ah,077h,074h,070h,06dh,06ah,067h,064h,061h,05eh,05bh,058h,055h,052hDB04fh,04dh,04ah,047h,044h,041h,03fh,03ch,039h,037h,034h,032h,02fh,02dh,02bh,0

18、28hDB026h,024h,022h,020h,01eh,01ch,01ah,018h,016h,015h,013h,011h,010h,00fh,00dh,00chDB00bh,00ah,008h,007h,006h,006h,005h,004h,003h,003h,002h,002h,002h,001h,001h,000hDB000h,000h,001h,001h,002h,002h,002h,003h,003h,004h,005h,006h,006h,007h,008h,00ahDB00bh,00ch,00dh,00fh,010h,011h,013h,015h,016h,018h,01

19、ah,01ch,01eh,020h,022h,024hDB026h,028h,02bh,02dh,02fh,032h,034h,037h,039h,03ch,03fh,041h,044h,047h,04ah,04dhDB04fh,052h,055h,058h,05bh,05eh,061h,064h,067h,06ah,06dh,070h,074h,077h,07ah,07dh3.2方波外部地址后半周期波形延時上限電平數(shù)值下限電平數(shù)值累加器A延時前半周期波形外部地址累加器A否按鍵是否按下開始分別設(shè)大數(shù)值和小數(shù)值作為方波的上限電平數(shù)值和下限電平數(shù)值,并分別延時一段時間,就形成方波。-圖3.2.1方

20、波程序流程圖方波程序: FB:MOVDPTR,#0FEFFH MOVA,#0CCH /方波高電平幅值 MOVXDPTR,A LCALLD200US /延時 MOVA,#5 /方波低電平幅值 MOVXDPTR,A LCALLD200US /延時 AJMPFB3.3鋸齒波#00H開始輸入數(shù)字量從0開始,逐次加1進(jìn)行D/A轉(zhuǎn)換。當(dāng)(A)等于某個值時,將(A)清零,重復(fù)上述過程,如此循環(huán),便成鋸齒波。累加器A寄存器R3輸出波形外部地址寄存器R3加1累加器AA是否等于#0FFH否是圖3.3.1鋸齒波程序流程圖鋸齒波程序: JUC: MOV R3,#00H LOOP11:MOV A,R3 MOV DPTR

21、,#0FEFFH MOVX DPTR,A INC R3 MOVA,R3 CJNE A,#0FFH,LOOP11 /與最高值比較 AJMP JUC3.4三角波否后半周期波形A是否等于#00H輸入數(shù)字量從0開始,逐次加1進(jìn)行D/A轉(zhuǎn)換。當(dāng)(A)等于指定值時,逐次減1進(jìn)行D/A轉(zhuǎn)換直至為零,再重復(fù)上述內(nèi)容,如此循環(huán),便成三角波。開始#00H累加器A寄存器R3外部地址寄存器R3加1累加器A前半周期波形累加器A否A是否等于#0FFH是寄存器R3減1外部地址累加器A外部地址是圖3.4.1三角波程序流程圖三角波程序: SJ: MOV R3,#00H LOOP6:MOV A,R3 MOV DPTR,#0FEF

22、FH MOVX DPTR,A INC R3 MOV A,R3 CJNEA,#0FFH,LOOP6 /與給定值比較 LOOP9:DEC R3 MOV A,R3 MOV DPTR,#0FEFFH MOVX DPTR,A CJNE R3,#00H,LOOP9/與最小值比較 AJMP SJ3.5延時程序延時200S計(jì)算式:1+1+(50*2+2)*2=206程序: D200US:MOV R1,#2 /200s延時 MOV R2,#50 L5: DJNZ R2,$ DJNZ R1,L5 RET 延時50S計(jì)算式:1+1(23*1+1)*2=50程序: D50US:MOV R1,#1 /50s延時 MOV

23、 R2,#23 L6: DJNZ R2,$ DJNZ R1,L6 RET 開始3.6總程序是輸出調(diào)頻后的波形是否調(diào)頻按鍵是否按下否輸出調(diào)幅后的波形是否調(diào)幅按鍵是否按下檢測按下的按鍵是否按下其他波形按鍵檢測按下的按鍵產(chǎn)生外部中斷按下波形按鍵輸出對應(yīng)的波形圖3.6.1總程序流程圖總程序:見附錄4、 系統(tǒng)調(diào)試結(jié)果4.1Keil軟件調(diào)試應(yīng)用1、圖4.1.1圖4.1.2因?yàn)镾JMP JUC在第26行,JUC程序在第102行,超出了SJMP所執(zhí)行的地址范圍。改正:將SJMP改為LJMP。2、設(shè)置函數(shù)的標(biāo)號時,由于整個程序設(shè)置的標(biāo)號數(shù)量比較多 ,則經(jīng)常會出現(xiàn)設(shè)置標(biāo)號錯誤或者設(shè)置重復(fù)的問題,使得調(diào)試的結(jié)果無法

24、達(dá)到自己預(yù)先設(shè)計(jì)好的結(jié)果執(zhí)行。3、指令代碼的輸入格式錯誤,在編程的過程中,寫了一句指令。CJNE A,R7,LOOP11,編譯時報錯,出現(xiàn)“EXPRESSION TYPE DOES NOT MATCH INSTRUCTION”。則表明所寫指令的格式發(fā)生錯誤。4.2Proteus軟件仿真過程調(diào)出元器件:序號元器件名稱元器件型號數(shù)目1單片機(jī)芯片AT89C5112數(shù)模轉(zhuǎn)換器DAC083213單刀單擲開關(guān)24復(fù)位開關(guān)45示波器16電阻5k87四端輸入與門74LS2118運(yùn)算放大器UA7411表4.2.1按照原理圖畫出芯片、接線。 圖4.2.1接入代碼:在Keil上運(yùn)行代碼,代碼運(yùn)行無誤會生成HEX文件

25、,然后再protues上雙基單片機(jī)模型,會彈出一個如下對話框。點(diǎn)擊文件按鈕,選擇所需要的程序文件(.HEX)。選擇合適的工作頻率即可確認(rèn)。然后運(yùn)行調(diào)試 圖4.2.24.3仿真結(jié)果正弦波正常波形: 圖4.3.1正弦波調(diào)頻后的波形: 圖4.3.2方波正常波形: 圖4.3.3方波調(diào)頻后波形: 圖4.3.4方波調(diào)幅后波形: 圖4.3.5三角波正常波形: 圖4.3.6三角波調(diào)頻后波形: 圖4.3.7三角波調(diào)幅后波形: 圖4.3.8鋸齒波正常波形: 圖4.3.9鋸齒波調(diào)頻后波形: 圖4.3.10鋸齒波調(diào)幅后波形: 圖4.3.115、 總結(jié)與體會5.1收獲與體會這次單片機(jī)課設(shè)歷時數(shù)天,我們選的課題是簡易信號

26、發(fā)生器??梢哉f是嘔心瀝血,苦盡甘來。但是這讓我們學(xué)到了很多東西,鞏固了以前的知識,特別是匯編語言的使用,以前上課的時候?qū)R編語言一知半解,但通過此次課設(shè)之后,我對匯編語言的了解更深了,運(yùn)用更加熟練了。通過本次課設(shè),鍛煉了自己獨(dú)立設(shè)計(jì)程序的能力。在本次課程設(shè)計(jì)中,我們很重視功能的劃分和各個模塊之間的聯(lián)系,分成了多個模塊,即三角波、正弦波、鋸齒波、方波模塊,這樣便于程序的檢測和修改。通過本次課設(shè),使我們懂得了理論與實(shí)際的結(jié)合是很重要的。只有把理論知識和實(shí)踐相結(jié)合,才能真正為社會服務(wù),從而提高自己的實(shí)踐動手能力和獨(dú)立思考能力。謝謝老師給我們這一個寶貴的鍛煉的機(jī)會。5.2不足與改進(jìn)此次簡易信號發(fā)生器的

27、設(shè)計(jì)最終所顯示出來的效果總體能滿足老師的要求,但是還是有點(diǎn)瑕疵和遺憾,首先由于時間的緊迫和正弦波本身的特性,我們沒能實(shí)現(xiàn)對正弦波調(diào)幅的功能。此前我們曾經(jīng)想過將正弦波的表里面的值修改一下,但出來的正弦波形已然失真,于是乎被迫放棄,對于改進(jìn)此類問題,我們想過重新制作一個正弦波的表,其幅值與之前的正弦波的表不一樣,便可實(shí)現(xiàn)正弦波的調(diào)幅功能,但制作這張表涉及大量計(jì)算,迫于時間壓力,所以這一塊我們被迫放棄。至于其他方法,我們目前沒有想出來,甚是遺憾。除此之外,我們對調(diào)幅調(diào)頻的值有其他的想法:可以增加調(diào)頻或調(diào)幅的值,我們設(shè)想通過查表的方法使調(diào)出更多的幅值和頻率,但由于我們擔(dān)心如果這樣寫將增加代碼量,調(diào)試過

28、程中會出現(xiàn)技術(shù)性問題,所以被迫放棄。不過總體來說,我們所設(shè)計(jì)的簡易信號發(fā)生器實(shí)現(xiàn)了老師所指定的功能,還是值得欣慰的。,附錄: ORG 0000H LJMP MAIN ;主程序 ORG 0003H LJMP INT01 ORG 0030HMAIN: MOV P0,#0FFH ;給P0口高電平 MOV SP,#60H ;設(shè)置堆棧指針ZC : MOV R6,#01H MOV R7,#0FH CLR IT0;外部中斷設(shè)置為低電平觸發(fā) SETB EX0 ;開啟外部中斷0 SETB EA ;開啟總中斷 START:;確保每個波形能夠循環(huán)輸出 CJNE R7,#00H,LLL0 SJMP ZX SJMP S

29、TARTLLL0: CJNE R7,#01H,LLL1 SJMP FB SJMP STARTLLL1: CJNE R7,#02H,LLL2 SJMP SJ SJMP STARTLLL2: CJNE R7,#03H,LLL3 LJMP JUCLLL3: SJMP START INT01: ;產(chǎn)生外部中斷0,檢測對應(yīng)的按鈕輸出對應(yīng)的波形 JB P2.1,LL0 MOV R7,#00H SJMP LL3LL0: JB P2.2,LL1 MOV R7,#01H SJMP LL3LL1: JB P2.3,LL2MOV R7,#02HSJMP LL3LL2: JB P2.4,LL3MOV R7,#03HS

30、JMP LL3LL3: RETIZX: MOV R3,#00H ;產(chǎn)生正弦波LOOP0: MOV A,R3 MOV DPTR,#TABLE ;查表 MOVC A,A+DPTR MOV DPTR,#0FEFFH ;定義DAC0832地址 MOVX DPTR,A ;讀數(shù)據(jù) INC R3 JB P2.5,LOOP1 ;正弦波調(diào)頻 LCALL D50USLOOP1: CJNE R3,#255,LOOP0 MOV R3,#00H CJNE R7,#00H,START ;檢測鍵是否按下 AJMP ZXFB:MOVDPTR,#0FEFFH;產(chǎn)生方波JBP2.6,LOOP2 ;檢測調(diào)幅按鈕調(diào)幅MOVA,#0C

31、CH ;方波高電平幅值1SJMP LOOP3LOOP2: MOV A,#055H ;方波高電平幅值2LOOP3: MOVXDPTR,ALCALLD200US ;延時JBP2.5,LOOP4 ;方波前半周期調(diào)頻LCALL D200USLOOP4: MOV A,#5 ;方波低電平幅值MOVXDPTR,ALCALLD200US ;延時JB P2.5,LOOP5 ;方波后半周期調(diào)頻LCALL D200USLOOP5: CJNER7,#01H,START ;檢測鍵是否按下AJMPFBSJ: MOV R3,#00H;產(chǎn)生三角波 LOOP6: MOV A,R3 MOV DPTR,#0FEFFH MOVX D

32、PTR,A INC R3 ;波形上升 MOV A,R3 JBP2.5,LOOP7 ;三角波前半周期調(diào)頻 LCALLD50USLOOP7: JBP2.6,LOOP8;三角波調(diào)幅 CJNEA,#0FFH,LOOP6 ;幅值1 SJMP LOOP9LOOP8: CJNE A,#055H,LOOP6 ;幅值2 LOOP9: DEC R3 ;波形下降 JBP2.5,LOOP10;三角波后半周期調(diào)頻 LCALLD50USLOOP10: MOV A,R3 MOV DPTR,#0FEFFH MOVX DPTR,A CJNE R3,#00H,LOOP9 CJNE R7,#02H,SJOUT ;檢測鍵是否按下 A

33、JMP SJSJOUT: LJMPSTARTJUC: MOV R3,#00H;產(chǎn)生鋸齒波LOOP11: MOV A,R3 MOV DPTR,#0FEFFH MOVX DPTR,A INC R3 ;波形上升 MOVA,R3 JBP2.5,LOOP12 ;鋸齒波調(diào)頻 LCALLD50USLOOP12: JB P2.6,LOOP13 ;鋸齒波調(diào)幅 CJNE A,#0FFH,LOOP11 ;幅值1 SJMPLOOP14LOOP13: CJNEA,#055H,LOOP11;幅值2LOOP14: CJNE R7,#03H,JUCOUT ;檢測鍵是否按下 AJMP JUCJUCOUT: LJMP START

34、D200US: MOV R1,#2 ;200s延時 MOV R2,#50L5: DJNZ R2,$ DJNZ R1,L5 RET D50US: MOV R1,#1 ;50s延時 MOV R2,#23L6: DJNZ R2,$ DJNZ R1,L6 RET TABLE:DB 080h,083h,086h,089h,08ch,090h,093h,096h,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0aeh;產(chǎn)生正弦波代碼 DB 0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d8h DB 0dah,0dch,0deh,0e0h,0e2h,0e4h,0e6h,0e8h,0eah,0ebh,0edh,0efh,0f0h,0f1h,0f3h,0f4h DB 0f5h,0f6h,0f8h,0f9h,0fah,0fah,0fbh,0fch,0fdh,0fd

溫馨提示

  • 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

提交評論