


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子设计综合实验项B报告项目名称:MCU交流电压参数测量小组成员:林伊、武正浩学号:20111112、20111201目录项目要求3题目3要求3基本要求3发挥部分3实现思路4放大4频率4A/D:6显示:6代码7主程序:7led头文件10项目要求题目:交流电压参数的测量要求:用给定的MCU:msp430g2553制作交流电压参数测试设备图表1基本要求:、用给定运放LM324制作一放大器a)增益大于:20dBb)带宽大于:100KHz二、用指定MCUFn已制作的放大器制作频率计a)测量范围:10Hz100KHzb)显示:3位以上发挥部分:一、用A/D测量已给电压的幅度,信号由已制作的放大器输入a)
2、测量范围:输入信号越小越好实现思路放大:首先分析题目要求,要实现放大20dB,频率1100KHz的信号,通过公式20lg(Ad)得出Ad=10,即放大10倍必须使用运放lm324实现,则需要知道该芯片的器件参数,即增益带宽积。通过数据手册得知其增益带宽积为6.4MHz,除去放大倍数得知能够实现该信号的放大,通过设计放大电路并焊接即可,放大电路为反向比例放大电路,见Figure1VCCIV1H-七龄Figure1频率:实现频率的测量,这一块需使用到MCU测量频率的方法有很多种,通过捕捉上升沿下降沿产生中断,也可以不产生中断,还可通过时钟计数。其中通过捕捉上升沿下降沿的思路又分两种,1、检测上升沿
3、后再检测下一个上升沿(检测下降沿后再检测下一个下降沿)2、检测上升沿后再检测下降沿(检测下降沿后再检测上升沿)。这些思路对应不同的采集方法又可以细分,其中方案1对于测量高频信号有着较好的效果,方案2对于测低频的信号较好,前提是占空比为50%若不为则变为测脉宽。这次的题目我采用的是用时钟计数的方式,msp430g2553中含有2个时钟,timer。和timer1,每个时钟都有如下功能,选择时钟来源:1、外部时钟(即外部输入的方波信号)2、ACLK3、smclk等。其中ACL炒外部所焊晶振,频率为32768Hz。由上述条件我使用timer0和timer1同时工作来进行频率的测量,首先外部晶振属于手
4、表晶振,极易产生1s中断,我首先用timer1产生1s中断,再用timer0选择使用外部时钟源计数,也就是需要被我们计数的信号输入,这样每一次上升沿,timer0计数器就会加一。这样每秒中断读取timer0中寄存器的值就可以得出精确度极高的频率,甚至都不需要换算。此种方案简便易于实现,故选用。流程图:Figure2方案选择完毕,考虑如何把正弦信号转换成方波信号输入MCU此部分在考虑信号发生器只输出正电的时候,即正弦信号在0电位之上,我们可以完全不用设计任何外部电路,因为MCU内部有施密特触发器,可以将正弦输入变成方波,但是如果有负电压输入则会损坏MCU实际中由于LM324我们只允许单电源供电,
5、且放大电路为反向比例放大电路,所以只放大了输入信号的负半周,并且将其搬到正半轴,所以输入到单片机的是只有正的电压,如图:Figure3所以不需要外部焊接电路实现波形转换,但是由于本课程是为北京电设做准备,本着此原则我组成员决定还是设计并焊接一个外部电路来实现波形转换。波形转换有两种方法:1、使用过零比较器2、使用施密特触发器。由于本题目对输入信号的频率有要求,过零比较器涉及到运放,所以在频率上有限制,为保证频率不影响实现,我们选用数字的电路即施密特触发器,数字电路一般频率可以达到几十兆,所以肯定能够符合要求,见下图:VO2Figure4A/D:本题发挥部分要求采集正弦信号的峰值,所以涉及A/D
6、转换部分,由于输入信号频率在10Hz100KH乙由于采样定理,采样频率必须为被采样信号的两倍,虽然实际中最好为十倍,我们最后还是采用了两倍。Msp430g2553此款芯片A/D采集过程若要稳定起码需要30个时钟,我的A/D模块选用时钟源smclk,其频率为8MHz则8MHz除去30约为267KH乙其大于100KHz的两倍,基本满足要求,在之前采集频率的过程中我们有产生一个1s中断,A/D平常每采集一次便把采集的值与最大值比较,把最大值留下,1s选取一次最大值显示,并把之前最大值清除。显示:显示我们采用LCD1602采用四条数据线,三条控制线,在保证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);/微调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否在忙,即能否接收数据和指令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;/读入状态信息高四位数据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;/读入状态信息低四位数据_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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 研究针对性护理干预在接受长程视频脑电图监测患者中的临床应用价值
- 市场新员工培训
- 2024-2025学年佛山市高二语文上学期期末教学质量检测试卷
- 2025年小提琴专业水平测试卷:国内外著名小提琴曲演奏分析试题
- 2025年法律职业资格考试民法法律咨询专项试题卷
- 2025年小学语文毕业升学考试全真模拟卷(基础夯实版)-小学语文阅读理解能力训练实战
- 统计质量管理在现代制造业中的应用-2025年统计学期末试卷
- 2025年网络安全培训考试题库:网络安全防护技术与应用实践试题
- 热水锅炉定期检验工作制度
- 1200×650mm真空蒸镀技术协议
- 总复习(教案)2023-2024学年数学 四年级下册 北师大版
- 2022 年山东省职业院校技能大赛高职组复杂部件数控多轴联动加工技术赛项-试题图纸
- 【青松雪】中考数学几何模型【模型08】费马点最值模型
- 【项目方案】湖北省石首楚源“源网荷储”一体化项目方案
- DL∕T 241-2012 火电建设项目文件收集及档案整 理规范
- 2024风电场架空线路融冰技术规范
- 浅谈国家国家中小学智慧教育平台在初中数学教学中的运用
- 化学运行值班员试题库
- 济南泛华AI-6000介损仪说明书
- 2024-2029年中国β-内酰胺类抗生素行业市场现状分析及竞争格局与投资发展研究报告
- 北京海淀区-第2学期高二数学教概率统计教材分析-(64)课件
评论
0/150
提交评论