英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4978|回复: 3
打印 上一主题 下一主题

通过调节电位器改变占空比的程序 zhuan

[复制链接]
跳转到指定楼层
1#
发表于 2012-8-21 18:43:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用电阻器调节占空比,频率不变(需求的频率是1000Hz,用的是外部晶振16M, PR2设为255,TMER2预分频值设为16,这样算下来频率应该是976Hz)


include <p18cxxx.h>
#pragma config FOSC = HS
#pragma config PWRT = OFF
#pragma config WDTEN = OFF
void adinit(void)
   {
    TRISAbits.TRISA3=1;    //设置RA3为输入方式
    ADCON0 = 0x0F;        //选择A/D通道为RA3,打开A/D转换器
    ADCON1 = 0x00;       //选择VDD和地作为参考电压源,且把RA3口设置为模拟量输入方式
    ADCON2 = 0x8D;      //转换结果右对齐,在工作状态,且使AD转换时钟为16tosc
    PIE1 = 0x00;
    PIE2 = 0x00;
    PIE1bits.ADIE = 0;      //A/D转换中断禁止
    INTCONbits.PEIE = 0;  //外围中断禁止
    ANSELbits.ANS3=1;           //设置模拟输入
    ADCON0bits.GO_DONE=1;       //A/D转换启动  
   }
void pwm_init(void)         
   {
    CCPR2L=ADRESL;
    CCP2CON=0x0C;
    CCP2CON|=((ADRESH<<4)&0x30);  
    INTCON=0x00;
    PR2=0xFF;           
    T2CON=0x06;                  //设置预分频比为16
    TRISCbits.TRISC1=0;     //设置CCP2引脚为输出方式

   }
void main(void)
{
  pwm_init();
  adinit();
while(1)
{
  CCPR2L=ADRESL;
  CCP2CON|=((ADRESH<<4)&0x30);  
  ADCON0bits.GO_DONE=1;       //A/D转换启动  
}
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-23 22:55 , Processed in 0.055992 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表