基于MSP簡易信號生成器_第1頁
基于MSP簡易信號生成器_第2頁
基于MSP簡易信號生成器_第3頁
基于MSP簡易信號生成器_第4頁
基于MSP簡易信號生成器_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、綜合應(yīng)用實驗設(shè)計報告基于MSP430G2553的簡易信號發(fā)生器 姓名: 李海 學號: 01123012 姓名: 姚堯 學號: 01123041 姓名: 田鶴 學號: 01123050 2015 年 12 月 08 日 基于MSP430G2553的簡易信號發(fā)生器摘 要 本作品設(shè)計了一款簡易信號發(fā)生器,選用TI的MSP430G2553單片機。通過單片機加外圍LCD12864、DAC0832及TL082放大電路,實現(xiàn)了可產(chǎn)生正弦波、鋸齒波、三角波、方波的簡易信號發(fā)生器,且頻率可調(diào)。關(guān)鍵詞: 單片機 Flash存儲器 在線編程 串行接口序言 信號發(fā)生器是很多行業(yè)進行研究測試不可或缺的工具。它既可以構(gòu)成

2、獨立的信號源,也可以是高性能網(wǎng)絡(luò)分析儀、頻譜儀及其它自動測試設(shè)備的組成部分。信號發(fā)生器的關(guān)鍵技術(shù)是多種高性能儀器的支撐技術(shù),因為它能夠提供高質(zhì)量的精密信號源及掃頻源,可使相應(yīng)系統(tǒng)的檢測過程大大簡化,降低檢測費用并極大地提高檢測精度。各種類型的信號發(fā)生器各有各的優(yōu)缺點,但是相信信號發(fā)生器的總的趨勢將向著寬頻率覆蓋、高頻率精度、多功能、多用途、自動化和智能化方向發(fā)展。1 項目的目的與意義 TI的MSP430G2系列Launchpad開發(fā)板是一款適用于TI 最新MSP430G2xx 系列產(chǎn)品的完整開發(fā)解決方案。其基于USB 的集成型仿真器可提供為全系列MSP430G2x

3、x 器件開發(fā)應(yīng)用所必需的所有軟、硬件。LaunchPad 具有集成的DIP目標插座,可支持多達20 個引腳,從而使MSP430 Value Line器件能夠簡便地插入LaunchPad電路板中。此外,其還可提供板上Flash 仿真工具,以直接連接至PC 輕松進行編程、調(diào)試和評估。 本作品基于TI的LaunchPad設(shè)計了一款簡易信號發(fā)生器,選用TI的MSP430G2553單片機。通過單片機加外圍LCD12864、DAC0832及TL082放大電路,實現(xiàn)了可產(chǎn)生正弦波、鋸齒波、三角波、方波的簡易信號發(fā)生器,且頻率可調(diào)。二設(shè)計要

4、求和指標本次實驗?zāi)康氖窃O(shè)計一款簡易信號發(fā)生器,通過MSP430單片機加外圍LCD12864、DAC0832及TL082放大電路,實現(xiàn)了可產(chǎn)生正弦波、鋸齒波、三角波、方波的簡易信號發(fā)生器,且頻率可調(diào)。具體技術(shù)參數(shù)如下表:波形種類正弦波鋸齒波三角波方波頻率范圍(Hz)1001200頻率步進(Hz)100最大幅值VP-P(V)04.7輸出阻抗()50其他功能頻率按鍵可調(diào)、輸出使能控制放大、LCD人機指示三方案設(shè)計和論證方案一:由MSP430G2553結(jié)合低通濾波器電路來模擬實現(xiàn)DDS芯片的功能,進而產(chǎn)生各種波形。優(yōu)缺點:利用此方案可以充分利用MSP430G2553上資源,使系統(tǒng)成本大大降低。但是此方

