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

下載本文檔

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

文檔簡(jiǎn)介

1、信息科學(xué)與技術(shù)學(xué)院?jiǎn)纹瑱C(jī)原理課程設(shè)計(jì)報(bào)告 題目名稱: 波形發(fā)生器 1 學(xué)生姓名: 1學(xué) 號(hào): 1專業(yè)、年級(jí): 電信08級(jí) 1指導(dǎo)教師: 啊 時(shí) 間 :二一年七月十日去 目錄1設(shè)計(jì)任務(wù)和技術(shù)要求:11.輸出頻率擴(kuò)展至10 0Hz200kHz;12方案選擇:1方案一1方案二:2方案三:23硬件原理電路圖的設(shè)計(jì)及分析:21基本原理24程序設(shè)計(jì)與分析:31正弦波生成32三角波的生成:45系統(tǒng)評(píng)價(jià):41開(kāi)始運(yùn)行程序時(shí)的時(shí)候5按一下select52第二次按select63第三次按:select76實(shí)驗(yàn)心得7附錄一:總體電路圖8附錄二:源代碼91設(shè)計(jì)任務(wù)和技術(shù)要求:1. 具有產(chǎn)生正弦波、三角波和方波三種周期

2、性波形的功能;2. 通過(guò)鍵盤(pán)選擇輸出信號(hào)類型,幅值、周期等相關(guān)指標(biāo);3. 輸出波形的頻率為100Hz20kHz;4. 具有顯示輸出波形的類型、頻率和幅度的功能。擴(kuò)展功能:1. 輸出頻率擴(kuò)展至100Hz200kHz;2. 鍵盤(pán)控制產(chǎn)生任意波形;2方案選擇:方案一:采用函數(shù)信號(hào)發(fā)生器ICL8038集成模擬芯片,(如圖2-1)它是一種可以同時(shí)產(chǎn)生方波、三角波、正弦波的專用集成電路。但是這種模塊產(chǎn)生的波形都不是純凈的波形,會(huì)寄生一些高次諧波分量,采用其他的措施雖可濾除一些,但不能完全濾除掉。方案一方框圖D/A鍵 盤(pán)單片機(jī)ICL8038運(yùn)算電路顯 示D/A輸出 方案二:采用分立元件實(shí)現(xiàn)非穩(wěn)態(tài)的多諧振振蕩

3、器,然后根據(jù)需要加入積分電路等構(gòu)成正弦、矩形、三角等波形發(fā)生器。這種信號(hào)發(fā)生器輸出頻率范圍窄,而且電路參數(shù)設(shè)定較繁瑣,其頻率大小的測(cè)量往往需要通過(guò)硬件電路的切換來(lái)實(shí)現(xiàn),操作不方便。方案三:采用單片機(jī)和DAC0832數(shù)模轉(zhuǎn)換器生成波形,由于是軟件濾波,所以不會(huì)有寄生的高次諧波分量,生成的波形比較純凈。它的特點(diǎn)是價(jià)格低、性能高,在低頻范圍內(nèi)穩(wěn)定性好、操作方便、體積小、耗電少。經(jīng)比較,方案三既可滿足畢業(yè)設(shè)計(jì)的基本要求又能充分發(fā)揮其優(yōu)勢(shì),電路簡(jiǎn)單,易控制,性價(jià)比較高,所以采用該方案單片機(jī)選擇:AT89C52單片機(jī)是一種高性能8位單片微型計(jì)算機(jī)。它把構(gòu)成計(jì)算機(jī)的中央處理器CPU、存儲(chǔ)器、寄存器、I/O接

4、口制作在一塊集成電路芯片中,從而構(gòu)成較為完整的計(jì)算機(jī)。3硬件原理電路圖的設(shè)計(jì)及分析:1基本原理波形指示單片機(jī)按鍵輸出基準(zhǔn)電源數(shù)模轉(zhuǎn)換電流/電壓轉(zhuǎn)換電源低頻信號(hào)發(fā)生器系統(tǒng)主要由單片機(jī)、D/A轉(zhuǎn)換電路、基準(zhǔn)電壓電路、電流/電壓轉(zhuǎn)換電路、按鍵和波形指示電路、電源等電路組成。其工作原理為當(dāng)分別按下四個(gè)按鍵中的任第一個(gè)按鍵就會(huì)分別出現(xiàn)方波、鋸齒波、三角波、正弦波,按第二個(gè)鍵可以增加頻率,第三個(gè)鍵會(huì)減小頻率。按最后一個(gè)顯示電壓值。4程序設(shè)計(jì)與分析:1正弦波生成uchar code sine_tab256=/輸出電壓從0到最大值(正弦波1/4部分)0x80,0x83,0x86,0x89,0x8d,0x90,

5、0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,/輸出電壓從最大值到

6、0(正弦波1/4部分)0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x9

