基于單片機(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)

3、范圍在110hz,幅值可調(diào)范圍在 1 5v。顯示屏上顯示參數(shù),第一行顯示波形。第二行左邊顯示波形頻率,右邊顯示波形幅值。本設(shè)計由五個功能按鍵,分別進(jìn)行波形切換,加減幅值和加減頻率。電壓在示波器上顯示,硬件原理示意圖,如圖1.1 所示。顯示電路按鍵單d/a 轉(zhuǎn)換電路放大電路片機(jī)復(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ī)

4、械振蕩, 單片機(jī)憑借晶體諧振器的頻率運行所設(shè)計出來的頻率, 所以說晶體諧振器的頻率是單片機(jī)操作時間規(guī)律, 保證單片機(jī)平穩(wěn)的工作。 晶體諧振器是控制 cpu 的時鐘頻率的。頻率控制運行速度。晶體諧振器雖然是振蕩電路的一部分,但是它自身不會產(chǎn)生震蕩, 它會有一個固定的頻率, 然后與外圍電路發(fā)生諧振。諧振的產(chǎn)生需要晶體諧振器固定頻率和外圍電路的頻率一致, 如果差距大,或者根本對不上則會使電路不在振蕩。 單片機(jī)會根據(jù)實際所能承受的晶體諧振器頻率來選擇自己的運行頻率,不會因為晶體諧振器頻率快單片機(jī)運行就快,頻率慢單片機(jī)運行速度就會降低。復(fù)位電路包含一個電容、 兩個電阻包括一個接地電阻和一個復(fù)位按鍵, 電

5、容和電阻采用值為 10f和 10k。復(fù)位電路讓單片機(jī)回到原始工作狀態(tài), rst 復(fù)位引腳高電平有效,高電平有效的持續(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ù)并行接法, 特點主要是使用方便,需要很多

6、的 i/o 口,函數(shù)發(fā)生器設(shè)計中 i/o 口是夠用的,所以可以使用這種數(shù)據(jù)傳輸方式。八位的數(shù)據(jù)賦給 i/o 口。讀取數(shù)據(jù)時也只要讀取整個 i/o 口。 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 以電流的形式輸出信號,所以

7、需要在 iout 后接一個 op07 運算放大器, 把輸出電流信號轉(zhuǎn)換成電壓的形式,供示波器顯示,在信號輸出之前op07 輸出口接一個電阻和一個電容組成一個簡單的濾波電路,用來抑制其他雜波,得到正常信號。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 引腳分別輸出 +10

8、v 和 -10v 左右的電壓,所以可以作為運算放大器 op07 的電源電壓,分別接在運放兩端, max232 芯片,如圖 2.4 所示。圖 2.4 max232原理圖4.硬件設(shè)計調(diào)試4.1 測試儀器為確保硬件和軟件的正確性及完善性,需要一些測試儀器進(jìn)行調(diào)試,硬件調(diào)試所需儀器如表 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)系到板子的

9、焊接和實現(xiàn),原理圖布局劃線最好規(guī)整, 本設(shè)計需要焊接的元器件不多, 但焊接時還是需要認(rèn)真檢查特別注意的,比如短距離焊點的.焊接方法,或是線與線之間很近,線與焊盤之間距離太小,線細(xì)易斷等。在線密集的地方避免焊接在一起,同時還要避免虛焊、短路、斷路等現(xiàn)象。按照原理圖有順序的焊接器件, 從低到高焊接,芯片的焊接需要注意, 不可將芯片直接焊上。在焊接的時候看見虛斷的線路, 需要用焊錫補(bǔ), 在拉焊錫時為了避免影響其他的線路,在拉完焊錫的路徑上進(jìn)行檢測,檢查相關(guān)電路的連通和無關(guān)電路的隔斷,找出問題電路線,并及時改正。在焊完電路以后檢查電路的可實際操作性是一定需要的, 因為在焊接的時候芯片很容易出現(xiàn)問題,

10、板子上有些元件接口還加有跳線, 需要檢查是否有正確連接,有無短路、斷路、線的連通性,跳線有沒有松動等,對照電路圖按照順序逐一對照檢查。板子實物圖,如圖 3.1 所示。圖 3.1 板子實物圖上電后,板子上的最小系統(tǒng)的復(fù)位按鍵,按下是否能復(fù)位,led 燈點亮。檢測完畢后在進(jìn)行下一步的調(diào)試工作。板子通電時不要急于把重要的芯片插上,更不能將芯片或電源插反, 若電路出現(xiàn)問題很有可能將芯片燒壞。通電后查看顯示屏能否正常顯示。 若板子出現(xiàn)異?,F(xiàn)象, 例如異常氣味、 出現(xiàn)煙霧和器件發(fā)燙等現(xiàn)象,立即切斷電源。如果測試沒有任何問題,硬件也確定是好的,結(jié)束硬件調(diào)試下載正確程序,并連接示波器。( 1)板子上電后,通過

