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

下載本文檔

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

文檔簡介

1、基于單片機(jī)的函數(shù)信號發(fā)生器設(shè)計所用元器件:元器件數(shù)量(個)電阻3電容9STC89C52芯片1DAC0832芯片1MAX232芯片1按鍵7OP07運算放大器1LED發(fā)光二極管1LCD1602液晶屏幕1晶振1電位器1芯片底座4排阻1電解電容2排針若干跳線若干基于單片機(jī)的函數(shù)信號發(fā)生器1.設(shè)計目的1學(xué)習(xí)使用keil編程,使用Altium Designer繪制原理圖;2使用單片機(jī)產(chǎn)生正弦波、方波、三角波、鋸齒波并可通過按鍵對波形切換、幅值和頻率的調(diào)整;3學(xué)習(xí)使用示波器顯示波形;2.設(shè)計原理基于單片機(jī)的函數(shù)發(fā)生器原理以STC89C51為整個函數(shù)發(fā)生器的核心部分,通過編寫程序和執(zhí)行程序,運用示波器顯示出四

2、種波形,分別是正弦波、三角波、方波和鋸齒波。本設(shè)計擁有五個按鍵,分別實現(xiàn)波形的切換,改變波形的頻率和幅值的大小。芯片DAC0832將數(shù)字信號轉(zhuǎn)換成模擬信號輸出并通過外接運算放大器OP07實現(xiàn)電流向電壓的轉(zhuǎn)換,最后通過示波器顯示出波形。3.設(shè)計內(nèi)容3.1基本設(shè)計內(nèi)容本次設(shè)計的主要內(nèi)容是設(shè)計一個基于單片的函數(shù)信號發(fā)生器實現(xiàn)正弦波、三角波、方波和鋸齒波。利用單片機(jī)設(shè)計程序,使其能夠通過按鍵有效切換四種波形,并且實現(xiàn)波形幅值和頻率的調(diào)整滿足本設(shè)計的要求,進(jìn)行硬件系統(tǒng)和軟件系統(tǒng)的設(shè)計,最后調(diào)試完成本次設(shè)計。LCD1602液晶顯示波形種類、幅值以及頻率。頻率的可調(diào)范圍在110HZ,幅值可調(diào)范圍在15V。顯

3、示屏上顯示參數(shù),第一行顯示波形。第二行左邊顯示波形頻率,右邊顯示波形幅值。本設(shè)計由五個功能按鍵,分別進(jìn)行波形切換,加減幅值和加減頻率。電壓在示波器上顯示,硬件原理示意圖,如圖1.1所示。顯示電路單片機(jī)D/A轉(zhuǎn)換電路放大電路按鍵復(fù)位電路波形輸出圖1.1 硬件原理設(shè)計圖3.2模塊設(shè)計3.2.1單片機(jī)最小系統(tǒng)模塊本設(shè)計STC89C51為整個函數(shù)發(fā)生器的核心部分,單片機(jī)、時鐘電路和復(fù)位電路構(gòu)成單片機(jī)的最小系統(tǒng),如圖2.1所示。圖2.1單片機(jī)最小系統(tǒng)模塊原理圖晶體諧振器是時鐘電路的重要組成部分,將晶體諧振器放入電路,上電后它會產(chǎn)生機(jī)械振蕩,單片機(jī)憑借晶體諧振器的頻率運行所設(shè)計出來的頻率,所以說晶體諧振器

4、的頻率是單片機(jī)操作時間規(guī)律,保證單片機(jī)平穩(wěn)的工作。晶體諧振器是控制CPU的時鐘頻率的。頻率控制運行速度。晶體諧振器雖然是振蕩電路的一部分,但是它自身不會產(chǎn)生震蕩,它會有一個固定的頻率,然后與外圍電路發(fā)生諧振。諧振的產(chǎn)生需要晶體諧振器固定頻率和外圍電路的頻率一致,如果差距大,或者根本對不上則會使電路不在振蕩。單片機(jī)會根據(jù)實際所能承受的晶體諧振器頻率來選擇自己的運行頻率,不會因為晶體諧振器頻率快單片機(jī)運行就快,頻率慢單片機(jī)運行速度就會降低。復(fù)位電路包含一個電容、兩個電阻包括一個接地電阻和一個復(fù)位按鍵,電容和電阻采用值為10F和10K。復(fù)位電路讓單片機(jī)回到原始工作狀態(tài),RST復(fù)位引腳高電平有效,高電