7、3,0x90,0x8d,0x89,0x86,0x83,0x80,/輸出電壓從0到最小值(正弦波1/4部分)0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0

8、x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,/輸出電壓從最小值到0(正弦波1/4部分)0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3

9、a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80;三角波的生成:uchar code triangle_tab= /每隔數(shù)字8,采取一次0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8

10、,0xe0,0xe8,0xf0,0xf8,0xff,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00;方波輸出:void square_out() /方波輸出 judge=judge; if(judge=1) DAdata=0xff;else DAdata=0x00;DA_S1=0; /打開(kāi)8位輸入寄存器DA_S1=1; /關(guān)閉

11、8位輸入寄存器5系統(tǒng)評(píng)價(jià):基本功能可以實(shí)現(xiàn)但是還是有一些沒(méi)有做好,調(diào)頻范圍有些小,還有一些方面不足。沒(méi)有在試驗(yàn)箱上實(shí)現(xiàn)。其他功能基本實(shí)現(xiàn)。1開(kāi)始運(yùn)行程序時(shí)的時(shí)候按一下select 2第二次按select 3第三次按:select 6實(shí)驗(yàn)心得通過(guò)這次畢業(yè)設(shè)計(jì),使我深刻地認(rèn)識(shí)到學(xué)好專業(yè)知識(shí)的重要性,也理解了理論聯(lián)系實(shí)際的含義,并且檢驗(yàn)了大學(xué)三年的學(xué)習(xí)成果,進(jìn)一步加深了我對(duì)專業(yè)知識(shí)的了解和認(rèn)識(shí)以及動(dòng)手的能力。雖然在這次設(shè)計(jì)中對(duì)于所學(xué)知識(shí)的運(yùn)用和銜接還不夠熟練,作品完成的還不是很出色。但是我將在以后的工作和學(xué)習(xí)中繼續(xù)努力、不斷完善。這個(gè)設(shè)計(jì)是對(duì)我們過(guò)去所學(xué)知識(shí)的系統(tǒng)提高和擴(kuò)充的過(guò)程,為今后的發(fā)展打下了

12、良好的基礎(chǔ)附錄一:總體電路圖附錄二:源代碼#include<reg52.h>#define uchar unsigned char#define uint unsigned int/#define Fosc 24000000/12000000 /12分頻后的頻率#define DAdata P0/DA數(shù)據(jù)端口sbit DA_S1= P20; / 控制DAC0832的8位輸入寄存器,僅當(dāng)都為0時(shí),可以輸出數(shù)據(jù)(處于直通狀態(tài)),否則,輸出將被鎖存sbit DA_S2= P21; / 控制DAC0832的8位DAC寄存器,僅當(dāng)都為0時(shí),可以輸出數(shù)據(jù)(處于直通狀態(tài)),否則,輸出將被鎖存sb

13、it key= P32;uchar wavecount; /'抽點(diǎn)'計(jì)數(shù)uchar THtemp,TLtemp;/傳遞頻率的中間變量/uint T_temp;uchar judge=1; /在方波輸出函數(shù)中用于簡(jiǎn)單判別作用uchar waveform; /當(dāng)其為0、1、2時(shí),分別代表三種波uchar code freq_unit3=10,50,200; /三種波的頻率單位uchar idata wavefreq3=1,1,1; /給每種波定義一個(gè)數(shù)組單元,用于存放單位頻率的個(gè)數(shù)uchar code lcd_hang1="Sine Wave " "T

14、riangle Wave " "Square Wave " "Select Wave: " "press No.1 key! "uchar idata lcd_hang216="f= Hz "/*uchar code wave_freq_adjust= /頻率調(diào)整中間值 0xff,0xb8,0x76,0x56,0x43,0x37,0x2e,0x26,0x20,0x1c, /正弦波頻率調(diào)整中間值0xff,0x8e,0x5a,0x41,0x32,0x28,0x20,0x1b,0x17,0x0e,/三角波頻率調(diào)

15、整中間值0xff,0x8e,0x5a,0x41,0x32,0x28,0x20,0x1b,0x17,0x0e; uint code wave_freq_adjust= /頻率調(diào)整中間值 380,184,118,86,67,55,46,28,38,32,295,142, 90,65,50,40,32,27,23,14,295,142, 90,65,50,40,32,27,23,14; */*uchar code waveTH= 0xfc,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfe,0xfe,0xff,0xff,0xff,0xff,0

16、xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff;uchar code waveTL= 0xf2,0x78,0xfb,0x3c,0x63,0x7d,0x8f,0x9d,0xa8,0xb1,0x17,0x0b,0xb2,0x05,0x37,0x58,0x70,0x82,0x90,0x9b, 0x4d,0xa7,0xc4,0xd3,0xdc,0xe2,0xe6,0xea,0xec,0xee;*/*這兩組數(shù)組很重要,需要根據(jù)波形來(lái)調(diào)試,選擇合適的值,使輸出波形達(dá)到頻率要求*/uchar code waveTH= 0xfd,