5、案只能產(chǎn)生低頻率的波形,不適合此次參賽題目要求。方案二:控制部分由MSP430G2553實現(xiàn),波形產(chǎn)生部分使用FPGA或CPLD芯片采用波形查找表結(jié)合高速的DAC產(chǎn)生。優(yōu)缺點:此方案自由度大,符合現(xiàn)在的發(fā)展趨勢。但是,F(xiàn)PGA或CPLD芯片價格相對比較高,加上高速的DAC芯片,使設(shè)計成本大大提高。而且整個設(shè)計中MSP430G2553僅僅完成簡單的控制功能,資源得不到充分的利用。方案三:由MSP430G2553實現(xiàn)對專門的DDS芯片(如AD9850、AD9833)的控制,來產(chǎn)生各種波形。優(yōu)缺點:利用此方案產(chǎn)生波形的頻率穩(wěn)定度高,易于程控。但是,專門的DDS芯片價格高,系統(tǒng)成本高。方案四:控制部分

6、由MSP430G2553實現(xiàn),波形通過代碼控制生成數(shù)字量信號,再用D/A轉(zhuǎn)換器輸出正弦波、鋸齒波、三角波及方波,也可以實現(xiàn)頻率的數(shù)控調(diào)整。優(yōu)缺點:方法簡單易行,采用單片專用芯片,系統(tǒng)體積大大減小??僧a(chǎn)生較高的頻率,容易調(diào)節(jié)頻率。但是,未能很好的利用MSP430G2553的內(nèi)部資源。 綜上,方案四的系統(tǒng)成本低,性價比較高。方案的可行性也較高,外圍電路簡單,能產(chǎn)生較高的頻率且可以滿足此次參賽要求。所以本作品最終采用方案四。四電路原理設(shè)計1、作品功能設(shè)計:(1)在信號產(chǎn)生和處理方面。通過MSP430G2553內(nèi)部的TA定時器,外加DAC0832產(chǎn)生四種波形,在DA輸出后,通過一個由運算放大器TL08

7、2和精密可調(diào)電位器組成的運算放大電路,以實現(xiàn)信號的增益控制。最后在負載電阻上輸出電壓。系統(tǒng)總體框圖如圖1.1所示。圖1.1 系統(tǒng)總體框圖(2)人機交互方面。本作品使用三個獨立按鍵來控制菜單選項,其功能如表1.2所示。正弦波鋸齒波三角波方波增頻減頻短按P2.2長按P2.1長按P2.0長按P2.2短按P2.1短按P2.0長按時間大于1s 短按時間大于10ms表1.2 按鍵功能說明2、系統(tǒng)硬件和軟件說明:(1)硬件構(gòu)成本作品使用LCD12864作為人機交互模塊,由于MSP430G2553的I/O口很少,所以通過對LCD的進行串行數(shù)據(jù)輸入,以節(jié)約I/O口。其連接如圖1.2所示。圖1.2 LCD1286

8、4硬件連接 由于是通過MSP430G2553輸出數(shù)字量的信號來產(chǎn)生波形,因此需要用到DA將數(shù)字量轉(zhuǎn)換為模擬量??紤]到單片機的I/O口數(shù)量,選用8位的DA來進行數(shù)模轉(zhuǎn)換。硬件如圖1.3所示,DAC0832采用直通工作方式,節(jié)省I/O口控制引腳。圖1.3 DAC0832 直通方式硬件連接 由DAC輸出模擬量后,由于波形的幅值太小,因此還需要進行幅值的放大。其中R3是精密可調(diào)電位器,方便用戶對信號的幅度進行調(diào)節(jié)。50的電阻可以保證整個信號發(fā)生器的輸出阻抗為50。信號幅度調(diào)節(jié)和輸出部分電路如圖1.4所示。圖1.4 幅值放大的硬件電路(2)軟件系統(tǒng)整個系統(tǒng)的軟件主要有主函數(shù)、定時器TA中斷函數(shù)、按鍵中斷

9、函數(shù)三個大的模塊組成。系統(tǒng)軟件框圖如圖1.5所示。圖1.5 系統(tǒng)軟件框圖各函數(shù)的作用和相互關(guān)系:在主函數(shù)中首先對系統(tǒng)的時鐘、I/O口、定時器TA進行了初始化。初始化完畢,開啟總中斷。接著進入while(1)循環(huán)等待定時器中斷子程序的執(zhí)行。按鍵中斷函數(shù)主要對三個菜單按鍵(P2.2、P2.1、P2.0)的動作進行處理。這三個菜單按鍵可以實現(xiàn)波形的切換,頻率的加減,信號的使能輸出。在按鍵中斷函數(shù)中修改的信號頻率大小和波形的種類這兩個參數(shù)會被主函數(shù)和定時器TA中斷函數(shù)調(diào)用。定時器頻率計算原理。TA定時器設(shè)置為連續(xù)增計數(shù)模式,時鐘頻率fs采用SMCLK同步。若要產(chǎn)生X Hz的正弦波、鋸齒波、三角波和方波