5、平有效的持續(xù)時間應(yīng)為24個時鐘周期以上,才能有效復(fù)位。根據(jù)公式電容的充電時間為t=R*C,則電容的充電時間為100ms,充滿使得單片機(jī)復(fù)位。電容充滿,與地相接的的電阻電壓、電流都降為零,在開機(jī)上電的0.1s鐘內(nèi),單片機(jī)系統(tǒng)會自動復(fù)位,在單片機(jī)工作期間,按下復(fù)位按鍵,電容放電,接地電阻出現(xiàn)電壓,單片機(jī)復(fù)位松開按鍵,電容充電,幾個毫秒之后單片機(jī)開始工作。3.2.2顯示模塊LCD1602能同時顯示32個字符。LCD1602采用的是數(shù)據(jù)并行接法,特點主要是使用方便,需要很多的I/O口,函數(shù)發(fā)生器設(shè)計中I/O口是夠用的,所以可以使用這種數(shù)據(jù)傳輸方式。八位的數(shù)據(jù)賦給I/O口。讀取數(shù)據(jù)時也只要讀取整個I/O

6、口。LCD1602顯示模塊,如圖2.2所示。圖2.2顯示模塊原理圖3.2.3 D/A轉(zhuǎn)換電路DA轉(zhuǎn)換模塊由DAC0832、OP07運算放大電路組成,DAC0832作為函數(shù)發(fā)生器數(shù)模轉(zhuǎn)換模塊的核心芯片,轉(zhuǎn)換時間為1us,工作電壓為+5v+15v,基準(zhǔn)電壓為正負(fù)10v。它主要由兩個8為寄存器和一個8位D/A轉(zhuǎn)換器組成,片內(nèi)有輸入數(shù)據(jù)寄存器,所以芯片可以直接與單片機(jī)相接。DAC0832以電流的形式輸出信號,所以需要在Iout后接一個OP07運算放大器,把輸出電流信號轉(zhuǎn)換成電壓的形式,供示波器顯示,在信號輸出之前OP07輸出口接一個電阻和一個電容組成一個簡單的濾波電路,用來抑制其他雜波,得到正常信號。

7、D/A轉(zhuǎn)換模塊,如圖2.3所示。圖2.3 D/A轉(zhuǎn)換模塊原理圖3.2.4提供運放電源電路DAC0832輸出的是電流信號,要將電流轉(zhuǎn)換成電壓,OP07運算放大器需要提供正負(fù)10v的電壓,在單片機(jī)與計算機(jī)通信時需要加電平轉(zhuǎn)換芯片,MAX232可以完成電平轉(zhuǎn)換功能,因此MAX232芯片上可以找到正、負(fù)電壓。根據(jù)測量,MAX232芯片的2、6引腳分別輸出+10v和-10v左右的電壓,所以可以作為運算放大器OP07的電源電壓,分別接在運放兩端,MAX232芯片,如圖2.4所示。圖2.4 MAX232原理圖4.硬件設(shè)計調(diào)試4.1測試儀器為確保硬件和軟件的正確性及完善性,需要一些測試儀器進(jìn)行調(diào)試,硬件調(diào)試所

8、需儀器如表3.1所示:表3.1測試儀器表硬件調(diào)試所需儀器數(shù)量電腦1臺萬用表1個USB線1條示波器1臺連接板子和示波器的探頭線1條4.2硬件調(diào)試過程硬件調(diào)試是設(shè)計是否能成功的關(guān)鍵,通過調(diào)試可以檢查板子是否能正確運行以及檢測設(shè)計功能是否按要求實現(xiàn)。畫原理圖很多細(xì)節(jié)需要注意,原理圖的正確性很重要,這關(guān)系到板子的焊接和實現(xiàn),原理圖布局劃線最好規(guī)整,本設(shè)計需要焊接的元器件不多,但焊接時還是需要認(rèn)真檢查特別注意的,比如短距離焊點的焊接方法,或是線與線之間很近,線與焊盤之間距離太小,線細(xì)易斷等。在線密集的地方避免焊接在一起,同時還要避免虛焊、短路、斷路等現(xiàn)象。按照原理圖有順序的焊接器件,從低到高焊接,芯片的