17、0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe;uchar code waveTL= 0x06,0x8a,0x10,0x4e,0x78,0x93,0xa8,0xb3,0xbe,0xc6, /正弦波頻率調(diào)整中間值0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde,/三角波頻率調(diào)整中間值0x88,0x50,0x9

18、0,0x32,0x34,0xbe,0x4a,0xa3,0xe5,0x2c; /*/uchar code triangle_tab= /每隔數(shù)字8,采取一次0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa

19、0,0x98,0x90,0x88,0x80,0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00;uchar code sine_tab256=/輸出電壓從0到最大值(正弦波1/4部分)0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6

20、,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,/輸出電壓從最大值到0(正弦波1/4部分)0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xe

21、c,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,/輸出電壓從0到最小值(正弦波1/4部分)0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0

22、x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,/輸出電壓從最小值到0(正弦波1/4部分)0x00,0x00,0x00,0x00,0x00,0x00

23、,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80; void

24、delay(uchar z) uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void triangle_out()/三角波輸出 DAdata=triangle_tabwavecount+;if(wavecount>64) wavecount=0;DA_S1=0; /打開(kāi)8位輸入寄存器DA_S1=1; /關(guān)閉8位輸入寄存器void sine_out() /正弦波輸出 DAdata=sine_tabwavecount+;DA_S1=0; /打開(kāi)8位輸入寄存器DA_S1=1; /關(guān)閉8位輸入寄存器void square_out() /方波輸出

25、judge=judge; if(judge=1) DAdata=0xff;else DAdata=0x00;DA_S1=0; /打開(kāi)8位輸入寄存器DA_S1=1; /關(guān)閉8位輸入寄存器/*1602液晶的相關(guān)函數(shù)*/#define lcd_ports P1sbit rs=P22;sbit rw=P23;sbit lcden=P24;void write_com(uchar com)rs=0;/置零,表示寫(xiě)指令lcden=0;lcd_ports=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)rs=1;/置1,表示寫(xiě)

26、數(shù)據(jù)(在指令所指的地方寫(xiě)數(shù)據(jù))lcden=0;lcd_ports=date;delay(5);lcden=1;delay(5);lcden=0;void disp_lcd(uchar addr,uchar *temp1)uchar num;write_com(addr);delay(1); /延時(shí)一會(huì)兒?for(num=0;num<16;num+)write_date(temp1num);/或者這樣寫(xiě)write_date(*(temp1+num);delay(1);void init_lcd()/uchar num;lcden=0; /可有可無(wú)?rw=0; /初始化一定要設(shè)置為零,表示寫(xiě)

27、數(shù)據(jù)write_com(0x38); /使液晶顯示點(diǎn)陣,為下面做準(zhǔn)備write_com(0x0c); /初始設(shè)置write_com(0x06); /初始設(shè)置write_com(0x01); /清零write_com(0x80); /使指針指向第一行第一格 disp_lcd(0x80,&lcd_hang13*16); /在第一行顯示 disp_lcd(0xc0,&lcd_hang14*16); /在第二行顯示/*for(num=0;num<16;num+)write_date(tablenum);delay(5);write_com(0x80+0x40); /給指針重新賦值

28、,使之指向第二行第一格for(num=0;num<16;num+)write_date(table1num);delay(5); */*TMOD=0x01; /選用定時(shí)方式1TH0=(65536-50000)/256; /賦初值TL0=(65536-50000)%256;/EA=1;/開(kāi)總中斷ET0=1; /開(kāi)定時(shí)器中斷TR0=1; /啟動(dòng)定時(shí)器*/*1602液晶函數(shù)聲明結(jié)束*/void main() uchar i=0;DA_S2=0; /使DAC寄存器處于直通狀態(tài)DAdata=0;DA_S1=1; /關(guān)閉8位輸入寄存器init_lcd(); waveform=0;TMOD=0x01;

29、 /設(shè)置定時(shí)器0為16位工作方式IT0=1; /設(shè)置外部中斷0為下降沿觸發(fā)ET0=1; /開(kāi)定時(shí)器中斷EX0=1; EA=1;while(1)/DAout(0xff); /可輸出TTL波形/DAout(0x80);/T_temp=32; void timer0() interrupt 1TH0=THtemp;TL0=TLtemp;if(waveform=0) sine_out();else if(waveform=1) triangle_out();else if(waveform=2) square_out();void key_int0() interrupt 0 uchar keytemp;uint total_freq; /總頻率EA=0; TR0=0; /關(guān)總中斷與定時(shí)器delay(5); /延時(shí)夠嗎?if(key=0) /確實(shí)有按鍵按下而引發(fā)中斷keytemp=P3&0xf0; /獲取P3口高四位的值switch(keytemp) case 0xe0:/選擇波形 waveform+; if(waveform>2) waveform=0; break; case 0x

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論