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

下載本文檔

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

文檔簡介

1、單片機(jī)設(shè)計(jì)報(bào)告 廣東第二師范學(xué)院 單片機(jī)課程設(shè)計(jì)報(bào)告 物理 系 09 級 電子信息工程 專業(yè) 題目 單片機(jī)函數(shù)發(fā)生器設(shè)計(jì) 姓名 學(xué)號 指導(dǎo)教師 2011-4-5 目錄引言3一 設(shè)計(jì)任務(wù)31設(shè)計(jì)內(nèi)容32設(shè)計(jì)要求4二 芯片功能介紹4三 總體功能圖和總原理圖5四 程序流程圖61 鋸齒波程序流程圖62 三角波程序流程圖73 梯形波程序流程圖84 方波程序流程圖95 正弦波程序流程圖116 整體程序流程圖12五 程序設(shè)計(jì)13六 仿真測試16七 總結(jié)與體會19八 參考文獻(xiàn)19九 致謝19引言信號發(fā)生器又稱信號源或振蕩器,在生產(chǎn)實(shí)踐和科技領(lǐng)域中有著廣泛的應(yīng)用。這次的設(shè)計(jì)分為五個(gè)模塊:單片機(jī)控制及顯示模塊、數(shù)

2、模轉(zhuǎn)換模塊、波形產(chǎn)生模塊、輸出顯示模塊、電源模塊。使用at98c52作為主控臺結(jié)合芯片dac0832產(chǎn)生1hz-10hz頻率可調(diào)的五種信號波(鋸齒波、三角波、方波、梯形波、正弦波)。這幾種波形有幾個(gè)開關(guān)控制,可以隨意進(jìn)行切換,十分方便。另外,波形的頻率和振幅也可以通過開關(guān)進(jìn)行更改。可以說這次的設(shè)計(jì)操作簡單,內(nèi)容豐富,而且電路快捷明了。1設(shè)計(jì)任務(wù)1.1設(shè)計(jì)內(nèi)容以單片機(jī)為基礎(chǔ),設(shè)計(jì)并開發(fā)能輸出多種波形(正弦波、三角波、鋸齒波、梯形波等),且頻率、幅度可變的函數(shù)發(fā)生器。1.2設(shè)計(jì)要求設(shè)計(jì)借口電路,將這些外設(shè)構(gòu)成一個(gè)簡單的單片機(jī)應(yīng)用系統(tǒng),畫出接口的連接圖和仿真圖,并編寫出控制波形的程序。2芯片功能介紹

3、 2.1、dac0832芯片介紹: dac0832為一個(gè)8位d/a轉(zhuǎn)換器,單電源供電,在+5+15v范圍內(nèi)均可正常工作?;鶞?zhǔn)電壓的范圍為10v,電流建立時(shí)間為1s,cmos工藝,低功耗20mw。dac0832的內(nèi)部結(jié)構(gòu)框圖如下圖所示。圖2.1 dac0832的內(nèi)部結(jié)構(gòu)框圖2.2 dac0832的外部引腳及功能介紹圖如下: 圖2.2 dac0832介紹 2.3 dac0832的應(yīng)用:dac0832一是用作單極性電壓輸出,二是用作雙極性電壓輸出,最后是用作程控放大器。 2.4 dac0832與8031的連接方式: dac0832的與單片機(jī)的連接方式有三種方式:(1)單緩沖;(2)雙緩沖、(3)直通

4、方式。本程序采用的是方式一即單緩沖方式,ile為高電平,cs、wr1、wr2、xfer為低電平。 圖2.4 dac0832引腳圖3 總體功能圖和總原理圖函數(shù)發(fā)生器的設(shè)計(jì) k2 鍵三角波 k3鍵梯形波 k4鍵方波 k5鍵正弦波 k6 調(diào)頻調(diào)幅 k1 鍵 鋸 齒 波 圖3.1 總體功能圖 圖3.2 總原理圖4 程序流程圖4.1 鋸齒波程序流程圖鋸齒波的實(shí)現(xiàn)過程是首先定義一個(gè)初值然后進(jìn)行加法操作,加的步數(shù)的多少則根據(jù)要求的頻率來進(jìn)行。然后加到某個(gè)數(shù)之后就再重新設(shè)置為初值,再重復(fù)執(zhí)行剛剛的操作,如此循環(huán)下去。流程圖如下所示:設(shè)置初值a mov a,#00h dpt#8000hmovx dptr,a 加

