基于MSP430G2553的簡(jiǎn)易信號(hào)發(fā)生器[17頁(yè)]_第1頁(yè)
基于MSP430G2553的簡(jiǎn)易信號(hào)發(fā)生器[17頁(yè)]_第2頁(yè)
基于MSP430G2553的簡(jiǎn)易信號(hào)發(fā)生器[17頁(yè)]_第3頁(yè)
基于MSP430G2553的簡(jiǎn)易信號(hào)發(fā)生器[17頁(yè)]_第4頁(yè)
基于MSP430G2553的簡(jiǎn)易信號(hào)發(fā)生器[17頁(yè)]_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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、基于MSP430G2553的簡(jiǎn)易信號(hào)發(fā)生器浙江工業(yè)大學(xué)摘要:本作品基于TI的LaunchPad設(shè)計(jì)了一款簡(jiǎn)易信號(hào)發(fā)生器,選用TI的MSP430G2553單片機(jī)。通過(guò)單片機(jī)加外圍LCD12864、DAC0832及TL082放大電路,實(shí)現(xiàn)了可產(chǎn)生正弦波、鋸齒波、三角波、方波的簡(jiǎn)易信號(hào)發(fā)生器,且頻率可調(diào)。關(guān)鍵詞:MSP430G2553 DAC0832 正弦波 鋸齒波 三角波一、作品基本功能介紹1技術(shù)參數(shù)請(qǐng)見(jiàn)表1.1所示。波形種類正弦波鋸齒波三角波方波頻率范圍(Hz)1001200頻率步進(jìn)(Hz)100最大幅值VP-P(V)04.7輸出阻抗()50其他功能頻率按鍵可調(diào)、輸出使能控制放大、LCD人機(jī)指示

2、表1.1 技術(shù)參數(shù)2 在信號(hào)產(chǎn)生和處理方面。通過(guò)MSP430G2553內(nèi)部的TA定時(shí)器,外加DAC0832產(chǎn)生四種波形,在DA輸出后,通過(guò)一個(gè)由運(yùn)算放大器TL082和精密可調(diào)電位器組成的運(yùn)算放大電路,以實(shí)現(xiàn)信號(hào)的增益控制。最后在負(fù)載電阻上輸出電壓。系統(tǒng)總體框圖如圖1.1所示。圖1.1 系統(tǒng)總體框圖3 人機(jī)交互方面。本作品使用三個(gè)獨(dú)立按鍵來(lái)控制菜單選項(xiàng),其功能如表1.2所示。正弦波鋸齒波三角波方波增頻減頻短按P2.2長(zhǎng)按P2.1長(zhǎng)按P2.0長(zhǎng)按P2.2短按P2.1短按P2.0長(zhǎng)按時(shí)間大于1s 短按時(shí)間大于10ms表1.2 按鍵功能說(shuō)明二、系統(tǒng)硬件和軟件說(shuō)明1 硬件構(gòu)成本作品使用LCD12864作

3、為人機(jī)交互模塊,由于MSP430G2553的I/O口很少,所以通過(guò)對(duì)LCD的進(jìn)行串行數(shù)據(jù)輸入,以節(jié)約I/O口。其連接如圖1.2所示。圖1.2 LCD12864硬件連接 由于是通過(guò)MSP430G2553輸出數(shù)字量的信號(hào)來(lái)產(chǎn)生波形,因此需要用到DA將數(shù)字量轉(zhuǎn)換為模擬量??紤]到單片機(jī)的I/O口數(shù)量,選用8位的DA來(lái)進(jìn)行數(shù)模轉(zhuǎn)換。硬件如圖1.3所示,DAC0832采用直通工作方式,節(jié)省I/O口控制引腳。圖1.3 DAC0832 直通方式硬件連接 由DAC輸出模擬量后,由于波形的幅值太小,因此還需要進(jìn)行幅值的放大。其中R3是精密可調(diào)電位器,方便用戶對(duì)信號(hào)的幅度進(jìn)行調(diào)節(jié)。50的電阻可以保證整個(gè)信號(hào)發(fā)生器的

4、輸出阻抗為50。信號(hào)幅度調(diào)節(jié)和輸出部分電路如圖1.4所示。圖1.4 幅值放大的硬件電路2 軟件系統(tǒng)整個(gè)系統(tǒng)的軟件主要有主函數(shù)、定時(shí)器TA中斷函數(shù)、按鍵中斷函數(shù)三個(gè)大的模塊組成。系統(tǒng)軟件框圖如圖1.5所示。圖1.5 系統(tǒng)軟件框圖各函數(shù)的作用和相互關(guān)系:在主函數(shù)中首先對(duì)系統(tǒng)的時(shí)鐘、I/O口、定時(shí)器TA進(jìn)行了初始化。初始化完畢,開啟總中斷。接著進(jìn)入while(1)循環(huán)等待定時(shí)器中斷子程序的執(zhí)行。按鍵中斷函數(shù)主要對(duì)三個(gè)菜單按鍵(P2.2、P2.1、P2.0)的動(dòng)作進(jìn)行處理。這三個(gè)菜單按鍵可以實(shí)現(xiàn)波形的切換,頻率的加減,信號(hào)的使能輸出。在按鍵中斷函數(shù)中修改的信號(hào)頻率大小和波形的種類這兩個(gè)參數(shù)會(huì)被主函數(shù)和

5、定時(shí)器TA中斷函數(shù)調(diào)用。定時(shí)器頻率計(jì)算原理。TA定時(shí)器設(shè)置為連續(xù)增計(jì)數(shù)模式,時(shí)鐘頻率fs采用SMCLK同步。若要產(chǎn)生X Hz的正弦波、鋸齒波、三角波和方波則有:TA0CCR0=在上式中,寄存器TA0CCR0是用以定時(shí)器TA的初始值。本作品采用的是200個(gè)采樣點(diǎn)。三、方案論證方案一:由MSP430G2553結(jié)合低通濾波器電路來(lái)模擬實(shí)現(xiàn)DDS芯片的功能,進(jìn)而產(chǎn)生各種波形。優(yōu)缺點(diǎn):利用此方案可以充分利用MSP430G2553上資源,使系統(tǒng)成本大大降低。但是此方案只能產(chǎn)生低頻率的波形,不適合此次參賽題目要求。方案二:控制部分由MSP430G2553實(shí)現(xiàn),波形產(chǎn)生部分使用FPGA或CPLD芯片采用波形查

6、找表結(jié)合高速的DAC產(chǎn)生。優(yōu)缺點(diǎn):此方案自由度大,符合現(xiàn)在的發(fā)展趨勢(shì)。但是,F(xiàn)PGA或CPLD芯片價(jià)格相對(duì)比較高,加上高速的DAC芯片,使設(shè)計(jì)成本大大提高。而且整個(gè)設(shè)計(jì)中MSP430G2553僅僅完成簡(jiǎn)單的控制功能,資源得不到充分的利用。方案三:由MSP430G2553實(shí)現(xiàn)對(duì)專門的DDS芯片(如AD9850、AD9833)的控制,來(lái)產(chǎn)生各種波形。優(yōu)缺點(diǎn):利用此方案產(chǎn)生波形的頻率穩(wěn)定度高,易于程控。但是,專門的DDS芯片價(jià)格高,系統(tǒng)成本高。方案四:控制部分由MSP430G2553實(shí)現(xiàn),波形通過(guò)代碼控制生成數(shù)字量信號(hào),再用D/A轉(zhuǎn)換器輸出正弦波、鋸齒波、三角波及方波,也可以實(shí)現(xiàn)頻率的數(shù)控調(diào)整。優(yōu)缺

7、點(diǎn):方法簡(jiǎn)單易行,采用單片專用芯片,系統(tǒng)體積大大減小??僧a(chǎn)生較高的頻率,容易調(diào)節(jié)頻率。但是,未能很好的利用MSP430G2553的內(nèi)部資源。綜上,方案四的系統(tǒng)成本低,性價(jià)比較高。方案的可行性也較高,外圍電路簡(jiǎn)單,能產(chǎn)生較高的頻率且可以滿足此次參賽要求。所以本作品最終采用方案四。四、程序流程圖1 主程序流程圖開機(jī)后,主程序首先關(guān)閉看門狗,接著對(duì)相應(yīng)的I/O口、系統(tǒng)時(shí)鐘、定時(shí)器TA進(jìn)行初始化,完成后開總中斷。然后,執(zhí)行main函數(shù)。主程序流程圖如圖1.6所示。圖1.6 主程序流程圖2 定時(shí)器中斷服務(wù)子程序流程圖定時(shí)器TA的中斷服務(wù)程序中主要處理判斷信號(hào)標(biāo)志位key的值,然后輸出相應(yīng)值的波形。定時(shí)器

8、中斷服務(wù)程序流程圖如圖1.7所示。3按鍵中斷服務(wù)程序流程圖 按鍵中斷服務(wù)程序中主要處理波形的選擇、頻率的加減、信號(hào)輸出使能等功能。按鍵中斷服務(wù)程序流程圖見(jiàn)圖1.8所示。圖1.7 定時(shí)器中斷服務(wù)子程序流程圖圖1.8 按鍵中斷服務(wù)子程序流程圖五、結(jié)論本文設(shè)計(jì)的信號(hào)發(fā)生器基本達(dá)到了比賽的要求,能夠?qū)崿F(xiàn)正確波形,能步進(jìn)100Hz調(diào)節(jié)輸出波形的頻率,輸出頻率也比較穩(wěn)定。但是由于DA存在點(diǎn)問(wèn)題(已被我焊壞),輸出的波形放大能力不高。還有待改進(jìn)。表1.3是主要的波形測(cè)試結(jié)果。TA0CCR0值793396264198158132理論波形頻率100Hz200 Hz300 Hz400 Hz500 Hz600 Hz

9、實(shí)測(cè)波形頻率99.982Hz200.013 Hz300.121 Hz399.802 Hz500.363 Hz599.002 HzTA0CCR0值1139988797266理論波形頻率700 Hz800 Hz900 Hz1000 Hz1100 Hz1200 Hz實(shí)測(cè)波形頻率699.235 Hz797.881 Hz896.212 Hz997.876 Hz1096.342 Hz1209.548 Hz表1.3 波形測(cè)試結(jié)果附上系統(tǒng)完整的電路原理圖如圖1.9所示。圖1.9 系統(tǒng)完整電路原理圖視頻地址鏈接:優(yōu)酷網(wǎng)絡(luò)。因才上傳到網(wǎng)絡(luò)服務(wù)器暫時(shí)無(wú)法獲取地址鏈接,下圖為證。已經(jīng)上傳浙江工業(yè)大學(xué)第一屆TI杯MSP

10、430大賽B組作品視頻展示楊洪的視頻。參考文獻(xiàn)1賈立新、王涌.電子系統(tǒng)設(shè)計(jì)與實(shí)踐.北京.清華大學(xué)出版社.20112張毅剛 彭喜元.單片機(jī)原理及接口技術(shù).人民郵電出版社.2011附錄:源程序代碼/MSP430G2553串口連接12864顯示,只用連接三個(gè)引腳,大大節(jié)省資源 P2.4-r/w P2.3-SCLK P2.5-CS 主頻在1Mhz下#include #include #define uint unsigned int#define uchar unsigned char#define ulong unsigned longunsigned char aa16=P2.2正弦波 長(zhǎng)按;un

11、signed char bb16=P2.1鋸齒波 長(zhǎng)按;unsigned char cc10=P2.0三角波;unsigned char dd16=P2.1加頻P2.0減頻;unsigned char numt113=193,196,164,198,158,132,113,99,88,79,72,66,61;unsigned char numt213=200,200,100,0,0,0,0,0,0,0,0,0,0;unsigned char numt313=200,0,0,0,0,0,0,0,0,0,0,0,0;unsigned char numt413=200,0,0,0,0,0,0,0,0

