MSP430的占空比可调的PWM信号发生器源程序
[复制链接]
PWM通过看书还算不难,比较难的到是矩阵键盘选择输出;基于MSP430F5438A单片机的占空比可调的PWM信号发生器;通4x4矩阵键盘控制占空比大小,显示在LCD12864液晶上;
单片机源程序如下:
#include <msp430x54x.h>
#include "12864.h"
#include "XT.h"
#include "key.h"
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uint num;
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;
initsys();//TX2时钟初始化
P4DIR |= 0x06; // P4.1 and P4.2 输出
P4SEL |= 0x06; // P4.1and P4.2 选择
TBCCR0 = 24000;
// PWM 周期定义 24000/24M=0.001s ,频率为500Hz
TBCCTL1 = OUTMOD_7; // CCR1 比较输出模式7,复位/置位
TBCCR1 = 12000; //CCR1 50%占空比定义 12000/24000=0.5
TBCCTL2 = OUTMOD_7; // CCR2 比较输出模式7,复位/置位
TBCCR2 = 12000; // CCR2 50%占空比 12000/24000=0.50
TBCTL=TBSSEL_2+MC__UP+TBCLR;//(TASSEL_2)定时器时钟源为SMCLK=24MHz ,
//(MC__UP)增计数模式,不分频,开中断
P9DIR|=0xff;//液晶控制端口
P9OUT =0xff;
P8DIR|=0xff;//液晶数据端口
P8OUT =0xff;
P1DIR =0xf0;//矩阵键盘设置P1.0-P1.3 为输入方向
P1OUT =0xf0;
LCD_Init(); //LCD12864初始化
diaply();//数据显示
// diaply1();
_EINT();
while(1)
{
key_display();//按键值显示
}
}
|