5、上設(shè)定的步數(shù),add a,步數(shù)判斷a是否已經(jīng)滿了? 否 重新設(shè)置初值a 是 開 始 4.2 三角波程序流程圖三角波的實(shí)現(xiàn)是設(shè)置一個(gè)初值,然后進(jìn)行加數(shù),同樣是加到某個(gè)數(shù)之后再進(jìn)行減數(shù),減到初值之后就再返回到先前的操作,這個(gè)操作跟鋸齒波的實(shí)現(xiàn)是相似的。此程序輸入的vref的電壓是5v,因此該波形輸出的最大頻率是初值為00h和最終值為0ffh,且步數(shù)為1,這樣輸出的波形是最大的。程序流程圖如下圖所示:給a設(shè)置初值 mov dptr,#8000h movx dptr,aadd a,步數(shù) 判斷a是否已滿? 否 是 subb a,步數(shù) 判斷是否等于初值? 否/是 開 始 4.3 梯形波程序流程圖梯形波輸出

6、跟鋸齒波和三角波相似,只不過當(dāng)加到頂峰后的一段時(shí)間內(nèi)不改變a的值,過了一段時(shí)間后再將減少a的值,不過先后的步數(shù)可以一樣也可以不一樣。然后減到初始的值后也要持續(xù)一段時(shí)間,然后再進(jìn)行加數(shù),如此循環(huán)下去。程序流程圖如下圖所示:開 始 給a設(shè)置初值 mov a,#00h 是 持續(xù)一段時(shí)間 subb a,步數(shù)2 判斷是否等于初值? 否 是 持續(xù)一段時(shí)間 movx dptr,a add a,步數(shù)1判斷a是否已滿? 否 4.4 方波程序流程圖此波形的實(shí)現(xiàn)更加簡單,只需開始的時(shí)候設(shè)置一個(gè)初值然后直接輸出這個(gè)值就行了,輸出一段時(shí)間后,然后再重新置一個(gè)數(shù)據(jù),然后再輸出這個(gè)數(shù)據(jù)一段時(shí)間,但是此時(shí)的時(shí)間一定要等于前面

7、那段時(shí)間。這樣才是一個(gè)方波,如果兩個(gè)時(shí)間不相同,那就相當(dāng)于一個(gè)脈沖波了。流程圖如下圖所示:開 始 給a設(shè)置初值 mov dptr,#8000h movx dptr,a 設(shè)置輸出的時(shí)間 再設(shè)置一個(gè)初值放入a中movx dptr,a 輸出一段時(shí)間 4.5 正弦波程序流程圖正弦波的實(shí)現(xiàn)則相對比較復(fù)雜,因?yàn)檎也ǖ膶?shí)現(xiàn)是輸出各個(gè)點(diǎn)的值就行了,可是各個(gè)點(diǎn)值則要通過正弦函數(shù)來求出,不過這些值直接去網(wǎng)上下載下來使用就可以了。輸出的數(shù)據(jù)剛好是256個(gè)數(shù)據(jù),這樣則可以直接相加就行了。流程圖如下圖所示:4.6 整體程序流程圖如下圖所示:開 始 判斷p1.0是否為1? 判斷p1.1是否為1? 判斷p1.2是否為1?

8、 判斷p1.3是否為1? 判斷p1.4是否為1? 否 否 否 否 否 是 是 是 是 是 輸出響應(yīng)的波形 5 程序設(shè)計(jì)org 0000h ;程序開始mov sp,#60h ;設(shè)置堆棧mov dptr,#7fffh ;0832的地址sjmp loptpl: mov r6,#04h ;切換頻率和幅度(手動調(diào)節(jié)) mov r5,#04h sjmp start lop: jnb p1.5,tpl ;選擇調(diào)頻 mov r6,#01h ;設(shè)置步長 mov r5,#01h start: jnb p1.0,bx1 ;輸出鋸齒波 jnb p1.1,bx2 ;輸出三角波 jnb p1.2,bx3 ;輸出梯形 jn

9、b p1.3,bx4 ;輸出方波 jnb p1.4,bx5 ;輸出正弦波 sjmp lop bx1: mov a,#00h ;設(shè)置初值loop:movx dptr,a ;把數(shù)據(jù)送到端口 add a,r6 ;通過步長改變上升波形 cjne a,#00h,loop sjmp start ;返回檢測開關(guān)情況bx2: mov a,#00h ;設(shè)置初值loop3:movx dptr,a ;把數(shù)據(jù)送到端口轉(zhuǎn)換 add a,r6 ;通過步長改變上升波形 cjne a,#00h,loop3 dec a ;減少步長改變數(shù)據(jù)下降波形loop2:movx dptr,a ;把數(shù)據(jù)送到端口轉(zhuǎn)換 dec a ;減少步長改

10、變數(shù)據(jù)下降波形 cjne a,#00h,loop2 sjmp start ;返回檢測bx3: mov a,#00h ;設(shè)置初值loop4:movx dptr,a ;把數(shù)據(jù)送到端口轉(zhuǎn)換 add a,r6 ;增加步長改變數(shù)據(jù)上升波形 cjne a,#00h,loop4 dec a mov r7,0eeh ;循環(huán)次數(shù)lop2:movx dptr,a ;進(jìn)行延時(shí) djnz r7,lop2loop1:movx dptr,a ;把數(shù)據(jù)送到端口轉(zhuǎn)換 dec a cjne a,#00h,loop1 ;是否到最低點(diǎn) mov r7,0eeh ;循環(huán)次數(shù)lop1:movx dptr,a ;把數(shù)據(jù)送到端口轉(zhuǎn)換 djn

