PIC16F914输出可调占空比PWM波形

发布者:真实幻想最新更新时间:2019-11-21 来源: 51hei关键字:PIC16F914  可调占空比  PWM波形 手机看文章 扫描二维码
随时随地手机看文章

#include
typedef unsigned int uint;
typedef unsigned char uchar;
#define KEY0_DOWN()  (RB4==0)//定义按键按下
__CONFIG(0X1014);//内部时钟
uchar KEY0_FLAG=0;
/*************************/ 
//OSC SET; INTER 4MHZ PERIOD 1US
/*************************/ 
void OSC_INIT()
{
  OSCCON=0X67;//设置内部时钟4MHZ
}
/*************************/ 
//DELAY FUNCTION();
/*************************/ 
void delay(uint z)
{
   uint x,y;
   for(x=z;x>0;x--)
     for(y=110;y>0;y--);
}
/*************************/ 
//GPIO SET;
/*************************/ 

void GPIO_INIT()
{
  TRISC5=0;//RC5 SET PWM OUT;
  TRISD2=0;//RD2 SET PWM OUT;
  RC5=RD2=0;
  TRISB4=1;
  IOCB4=1;//使能RB4电平变化中断
  WPUB=0X10;//使能上拉
  RBIE=1;
  RBIF=0;
  PEIE=1;
  GIE=1;
}
/*************************/ 
//PWM MODEL INIT;
/*************************/ 
void PWM_INIT()
{
  CCP1CON=0B00001100;//PWM 模式
  CCP2CON=0B00001100;//PWM 模式
  T2CKPS1=1;
  PR2=155;//PWM周期=【PR2+1】*4*TOSC*T2预分频值 故PWM频率=1/周期=400HZ
  TMR2ON=1;
  CCPR1L=0;//占空比=CCPR1L:CCP1CON<5:4>/4(PR2+1);
  CCPR2L=0;//占空比=CCPR2L:CCP2CON<5:4>/4(PR2+1);
}
void main()
{
  GPIO_INIT();
  PWM_INIT();
  while(1);//初始化完毕等中断响应就OK
}  

//中断响应入口
void interrupt ALL_ISR()//输出10%-100%占空比的PWM波形
{
  if(RBIF)
    {
     delay(5);
     if(KEY0_DOWN())
        {
            KEY0_FLAG++;
            if(KEY0_FLAG==11)KEY0_FLAG=0;
        }
     switch(KEY0_FLAG)
          {
             case 0:CCPR1L=CCPR2L=0;break;
             case 1:CCPR1L=CCPR2L=16;break;
             case 2:CCPR1L=CCPR2L=32;break;
             case 3:CCPR1L=CCPR2L=47;break;
             case 4:CCPR1L=CCPR2L=62;break;
             case 5:CCPR1L=CCPR2L=78;break;
             case 6:CCPR1L=CCPR2L=94;break;
             case 7:CCPR1L=CCPR2L=109;break;
             case 8:CCPR1L=CCPR2L=125;break;
             case 9:CCPR1L=CCPR2L=141;break;
             case 10:CCPR1L=CCPR2L=156;break;
             default:break;
          }
       RBIF=0;
   }

}

关键字:PIC16F914  可调占空比  PWM波形 引用地址:PIC16F914输出可调占空比PWM波形

上一篇:pic18f4550 USB 程序设计
下一篇:PIC32 SPI简介(主/从模式)

推荐阅读最新更新时间:2024-10-27 08:15

