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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、摘要:本系統(tǒng)采用單片機AT89S52,通過編程方式產生鋸齒波、正弦波和矩形波三種波形,再通過D/A轉換器DAC0832將數字信號轉換為模擬信號,濾波放大,最后用示波器顯示出來。生成 1Hz- 3k Hz 波形。通過鍵盤控制三種波形的類型選擇和頻率變化,并通過液晶屏1602顯示它們各自的類型和數值。系統(tǒng)大致包括三個部分:信號發(fā)生部分、數模轉換部分和液晶顯示部分。詳細討論了數模轉換部分和波形生成與變化部分。關鍵詞:微控制器AT89S52 , DAC0832 , LCD 1602目錄 TOC o 1-3 h z u HYPERLINK l _Toc343638102 1. 系統(tǒng)設計 PAGEREF

2、_Toc343638102 h 4 HYPERLINK l _Toc343638103 1.1 、設計要求 PAGEREF _Toc343638103 h 4 HYPERLINK l _Toc343638104 1.2 、方案設計與論證 PAGEREF _Toc343638104 h 4 HYPERLINK l _Toc343638105 1.3 .整體系統(tǒng)設計 PAGEREF _Toc343638105 h 6 HYPERLINK l _Toc343638106 1.4 .硬件實現與單元電路設計 PAGEREF _Toc343638106 h 7 HYPERLINK l _Toc343638

3、107 1.5 、軟件設計流程 PAGEREF _Toc343638107 h 10 HYPERLINK l _Toc343638108 1.6 、源程序 PAGEREF _Toc343638108 h 11 HYPERLINK l _Toc343638109 2.測試輸出波形的類型和頻率 PAGEREF _Toc343638109 h 16 HYPERLINK l _Toc343638110 2.1 、測量儀器及測試說明 PAGEREF _Toc343638110 h 16 HYPERLINK l _Toc343638111 2.2 .測試過程 PAGEREF _Toc343638111 h

4、 16 HYPERLINK l _Toc343638112 2.3 .測試結果 PAGEREF _Toc343638112 h 18 HYPERLINK l _Toc343638113 3.設計思維和體驗 PAGEREF _Toc343638113 h 19 HYPERLINK l _Toc343638114 4.附錄 PAGEREF _Toc343638114 h 19 HYPERLINK l _Toc343638115 4.1參考文獻 PAGEREF _Toc343638115 h 19 HYPERLINK l _Toc343638116 4.2圖 PAGEREF _Toc34363811

5、6 h 19系統(tǒng)設計經過考慮,我們確定方案如下:使用AT89S52單片機通過編程方式產生鋸齒波、正弦波和矩形波三種波形,然后通過D/A轉換器DAC0832將數字信號轉換為模擬信號,濾波放大,最后使用示波器顯示,通過鍵盤控制三種波形的類型選擇和頻率變化,最終輸出顯示它們各自的類型和數值。1.1。設計要求1)、用單片機通過軟件設計方法產生三個波形2)、三種波形可以通過鍵盤選擇3)、波形頻率可調4)、要顯示的波形類型及其扁平率1.2 方案設計與論證1.2.1 信號發(fā)生電路方案演示方案一:通過單片機控制D/A,輸出三個波形。該方案輸出的波形不夠穩(wěn)定,抗干擾能力弱,不易調節(jié)。但該方案電路簡單,成本低。方

6、案二:使用傳統(tǒng)的鎖相頻率合成方法。通過芯片IC145152 ,由壓控振蕩器連接的鎖相環(huán)電路輸出穩(wěn)定性極好的正弦波,再經過零比較器轉換為方波,積分電路將其轉換為三角波海浪。該方案電路復雜,干擾因素多,不易實現。MAX038芯片組成的電路輸出波形。 MAX038是一款精密的高頻波形發(fā)生電路,可以產生精確的三角波、方波和正弦周期波形。但這種方案成本高,程序復雜度高。綜合考慮以上三個選項,選擇選項一。1.2.2 單片機選型演示方案一: AT89S52單片機是一款高性能8位單片機。它將計算機的中央處理器CPU 、存儲器、寄存器和I/O接口集成在一個集成電路芯片中,從而構成一臺比較完整的計算機,而且價格便

