以文本方式查看主题

-  Microchip PIC单片机论坛  (http://picbbs.net/index.asp)
--  MICROCHIP 8位单片机应用  (http://picbbs.net/list.asp?boardid=4)
----  [求助] PIC16F1939的PWM问题  (http://picbbs.net/dispbbs.asp?boardid=4&id=4468)

--  作者:qq1072049809
--  发布时间:2018-2-3 8:47:00
--  [求助] PIC16F1939的PWM问题
我想用已经固定的板子去用PWM点亮数码管里面的LED,可图片点击可在新窗口打开查看是就是亮不起来,直接用寄存器控制可以亮,难道是我配置的PWM错了?如图

D口连接三极管的b基,也就是D口置高电平后,三极管导通,B口才能控制LED亮灭。图片点击可在新窗口打开查看



图片点击可在新窗口打开查看


#include<pic.h>

__CONFIG(FOSC_INTOSC&CLKOUTEN_OFF&MCLRE_ON&WDTE_OFF);
__CONFIG(LVP_OFF);

void TIMER2_INIT();

void main()
{  
    TRISB=0x00;
    TRISD=0x00;
    PORTD = 0XFF;
    TIMER2_INIT();
     
    while(1)
    {;}
}

void TIMER2_INIT()
{
    CCPTMRS0 = 0xF3;  //CCP2和CCP3选择Timer2作为定时器
    TMR2 = 0;              //装初值,比如TMR2=60,则从60开始计数。到256后重新返回60。
    PR2 = 255;                //PWM周期,只有用到PWM时才配置。根据时钟频率可以算出具体值,后面的占空比是根据这个时间来分的。这一点和STM32不一样。
    CCP2CON = 0X3C;        //通过将合适的值装入CCPxCON寄存器来配置CCP模块使之工作于PWM模式。
    CCP3CON = 0X3C;
    CCPR2L = 0X3F;       //PWM的占空比的高8位,低2位在CCPxCON中。DCxB<1:0>
    CCPR3L = 0XF3;
   
    TMR2IF = 0;          //清零中断标志位
    T2CON = 0X05;      //定时器分频比和使能定时器    
}


[此贴子已经被作者于2018-2-3 8:51:32编辑过]