基于msp430g2553的簡(jiǎn)易正弦波發(fā)生器設(shè)計(jì)_第1頁(yè)
基于msp430g2553的簡(jiǎn)易正弦波發(fā)生器設(shè)計(jì)_第2頁(yè)
基于msp430g2553的簡(jiǎn)易正弦波發(fā)生器設(shè)計(jì)_第3頁(yè)
基于msp430g2553的簡(jiǎn)易正弦波發(fā)生器設(shè)計(jì)_第4頁(yè)
基于msp430g2553的簡(jiǎn)易正弦波發(fā)生器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、電子工程學(xué)院2015年大學(xué)生電子設(shè)計(jì)競(jìng)賽設(shè)計(jì)報(bào)告 學(xué)院:電子工程學(xué)院 姓名:馬晨迪(2012210987)(硬件)宋明潔(2012210991)(軟件)完成任務(wù)1基本要求(1)振蕩頻率:10KHz;(2)輸出信號(hào)電壓范圍(峰-峰值):2V;(負(fù)載1K歐,500歐,50歐)(3)測(cè)量振蕩信號(hào)參數(shù):峰峰值、有效值、頻率;測(cè)量精度要求:滿(mǎn)足(2)的負(fù)載下測(cè)量誤差±5%。(以外接示波器測(cè)試為參考)2發(fā)揮部分指定發(fā)揮要求:(1) 振蕩頻率: 100KHz;(2) 測(cè)量精度提高:誤差±1%;(以外接示波器測(cè)試為參考)(3) 顯示并繪制輸入信號(hào)波形(繪制要求有坐標(biāo)軸及刻度,單位)(4)

2、VDD <=3.3V;(5) 提交設(shè)計(jì)論文3 設(shè)計(jì)思路(1) 硬件a) 原理利用產(chǎn)生自激振蕩的條件去構(gòu)成正反饋電路,以產(chǎn)生正弦波振蕩。原理圖如下:自激振蕩的平衡條件: 1)振幅條件: 2)相位條件:A+B()=±2n要產(chǎn)生自激震蕩可以采用LC、RC或者石英晶體振蕩電路。但是在產(chǎn)生較低頻率的正弦波是時(shí),若采用LC電路,所需電感很大,實(shí)際中往往很難找到,而石英晶體震蕩頻率雖然穩(wěn)定,但是可調(diào)節(jié)范圍較小。所以我們最終采用了RC文氏橋電路。b) 模型文氏橋電路的原始模型:改進(jìn)后的模型:上圖中,在回路串聯(lián)兩個(gè)反向并聯(lián)的二極管,利用電流增大時(shí),二極管動(dòng)態(tài)電阻減小的特點(diǎn),加入非線(xiàn)性環(huán)節(jié),使輸出

3、電壓穩(wěn)定。用兩個(gè)電位器R,調(diào)節(jié)震蕩頻率,使得滿(mǎn)足起振條件和滿(mǎn)足所要求的震蕩頻率。c) 仿真過(guò)程d) 實(shí)際操作實(shí)際操作過(guò)程中我們發(fā)現(xiàn),仿真出來(lái)的效果很好,但是嚴(yán)格按照仿真結(jié)果出來(lái)的效果卻并不是很好,甚至無(wú)法出現(xiàn)波形。開(kāi)始時(shí)還以為是電路鏈接有問(wèn)題,插了好幾次,不見(jiàn)效果,后來(lái)試著不斷調(diào)節(jié)電位器R的值,突然出現(xiàn)了波形。這說(shuō)明理論和實(shí)際還真是有不小的差距。在實(shí)現(xiàn)大于10kHz的功能時(shí),電容值C本來(lái)用的參考資料里的223但是發(fā)先頻率可調(diào)范圍較小,而且電壓最高為2.1V左右,剛剛能夠滿(mǎn)足要求,所以,改選了102,效果比較好不僅頻率達(dá)到了要求,而且電壓最大值可達(dá)到2.7V。再加入負(fù)載之后,我們能實(shí)現(xiàn)電壓仍大于