12、,0,0,0,0;unsigned char name136= 100Hz, 200Hz, 300Hz, 400Hz, 500Hz, 600Hz, 700Hz, 800Hz, 900Hz,1000Hz,1100Hz,1200Hz,1300Hz;#define SID BIT4#define SCLK BIT3#define CS BIT5#define LCDPORT P2OUT#define SID_1 LCDPORT |= SID#define SID_0 LCDPORT &= SID#define SCLK_1 LCDPORT |= SCLK#define SCLK_0 LCDPORT

13、&= SCLK#define CS_1 LCDPORT |= CS#define CS_0 LCDPORT &= CSuint key=0; /按下的按鍵編號(hào)uint i=0;uint k=0;uint j=0;uint tt=0;uint Tccr0=158;uint keynum=4;uint tcout=0;uint tcoutm=0;uint ttcout=0;/uint take=13;/延時(shí)程序#define CPU_F (double)16000000)#define delay_us(x) _delay_cycles(long)(CPU_F*(double)x/1000000.

14、0)#define delay_ms(x) _delay_cycles(long)(CPU_F*(double)x/1000.0)static unsigned char temp=0xaa; /定時(shí)器uchar sindata200= 127,131,135,139,143,147,151,155,159,162,166,170,174,177,181,185,188,192,195,198,202,205,208,211,214,217,220,222,225,227,230,232,234,236,238,240,242,244,245,246,248,249,250,251,252,2

15、52,253,253,254,254,254,254,254,253,253,252,252,251,250,249,248,246,245,244,242,240,238,236,234,232,230,227,225,222,220,217,214,211,208,205,202,198,195,192,188,185,181,177,174,170,166,162,159,155,151,147,143,139,135,131,127,123,119,115,111,107,103, 99, 95, 92, 88, 84, 80, 77, 73, 69, 66, 62, 59, 56,

16、52, 49, 46, 43, 40, 37, 34, 32, 29, 27, 24, 22, 20, 18, 16, 14, 12, 10, 9, 8, 6, 5, 4, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 8, 9, 10, 12, 14, 16, 18, 20, 22, 24, 27, 29, 32, 34, 37, 40, 43, 46, 49, 52, 56, 59, 62, 66, 69, 73, 77, 80, 84, 88, 92, 95, 99,103,107,111,115,119,123;/*名 稱:

17、LCD_Write_cmd()*功 能:寫一個(gè)命令到LCD12864*入口參數(shù):cmd:待寫入的命令,無(wú)符號(hào)字節(jié)形式*出口參數(shù):無(wú)*說(shuō) 明:寫入命令時(shí),RW=0,RS=0 擴(kuò)展成24位串行發(fā)送*格 式:11111 RW0 RS 0 xxxx0000 xxxx0000* |最高的字節(jié) |命令的bit74|命令的bit30|*/void write_cmd(uchar cmd) uchar i,high4bits,low4bits; ulong lcdcmd; high4bits = cmd & 0xf0; low4bits = cmd & 0x0f; lcdcmd=(ulong)0xf816)+

18、(ulong)high4bits8)+(ulong)low4bits4); CS_1; SCLK_0; for(i=0;i24;i+) SID_0; if(lcdcmd & 0x00800000) SID_1; lcdcmd =1; delay_ms(1); SCLK_1; delay_ms(1); SCLK_0; CS_0;/*名 稱:LCD_Write_Byte()*功 能:向LCD12864寫入一個(gè)字節(jié)數(shù)據(jù)*入口參數(shù):byte:待寫入的字符,無(wú)符號(hào)形式*出口參數(shù):無(wú)*范 例:LCD_Write_Byte(F) /寫入字符F*/void write_dat(uchar dat) uchar