9、焊接需要注意,不可將芯片直接焊上。在焊接的時候看見虛斷的線路,需要用焊錫補(bǔ),在拉焊錫時為了避免影響其他的線路,在拉完焊錫的路徑上進(jìn)行檢測,檢查相關(guān)電路的連通和無關(guān)電路的隔斷,找出問題電路線,并及時改正。在焊完電路以后檢查電路的可實際操作性是一定需要的,因為在焊接的時候芯片很容易出現(xiàn)問題,板子上有些元件接口還加有跳線,需要檢查是否有正確連接,有無短路、斷路、線的連通性,跳線有沒有松動等,對照電路圖按照順序逐一對照檢查。板子實物圖,如圖3.1所示。圖3.1 板子實物圖上電后,板子上的最小系統(tǒng)的復(fù)位按鍵,按下是否能復(fù)位,LED燈點亮。檢測完畢后在進(jìn)行下一步的調(diào)試工作。板子通電時不要急于把重要的芯片插

10、上,更不能將芯片或電源插反,若電路出現(xiàn)問題很有可能將芯片燒壞。通電后查看顯示屏能否正常顯示。若板子出現(xiàn)異?,F(xiàn)象,例如異常氣味、出現(xiàn)煙霧和器件發(fā)燙等現(xiàn)象,立即切斷電源。如果測試沒有任何問題,硬件也確定是好的,結(jié)束硬件調(diào)試下載正確程序,并連接示波器。(1)板子上電后,通過示波器顯示頻率為1HZ,幅值為5V的正弦波。圖3.2 正弦波實現(xiàn)圖(2)通過按鍵,實現(xiàn)頻率和幅值的調(diào)整,示波器上顯示調(diào)整后的正弦波波形,頻率為5HZ,幅值為2V。圖3.3 正弦波實現(xiàn)圖(3)通過波形切換按鍵,將正弦波波形切換到三角波波形,并通過示波器上顯示頻率為5HZ,幅值為2V三角波波形。圖3.4三角波實現(xiàn)圖(4)通過波形切換按

11、鍵,將三角波波形切換到方弦波波形,并通過示波器上顯示頻率為5HZ,幅值為2V方波波形。 圖3.5 方波實現(xiàn)圖(5)通過波形切換按鍵,將方弦波波形切換到鋸齒波波形,并通過示波器上顯示頻率為5HZ,幅值為2V方波波形。圖3.6 鋸齒波實現(xiàn)圖4.3 調(diào)試所遇問題及解決辦法將元器件根據(jù)原理圖焊接在板子上后,給板子上電,單片機(jī)最小系統(tǒng)沒有異常,液晶顯示屏正常,MAX232芯片在上電幾分鐘后芯片發(fā)燙,立刻切斷電源,并檢查原理圖各個引腳是否焊接正確,地和電源是否焊接錯誤,檢查有無短路現(xiàn)象,發(fā)現(xiàn)無誤,再次上電,其他模塊正常運作,MAX232芯片仍然發(fā)燙,斷電后將芯片取下,給板子供電,用萬用表測量DAC0832

12、輸出引腳,萬用表顯示有電流輸出,可以確定DAC0832芯片正常運作。這時將MAX232換下,換成一個升壓模塊電路,對OP07運放提供正負(fù)電壓,將模塊接入后,上電,發(fā)現(xiàn)幾分鐘后升壓模塊也迅速發(fā)燙,切斷電源將模塊取下,這時通過查找資料后發(fā)現(xiàn)OP07正負(fù)10V引腳接反,這時將OP07運放的正負(fù)電源輸入端口引腳反過來,將MAX232芯片的6引腳與運放OP07的4引腳相接,之后再將MAX232芯片的2引腳與運放OP07的7引腳相接。4.4調(diào)試結(jié)果通過對軟件和硬件的檢查,反復(fù)的修改和調(diào)試,上電后,電源指示燈正常亮,LCD1602液晶顯示屏可以正常顯示波形種類、幅值和頻率大小,按下按鍵后,相應(yīng)的顯示屏顯示的