7、宜。方案二: C8051F005單片機是全集成的混合信號系統(tǒng)級芯片,單片機內核兼容8051,完全兼容MCS-51指令集。該芯片除了采用8052標準的數字外設部分外,還集成了模擬部分等數據采集和控制系統(tǒng)常用的數字外設和功能部分,執(zhí)行速度快。但它更貴綜合考慮以上兩個方案,選擇方案一1.2.3 展示方案演示方案一:使用LED數碼管。 LED數碼管由8個發(fā)光二極管組成,每個數碼管輪流顯示自己的字符。由于人眼的視覺暫留特性,當每個數碼管顯示的時間間隔小于1/16s時,人眼感覺不到閃爍,每個數碼管始終亮。用數碼管顯示編程比較容易,但需要更多的顯示容量,而且數碼管不能顯示字母。方案二:使用LCD液晶顯示器1

8、602 。功率小,效果明顯,顯示編程容易控制,可顯示字母。綜合考慮以上兩個方案,選擇方案二。1.2.4鍵盤方案的論證選項 1:矩陣鍵盤。矩陣鍵盤的關鍵點連接到由行和列母線組成的矩陣電路的交叉點。當鍵盤上沒有按鍵關閉時,所有行列線都斷開,行線為高電平。當一個鍵被關閉時,與該鍵對應的行和列線被短路。選項 2:編碼鍵盤。編碼鍵盤的按鍵連接到74LS148芯片。當鍵盤未關閉時,所有鍵都斷開連接。當一個鑰匙被關閉時,由74LS148輸出該鑰匙的對應代碼。綜合考慮以上兩個選項,選擇選項一。1.3整體系統(tǒng)設計系統(tǒng)采用單片機為數據處理與控制核心,完成人機界面、系統(tǒng)控制、信號采集與分析、信號處理與轉換。設計任務

9、分解為按鍵電路、液晶顯示電路等模塊。圖(1)為系統(tǒng)整體框圖圖(1)整體框圖1.4 硬件實現及單元電路設計1.4.1單片機最小系統(tǒng)的設計89C51是帶有ROM/EPROM的單片機,因此該芯片構成的最小系統(tǒng)簡單可靠。使用80C51單片機組成最小應用系統(tǒng)時,只需將單片機與時鐘電路和復位電路連接即可,如圖中的89C51單片機最小系統(tǒng)圖(2)。由于集成的限制,最小的應用系統(tǒng)只能作為一些小的控制單元。其應用特點:I/O端口。內部存儲器容量有限。應用系統(tǒng)開發(fā)比較特殊。圖(2) 8 9C 51 MCU 最小系統(tǒng)1.4.2 波形發(fā)生模塊設計三種波形由單片機采用編程方式產生,經DA轉換模塊DAC0832濾波放大后

10、輸出。其電路圖如下:圖(3)波形發(fā)生電路如上圖所示,單片機的P0口接DAC0832的8位數據輸入端,DAC0832的輸出端接放大器,放大后輸出需要的波形。 DAC0832以8位數據并行輸入,其結構圖如下:圖(4)DAC0832的部分結構1.4.3 顯示模組設計通過液晶1602顯示輸出波形和頻率,電路圖如下:圖(5)液晶顯示如上圖所示,1602的八位數據端接單片機的P1口,其三個使能端RS、RW、E分別接P3.2-P3。 4.單片機。軟件控制的液晶屏上可以顯示波形的類型和頻率。1.4.4 鍵盤顯示模塊設計系統(tǒng)采用獨立鍵盤,其連接電路圖如下:圖 (6) 鍵盤圖中從鍵盤的獨立鍵盤引出的八根線分別接單