10、則有:TA0CCR0=在上式中,寄存器TA0CCR0是用以定時器TA的初始值。本作品采用的是200個采樣點。3、程序流程圖(1) 主程序流程圖開機后,主程序首先關(guān)閉看門狗,接著對相應(yīng)的I/O口、系統(tǒng)時鐘、定時器TA進行初始化,完成后開總中斷。然后,執(zhí)行main函數(shù)。主程序流程圖如圖1.6所示。圖1.6 主程序流程圖(2)定時器中斷服務(wù)子程序流程圖定時器TA的中斷服務(wù)程序中主要處理判斷信號標志位key的值,然后輸出相應(yīng)值的波形。定時器中斷服務(wù)程序流程圖如圖1.7所示。3按鍵中斷服務(wù)程序流程圖 按鍵中斷服務(wù)程序中主要處理波形的選擇、頻率的加減、信號輸出使能等功能。按鍵中斷服務(wù)程序流程圖見圖1.8所

11、示。圖1.7 定時器中斷服務(wù)子程序流程圖圖1.8 按鍵中斷服務(wù)子程序流程圖五、硬件設(shè)計與調(diào)試這次課程設(shè)計我組的設(shè)計目標是信號發(fā)生器的設(shè)計,我們采用msp430g2553單片機和DAC0832芯片以及放大器完成電路的設(shè)計,用開關(guān)來控制各種波形的發(fā)生及轉(zhuǎn)換,用單片機輸出后,經(jīng)過模數(shù)轉(zhuǎn)換器生成波形,最終可以通過示波器觀察。在這次課程設(shè)計中利用單片機做出低頻信號發(fā)生器。在做的過程中,我們都沒有豐富的單片機知識,在老師和同學的幫助下,對單片機的認識有了進一步的認識和使用。在學習單片機的時候,首先要理解清楚其工作原理和工作時序,那樣的話才能對所要求電路進行編程。還有就是在做設(shè)計的時候要認真一點,那點錯了要

12、換個思維方式在做,找到錯誤的知識點,在看書或者問老師來解決。而在軟件設(shè)計過程中,主要運用的是c語言來進行編程,這讓我更深入的了解了波形是如何編程的,也讓我對IAR軟件有了更深入的了解。通過這次的綜合應(yīng)用開發(fā)實驗,我們對微機和單片機的一些芯片有了一定的了解,讓我們又一次溫習了大學學習的微機原理和匯編語言等知識,也讓我的動手能力有了很大的提高。在設(shè)計電路的時候都是學習網(wǎng)上的例子,此次的大作業(yè)也同平時實驗一般照著教程學習操作就可以了。與課堂不一樣的是通過自己的動手學習,也獲得了更多的知識。在這個過程中學習到在安裝調(diào)試的過程中,應(yīng)該按照模塊的先后順序逐個調(diào)試。確保整個系統(tǒng)安裝完成后,各個模塊工作正常,

13、整個系統(tǒng)板可以正常工作。避免沒有調(diào)試各個模塊的情況下,直接安裝完整個系統(tǒng),而系統(tǒng)不能正常工作,卻不知道是哪個模塊出現(xiàn)了故障。六、測試結(jié)果本文設(shè)計的信號發(fā)生器基本達到了設(shè)想的要求,能夠?qū)崿F(xiàn)正確波形,能步進100Hz調(diào)節(jié)輸出波形的頻率,輸出頻率也比較穩(wěn)定。表1.3是主要的波形測試結(jié)果。TA0CCR0值793396264198158132理論波形頻率100Hz200 Hz300 Hz400 Hz500 Hz600 Hz實測波形頻率99.982Hz200.013 Hz300.121 Hz399.802 Hz500.363 Hz599.002 HzTA0CCR0值1139988797266理論波形頻率7

