串口控制的模拟电压产生器.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
串口控制的模拟电压产生器

串口控制的模拟电压产生器 一.需求分析 现实中,能够随意的改变模拟电压在许多控制系统都有着非常重要的应用,准确产生一个有着适当的频率和幅度的正弦波对一个控制系统越来越重要。尤其是一个能通过控制来改变幅度和频率的正弦波发生器更能适应实际生产的要求。于是,我们准备利用LauchPad产生频率和幅度可变的正弦波。 二.任务和要求 利用PC机串行口控制LauchPad产生PWM信号并通过控制PWM信号的占空比,配合外部的低通滤波器,实现模拟0-3.3V电压的产生。 基本要求: 1、模拟电压范围0—3V,步进0.1V。 2、自制低通RC滤波电路。 扩展要求: 3、模拟电压范围0—3V,步进0.01V。 4、自制有源低通滤波电路,通过软件实施控制PWM的占空比输出100Hz的正弦波。 5、其它功能。 三、原理 TIMER简介 PWM波: 在MSP430系列单片机中,都带有一个16位定时器Timer_A,用于精确定时、计时或计数。在普通的定时/计数器的基础上,还添加了3路(某些型号5路)捕获/比较模块,能够在无需CPU干预的情况下自动根据触发条件捕获定时器计数值,或自动产生各种输出波形(如PWM调制、单稳态脉冲等)。输出的PWM波可用于步进电机的调速、控制灯的亮度和开关电源等。 定时器Timer_A分为两个部分:主计数器和比较/捕获模块。主计数器负责定时、计时或计数。计数值(TAR寄存器的值)被送到各个比较/捕获模块中,它们可以在无需CPU干预的情况下根据触发条件与计数器值自动完成某些测量和输出功能。只需要定时、计数功能时,可以只使用主计数器部分,在PWM调制等应用中还需要比较/捕获模块的配合。 定时器的比较/捕获模块工作在比较模式下可以产生PWM波。TACCRx 的值由软件写入,并通过和主计数器的计数值进行比较。每次相等产生EQU信号,由此触发输出逻辑,通过OUTMODE控制位可以配置输出,通 过不同的输出逻辑的配合可以产生各种输出波形。 滤波器的设计 将生成的方波通过滤波器即可获得正弦波。 四、程序设计与调试 程序设计的时候我先学习了msp430定时器模块,了解这个模块的主要内容,然后进行程序的设计编写及调试,调试过程中遇到了一些问题,但最终都被克服掉。最后通过示波器的测试得出对产生的波形进行测试和验证。 五、结论 测试结果达到了设计的主要要求,实现了通过pc机输入占空比和频率来控制方波的发生。进而控制正弦波的幅度和频率,以后,将对其进行扩展的设计以便设计的方波发生器更能适应实际的应用。 六.程序代码 #include msp430.h char flag_o=0; float DTH_L=0; unsigned int TH=10000, TL=2000, T=12000; char Re[5]; float rate=0; int Re_i=0; int main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 DCOCTL = 0; BCSCTL1 = CALBC1_16MHZ; // 设置 DCO为1M DCOCTL = CALDCO_16MHZ; BCSCTL3 |=BIT5; BCSCTL3 =~BIT4; P1SEL = BIT1 + BIT2 ; // 配置引脚 P1SEL2 = BIT1 + BIT2 ; UCA0CTL1 |= UCSSEL_2; // 模块时钟选择为SMCLK UCA0BR0 = 0x82; // 设置波特率 UCA0BR1 =0x6; // 1MHz/104=9600bps UCA0MCTL = UCBRS0; // 调整波特率 UCA0CTL1 = ~UCSWRST; // **使能系统复位** IE2 |= UCA0RXIE; P1DIR |= BIT6; // P1.2 and P1.3 设置为输出 P1SEL |= BIT6; // P1.2 and P1.3 为TA1/2模式 CCR0 = T; // CCR0为PWM周期 CCTL1 = OUTM

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档