4、2V的負(fù)載值最小只能是68歐。未接負(fù)載前:接1000歐負(fù)載接500歐負(fù)載接68歐e) 拓展功能實(shí)現(xiàn)在實(shí)現(xiàn)100kHz時(shí),我們更換電容C為容值更小的101(1000pF),實(shí)現(xiàn)了頻率要求,但是電壓的要求難以實(shí)現(xiàn),要實(shí)現(xiàn)仍是正弦波的要求,電壓幅度最大只能是幾百毫伏。在使用電壓3.3V供電時(shí),頻率上可以滿(mǎn)足大于10k的要求(33k),但是電壓只能達(dá)到1.74V。如下圖(2) 軟件軟件設(shè)計(jì)主要包括測(cè)量正弦波頻率、測(cè)量正弦波幅度、lcd顯示模塊ü 測(cè)量正弦波頻率模塊測(cè)量正弦波頻率采用測(cè)頻法,使用兩個(gè)定時(shí)器A、B,定時(shí)器A的使用采用正弦波作為外部輸入時(shí)鐘,每輸入一個(gè)正弦波的上升沿,TRA的值加一

5、,這樣可以使用定時(shí)器A的值記錄輸入的正弦波的周期數(shù)。定時(shí)器B的時(shí)鐘采用SMCLK,用來(lái)計(jì)時(shí),當(dāng)計(jì)時(shí)到1s時(shí)觸發(fā)中斷,利用此時(shí)定時(shí)器A的值計(jì)算得到正弦波的頻率。ü 測(cè)量正弦波幅度模塊將正弦波輸入A1引腳,利用單片機(jī)內(nèi)集成的ADC進(jìn)行AD轉(zhuǎn)換,對(duì)一定時(shí)間內(nèi)采集的到的幅度值進(jìn)行比較,最大值作為正弦波的幅度輸出。ü Lcd顯示模塊由于msp430g2553單片機(jī)的IO管腳比較少,所以LCD12864采用串行通信模式,只用連接SID,CS,SCLK三個(gè)控制引腳,對(duì)LCD12864寫(xiě)入的每一個(gè)字節(jié)的數(shù)據(jù)或者命令采用三字節(jié)的數(shù)據(jù)格式寫(xiě)入,第一個(gè)字節(jié)為控制命令,第二個(gè)字節(jié)的高4位為數(shù)據(jù)的高

6、4位,第三個(gè)字節(jié)的高4位為數(shù)據(jù)的低4位。因?yàn)長(zhǎng)CD12864內(nèi)部含有字庫(kù),所以只需要寫(xiě)入顯示符號(hào)的ASCII碼或者漢字,LCD會(huì)利用字庫(kù)映射為對(duì)應(yīng)的符號(hào)并顯示出來(lái)。程序源代碼/* * measure.c * * Created on: 2015-4-6 * Author: Elan * P1.0輸入正弦波作為外部時(shí)鐘 * P1.1輸入正弦波進(jìn)行adc采樣 */#include "msp430g2553.h"#define uint unsigned int#define uchar unsigned char#define ulint unsigned long intun

7、signed long data;/頻率double TA_OverflowCnt=0;/溢出次數(shù)float adc_sample=0;float adc_max=0;float effective_value=0;void init_TA();void init_adc();void cal_max();void delay(uint t);void delay1(void);void int_430(void);void sendbyte(uchar zdata);void write_com(uchar cmdcode);void write_data(uchar Dispdata);v

8、oid lcdinit();void print_string( char *s);void display_fre(void);void display_range(void);void display_effective_value(void);void main()init_TA();init_adc();int_430();lcdinit();while(1)cal_max();display_fre();display_range();display_effective_value();delay1();void init_TA()P1SEL |= BIT0; /選取管腳第二功能P1