11、片機的P2口,只用到了第四列,所以程序初始化時P2.7腳為低電平。如圖所示,開關3用于切換輸出波形,開關7和8用于調節(jié)頻率的加減。當按下開關 7 時,輸出波形的頻率增加,當按下開關 8 時,輸出波形的頻率降低。1.5 軟件設計過程本系統(tǒng)采用AT89S52單片機,采用編程方式產生三個波形,通過編程隨波形頻率的變化切換三個波形。具體功能是:(1)各波形的切換; (2)各種參數的設置; (3)頻率增減等。軟件調整好后,通過編程器下載到AT89S52芯片,然后插入系統(tǒng),獨立完成所有控制。軟件流程圖如下:圖(7)程序流程圖1.6 源程序#include #define uchar 無符號字符#defin

12、e uint 無符號整數sbit lcdrw=P33;sbit lcdrs=P32;sbit lcde=P34;位 d=P27;位 s1=P20;位 s2=P21;位 s3=P22;位 cs=P35;sbit wr=P36;uchar s1num,a,ys,j;單位免費;uchar 代碼 tosin256=0 x80,0 x83,0 x86,0 x89,0 x8d,0 x90,0 x93,0 x96,0 x99,0 x9c,0 x9f,0 xa2,0 xa5,0 xa8,0 xab,0 xae,0 xb1,0 xb4,0 xb7,0 xba,0 xbc,0 xbf,0 xc2,0 xc5,0

13、xc7,0 xca,0 xcc,0 xcf,0 xd1,0 xd4,0 xd6,0 xd8,0 xda,0 xdd,0 xdf,0 xe1,0 xe3,0 xe5,0 xe7,0 xe9,0 xea,0 xec,0 xee,0 xef,0 xf1,0 xf2,0 xf4,0 xf5,0 xf6,0 xf7,0 xf8,0 xf9,0 xfa,0 xfb,0 xfc,0 xfd,0 xfd,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xfe,0 xfd,0 xfd,0 xfc,0

14、xfb,0 xfa,0 xf9,0 xf8,0 xf7,0 xf6,0 xf5,0 xf4,0 xf2,0 xf1,0 xef,0 xee,0 xec,0 xea,0 xe9,0 xe7,0 xe5,0 xe3,0 xe1,0 xde,0 xdd,0 xda,0 xd8,0 xd6,0 xd4,0 xd1,0 xcf,0 xcc,0 xca,0 xc7,0 xc5,0 xc2,0 xbf,0 xbc,0 xba,0 xb7,0 xb4,0 xb1,0 xae,0 xab,0 xa8,0 xa5,0 xa2,0 x9f,0 x9c,0 x99,0 x96,0 x93,0 x90,0 x8d,0

15、x89,0 x86,0 x83,0 x80,0 x80,0 x7c,0 x79,0 x76,0 x72,0 x6f,0 x6c,0 x69,0 x66,0 x63,0 x60,0 x5d,0 x5a,0 x57,0 x55,0 x51,0 x4e, 0 x4c, 0 x48, 0 x45, 0 x43, 0 x40, 0 x3d, 0 x3a, 0 x38, 0 x35, 0 x33, 0 x30,0 x2e, 0 x2b, 0 x29, 0 x27, 0 x25, 0 x22, 0 x20, 0 x1e, 0 x1c, 0 x1a, 0 x18, 0 x16,0 x15,0 x13,0 x1

16、1,0 x10,0 x0e,0 x0d,0 x0b,0 x0a,0 x09,0 x08,0 x07,0 x06,0 x05,0 x04,0 x03,0 x02,0 x02,0 x01,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x01,0 x02,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x09,0 x0a,0 x0b,0 x0d,0 x0e,0 x10,0 x11,0 x13,0 x15,0 x16,0 x18,0 x1a,0 x1c,0 x1

17、e,0 x20,0 x22,0 x25,0 x27,0 x29,0 x2b,0 x2e,0 x30,0 x33,0 x35,0 x38,0 x3a,0 x3d,0 x40,0 x43,0 x45,0 x48,0 x4c,0 x4e,0 x51,0 x55,0 x57,0 x5a,0 x5d,0 x60,0 x63,0 x66,0 x69,0 x6c,0 x6f,0 x72,0 x76,0 x79,0 x7c,0 x80 ;/*正弦波碼*/void delay(uint z) /延遲子程序uchar i,j;對于(i=z;i0;i-)for(j=110;j0;j-);無效延遲1(uint y)u

18、int i;for(i=y;i0;i-);void write_(uchar ) /1602寫指令lcdrs=0;P1=;延遲(5);液晶顯示器=1;延遲(5);液晶顯示器=0;void write_data(uchar date) /1602數據液晶顯示器=1;P1=日期;延遲(5);液晶顯示器=1;延遲(5);液晶顯示器=0;void init() /初始化lcdrw=0;液晶顯示器=0;WR=0;cs=0;寫_(0 x38);寫_(0 x0c);寫_(0 x06);寫_(0 x01);write_(0 x80+0 x00);寫入數據(0 x77); /寫波:寫入數據(0 x61);寫入數

19、據(0 x76);寫入數據(0 x65);寫入數據(0 x3a);write_(0 x80+0 x40); /寫f:寫入數據(0 x66);寫入數據(0 x3a); void write_f(uint date) /寫頻率uchar 錢,白,石,格;錢=日期/1000;白=日期/100%10;時=日期/10%10;ge=日期%10;write_(0 x80+0 x42);write_data(0 x30+錢);write_data(0 x30+bai);write_data(0 x30+shi);write_data(0 x30+ge);寫入數據(0 x48);寫入數據(0 x5a);void

20、 xsf() /顯示頻率如果(s1num=1) fre=(1000/(9+3*ys);write_f(fre);如果(s1num=2)fre=(100000/(3*ys);write_f(fre);如果(s1num=3)fre=(1000/(15+3*ys);write_f(fre);無效的keyscanf()d=0;如果(s1=0)延遲(5);如果(s1=0) 而(!s1);s1num+;如果(s1num=1)ys=0;write_(0 x80+0 x05);寫入數據(0 x73); /寫正弦:寫入數據(0 x69);寫入數據(0 x6e);寫入數據(0 x65);寫入數據(0 x20);寫

21、入數據(0 x20); 如果(s1num=2)ys=10;write_(0 x80+0 x05);寫入數據(0 x73); /寫正方形寫入數據(0 x71);寫入數據(0 x75);寫入數據(0 x61);寫入數據(0 x72);寫入數據(0 x65); 如果(s1num=3) ys=0; write_(0 x80+0 x05); /火車寫入數據(0 x74);寫入數據(0 x72);寫入數據(0 x61);寫入數據(0 x69);寫入數據(0 x6e);寫入數據(0 x20);如果(s1num=4)s1num=0;P1=0; write_(0 x80+0 x05);寫入數據(0 x20);寫

22、入數據(0 x20);寫入數據(0 x20);寫入數據(0 x20);寫入數據(0 x20);寫入數據(0 x20); write_(0 x80+0 x42);寫入數據(0 x20);寫入數據(0 x20);寫入數據(0 x20);寫入數據(0 x20); 寫入數據(0 x20); 寫入數據(0 x20); 如果(s2=0)延遲(5);如果(s2=0)而(!s2);是的+;如果(s3=0)延遲(5);如果(s3=0)而(!s3);是的;無效的主要()在里面();而(1)keyscanf();if(s1num=1) /正弦波/ 對于(j=0;j255;j+)P0=tosinj;延遲1(ys);if(s1num=2) /方波/ P0=0 xff;延遲1(ys);P0=0;延遲1(ys);if(s1num=3) /三角波/ 如果(一128)P0=a;延遲1(ys); 別的P0=255-a;延遲1(ys); 一個+;如果(?。╯1&s2&s3)xsf();測試輸出波形的類型和頻率2. 1. 測量儀器和測試說明測量儀器:穩(wěn)壓電源、示波器、數字萬用表。測量說明:正弦波、矩形波和三角波信號的輸出通過獨立的鍵盤實現不同波形的輸

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論