11、示波器顯示頻率為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)通過波形切換按鍵,將三角波波形切換到方弦波波形,并通過示波器上顯示頻率為 5hz,幅值為 2v 方波波形。.圖 3.5 方波實現(xiàn)圖( 5)通過波形切換按鍵,將方弦波波形切換到鋸齒波波形,并通過示波器上顯示頻率為 5hz,幅值為 2v 方波波形。圖 3

12、.6 鋸齒波實現(xiàn)圖4.3 調(diào)試所遇問題及解決辦法將元器件根據(jù)原理圖焊接在板子上后, 給板子上電,單片機(jī)最小系統(tǒng)沒有異常,液晶顯示屏正常, max232 芯片在上電幾分鐘后芯片發(fā)燙,立刻切斷電源,并檢查原理圖各個引腳是否焊接正確, 地和電源是否焊接錯誤, 檢查有無短路現(xiàn)象,發(fā)現(xiàn)無誤,再次上電,其他模塊正常運作, max232 芯片仍然發(fā)燙,斷電后將芯片取下,給板子供電,用萬用表測量 dac0832 輸出引腳,萬用表顯示有電流輸出,可以確定 dac0832 芯片正常運作。這時將 max232 換下,換成一個升壓模塊電路,對 op07 運放提供正負(fù)電壓,將模塊接入后,上電,發(fā)現(xiàn)幾分鐘后升壓模塊也迅速

13、發(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)的顯示屏顯示的內(nèi)容會有所改變, 示波器顯示正確的波形, 本設(shè)計可以手動復(fù)位。5.軟件調(diào)試基于單片機(jī)函數(shù)信號發(fā)生器是由硬件和軟件來相互結(jié)合實現(xiàn)的,

14、 任一部分存在問題都會影響總體功能, 達(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)功能演示。 另外一種就是通過軟硬件結(jié)合來進(jìn)行程序的調(diào)試,使用 keil 軟件編譯好程序下載到單片機(jī)中,然后在系統(tǒng)中觀察軟

15、件功能是否實現(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)真的研究老師給的題目, 選一個小組成員都感興趣的題目。其次,老師在實驗課上的講解要認(rèn)真的去聽去想, 因為只有都

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

17、益匪淺。.附錄 1原理圖protues仿真圖.附錄 2源程序#includereg52.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 、幅值 v uchar num,key; /定義數(shù)組元素、以及是否有按鍵按下uint valu

18、e;/定時器裝初值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,0xa8,0xb3,0xbf,0xc9,0xd3,0xdc,0xe4,0xec,0xf2,0xf7,0xfb,0xfe,0xff,0xff,0xff,0xfc,

19、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,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80,0x.88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0

20、xc0,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_table64=0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c,0x20,0x24,0x28,0x2c,0x30,0x34,0x3

21、8,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,0xec,0xf0,0xf4,0xf8,0xfc;/鋸齒波uchar code squ_table64=0x00,0x00,0x00,0x00,0x00,0

22、x00,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,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff;/方波voi

23、d delayms(uchar xms)uchar i,j;for(i=xms;i0;i-)for(j=110;j0;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;delayms(2);lcden=1;delayms(2);lcden=0;void lcd_init()/液晶初始化.lcden=0;write_com(0x38);write_com(0x0c);wr

24、ite_com(0x06);write_com(0x01);void init()key=1;value=15625;/ 按鍵標(biāo)志位、定時初值(1450 微秒為人工減小誤差值) 初始化flag=1;freq=1;size=5;/ 變量初始化,初始產(chǎn)生正弦波,頻率為1hz ,幅值為 5vdacwr=0;/0832 初始化tmod=0x01;/定時器 t0 初始化th0=(65536-value+1400)/256;/ 頻率為 1hz 時,每點之間隔15625 微秒tl0=(65536-value+1400)%256;ea=1;et0=1;tr0=1;void keyscan()if(key1=0

25、)/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(freq10)freq=1;value=1000000/(freq*64);if(key3=0)/ 頻率減小.delayms(5);if(key3=0)while(!key3);key=1;freq-;if(freq5)size=1;if(key5=0)/ 幅值減小delayms(10);if(key5=0)while(

溫馨提示

  • 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

提交評論