9、DIR &= BIT0; /p1.0置為輸入TA1CCR0=65535;/定時(shí)1sTACCR0=65535;TA1CTL |= TASSEL_2 + ID_3 + MC_1 + TAIE + TACLR;/P1.1 SMCLK作為時(shí)鐘,8分頻,增計(jì)數(shù),中斷使能,初始置0TA0CTL = TASSEL_0 + TACLR + TAIE + MC_2;/P1.0 外部輸入時(shí)鐘,中斷使能,初始清零,連續(xù)計(jì)數(shù)TA0CCTL0 |= CCIE;/使能捕獲TA1CCTL0 |= CCIE;_EINT(); /打開(kāi)全局中斷void init_adc()ADC10CTL1 |= CONSEQ_2;/單

10、通道重復(fù)采樣模式/ADC10CTL0 |= SREF_0+REFON+REF2_5V;/選擇內(nèi)部參考電源,打開(kāi)基準(zhǔn)源,參考電壓設(shè)置為VCC 3.3VADC10CTL0 |= SREF_0;ADC10CTL0 |= ADC10SHT_0+MSC;/過(guò)采樣率設(shè)置為4個(gè)采樣周期ADC10CTL1|= ADC10SSEL_3+ADC10DIV_1+SHS_0;/采樣時(shí)鐘為SMCLK,二分頻ADC10CTL1 |=INCH_1;/選擇采樣通道A1ADC10CTL0 |= ADC10ON;/開(kāi)啟ADC10ADC10AE0 |= 0x02;/開(kāi)啟外部采樣通道void cal_max()unsigned in

11、t i;for(i=0;i<65635;i+)ADC10CTL0 |=ENC+ADC10SC; /開(kāi)始轉(zhuǎn)換while(ADC10CTL0 &ADC10IFG)=0); /等待ADC10IFG標(biāo)志變高(轉(zhuǎn)換完成)adc_sample=(float)ADC10MEM) *4.2583) /1023-2; /讀取采樣結(jié)果if(adc_max < adc_sample)adc_max=adc_sample;effective_value=adc_max/1.414;display_fre();display_range();display_effective_value();del

12、ay1();/*延時(shí)函數(shù)*/void delay(uint t) uint i,j; for(i=0;i<t;i+) for(j=0;j<10;j+);/1s延時(shí)的計(jì)數(shù)閘門(mén)void delay1(void) unsigned long i; for(i=0;i<119000;i+) _NOP(); / 該函數(shù)用來(lái)產(chǎn)生一個(gè) MSP430 系統(tǒng)時(shí)鐘周期的延時(shí) void int_430(void) P1SEL&=BIT6;/輸出高電平,充當(dāng)電源 P1SEL&=BIT7; P1DIR|= BIT6; P1DIR|= BIT7; P1OUT|=BIT6; P1OUT|=

13、BIT7; WDTCTL=WDTPW+WDTHOLD; / 關(guān)閉看門(mén)狗 P1SEL&=BIT4; P1DIR|= BIT4; P1OUT&=BIT4; P1SEL&=BIT5; P1DIR|= BIT5; P1OUT&=BIT5;/*數(shù)據(jù)傳送函數(shù)*/void sendbyte(uchar zdata) uchar code_seg7,serial_clk, serial_shift; code_seg7=zdata; serial_shift=0x80; for(serial_clk=0; serial_clk<8; serial_clk+) if(cod

14、e_seg7&serial_shift) P1OUT|=BIT4; /SID為1 else P1OUT&=BIT4; /SID為0 P1OUT&=BIT5; /產(chǎn)生時(shí)鐘信號(hào)下沿 P1OUT|=BIT5; /產(chǎn)生時(shí)鐘信號(hào)上沿 serial_shift=serial_shift>>1; /準(zhǔn)備發(fā)送下一位數(shù)據(jù) /*寫(xiě)命令函數(shù)*/void write_com(uchar cmdcode) /串口控制格式(11111AB0) /A數(shù)據(jù)方向控制,A=H時(shí)讀,A=L時(shí)寫(xiě) /B數(shù)據(jù)類(lèi)型選擇,B=H時(shí)為顯示數(shù)據(jù),B=L時(shí)為命令 sendbyte(0xf8); /MCU向LCD