PIC16F914输出可调占空比PWM波形
#include pic.h typedef unsigned int uint; typedef unsigned char uchar; #define KEY0_DOWN() (RB4==0)//定义按键按下 __CONFIG(0X1014);//内部时钟 uchar KEY0_FLAG=0; /*************************/ //OSC SET; INTER 4MHZ PERIOD 1US /*************************/ void OSC_INIT() { OSCCON=0X67;//设置内部时钟4MHZ } /*************************/ //DEL
[单片机]
STM32F4_TIM输出PWM波形可调频率、占空比
Ⅰ、概述 上一篇文章关于STM32基本的计数原理明白之后,该文章是在其基础上进行拓展,讲述关于STM32比较输出的功能,以输出PWM波形为实例来讲述。 提供实例工程中比较实用的函数:只需要调用该函数,参数为频率和占空比 void TIM2_CH2_PWM(uint32_tFreq, uint16_tDutycycle); 先看一下实例中1KHz、20%占空比波形图 TIM2_CH2_PWM(1000, 20); 关于本文的更多详情请往下看。 Ⅱ、实例工程下载 笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。 笔者提供的实例工程都是在板子上经过多次测试并
[单片机]
STM32F4_TIM输出<font color='red'>PWM</font><font color='red'>波形</font> (<font color='red'>可调</font>频率、<font color='red'>占空比</font>)
STM32如何实现可调频率、占空比PWM波形,且可指定输出脉冲个数?
读者朋友“*imYan*”问: pwm实现频率可调和占空比可调后怎么来实现输出10个脉冲呢?我这边看有门控或者单脉冲加重复计数,黄老师平时用的什么方法? 我的回答: 使用两个TIM定时器:一个输出可调频率、占空比的PWM,一个对输出PWM脉冲计数(计时)。 1.门控方式能实现,但需要复杂的配置和计算,不推荐。 2.脉冲计数是比较实际,也是比较简单的方式; 对输出PWM脉冲计数(计时)方法有多种: 1.IO中断计数,或同步定时中断计数:用另外一个定时器,按照相同频率中断计数(类似IO中断); 2.由PWM频率和脉冲个数,计算输出全部所需的时间,使用定时中断,关闭输出PWM; 3.利用定时器外部脉冲
[单片机]
STM32F4_TIM输出PWM波形可调频率、占空比
Ⅰ、概述 上一篇文章关于STM32基本的计数原理明白之后,该文章是在其基础上进行拓展,讲述关于STM32比较输出的功能,以输出PWM波形为实例来讲述。 提供实例工程中比较实用的函数:只需要调用该函数,参数为频率和占空比 void TIM2_CH2_PWM(uint32_t Freq, uint16_t Dutycycle); 先看一下实例中1KHz、20%占空比波形图 TIM2_CH2_PWM(1000, 20); 关于本文的更多详情请往下看。 Ⅱ、实例工程下载 笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。 笔者提供的实例工程都是在
[单片机]
STM32F4_TIM输出<font color='red'>PWM</font><font color='red'>波形</font>(<font color='red'>可调</font>频率、<font color='red'>占空比</font>)
MSP实时输出占空比可调pwm波形
// 占空比可调的PWM, 我没试过, 手里没单片机, 只是记下. #include msp430x14x.h void main(void) { volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; // Stop WDT BCSCTL1 |= XTS; // ACLK= LFXT1 = HF XTAL do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFF; i 0; i--) { // Time fo
[单片机]
STM32如何实现可调频率、占空比PWM波形
使用两个TIM定时器: 一个输出可调频率、占空比的PWM, 一个对输出PWM脉冲计数(计时)。 1.门控方式能实现,但需要复杂的配置和计算,不推荐。 2.脉冲计数是比较实际,也是比较简单的方式; 对输出PWM脉冲计数(计时)方法有多种: 1.IO中断计数,或同步定时中断计数:用另外一个定时器,按照相同频率中断计数(类似IO中断); 2.由PWM频率和脉冲个数,计算输出全部所需的时间,使用定时中断,关闭输出PWM; 3.利用定时器外部脉冲触发(外部时钟模式2功能),计数个数为所需脉冲个数(10个脉冲),则关闭输出PWM; STM32定时器 利用阻塞延时,控制IO高低变化输出PWM这种方式就行啦,也很简单。其实,这种方法的弊端很大。
[单片机]
STM32如何实现<font color='red'>可调</font>频率、<font color='red'>占空比</font>的<font color='red'>PWM</font><font color='red'>波形</font>
MSP实时输出占空比可调pwm波形
// 占空比可调的PWM, 我没试过, 手里没单片机, 只是记下. #include msp430x14x.h void main(void) { volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; // Stop WDT BCSCTL1 |= XTS; // ACLK= LFXT1 = HF XTAL do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFF; i
[单片机]
STM32F4_TIM输出PWM波形可调频率、占空比
Ⅰ、概述 上一篇文章关于STM32基本的计数原理明白之后,该文章是在其基础上进行拓展,讲述关于STM32比较输出的功能,以输出PWM波形为实例来讲述。 提供实例工程中比较实用的函数:只需要调用该函数,参数为频率和占空比 void TIM2_CH2_PWM(uint32_t Freq, uint16_t Dutycycle); 先看一下实例中1KHz、20%占空比波形图 TIM2_CH2_PWM(1000, 20); 关于本文的更多详情请往下看。 Ⅱ、实例工程下载 笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。 笔者提供的实例工程都是在板子上
[单片机]
STM32F4_TIM输出<font color='red'>PWM</font><font color='red'>波形</font>(<font color='red'>可调</font>频率、<font color='red'>占空比</font>)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved