版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、電子設(shè)計(jì)綜合實(shí)驗(yàn)項(xiàng)目報(bào)告項(xiàng)目名稱(chēng): MCU交流電壓參數(shù)測(cè)量 小組成員 :林伊、武正浩學(xué) 號(hào):20111112、20111201目錄項(xiàng)目要求3題目3要求3基本要求3發(fā)揮部分3實(shí)現(xiàn)思路4放大4頻率4A/D:6顯示:6代碼7主程序:7lcd頭文件10項(xiàng)目要求題目:交流電壓參數(shù)的測(cè)量要求:用給定的MCU:msp430g2553,制作交流電壓參數(shù)測(cè)試設(shè)備信號(hào)發(fā)生器放大A/D比較器指定MCUMSP430G2553圖表 1基本要求:一、 用給定運(yùn)放LM324制作一放大器a) 增益大于:20dBb) 帶寬大于:100KHz二、 用指定MCU和已制作的放大器制作頻率計(jì)a) 測(cè)量范圍:10Hz100KHzb) 顯
2、示:3位以上發(fā)揮部分:一、 用A/D測(cè)量已給電壓的幅度,信號(hào)由已制作的放大器輸入a) 測(cè)量范圍:輸入信號(hào)越小越好實(shí)現(xiàn)思路放大:首先分析題目要求,要實(shí)現(xiàn)放大20dB,頻率1100KHz的信號(hào),通過(guò)公式20lg(Ad)得出Ad=10,即放大10倍必須使用運(yùn)放lm324實(shí)現(xiàn),則需要知道該芯片的器件參數(shù),即增益帶寬積。通過(guò)數(shù)據(jù)手冊(cè)得知其增益帶寬積為6.4MHz,除去放大倍數(shù)得知能夠?qū)崿F(xiàn)該信號(hào)的放大,通過(guò)設(shè)計(jì)放大電路并焊接即可,放大電路為反向比例放大電路,見(jiàn)Figure 1Figure 1頻率:實(shí)現(xiàn)頻率的測(cè)量,這一塊需使用到MCU,測(cè)量頻率的方法有很多種,通過(guò)捕捉上升沿下降沿產(chǎn)生中斷,也可以不產(chǎn)生中斷,
3、還可通過(guò)時(shí)鐘計(jì)數(shù)。其中通過(guò)捕捉上升沿下降沿的思路又分兩種,1、檢測(cè)上升沿后再檢測(cè)下一個(gè)上升沿(檢測(cè)下降沿后再檢測(cè)下一個(gè)下降沿)2、檢測(cè)上升沿后再檢測(cè)下降沿(檢測(cè)下降沿后再檢測(cè)上升沿)。這些思路對(duì)應(yīng)不同的采集方法又可以細(xì)分,其中方案1對(duì)于測(cè)量高頻信號(hào)有著較好的效果,方案2對(duì)于測(cè)低頻的信號(hào)較好,前提是占空比為50%,若不為則變?yōu)闇y(cè)脈寬。這次的題目我采用的是用時(shí)鐘計(jì)數(shù)的方式,msp430g2553中含有2個(gè)時(shí)鐘,timer0和timer1,每個(gè)時(shí)鐘都有如下功能,選擇時(shí)鐘來(lái)源:1、外部時(shí)鐘(即外部輸入的方波信號(hào))2、ACLK 3、smclk等。其中ACLK為外部所焊晶振,頻率為32768Hz。由上述條
4、件我使用timer0和timer1同時(shí)工作來(lái)進(jìn)行頻率的測(cè)量,首先外部晶振屬于手表晶振,極易產(chǎn)生1s中斷,我首先用timer1產(chǎn)生1s中斷,再用timer0選擇使用外部時(shí)鐘源計(jì)數(shù),也就是需要被我們計(jì)數(shù)的信號(hào)輸入,這樣每一次上升沿,timer0計(jì)數(shù)器就會(huì)加一。這樣每秒中斷讀取timer0中寄存器的值就可以得出精確度極高的頻率,甚至都不需要換算。此種方案簡(jiǎn)便易于實(shí)現(xiàn),故選用。流程圖:開(kāi)始清除timer0內(nèi)寄存器的值讀取timer0內(nèi)寄存器的值保存Y1秒到時(shí)?NFigure 2方案選擇完畢,考慮如何把正弦信號(hào)轉(zhuǎn)換成方波信號(hào)輸入MCU,此部分在考慮信號(hào)發(fā)生器只輸出正電的時(shí)候,即正弦信號(hào)在0電位之上,我們
5、可以完全不用設(shè)計(jì)任何外部電路,因?yàn)镸CU內(nèi)部有施密特觸發(fā)器,可以將正弦輸入變成方波,但是如果有負(fù)電壓輸入則會(huì)損壞MCU。實(shí)際中由于LM324我們只允許單電源供電,且放大電路為反向比例放大電路,所以只放大了輸入信號(hào)的負(fù)半周,并且將其搬到正半軸,所以輸入到單片機(jī)的是只有正的電壓,如圖:Figure 3所以不需要外部焊接電路實(shí)現(xiàn)波形轉(zhuǎn)換,但是由于本課程是為北京電設(shè)做準(zhǔn)備,本著此原則我組成員決定還是設(shè)計(jì)并焊接一個(gè)外部電路來(lái)實(shí)現(xiàn)波形轉(zhuǎn)換。波形轉(zhuǎn)換有兩種方法:1、使用過(guò)零比較器2、使用施密特觸發(fā)器。由于本題目對(duì)輸入信號(hào)的頻率有要求,過(guò)零比較器涉及到運(yùn)放,所以在頻率上有限制,為保證頻率不影響實(shí)現(xiàn),我們選用數(shù)
6、字的電路即施密特觸發(fā)器,數(shù)字電路一般頻率可以達(dá)到幾十兆,所以肯定能夠符合要求,見(jiàn)下圖:Figure 4A/D:本題發(fā)揮部分要求采集正弦信號(hào)的峰值,所以涉及A/D轉(zhuǎn)換部分,由于輸入信號(hào)頻率在10Hz100KHz,由于采樣定理,采樣頻率必須為被采樣信號(hào)的兩倍,雖然實(shí)際中最好為十倍,我們最后還是采用了兩倍。Msp430g2553此款芯片A/D采集過(guò)程若要穩(wěn)定起碼需要30個(gè)時(shí)鐘,我的A/D模塊選用時(shí)鐘源smclk,其頻率為8MHz,則8MHz除去30約為267KHz,其大于100KHz的兩倍,基本滿足要求,在之前采集頻率的過(guò)程中我們有產(chǎn)生一個(gè)1s中斷,A/D平常每采集一次便把采集的值與最大值比較,把最
7、大值留下,1s選取一次最大值顯示,并把之前最大值清除。顯示:顯示我們采用LCD1602,采用四條數(shù)據(jù)線,三條控制線,在保證MCU引腳夠用的前提下進(jìn)行顯示。代碼主程序:#include <msp430g2553.h>#include "LCD1602_Driver.h"#include <math.h>unsigned int FRE=0;unsigned char flag1=0;unsigned char flag2=0;unsigned int adc_sample=0;unsigned int adc_max=0;unsigned int te
8、mp=0;uchar LCDBuf16;/uchar LCDBuf25;uchar LCDBuf2="HZ"uchar LCDBuf3="MV"void main() WDTCTL = WDTPW + WDTHOLD; DCOCTL |= ( DCO0 + DCO1 ); DCOCTL |= ( MOD4 + MOD3 + MOD2 + MOD1 + MOD0);/微調(diào)DCOCLK BCSCTL1 |= ( RSEL0 + RSEL2 + RSEL3);/14.8M SMCLK IO_Init(); LCD_Init(); /測(cè)頻初始 TA0CTL |=
9、 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(0=flag1) ; else flag1=0; TA0CTL |= TACLR; TA0CTL = TASSEL_0 + MC_1; TA1CTL = TASSEL_1 + MC_1 + TAIE; while(0=flag1); flag1=0;
10、/顯示頻率 for(int i=0;i<5;i+) temp = FRE/(10000/(unsigned int)(pow(10,i); LCDBuf1i = temp + '0' FRE = FRE%(10000/(unsigned int)(pow(10,i); LCDBuf15 = 0; LCD_Disp_string(0,0,LCDBuf1); LCD_Disp_string(5,0,LCDBuf2); /測(cè)幅初始 flag2=1; TA1CTL = TASSEL_1 + MC_1 + TAIE; TA1CCR0 = 32767;/打開(kāi)時(shí)鐘 /ADC10CTL0
11、 = SREF_0 + ADC10SHT_2 + MSC + ADC10ON + ADC10IE; /ADC10CTL1 = INCH_1 + ADC10SSEL_3 + CONSEQ_2; /ADC10AE0 = 0x02; /ADC10DTC0 = ADC10B1; /ADC10DTC1 = 0xC8; /ADC10CTL0 &= ENC; / 先關(guān)閉adc,待到BUSY位清零,每次都必須等待 /while (ADC10CTL1 & BUSY); / Wait if ADC10 core is active /ADC10SA = (unsigned int)adc_samp
12、le; / Data buffer start /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) a
13、dc_max = adc_sample; while(0=flag1); adc_max = adc_max*(3300/1023); /while(0=flag1); flag2=0; /* /篩選 for(int i=0;i<200;i+) if(adc_samplei>adc_max) adc_max=adc_samplei; */ /顯示幅值 for(int i=0;i<5;i+) temp = adc_max/(10000/(unsigned int)(pow(10,i); LCDBuf1i = temp + '0' adc_max = adc_ma
14、x%(10000/(unsigned int)(pow(10,i); LCDBuf15 = 0; LCD_Disp_string(0,1,LCDBuf1); LCD_Disp_string(5,1,LCDBuf3); adc_max = 0; / Timer A1 interrupt service routine#pragma vector=TIMER1_A0_VECTOR_interrupt void Timer1_A (void) if(0=flag2) TA0CTL = 0; TA1CTL = 0; TA1CTL |= TACLR; FRE=TA0R; flag1=1; TA0CTL
15、= TASSEL_0 + MC_0; TA1CTL = TASSEL_1 + MC_0; /TA0CTL |= TACLR; /TA0CTL = TASSEL_0 + MC_1; /TA1CTL = TASSEL_1 + MC_1 + TAIE; /測(cè)了一次還沒(méi)開(kāi) else TA1CTL = TASSEL_1 + MC_0; flag1=1; / ADC10 interrupt service routine#pragma vector=ADC10_VECTOR_interrupt void ADC10_ISR (void) flag1=1; ADC10CTL0 &= ENC;lcd頭
16、文件/#include "msp430g2553.h"#define SET_LCD_1602_E P2OUT |= 0x04 /P2.2#define CLR_LCD_1602_E P2OUT &= 0x04#define SET_LCD_1602_RS P2OUT |= 0x01 /P2.0#define CLR_LCD_1602_RS P2OUT &= 0x01#define SET_LCD_1602_RW P2OUT |= 0x02 /P2.1#define CLR_LCD_1602_RW P2OUT &= 0x02#define LCD_I
17、O_OUT P1OUT#define LCD_IO_DIR P1DIR#define LCD_IO_IN P1IN#define LCD_IO_SEL P1SEL#define uchar unsigned char#define uint unsigned intvoid IO_Init(void);void LCD_Init(void);void LCD_Check_busy(void); /檢測(cè)LCD是否在忙,即能否接收數(shù)據(jù)和指令void LCD_Write_Command(uchar command);void LCD_Write_Data(uchar dat);void LCD_Se
18、t_xy( uchar x, uchar y );uchar LCD_Read_Sta(void);uchar LCD_Read_Data(uchar x,uchar y);void User_def_char(uchar n,uchar *s); /輸入用戶自定義字符(5*8點(diǎn)陣字符),07共8個(gè)字符void LCD_Disp_char(uchar x,uchar y,uchar dat);void LCD_Disp_string(uchar x,uchar y,uchar *s);uchar large=0; /當(dāng)large為1時(shí),為5*8點(diǎn)陣;為0時(shí),為5*10點(diǎn)陣void IO_Ini
19、t(void)LCD_IO_SEL &= 0xF0;/LCD_IO_DIR |= 0x07 ; P2DIR |= 0x07; P2SEL &= 0x07;void LCD_Init(void)LCD_Write_Command(0x28);LCD_Write_Command(0x0F);LCD_Write_Command(0x06);LCD_Write_Command(0x01);void LCD_Check_busy(void)uchar flag=0x80;flag &= LCD_Read_Sta();while(flag = 0x80)_delay_cycles(
20、100);flag &= LCD_Read_Sta();void LCD_Write_Command(uchar command)LCD_Check_busy();CLR_LCD_1602_RS;CLR_LCD_1602_RW;CLR_LCD_1602_E;uchar temp;temp = command & (0x3C);if(temp=(0x26)|(temp=(0x2C)|(temp=(0x36)|(temp=(0x3C)large = 0; /為5*10點(diǎn)陣elselarge = 1;LCD_IO_DIR |= 0xF0;LCD_IO_OUT = (command&a
21、mp;(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;void LCD_Write_Data(uchar dat)LCD_Check_busy();SET_LCD_1602_RS;CLR_LCD_1602_RW;CLR_LCD_1602_E;LCD_IO_DIR |= 0xF0;LCD_IO_OUT = (dat&
22、amp;(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;void LCD_Set_xy(uchar x,uchar y) uchar address; if (y = 0) address = 0x80 + x; else address = 0xC0 + x; LCD_Write_Command(address);uchar LCD_Read_Sta(void)uchar sta;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);uchar temp;temp = LCD_IO_IN;CLR_LCD_1602_E;sta &= 0xF0;temp >>=
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 善待動(dòng)物演講稿范文(14篇)
- 金蝶KIS專(zhuān)業(yè)版?zhèn)}存及生產(chǎn)管理-培訓(xùn)課件
- 油氣行業(yè)安全生產(chǎn)監(jiān)管-洞察分析
- 虛擬現(xiàn)實(shí)聲源定位實(shí)現(xiàn)-洞察分析
- 虛擬貨幣交易風(fēng)險(xiǎn)管理-洞察分析
- 污水深度處理技術(shù)-洞察分析
- 向國(guó)旗敬禮國(guó)旗下講話老師講話稿范文(6篇)
- 醫(yī)療機(jī)器人與區(qū)塊鏈結(jié)合的研究-洞察分析
- 關(guān)愛(ài)同學(xué)遠(yuǎn)離校園欺凌發(fā)言稿范文(5篇)
- 印刷行業(yè)智能化培訓(xùn)模式-洞察分析
- 強(qiáng)夯安全技術(shù)交底
- 企業(yè)財(cái)務(wù)風(fēng)險(xiǎn)防范的參考文獻(xiàn)
- 2024年四川省水電投資經(jīng)營(yíng)集團(tuán)普格電力有限公司招聘筆試參考題庫(kù)含答案解析
- 2024屆新高考物理沖刺復(fù)習(xí):“正則動(dòng)量”解決帶電粒子在磁場(chǎng)中的運(yùn)動(dòng)問(wèn)題
- PLC控制Y-△降壓?jiǎn)?dòng)控制設(shè)計(jì)
- 趣識(shí)古文字(吉林聯(lián)盟)智慧樹(shù)知到期末考試答案2024年
- 汕頭市中小學(xué)教學(xué)研究中心招聘專(zhuān)職教研員筆試真題2023
- 2024年國(guó)家糧食和物資儲(chǔ)備局直屬事業(yè)單位招聘筆試參考題庫(kù)附帶答案詳解
- 無(wú)紡布行業(yè)的分析
- 2024屆重慶市西南大學(xué)附屬中學(xué)高考生物試題模擬題及解析附答案
- 算力互助與資源優(yōu)化調(diào)度
評(píng)論
0/150
提交評(píng)論