13、內(nèi)容會有所改變,示波器顯示正確的波形,本設(shè)計可以手動復(fù)位。5.軟件調(diào)試基于單片機(jī)函數(shù)信號發(fā)生器是由硬件和軟件來相互結(jié)合實現(xiàn)的,任一部分存在問題都會影響總體功能,達(dá)不到預(yù)期效果。在本設(shè)計確定硬件電路沒有問題以后,就開始對軟件的調(diào)試了。由于軟硬件相互結(jié)合,根據(jù)題目要求設(shè)計硬件電路,查看相關(guān)資料以及整合相關(guān)電路功能及性能,將硬件電路設(shè)計出來,確定好硬件電路后,根據(jù)要實現(xiàn)的硬件功能,軟件設(shè)計也會逐步確定下來。根據(jù)函數(shù)發(fā)生器所要實現(xiàn)的具體功能設(shè)計出合理的程序結(jié)構(gòu)。單片機(jī)的軟件設(shè)計調(diào)試主要有兩種,一是使用軟件仿真進(jìn)行調(diào)試,運用計算機(jī)軟件區(qū)模擬單片機(jī)環(huán)境的指令執(zhí)行,并虛擬單片機(jī)內(nèi)部資源從而實現(xiàn)功能演示。另外

14、一種就是通過軟硬件結(jié)合來進(jìn)行程序的調(diào)試,使用Keil軟件編譯好程序下載到單片機(jī)中,然后在系統(tǒng)中觀察軟件功能是否實現(xiàn)。在本次設(shè)計中我們先使用proteus對本設(shè)計進(jìn)行仿真,之后再運用軟硬結(jié)合下載進(jìn)單片機(jī)的方式完成本次設(shè)計。6.心得體會為期兩周的單片機(jī)實訓(xùn)結(jié)束了,我們小組學(xué)到了很多東西。隨著電子技術(shù)的發(fā)展,特別是隨著大規(guī)模集成電路的產(chǎn)生,給人們的生活帶來了根本性的變化,我們學(xué)習(xí)了單片機(jī)這門課程,感覺是有點難,不過在學(xué)習(xí)中,我才發(fā)現(xiàn)學(xué)習(xí)單片機(jī)不僅僅需要軟件的知識,還需要硬件的知識。單片機(jī)是一門很好的學(xué)問,需要我們?nèi)ャ@研它。說起本次設(shè)計,我認(rèn)為最重要的就是做好設(shè)計的預(yù)習(xí),認(rèn)真的研究老師給的題目,選一個

15、小組成員都感興趣的題目。其次,老師在實驗課上的講解要認(rèn)真的去聽去想,因為只有都明白了,做起設(shè)計就會事半功倍,如果沒弄明白,就迷迷糊糊的去選題目做設(shè)計,到頭來一點收獲也沒有。最后,要重視程序的規(guī)范,便于修改,也要注重程序的調(diào)試,掌握其方法。在全組人竭盡全力,程序編寫成功,這是我們共同努力的結(jié)果,在享受我們成果之時,不得不感慨單片機(jī)的重要性,所以為期兩周的單片機(jī)課程設(shè)計沒有浪費我們學(xué)到了很多知識,本次設(shè)計和課堂上老師所講的內(nèi)容有所相似,需要我們在結(jié)合所學(xué)只是上進(jìn)一步升華。也讓我們對單片機(jī)有了更深一步的了解,雖然最后結(jié)果是出來了,可這與老師的精心指導(dǎo)是分不開的她引導(dǎo)我們的思路,所以老師是功不可沒的。

16、總而言之,單片機(jī)課程設(shè)計對于我們有很大的幫助,我們從中受益匪淺。附錄1原理圖Protues仿真圖附錄2源程序#include"reg52.h"#define uchar unsigned char#define uint unsigned intsbit key1=P10;sbit key2=P11;sbit key3=P12;sbit key4=P13;sbit key5=P14;sbit lcden=P34;sbit lcdrs=P35;sbit dacwr=P36;uchar flag,freq,size; / 分別用來標(biāo)記波的種類、頻率HZ、幅值Vuchar num

17、,key; /定義數(shù)組元素、以及是否有按鍵按下uint value; /定時器裝初值uchar lcd_table="wave:"uchar lcd_table1="fre:"uchar lcd_table2="amp:"uchar lcd_table3="sin" /LCD波形種類數(shù)組uchar code sin_table64=0x00,0x03,0x06,0x0a,0x10,0x17,0x1e,0x27,0x30,0x3b,0x46,0x51,0x5d,0x69,0x76,0x83,0x8f,0x9c,0xa

