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();//按键值显示
- }
- }
复制代码
所有资料51hei提供下载:
PWM信号发生器.zip
(1.53 MB, 下载次数: 280)
|