15、發(fā)命令 sendbyte(cmdcode & 0xf0); /發(fā)高四位數(shù)據(jù)(數(shù)據(jù)格式D7D6D5D4_0000) sendbyte(cmdcode << 4) & 0xf0); /發(fā)低四位數(shù)據(jù)(數(shù)據(jù)格式D3D2D1D0_0000) delay(2); /延時(shí)等待/*寫(xiě)數(shù)據(jù)函數(shù)*/void write_data(uchar Dispdata) sendbyte(0xfa); /MCU向LCD發(fā)數(shù)據(jù) sendbyte(Dispdata & 0xf0); /發(fā)高四位數(shù)據(jù) sendbyte(Dispdata << 4) & 0xf0); /發(fā)低四

16、位數(shù)據(jù) delay(2);/*LCD初始化函數(shù)*/void lcdinit() delay(20000); /復(fù)位等待(內(nèi)部自帶上電復(fù)位電路),時(shí)間較長(zhǎng) write_com(0x30); /功能設(shè)定:基本指令集操作 delay(50); /延時(shí)等待 write_com(0x04); /光標(biāo)右移一位 write_com(0x0c); /整體顯示,關(guān)游標(biāo) delay(50); write_com(0x01); /清屏/*送字符串函數(shù)*/void print_string( char *s) while(*s > 0) /C語(yǔ)言里字符串末尾自動(dòng)加“0”(ASCII碼值為0) delay(50)

17、; write_data(*s); /發(fā)送字符對(duì)應(yīng)的ASCII碼,12864指針可設(shè)置自動(dòng)指向下一個(gè)顯示地址 s+; /*顯示頻率*/void display_fre()uint d1,d2,d3,d4,d5,d6;write_com(0x01);if(data>99999)/6位數(shù)的頻率d1=data/100000;d2=data%100000/10000;d3=data%100000%10000/1000;d4=data%100000%10000%1000/100;d5=data%100000%10000%1000%100/10;d6=data%100000%10000%1000%1

18、00%10;write_com(0x03);write_com(0x80);/頻率顯示在第一行print_string("頻率: ");write_com(0x83);write_data(d1+0x30);write_data(d2+0x30);write_data(d3+0x30);write_data(d4+0x30);write_data(d5+0x30);write_data(d6+0x30);else /5位數(shù)頻率d1=data/10000;d2=data%10000/1000;d3=data%10000%1000/100;d4=data%10000%1000%

19、100/10;d5=data%10000%1000%100%10;write_com(0x03);write_com(0x80);/頻率顯示在第一行print_string("頻率: ");write_com(0x83);write_data(d1+0x30);write_data(d2+0x30);write_data(d3+0x30);write_data(d4+0x30);write_data(d5+0x30);write_com(0x86);write_data('H');write_data('z');/*顯示幅度*/void di

20、splay_range()uint r1,r2,r3;if(adc_max>9.9)r1=(uint)adc_max/10;r2=(uint)adc_max%10;r3=(uint)(adc_max*10)%100%10;write_com(0x03);write_com(0x90);/第二行print_string("幅度: ");write_com(0x93);write_data(r1+0x30);write_data(r2+0x30);write_data(46);write_data(r3+0x30);elser1=(uint)adc_max/1;r2=(u

21、int)(adc_max*10)%10;write_com(0x03);write_com(0x90);/第二行print_string("幅度: ");write_com(0x93);write_data(r1+0x30);write_data(46);write_data(r2+0x30);write_com(0x95);write_data('V');/*顯示有效值*/void display_effective_value()uint e1,e2,e3;/effective_value=adc_max/1.414;if(effective_value

22、>9.9)e1=(uint)effective_value/10;e2=(uint)effective_value%10;e3=(uint)(effective_value*10)%100%10;write_com(0x03);write_com(0x88);/第s三行print_string("有效值: ");write_com(0x8c);write_data(e1+0x30);write_data(e2+0x30);write_data(46);write_data(e3+0x30);elsee1=(uint)effective_value/1;e2=(uint)(effective_value*10)%10;write_com(0x03);wr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論