19、 i,high4bits,low4bits; ulong lcddat; high4bits = dat & 0xf0; low4bits = dat & 0x0f; lcddat=(ulong)0xfa16)+(ulong)high4bits8)+(ulong)low4bits4); CS_1; SCLK_0; for(i=0;i24;i+) SID_0; if(lcddat & 0x00800000) SID_1; lcddat =1; delay_ms(1); SCLK_1; delay_ms(1); SCLK_0; CS_0;/*名 稱:LCD_pos()*功 能:設(shè)置液晶的顯示位置*

20、入口參數(shù):x:第幾行,14對(duì)應(yīng)第1行第4行* y:第幾列,015對(duì)應(yīng)第1列第16列*出口參數(shù):無(wú)*范 例:LCD_pos(2,3) /第二行,第四列*/void lcd_pos(uchar x,uchar y) uchar pos; switch(x) case 1:pos=0x80;break; case 2:pos=0x90;break; case 3:pos=0x88;break; case 4:pos=0x98;break; default:pos=0x80; pos += y; write_cmd(pos);/*/LCD12864初始化void LCD_init(void) writ

21、e_cmd(0x30); write_cmd(0x0C); write_cmd(0x01); write_cmd(0x02);void IO_init(void) P1DIR=0xff; P1REN=0x00; P1SEL=0X00; P1OUT=0x00; P2SEL&=(BIT4 + BIT3 + BIT5); P2DIR = BIT4 + BIT3 + BIT5;/* P2DIR|=BIT0; /DAC單緩沖模式 P2SEL&=BIT0; P2REN&=BIT0; P2OUT|=BIT0; /關(guān)閉dac輸入*/ P2DIR&=(BIT0+BIT1+BIT2); /輸入 P2REN|=BI

22、T0+BIT1+BIT2; /用于按鍵接地型 P2IE|=BIT0+BIT1+BIT2; /允許中斷 P2IES|=BIT0+BIT1+BIT2; /下升沿觸發(fā) P2IFG&=(BIT0+BIT1+BIT2); /消除中斷標(biāo)志void display(void) lcd_pos(1,0); for(i=0;i16;i+) write_dat(aai); lcd_pos(2,0); for(i=0;i16;i+) write_dat(bbi); lcd_pos(3,0); for(i=0;i10;i+) write_dat(cci); lcd_pos(4,0); for(i=0;i16;i+)

23、write_dat(ddi); void DCO_init(void) BCSCTL1 = CALBC1_16MHZ; /設(shè)定cpu時(shí)鐘DCO頻率為16MHz DCOCTL = CALDCO_16MHZ; / BCSCTL2|=SELM_1+DIVM_0; /SMCLK選擇16MHz,不分頻 / BCSCTL2&=SELS;void Timer_A0_init(void)TA0CTL|=TASSEL_2+MC_2;/TA時(shí)鐘源選擇SMCLK,連續(xù)增計(jì)數(shù)模式 TA0CCR0=158; TA0CCTL0|=CCIE;/打開 比較模塊0中斷 _EINT();/*/定時(shí)器中斷服務(wù)程序/*/#pragm

24、a vector =TIMER0_A0_VECTOR_interrupt void Timer_A0(void) /CCIFG中斷被響應(yīng)后,該標(biāo)志位自動(dòng)清零 if(key=222) if(j200) P1OUT=sindataj; /正弦波產(chǎn)生 j+; elsej=0; TA0CCR0 +=Tccr0; if(key=221) if(tcout200) P1OUT=tcout; /鋸齒波產(chǎn)生 tcout+; else tcout=0; TA0CCR0 +=Tccr0; if(key=220) if(ttcout=0) if(tcoutm0) P1OUT=tcoutm; /三角波產(chǎn)生下降段 tc

25、outm-; else ttcout=0; TA0CCR0 +=(Tccr0-1); /*/#pragma vector=PORT2_VECTOR_interrupt void Port2(void) _DINT(); /關(guān)中斷 delay_ms(10); /延遲5ms,消抖 延遲5ms 10ms都行 if(P2IN&BIT2)=0) /如果為低,即按鍵真的按下了 因?yàn)槭窍陆笛赜|發(fā)中斷,所以要檢測(cè)是否為低 (P2IN&BIT2)=0 /正弦波 key=222; tt=1; LCD_init(); lcd_pos(1,0); for(i=4;i10;i+) write_dat(aai); lcd_pos(3,0); for(k=0;k6;k+) write_dat(namekeynumk); if(P2IN&BIT1)=0) delay_ms(1000); if

溫馨提示

  • 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)論