11、z r7,lop1 ;進(jìn)行延時(shí) sjmp start ;返回檢測bx4: mov a,#00h ;設(shè)置初值最低點(diǎn) mov r7,#0eeh ;循環(huán)次數(shù)loop5:movx dptr,a ;進(jìn)行數(shù)據(jù)轉(zhuǎn)換 djnz r7,loop5 ;進(jìn)行延時(shí) mov a,#0ffh ;設(shè)置最高點(diǎn) mov r7,#0eeh ;循環(huán)次數(shù)loop6:movx dptr,a ;進(jìn)行數(shù)據(jù)轉(zhuǎn)換 djnz r7,loop6 ;進(jìn)行延時(shí) mov a,#00h sjmp start ;返回檢測開關(guān)變化bx5: mov a,#00h ;設(shè)置初值loop7: mov r7,a ;保存當(dāng)前的數(shù)據(jù) mov dptr,#sin ;讀取表的

12、地址 movc a,a+dptr ;讀取表中的數(shù)據(jù) mov dptr,#7fffh ;d/a0832的端口地址 movx dptr,a ;進(jìn)行數(shù)據(jù)轉(zhuǎn)換 mov a,r7 ;恢復(fù)當(dāng)前數(shù)據(jù) inc a ;為讀取表的下一個(gè)值做準(zhǔn)備 cjne a,#00h,loop7 ;是否讀完表的數(shù)據(jù) sjmp start ;返回檢測開關(guān) sin: db 80h,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

13、,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,0feh,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,0

14、f4h,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 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

15、, 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,

16、 00h, 00h, 00h, 00h, 01h, 02h db 02h, 03h, 04h, 05h, 06h, 07h, 08h, 09h db 0ah, 0bh, 0dh, 0eh, 10h, 11h, 13h, 15h db 16h, 18h, 1ah, 1ch, 1eh, 20h, 22h, 25h db 27h, 29h, 2bh, 2eh, 30h, 33h, 35h, 38h db 3ah, 3dh, 40h, 43h, 45h, 48h, 4ch, 4eh db 51h, 55h, 57h, 5ah, 5dh, 60h, 63h, 66h db 69h, 6ch, 6fh,

17、72h, 76h, 79h, 7ch, 80h end6 仿真測試現(xiàn)在使用軟件proteus進(jìn)行仿真測試,下面就相應(yīng)的仿真效果圖: 圖5 鋸齒波仿真效果圖 圖6 三角波仿真效果圖 圖7 梯形波仿真效果圖 圖8 方波仿真效果圖 圖9 正弦波仿真效果圖從仿真的效果來看,這次的信號發(fā)生器的設(shè)計(jì)是很成功的。而且波形也產(chǎn)生的很漂亮和標(biāo)準(zhǔn)。7 總結(jié)與體會經(jīng)過一系列的努力,終于順利地完成了這個(gè)單片機(jī)課程的設(shè)計(jì)。這是一個(gè)磨練意志的過程。從課題的選擇開始,計(jì)算器的設(shè)計(jì)、硬件和軟件系統(tǒng)的設(shè)計(jì)、到最后的proteus軟件仿真完成,這其中經(jīng)歷了很多困難,但是更重要的是在這個(gè)過程中我得到了很大的鍛煉。一方面通過c51單

18、片機(jī)等一些器件的設(shè)計(jì)讓我學(xué)習(xí)和掌握了單片機(jī)技術(shù)的基礎(chǔ)知識和技術(shù)要點(diǎn),也使以前學(xué)的很多知識都得到了運(yùn)用;另一方面在用proteus軟件畫電路圖時(shí),然后再轉(zhuǎn)換成一維的word中進(jìn)行編輯,這個(gè)過程中讓我掌握了計(jì)算機(jī)輔助的設(shè)計(jì)技術(shù)。當(dāng)然,這是一個(gè)需要不斷的嘗試,不斷的校核,不斷的修改,最后完成一個(gè)合理的設(shè)計(jì)的過程。需要的是細(xì)心和耐心。在很大程度上培養(yǎng)了我拼搏的工作精神。使我受益匪淺,更加明確了自己專業(yè)的方向。在這一次的設(shè)計(jì)中,我不僅學(xué)到了關(guān)于單片機(jī)技術(shù)方面的許多專業(yè)知識,同時(shí)也讓我感覺到團(tuán)隊(duì)合作的重要性。其實(shí)如何有效和快速的找到資料也是課設(shè)給我的啟發(fā),利用好圖書館和網(wǎng)絡(luò),是資源的到最好的利用。與他人交流思想是取得成功的關(guān)鍵,在

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論