


版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、電子設計綜合實驗項B報告項目名稱:MCU交流電壓參數(shù)測量小組成員:林伊、武正浩學號:20111112、20111201目錄項目要求3題目3要求3基本要求3發(fā)揮部分3實現(xiàn)思路4放大4頻率4A/D:6顯示:6代碼7主程序:7led頭文件10項目要求題目:交流電壓參數(shù)的測量要求:用給定的MCU:msp430g2553制作交流電壓參數(shù)測試設備圖表1基本要求:、用給定運放LM324制作一放大器a)增益大于:20dBb)帶寬大于:100KHz二、用指定MCUFn已制作的放大器制作頻率計a)測量范圍:10Hz100KHzb)顯示:3位以上發(fā)揮部分:一、用A/D測量已給電壓的幅度,信號由已制作的放大器輸入a)
2、測量范圍:輸入信號越小越好實現(xiàn)思路放大:首先分析題目要求,要實現(xiàn)放大20dB,頻率1100KHz的信號,通過公式20lg(Ad)得出Ad=10,即放大10倍必須使用運放lm324實現(xiàn),則需要知道該芯片的器件參數(shù),即增益帶寬積。通過數(shù)據(jù)手冊得知其增益帶寬積為6.4MHz,除去放大倍數(shù)得知能夠?qū)崿F(xiàn)該信號的放大,通過設計放大電路并焊接即可,放大電路為反向比例放大電路,見Figure1VCCIV1H-七齡Figure1頻率:實現(xiàn)頻率的測量,這一塊需使用到MCU測量頻率的方法有很多種,通過捕捉上升沿下降沿產(chǎn)生中斷,也可以不產(chǎn)生中斷,還可通過時鐘計數(shù)。其中通過捕捉上升沿下降沿的思路又分兩種,1、檢測上升沿
3、后再檢測下一個上升沿(檢測下降沿后再檢測下一個下降沿)2、檢測上升沿后再檢測下降沿(檢測下降沿后再檢測上升沿)。這些思路對應不同的采集方法又可以細分,其中方案1對于測量高頻信號有著較好的效果,方案2對于測低頻的信號較好,前提是占空比為50%若不為則變?yōu)闇y脈寬。這次的題目我采用的是用時鐘計數(shù)的方式,msp430g2553中含有2個時鐘,timer。和timer1,每個時鐘都有如下功能,選擇時鐘來源:1、外部時鐘(即外部輸入的方波信號)2、ACLK3、smclk等。其中ACL炒外部所焊晶振,頻率為32768Hz。由上述條件我使用timer0和timer1同時工作來進行頻率的測量,首先外部晶振屬于手
4、表晶振,極易產(chǎn)生1s中斷,我首先用timer1產(chǎn)生1s中斷,再用timer0選擇使用外部時鐘源計數(shù),也就是需要被我們計數(shù)的信號輸入,這樣每一次上升沿,timer0計數(shù)器就會加一。這樣每秒中斷讀取timer0中寄存器的值就可以得出精確度極高的頻率,甚至都不需要換算。此種方案簡便易于實現(xiàn),故選用。流程圖:Figure2方案選擇完畢,考慮如何把正弦信號轉(zhuǎn)換成方波信號輸入MCU此部分在考慮信號發(fā)生器只輸出正電的時候,即正弦信號在0電位之上,我們可以完全不用設計任何外部電路,因為MCU內(nèi)部有施密特觸發(fā)器,可以將正弦輸入變成方波,但是如果有負電壓輸入則會損壞MCU實際中由于LM324我們只允許單電源供電,
5、且放大電路為反向比例放大電路,所以只放大了輸入信號的負半周,并且將其搬到正半軸,所以輸入到單片機的是只有正的電壓,如圖:Figure3所以不需要外部焊接電路實現(xiàn)波形轉(zhuǎn)換,但是由于本課程是為北京電設做準備,本著此原則我組成員決定還是設計并焊接一個外部電路來實現(xiàn)波形轉(zhuǎn)換。波形轉(zhuǎn)換有兩種方法:1、使用過零比較器2、使用施密特觸發(fā)器。由于本題目對輸入信號的頻率有要求,過零比較器涉及到運放,所以在頻率上有限制,為保證頻率不影響實現(xiàn),我們選用數(shù)字的電路即施密特觸發(fā)器,數(shù)字電路一般頻率可以達到幾十兆,所以肯定能夠符合要求,見下圖:VO2Figure4A/D:本題發(fā)揮部分要求采集正弦信號的峰值,所以涉及A/D
6、轉(zhuǎn)換部分,由于輸入信號頻率在10Hz100KH乙由于采樣定理,采樣頻率必須為被采樣信號的兩倍,雖然實際中最好為十倍,我們最后還是采用了兩倍。Msp430g2553此款芯片A/D采集過程若要穩(wěn)定起碼需要30個時鐘,我的A/D模塊選用時鐘源smclk,其頻率為8MHz則8MHz除去30約為267KH乙其大于100KHz的兩倍,基本滿足要求,在之前采集頻率的過程中我們有產(chǎn)生一個1s中斷,A/D平常每采集一次便把采集的值與最大值比較,把最大值留下,1s選取一次最大值顯示,并把之前最大值清除。顯示:顯示我們采用LCD1602采用四條數(shù)據(jù)線,三條控制線,在保證MCUOI腳夠用的前提下進行顯示。代碼主程序:
7、#include<msp430g2553.h>#include"LCD1602_Driver.h”#include<math.h>unsignedintFRE=0;unsignedcharflag1=0;unsignedcharflag2=0;unsignedintadc_sample=0;unsignedintadc_max=0;unsignedinttemp=0;ucharLCDBuf16;/ucharLCDBuf25;ucharLCDBuf2="HZ"ucharLCDBuf3="MV"voidmain()WDTCT
8、L=WDTPW+WDTHOLD;DCOCTL|=(DCO0+DCO1);DCOCTL|=(MOD4+MOD3+MOD2+MOD1+MOD0);/微調(diào)DCOCLKBCSCTL1|=(RSEL0+RSEL2+RSEL3);/14.8MSMCLKIO_Init();LCD_Init();/測頻初始TA0CTL|=TASSEL_0+MC_1;TA0CCR0=0xffff;TA1CTL|=TASSEL_1+MC_1+TAIE;TA1CCR0=32767;TA1CCTL0|=CCIE;P1DIR&=BIT0;P1SEL|=BIT0;_bis_SR_register(GIE);while(1)if(
9、0=flag1)(;else(flag1=0;TA0CTL|=TACLR;TA0CTL=TASSEL_0+MC_1;TA1CTL=TASSEL_1+MC_1+TAIE;while(0=flag1);flag1=0;/顯示頻率for(inti=0;i<5;i+)(temp=FRE/(10000/(unsignedint)(pow(10,i);LCDBuf1i=temp+'0'FRE=FRE%(10000/(unsignedint)(pow(10,i);LCDBuf15=0;LCD_Disp_string(0,0,LCDBuf1);LCD_Disp_string(5,0,LC
10、DBuf2);/測幅初始flag2=1;TA1CTL=TASSEL_1+MC_1+TAIE;TA1CCR0=32767;/打開時鐘/ADC10CTL0=SREF_0+ADC10SHT_2+MSC+ADC10ON+ADC10IE;/ADC10CTL1=INCH_1+ADC10SSEL_3+CONSEQ_2;/ADC10AE0=0x02;/ADC10DTC0=ADC10B1;/ADC10DTC1=0xC8;/ADC10CTL0&=ENC;/先關閉adc,待到BUSY位清零,每次都必須等待/while(ADC10CTL1&BUSY);/WaitifADC10coreisactive/
11、ADC10SA=(unsignedint)adc_sample;/Databufferstart/ADC10CTL0|=ENC+ADC10SC;ADC10CTL0=SREF_0+ADC10SHT_2+MSC+ADC10ON;ADC10CTL1=INCH_1+ADC10SSEL_3+CONSEQ_0;ADC10AE0=0x02;ADC10CTL0|=ADC10ON;do(ADC10CTL0|=ENC+ADC10SC;while(ADC10CTL0&ADC10IFG)=0);adc_sample=ADC10MEM;if(adc_max<adc_sample)(adc_max=adc_
12、sample;while(0=flag1);adc_max=adc_max*(3300/1023);/while(0=flag1);flag2=0;/*/篩選for(inti=0;i<200;i+)(if(adc_samplei>adc_max)(adc_max=adc_samplei;*/顯示幅值for(inti=0;i<5;i+)(temp=adc_max/(10000/(unsignedint)(pow(10,i);LCDBuf1i=temp+'0'adc_max=adc_max%(10000/(unsignedint)(pow(10,i);LCDBuf
13、15=0;LCD_Disp_string(0,1,LCDBuf1);LCD_Disp_string(5,1,LCDBuf3);adc_max=0;/TimerA1interruptserviceroutine#pragmavector=TIMER1_A0_VECTOR_interruptvoidTimer1_A(void)(if(0=flag2)(TA0CTL=0;TA1CTL=0;TA1CTL|=TACLR;FRE=TA0R;flag1=1;TA0CTL=TASSEL_0+MC_0;TA1CTL=TASSEL_1+MC_0;/TA0CTL|=TACLR;/TA0CTL=TASSEL_0+MC
14、_1;/TA1CTL=TASSEL_1+MC_1+TAIE;/測了一次還沒開elseTA1CTL=TASSEL_1+MC_0;flag1=1;/ADC10interruptserviceroutine#pragmavector=ADC10_VECTOR_interruptvoidADC10_ISR(void)flag1=1;ADC10CTL0&=ENC;lcd頭文件/#include"msp430g2553.h”#defineSET_LCD_1602_EP2OUT|=0x04/P2.2#defineCLR_LCD_1602_EP2OUT&=0x04#defineSET
15、_LCD_1602_RSP2OUT|=0x01/P2.0#defineCLR_LCD_1602_RSP2OUT&=0x01#defineSET_LCD_1602_RWP2OUT|=0x02/P2.1#defineCLR_LCD_1602_RWP2OUT&=0x02#defineLCD_IO_OUTP1OUT#defineLCD_IO_DIRP1DIR#defineLCD_IO_INP1IN#defineLCD_IO_SELP1SEL#defineucharunsignedchar#defineuintunsignedintvoidIO_Init(void);voidLCD_In
16、it(void);voidLCD_Check_busy(void);/檢測LCDH否在忙,即能否接收數(shù)據(jù)和指令voidLCD_Write_Command(ucharcommand);voidLCD_Write_Data(uchardat);voidLCD_Set_xy(ucharx,uchary);ucharLCD_Read_Sta(void);ucharLCD_Read_Data(ucharx,uchary);voidUser_def_char(ucharn,uchar*s);/輸入用戶自定義字符(5*8點陣字符),07共8個字符voidLCD_Disp_char(ucharx,uchary
17、,uchardat);voidLCD_Disp_string(ucharx,uchary,uchar*s);ucharlarge=0;/當large為1時,為5*8點陣;為0時,為5*10點陣voidIO_Init(void)LCD_IO_SEL&=0xF0;/LCD_IO_DIR|=0x07;P2DIR|=0x07;P2SEL&=0x07;voidLCD_Init(void)LCD_Write_Command(0x28);LCD_Write_Command(0x0F);LCD_Write_Command(0x06);LCD_Write_Command(0x01);voidLC
18、D_Check_busy(void)ucharflag=0x80;flag&=LCD_Read_Sta();while(flag=0x80)_delay_cycles(100);flag&=LCD_Read_Sta();voidLCD_Write_Command(ucharcommand)(LCD_Check_busy();CLR_LCD_1602_RS;CLR_LCD_1602_RW;CLR_LCD_1602_E;uchartemp;temp=command&(0x3C);if(temp=(0x26)|(temp=(0x2C)|(temp=(0x36)|(temp=(
19、0x3C)large=0;/為5*10點陣elselarge=1;LCD_IO_DIR|=0xF0;LCD_IO_OUT=(command&(0XF0)+(LCD_IO_OUT&(0x0F);SET_LCD_1602_E;CLR_LCD_1602_E;command<<=4;LCD_IO_OUT=(command&(0XF0)+(LCD_IO_OUT&(0x0F);SET_LCD_1602_E;CLR_LCD_1602_E;voidLCD_Write_Data(uchardat)(LCD_Check_busy();SET_LCD_1602_RS;CL
20、R_LCD_1602_RW;CLR_LCD_1602_E;LCD_IO_DIR|=0xF0;LCD_IO_OUT=(dat&(0XF0)+(LCD_IO_OUT&(0x0F);SET_LCD_1602_E;CLR_LCD_1602_E;dat<<=4;LCD_IO_OUT=(dat&(0XF0)+(LCD_IO_OUT&(0x0F);SET_LCD_1602_E;CLR_LCD_1602_E;voidLCD_Set_xy(ucharx,uchary)(ucharaddress;if(y=0)address=0x80+x;elseaddress=0xC
21、0+x;LCD_Write_Command(address);ucharLCD_Read_Sta(void)ucharsta;CLR_LCD_1602_RS;/讀入狀態(tài)信息高四位數(shù)據(jù)SET_LCD_1602_RW;CLR_LCD_1602_E;LCD_IO_DIR&=0xF0;SET_LCD_1602_E;_delay_cycles(10);sta=LCD_IO_IN;CLR_LCD_1602_E;SET_LCD_1602_E;/讀入狀態(tài)信息低四位數(shù)據(jù)_delay_cycles(10);uchartemp;temp=LCD_IO_IN;CLR_LCD_1602_E;sta&=0xF0;temp>>=4;temp&=0x0F;sta=sta+temp;return(sta);ucharLC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 研究針對性護理干預在接受長程視頻腦電圖監(jiān)測患者中的臨床應用價值
- 市場新員工培訓
- 2024-2025學年佛山市高二語文上學期期末教學質(zhì)量檢測試卷
- 2025年小提琴專業(yè)水平測試卷:國內(nèi)外著名小提琴曲演奏分析試題
- 2025年法律職業(yè)資格考試民法法律咨詢專項試題卷
- 2025年小學語文畢業(yè)升學考試全真模擬卷(基礎夯實版)-小學語文閱讀理解能力訓練實戰(zhàn)
- 統(tǒng)計質(zhì)量管理在現(xiàn)代制造業(yè)中的應用-2025年統(tǒng)計學期末試卷
- 2025年網(wǎng)絡安全培訓考試題庫:網(wǎng)絡安全防護技術與應用實踐試題
- 熱水鍋爐定期檢驗工作制度
- 1200×650mm真空蒸鍍技術協(xié)議
- 總復習(教案)2023-2024學年數(shù)學 四年級下冊 北師大版
- 2022 年山東省職業(yè)院校技能大賽高職組復雜部件數(shù)控多軸聯(lián)動加工技術賽項-試題圖紙
- 【青松雪】中考數(shù)學幾何模型【模型08】費馬點最值模型
- 【項目方案】湖北省石首楚源“源網(wǎng)荷儲”一體化項目方案
- DL∕T 241-2012 火電建設項目文件收集及檔案整 理規(guī)范
- 2024風電場架空線路融冰技術規(guī)范
- 淺談國家國家中小學智慧教育平臺在初中數(shù)學教學中的運用
- 化學運行值班員試題庫
- 濟南泛華AI-6000介損儀說明書
- 2024-2029年中國β-內(nèi)酰胺類抗生素行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告
- 北京海淀區(qū)-第2學期高二數(shù)學教概率統(tǒng)計教材分析-(64)課件
評論
0/150
提交評論