云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于MSP430G2211实现的简易信号发生器(景振华) - 图文

基于MSP430G2211实现的简易信号发生器(景振华) - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/5/25 21:05:34

个点占用1K字节的存储空间。在正弦波相位和幅值量化表中存储的数值相对于是以256个时钟为总周期的PWM调制波的高电平值。

PWM调制的本质是改变波形中高电平的比例,实际是波形在一个周期内的“面积”。

如果将PWM调制波进行低通滤波,取出其直流成分(平均值),滤除后的输出电压将线性正比于PWM的占空比。根据这个原理可以利用PWM输出作为低速DAC使用。

在软件中,DCO的时钟被配置为15.25MHz,但实际测试为15.802368MHz。SMCLK

的时钟源为DCOCLK。定时器TA的时钟源为SMCLK。定时器TA的CCR0为256,而且为了得到稳定的幅值,让正弦波的一个点持续输出占空比相同的60个PWM波形。相当于采样频率为:fclk?15802368/?256*60??1029Hz 则由公式6得:?f?

fclk1029Hz??1Hz 2N210当M=2时,相当于在1029Hz的采样率下,一个波形只取了512个点,输出波形为2Hz。

所以可得fout?M。利用此原理本作品实现了1到100Hz正弦波的产生。

以上对DDS原理和如何在软件中实现进行了介绍,下面软件具体内容进行介绍。

第二节 程序流程图进行介绍

(1) 主程序流程图

开机后,主程序首先关闭看门狗,接着对相应的I/O口、系统时钟、定时器TA进行初始化,完成后开总中断。然后,执行main函数。主程序流程图如图3.1所示。

开始系统初始化Main()函数 图3.1 主程序流程图

(2) 定时器中断服务程序流程图

定时器TA的中断服务程序中主要处理将相应频率的波转化成对应的PWM波输出。定时器中断服务程序流程图如图3.2所示。

定时器TA中断判断信号标志位Y正弦波标志位=1?N三角波标志位=1?N锯齿波标志位=1?YY三角波信号输出Y正弦波信号输出锯齿波信号输出返回

图3.2 定时器中断服务程序流程图

(3) 按键中断服务程序流程图

按键中断服务程序中主要处理波形的选择、频率的加减、信号输出使能等功能。按键中断服务程序流程图见图3.3。

按键中断N有按键?Y信号选择键按下?N“频率+”按下?NY是否长时间按下?YY输出频率加1是否长时间按下?Y输出频率快速递增Y关闭信号输出;置其他信号标志位;“频率-”按下?N“输出使能键”按下?N中断标志位清零输出频率减1输出频率快速递减Y信号输出返回

图3.3 按键中断服务程序流程图

第三节 子程序API介绍

(1) 函数名:void Port_init(void)

输入输出变量:无 功能:IO口初始化 void Port_init(void) {

P1SEL|=BIT2;//TA0.1 P1DIR|=BIT2;

P1DIR|=(BIT3+BIT4+BIT5);

P1OUT|=BIT5;//初始为Sine,点亮相应指示灯 P1OUT&=~(BIT3+BIT4); //四个按键

P1DIR&=~(BIT6+BIT7); P1IES|=BIT6+BIT7; P1IE|=BIT6+BIT7;

P2DIR&=~(BIT6+BIT7);//设为输入 P2SEL&=~(BIT6+BIT7);//关闭第二功能 P2IES|=BIT6+BIT7;//下降沿触发 P2IE|=BIT6+BIT7;//开中断 }

(2) 函数名:void Sys_clock_init(void)

输入输出变量:无 功能:系统时钟配置 void Sys_clock_init(void) {

DCOCTL = 0x60;//DC0=3

BCSCTL1= 0x8F;//0X88-RSEL=8 DCOCLK=1.6MHz 0X8F-RSEL=15 DCOCLK=15.25MHz for(unsigned int i=0;i<65535;i++);//延时,使系统时钟稳定 }

(3) 函数名:void TA_init(void)

输入输出变量:无 功能:定时器TA初始化 void TA_init(void) {

TACTL|=TASSEL_2+MC_1;//TA时钟源选择SMCLK,增计数模式 TACCTL1=OUTMOD_7;//模式7,PWM输出模式 TACCR0=255;

TACCTL0|=CCIE;//打开中断 }

(4) 函数名:__interrupt void TA_ISR (void)

输入输出变量:无

功能:定时器TA中断服务程序 #pragma vector=TIMERA0_VECTOR __interrupt void TA_ISR (void) {

if(WaveSelect==5)//Sine {

Count_line++;

if(Count_line>Sin_line) {

TACCR1=sin[M]; M+=Delt_M;

if(M>=1024) M=M-1024; Count_line=0; } }

if(WaveSelect==10)//Triangle {

Count_line++;

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

个点占用1K字节的存储空间。在正弦波相位和幅值量化表中存储的数值相对于是以256个时钟为总周期的PWM调制波的高电平值。 PWM调制的本质是改变波形中高电平的比例,实际是波形在一个周期内的“面积”。如果将PWM调制波进行低通滤波,取出其直流成分(平均值),滤除后的输出电压将线性正比于PWM的占空比。根据这个原理可以利用PWM输出作为低速DAC使用。 在软件中,DCO的时钟被配置为15.25MHz,但实际测试为15.802368MHz。SMCLK的时钟源为DCOCLK。定时器TA的时钟源为SMCLK。定时器TA的CCR0为256,而且为了得到稳定的幅值,让正弦波的一个点持续输出占空比相同的60个PWM波形。相当于采样频率为:fclk?15802368/?256*60??1029Hz 则由公式6得:?f? fclk

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com