PIC单片机增强型开发板产生两路PWM
//*************************************************************
//|-||-||-|
//| || || |
//__| |________| |_______|_|_____------>PWM1
//
//|----||----||----|
//||||||
//__||_____||____||_------>PWM2
//本实验利用PIC单片机的CCP模块功能产生PWM功能,PWM的周期为:
//(PR2+1)*4TOSC*(TMR2预分频值)
//了解CCP模块的CCP1CON寄存器功能,
//了解TMR2与CCP模块的之间关系,
//掌握对CCP模块的相关寄存器的初始化及设置
//软件平台: HT-PICC编程器与MPLAB集成开发环境
//作者:孙安青(Sun An-qing)
//利用CCP1模块产生的PWM信号由RC2引脚输出,
//同时利用CCP2模块产生的PWM信号由RC1引脚输出,两者都可用示波器即可
//观察到该PWM波形.
修改者:Leo
【PIC单片机增强型开发板产生两路PWM】时间:20101223
显示效果让LED灯显示效果由亮到灭, 再到亮,再到灭。
文章图片
文章图片
代码
#include < pic.h >
__CONFIG(HS & WDTDIS & LVPDIS & PWRTEN); // 对熔丝位进行设置
#define uint unsigned int
uint num = 0 ;
void delay1ms( uint DelayTime)
{
uint temp;
for (; DelayTime > 0 ; DelayTime -- )
{
for (temp = 0 ; temp < 270 ; temp ++ )
{; }
}
}
void main( void )
{
// ***********************************************************
CCP1M3 = 1 ; // Enable CPP1 Work as PWM mode
CCP1M2 = 1 ;
CCP1M1 = 1 ;
CCP1M0 = 1 ;
TRISC2 = 0 ; // Enable RC2 work as output
CCPR1L = 0x10 ; // PWM脉宽值,改变PWM的脉宽,只需改变CCPR1L中的值
CCP1X = 0 ; // 以及CCP1CON中的CCP1X和CCP1Y这两个位的值
CCP1Y = 0 ;
// ***********************************************************
CCP2M3 = 1 ; // Enable CPP2 Work as PWM mode
CCP2M2 = 1 ;
CCP2M1 = 1 ;
CCP2M0 = 1 ;
TRISC1 = 0 ; // Enable RC0 work as output
CCPR2L = 0x20 ; // PWM脉宽值,改变PWM的脉宽,只需改变CCPR2L中的值
CCP2X = 0 ; // 以及CCP2CON中的CCP2X和CCP2Y这两个位的值
CCP2Y = 0 ;
// ***********************************************************
TOUTPS3 = 0 ; // Enable TMR2--->1:1
TOUTPS2 = 0 ;
TOUTPS1 = 0 ;
TOUTPS0 = 0 ;
T2CKPS1 = 1 ; // Enable TMR2--->1:16
T2CKPS0 = 1 ;
TMR2ON = 1 ; // Enable TMR2 Working
TMR2 = 0 ;
while ( 1 )
{
for (; num <= 1023 ; num ++ )
{
PR2 = num; // PWM周期,改变PWM的周期,只需改变PR2中的值即可
delay1ms( 10 );
}
}
}
推荐阅读
- 单片机|单片机初学者做项目为什么这么难(单片机初学者心得有哪些)
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- 单片机|keil把源代码生成lib的方法
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- 单片机|Arduino、arm、树莓派、单片机四者有什么不同()
- whole|whole pic make life wonderful
- 8月影单来了,你会pick哪一部呢
- 穆勒鞋非要pick一双我选EDGII
- 第七届CIPE深圳授权展,我pick呆狸!
- Springboot整合RabbitMQ(三)——Topic主题交换机