18、8,0xb3,0xbf,0xc9,0xd3,0xdc,0xe4,0xec,0xf2,0xf7,0xfb,0xfe,0xff,0xff,0xff,0xfc,0xf9,0xf5,0xef,0xe8,0xe1,0xd8,0xce,0xc4,0xb9,0xae,0xa2,0x96,0x89,0x7d,0x70,0x64,0x58,0x4c,0x41,0x36,0x2c,0x23,0x1b,0x14,0x0d,0x08,0x04,0x01,0x00,0x00; /正弦波uchar code tri_table64=0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,

19、0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xfe,0xf6,0xee,0xe6,0xde,0xd6,0xce,0xc6,0xbe,0xb6,0xae,0xa6,0x9e,0x96,0x8e,0x86,0x7e,0x76,0x6e,0x66,0x5e,0x56,0x4e,0x46,0x3e,0x36,0x2e,0x26,0x1e,0x16,0x0e,0x06; /三角波uchar code zig_table

20、64=0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c,0x20,0x24,0x28,0x2c,0x30,0x34,0x38,0x3c,0x40,0x44,0x48,0x4c,0x50,0x54,0x58,0x5c,0x60,0x64,0x68,0x6c,0x70,0x74,0x78,0x7c,0x80,0x84,0x88,0x8c,0x90,0x94,0x98,0x9c,0xa0,0xa4,0xa8,0xac,0xb0,0xb4,0xb8,0xbc,0xc0,0xc4,0xc8,0xcc,0xd0,0xd4,0xd8,0xdc,0xe0,0xe4,0xe8,0x

21、ec,0xf0,0xf4,0xf8,0xfc; /鋸齒波uchar code squ_table64=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff

22、,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff; /方波void delayms(uchar xms) uchar i,j; for(i=xms;i>0;i-) for(j=110;j>0;j-);void write_com(uchar com) /液晶寫指令 lcdrs=0; P0=com; delayms(2); lcden=1; delayms(2); lcden=0;void write_data(uchar date) /液晶寫數(shù)據(jù) lcdrs=1; P0=date; dela

23、yms(2); lcden=1; delayms(2); lcden=0;void lcd_init() /液晶初始化 lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01);void init() key=1;value=15625; /按鍵標(biāo)志位、定時初值(1450微秒為人工減小誤差值)初始化 flag=1;freq=1;size=5; /變量初始化,初始產(chǎn)生正弦波,頻率為1HZ,幅值為5V dacwr=0;/0832初始化 TMOD=0x01; /定時器T0初始化 TH0=(65536-val

24、ue+1400)/256;/頻率為1HZ時,每點之間隔15625微秒 TL0=(65536-value+1400)%256; EA=1; ET0=1; TR0=1;void keyscan() if(key1=0) /key1選擇波形 delayms(5); if(key1=0) while(!key1); key=1; flag+; /flag為1、2、3、4時,分別對應(yīng)正弦方波、三角方波、鋸齒方波、方波 if(flag>=5)flag=1; if(key2=0) /頻率增大 delayms(5); if(key2=0) while(!key2); key=1; freq+; if(f

25、req>10)freq=1; value=1000000/(freq*64); if(key3=0) /頻率減小 delayms(5); if(key3=0) while(!key3); key=1; freq-; if(freq<1)freq=10; value=1000000/(freq*64); if(key4=0) /幅值增大 delayms(10); if(key4=0) while(!key4); key=1; size+; if(size>5)size=1; if(key5=0) /幅值減小 delayms(10); if(key5=0) while(!key5

26、); key=1; size-; if(size<1)size=5; void gene_wave() switch(flag) case 1:P2=sin_tablenum*size/5;lcd_table30='s'lcd_table31='i'lcd_table32='n'break; case 2:P2=tri_tablenum*size/5;lcd_table30='t'lcd_table31='r'lcd_table32='i'break; case 3:P2=zig_tablenum*size/5;lcd_table30='z'lcd_table31='i'lcd_table32='g'break; case 4:P2=squ_tablenum*s

溫馨提示

  • 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

提交評論