PWM对电压的调节
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
unsigned char table1[] = { 0xFB, 0X70, 0XD7, 0XF5, 0X7C, 0XBD, 0XBF, 0XF0, 0XFF, 0XFD };
//IO口初始化
void IO_Init()
{
P1DIR &= ~BIT3; //P1.3输入状态
P1REN |= BIT3; //P1.3口上拉电阻使能
CCR0 = PWMPeriod; //设置PWM周期
CCTL1 = OUTMOD_7; //设置PWM输出模式为:7 - PWM复位/置位模式,
//即输出电平在TAR的值等于CCRx时复位,当TAR的值等于CCR0时置位。
TACTL = TASSEL_2 + MC_1; //设置TIMERA的时钟源为SMCLK,计数模式为up
break;
case 9:Ht1621WrByteData(0x02, table[8]);
Ht1621WrByteData(0x04, table[2]);
Ht1621WrByteData(0x06, table1[3]);
break;
}
if(num == 10)
{
num = 0;
}
if(i == 500)
Ht1621WrByteData(0x04, table[6]);
Ht1621WrByteData(0x06, table1[2]);
break;
case 8:Ht1621WrByteData(0x02, table[7]);
Ht1621WrByteData(0x04, table[9]);
Ht1621WrByteData(0x06, table1[2]);
CCR1 = 0;
_EINT(); //开总中断
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
if((P1IN & BIT3) == BIT3)
{
__delay_cycles(15000);
if((P1IN & BIT3) == BIT3)
7pwm复位置位模式即输出电平在tar的值等于ccrx时复位当tar的值等于ccr0时置位
#include "msp430g2553.h"
#include "HT1621.h"
unsigned char table[] = { 0xEB, 0x60, 0xC7, 0xE5, 0x6C, 0xAD, 0xAF, 0xE0, 0xEF, 0xED };
break;
case 3:Ht1621WrByteData(0x02, table[2]);
Ht1621WrByteData(0x04, table[3]);
Ht1621WrByteData(0x06, table1[1]);
break;
case 4:Ht1621WrByteData(0x02, table[5]);
P1OUT |= BIT3; //P1.3口上拉电阻
P1IES |= BIT3; //下降沿中断
P1IE |= BIT3; //P1.3口使能中断
P1DIR |= BIT2; //设置P1.2为输出
P1SEL |= BIT2; //设置P1.2为TA0.1输出
}
static unsigned int i = 0;
Ht1621WrByteData(0x04, table[6]);
Ht1621WrByteData(0x06, table1[0]);
break;
case 2:Ht1621WrByteData(0x02, table[9]);
Ht1621WrByteData(0x04, table[9]);
Ht1621WrByteData(0x06, table1[0]);
break;
case 6:Ht1621WrByteData(0x02, table[1]);
Ht1621WrByteData(0x04, table[3]);
Ht1621WrByteData(0x06, table1[2]);
break;
case 7:Ht1621WrByteData(0x02, table[4]);
{
i += 50;
CCR1=i;
switch(num++)
{
case 0:Ht1621WrByteData(0x02, table[3]);
Ht1621WrByteData(0x04, table[3]);
Ht1621WrByteData(0x06, table1[0]);
break;
case 1:Ht1621WrByteData(0x02, table[6]);
Ht1621WrByteData(0x04, table[6]);
Ht1621WrByteData(0x06, table1[1]);
break;
case 5:Ht1621WrByteData(0x02, table[8]);
Ht1621WrByteData(0x04, table[9]);
Ht1621WrByteData(0x06, table1[1]);
{
i = 0;}ຫໍສະໝຸດ P1IFG &= ~BIT3;
}
}
}
static unsigned char num=0;
void main(void)
{
unsigned const PWMPeriod = 500;
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
IO_Init(); //IO口初始化
HT1621_Init();
Ht1621WrAllData();//LCD清屏
//IO口初始化
void IO_Init()
{
P1DIR &= ~BIT3; //P1.3输入状态
P1REN |= BIT3; //P1.3口上拉电阻使能
CCR0 = PWMPeriod; //设置PWM周期
CCTL1 = OUTMOD_7; //设置PWM输出模式为:7 - PWM复位/置位模式,
//即输出电平在TAR的值等于CCRx时复位,当TAR的值等于CCR0时置位。
TACTL = TASSEL_2 + MC_1; //设置TIMERA的时钟源为SMCLK,计数模式为up
break;
case 9:Ht1621WrByteData(0x02, table[8]);
Ht1621WrByteData(0x04, table[2]);
Ht1621WrByteData(0x06, table1[3]);
break;
}
if(num == 10)
{
num = 0;
}
if(i == 500)
Ht1621WrByteData(0x04, table[6]);
Ht1621WrByteData(0x06, table1[2]);
break;
case 8:Ht1621WrByteData(0x02, table[7]);
Ht1621WrByteData(0x04, table[9]);
Ht1621WrByteData(0x06, table1[2]);
CCR1 = 0;
_EINT(); //开总中断
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
if((P1IN & BIT3) == BIT3)
{
__delay_cycles(15000);
if((P1IN & BIT3) == BIT3)
7pwm复位置位模式即输出电平在tar的值等于ccrx时复位当tar的值等于ccr0时置位
#include "msp430g2553.h"
#include "HT1621.h"
unsigned char table[] = { 0xEB, 0x60, 0xC7, 0xE5, 0x6C, 0xAD, 0xAF, 0xE0, 0xEF, 0xED };
break;
case 3:Ht1621WrByteData(0x02, table[2]);
Ht1621WrByteData(0x04, table[3]);
Ht1621WrByteData(0x06, table1[1]);
break;
case 4:Ht1621WrByteData(0x02, table[5]);
P1OUT |= BIT3; //P1.3口上拉电阻
P1IES |= BIT3; //下降沿中断
P1IE |= BIT3; //P1.3口使能中断
P1DIR |= BIT2; //设置P1.2为输出
P1SEL |= BIT2; //设置P1.2为TA0.1输出
}
static unsigned int i = 0;
Ht1621WrByteData(0x04, table[6]);
Ht1621WrByteData(0x06, table1[0]);
break;
case 2:Ht1621WrByteData(0x02, table[9]);
Ht1621WrByteData(0x04, table[9]);
Ht1621WrByteData(0x06, table1[0]);
break;
case 6:Ht1621WrByteData(0x02, table[1]);
Ht1621WrByteData(0x04, table[3]);
Ht1621WrByteData(0x06, table1[2]);
break;
case 7:Ht1621WrByteData(0x02, table[4]);
{
i += 50;
CCR1=i;
switch(num++)
{
case 0:Ht1621WrByteData(0x02, table[3]);
Ht1621WrByteData(0x04, table[3]);
Ht1621WrByteData(0x06, table1[0]);
break;
case 1:Ht1621WrByteData(0x02, table[6]);
Ht1621WrByteData(0x04, table[6]);
Ht1621WrByteData(0x06, table1[1]);
break;
case 5:Ht1621WrByteData(0x02, table[8]);
Ht1621WrByteData(0x04, table[9]);
Ht1621WrByteData(0x06, table1[1]);
{
i = 0;}ຫໍສະໝຸດ P1IFG &= ~BIT3;
}
}
}
static unsigned char num=0;
void main(void)
{
unsigned const PWMPeriod = 500;
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
IO_Init(); //IO口初始化
HT1621_Init();
Ht1621WrAllData();//LCD清屏