单片机产生正弦波_第1页
单片机产生正弦波_第2页
单片机产生正弦波_第3页
单片机产生正弦波_第4页
单片机产生正弦波_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

产生单晶片正弦波一个要求使用单芯片映射430 g 2553和运算放大器lmv358生成正弦波,周期1秒。两个想法您可以用单片机生成PWM,调整参数寄存器值以生成不同的工作周期PWM信号。如果占空比的变化是正弦,那么过滤后可以得到所需的正弦波。其中,脉冲宽度调制(PWM)控制脉宽调制技术是调制一系列脉冲宽度,以获得所需波形(包括形状和振幅)。图1是使用PWM波代替正弦半波的示例。(单芯片输出图1b,过滤后图1a)图1使用PWM波而不是正弦半波三个实践1 PWM周期计算正弦波周期1秒,要显示的PWM信号周期是多少?数字太少则波形不完整(极端情况下仅限一周期PWM)。数量多将增加单片机的计算量,对速度有要求。其中,选择N=200。PWM信号的周期为T=1/200秒=5毫秒。2 PWM参数计算PWM由计时器TimerA生成,由计时器时钟、周期数和高级别数三个关键参数组成。l计时器时钟:计时器时钟源为4个,2个内部(辅助时钟ACLK,子系统主时钟SMCLK),2个外部。使用内部时钟。如果没有外部决定,则ACLK从内部时钟源VLOCLK(低频时钟源,12K赫兹)生成,SMCLK从内部数字时钟DCOCLK(默认为1M赫兹)生成。建议使用更高的频率。部分代码如下:bcsctl 1 |=DIVA _ 0;/ACLK=VLOBCSCTL2 |=SELM _ 0 DIVM _ 0 DIVS _ 0/MCLK=DCO,SMCLK=DCO/Configure TimerAtactl=task S1 MC _ 1;/Source: SMCLK,UP mode其中ACLK可以配置为VLOCLK的1,2,4,8分割。您可以在此处将其设定为1分割。ACLK=VLO;在第二行中,SELM_0负责将选定MCLK的时间源设置为DCOCLK,将DIVM_0设置为MCLK=DCO,将DIVS_0设置为SMCLK=DCO(默认时间源)。Tasksel 1将计时器时钟设置为SMCLK(对于tasksel 0,请选择ACLK),并且不进行频率划分。选择“MC_1”作为“模式上升模式”。使用上述方法设置计时器时钟=SMCLK=DCO=1M赫兹。l周期数:上升模式指示计时器从0增加到上限值CCR0。必须设置CCR0。周期T=1/200秒,计时器时钟=SMCLK=DCO=1M赫兹,计时器周期T=1微秒,因此CCR0=T/t=5000,即5毫秒。l高级计数:当计时器从0增加到上限值CCR0时,必须设置脉宽CCR1。K=CCR1/CCR0的数值每周期(5毫秒)更改一次,变化趋势满足正弦变化,200毫秒构成正弦变化周期。要获取CCR1值,请在MATLAB中输入以下内容:t=0: pi/100:2 * pi;k=(sin(t)1)/2;cc R1=round(4999 * k);可以获得值201 CCR1。上面的第一行设置在0-2pi之间均匀分布的201个数字,第一行和最后一行分别对应于0弧度和2pi弧度。第二行计算具有偏移0.5和整体振幅1的正弦波振幅的201个正弦值,如图2所示。图2偏移为0.5,总振幅为1的正弦波振幅第三行计算CCR1的值,乘以k和CCR0(此处为5000),然后取舍入(round函数)。将数据导出到MATLAB以便于单片机编程:Fid=fopen(exp.txt,w);Fprintf (FID,% d,cc R1);f close(FID);序列CCR1值作为连续的ccr1值(在MATLAB工作目录中包含逗号)生成。复制到程序中并定义阵列temp200。此数组中的数值是由MATLAB生成的数值。3 PWM实施流程程序由两个中断组成:当计时器达到上限CCR0(此处为4999)时运行中断,在中断服务程序中将输出设置为1,当达到中间值CCR1(0到4999)时运行中断,在中断服务程序中将输出设置为0。此外,如果同时发生封锁,则存在封锁嵌套和优先级问题,如果需要将CCR1设置为4999,请手动将其设置为4998。软件过程如图3所示。图3软件流程图程序如下:/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */launch pad la B4-timer toggle p 1.6,/MSP430G2553/-/| XIN|-/| |/rst xout |-/| |/p 1.6 |-led/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#includeShort temp 200=2500,2578,2656,2735,2813,2891,2968,3045,3121,3197,3272,3492,3534,3634,3704,3772,3839,3904,3969,4031,4093,4093,4152,4211,4267,43224425、4474、4522、4567、4610、4651、4690、4727、4761、4793、4823、4851、4877、4900、49004939、4955、4968、4979、4988、4994、4998、4999、4998、4994、4988、4979、4968、4955、4920、4900、4877、4851、4823、4793、4761、4727、4690、4651、4610、4567、4522、4474、4374,4322,4267,4211,4152,4093,4093,4031,3969,3904,3839,3772,3704,36343420、3346、3272、3197、3121、3045、2968、2891、2813、2735、2656、2578、2500、2421、2264、2186、2108、2031、1954、1878、1802、1727、1653、1579、1507、1435、1365、1295、1160,1095,1030,968,906,847,788,732,677,625,525,477,432,389,348238、206、176、148、122、99、79、60、44、31、20、11、5、1、0、1、5、11、148、176、206、238、272、309、348、389、432、477、525、574、625、677、732、7881030、1095、1160、1227、1295、1365、1435、1507、1579、1653、1727、1802、1878、1954、2108,2186,2264,2343,2421 ;int I=0;Void main(void)WDTCTL=WDTPW WDTHOLD/Stop watchdog timerif(cal bc1 _ 1 MHz=0x ff | | cal dco _ 1 MHz=0x ff)while(1);/if calibration constants erased,trap CPU!BCSCTL1=CALBC1 _ 1MHZ/Set rangeDCOCTL=CALDCO _ 1MHZ/Set DCO step modulationbcsctl 3 |=lf xt1s _ 2;/LFXT1=VLOP1DIR=0x40/P1.6绿色LED(output)P1OUT=0;/关闭ledIFG1= OFIFG/Clear OSCFault flagbcsctl 1 |=DIVA _ 0;/ACLK=VLOBCSCTL2 |=SELM _ 0 DIVM _ 0 DIVS _ 0/MCLK=DCO,SMCLK=DCO/Configure TimerAtactl=task S1 MC _ 1;/Source: ACLK,UP modeCCR0=5000/Timer count 5100CCR1=2500/Timer count 100CCTL0=CCIE/CCR0 interrupt enabledCCTL1=CCIE/CCR1 interrupt enabled_ BIS _ SR(GIE);for(;);/timer A0 interrupt service router#pragma vector=TIMER0_A0_VECTOR_interrupt void Timer_A0 (void)P1OUT |=BIT6/P1.6输出高If(i=199)I=0;ElseI;If(tempi=4999)CCR1=4998Elsecc R1=tempI;/timer a1 interrupt vector(ta0iv)handler#pragma vector=TIMER0_A1_VECTOR_interrupt void Timer_A1(void)交换机(ta0iv)case 2330 P1 out= bit 6;/P1.6 output LowBreak案例10:Break4输出过滤器使用Lmv358的输出op放大器。针脚如图4所示。图4 358针脚示意图采用电压控制电压源二次低通滤波电路。见模拟电子技术基础,第3版,儿童诗白色,火星英主编,7.4.2节,352页)。电路图如图5所示。图5电压控制电压源二次低通滤波器电路通带增益:Avp=1 R4/R3传递函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论