14、00 Hz800 Hz900 Hz1000 Hz1100 Hz1200 Hz實測波形頻率699.235 Hz797.881 Hz896.212 Hz997.876 Hz1096.342 Hz1209.548 Hz附上系統(tǒng)完整的電路原理圖 參考文獻:1賈立新、王涌.電子系統(tǒng)設(shè)計與實踐.北京.清華大學出版社.20112張毅剛 彭喜元.單片機原理及接口技術(shù).人民郵電出版社.2011附錄:源程序代碼下#include <msp430g2553.h>#include <in430.h>#define uint unsigned int#define uchar unsigned

15、char#define ulong unsigned longunsigned char aa16="P2.2正弦波 長按"unsigned char bb16="P2.1鋸齒波 長按"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,

16、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,0,0,0,0;unsigned char name136=" 100Hz"," 200Hz"," 300Hz"," 400Hz"," 500Hz"," 600Hz"," 700Hz"," 800Hz"," 900

17、Hz","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 &= SCLK#define CS_1 LCDPORT |=

18、 CS#define CS_0 LCDPORT &= CSuint key=0; /按下的按鍵編號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;/延時程序#define CPU_F (double)16000000)#define delay_us(x) _delay_cycles(long)(CPU_F*(double)x/1000000.0)#define delay_ms(x) _del

19、ay_cycles(long)(CPU_F*(double)x/1000.0)static unsigned char temp=0xaa; /定時器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,252,253,253,254,254,254,254

20、,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, 52, 49, 46, 43, 40, 37, 34

21、, 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;void write_cmd(uchar cmd) uchar

22、i,high4bits,low4bits; ulong lcdcmd; high4bits = cmd & 0xf0; low4bits = cmd & 0x0f; lcdcmd=(ulong)0xf8<<16)+(ulong)high4bits<<8)+(ulong)low4bits<<4); CS_1; SCLK_0; for(i=0;i<24;i+) SID_0; if(lcdcmd & 0x00800000) SID_1; lcdcmd <<=1; delay_ms(1); SCLK_1; delay_ms(

23、1); SCLK_0; CS_0;void write_dat(uchar dat) uchar i,high4bits,low4bits; ulong lcddat; high4bits = dat & 0xf0; low4bits = dat & 0x0f; lcddat=(ulong)0xfa<<16)+(ulong)high4bits<<8)+(ulong)low4bits<<4); CS_1; SCLK_0; for(i=0;i<24;i+) SID_0; if(lcddat & 0x00800000) SID_1;

24、lcddat <<=1; delay_ms(1); SCLK_1; delay_ms(1); SCLK_0; CS_0;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);void LCD_init(void) write_cmd(0x30); write_cmd(0

25、x0C); 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|=BIT0+BIT1+

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

27、i<16;i+) write_dat(ddi); void DCO_init(void) BCSCTL1 = CALBC1_16MHZ; /設(shè)定cpu時鐘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時鐘源選擇SMCLK,連續(xù)增計數(shù)模式 TA0CCR0=158; TA0CCTL0|=CCIE;/打開 比較模塊0中斷 _EINT();/*/定時

28、器中斷服務(wù)程序/*/#pragma vector =TIMER0_A0_VECTOR_interrupt void Timer_A0(void) /CCIFG中斷被響應(yīng)后,該標志位自動清零 if(key=222) if(j<200) P1OUT=sindataj; /正弦波產(chǎn)生 j+; elsej=0; TA0CCR0 +=Tccr0; if(key=221) if(tcout<200) P1OUT=tcout; /鋸齒波產(chǎn)生 tcout+; else tcout=0; TA0CCR0 +=Tccr0; if(key=220) if(ttcout=0) if(tcoutm<1

29、00) P1OUT=tcoutm; /三角波產(chǎn)生上升段 tcoutm+; else ttcout=1; TA0CCR0 +=(Tccr0-1); if(ttcout=1) if(tcoutm>0) P1OUT=tcoutm; /三角波產(chǎn)生下降段 tcoutm-; 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) /如果為低,即按鍵真的按下了 因為是下降沿觸發(fā)中斷,所以要檢測是否為低 (P2IN&BIT2)=0 /正弦波 key=222; tt=1; LCD_init(); lcd_pos(1,0); for(i=4;i<10;i+) write_dat(aai); lcd_pos(3,0); for(k=0;k<6;k+) write_dat(namekeynu

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論