如可控制一个LED由亮变暗???

[复制链接]
9972|31
epsmc 发表于 2010-4-17 10:20 | 显示全部楼层
AD采集电位器,PWM控制LED
yewuyi 发表于 2010-4-7 08:19

正解,最节省、最灵活的办法
Light_David 发表于 2010-4-18 20:29 | 显示全部楼层
采集8位AD直接丢PWM CCPR1L,PR2置0XFF
完美实现,
初学时和同学打赌,整个程序20个指令完成,同学不信结果我赢了,好像是16个指令完成的,包括AD采集电压的Delay,当时是用汇编,哎~现在想想当时的学习激情,真是。,,
lesliexy 发表于 2017-11-27 13:21 | 显示全部楼层
是的,I/O口难以直接调节输出电流,其是数字的,仅能调整0或1通断。
hanlie9876 发表于 2017-11-27 13:49 | 显示全部楼层
还用684芯片,我们用684用得很多啊!
地瓜patch 发表于 2017-11-30 22:24 | 显示全部楼层
因为人眼对led明暗的敏感性不大,能区分3-5中明暗级别就很不错了。不适合这种方案
13249060342 发表于 2017-12-5 17:18 | 显示全部楼层
论坛有类似的案例,你可以收下的
tobyran 发表于 2017-12-7 09:07 | 显示全部楼层
LED渐明渐暗,频率不用太高,只要超过0.12K就可以了,用定时器做吧,给你一个参考的例子

if(TMR0IF)//4/32*256*2=64 us
  {
    TMR0IF=0;

      pwm_time++;  if(pwm_time>=100)pwm_time=0;   // 1/(100*64/1000)=156.25HZ
      if(pwm_time<=PWM)  LED=0;      else LED=1;  


改变PWM值就改变了LED的亮度
wanhuatom 发表于 2017-12-13 12:10 | 显示全部楼层
Light_David 发表于 2010-4-18 20:29
采集8位AD直接丢PWM CCPR1L,PR2置0XFF
完美实现,
初学时和同学打赌,整个程序20个指令完成,同学不信结果 ...

这个才是最好的解决方法
kaventwahaha 发表于 2018-3-11 21:34 | 显示全部楼层
是比较简单的应用,随便找本教材,应该都有说明的!自己综合一下!
JLennon 发表于 2018-3-16 08:51 | 显示全部楼层
这是我用curiosity开发板写的一个例子,你看看吧。
  1. #include "p16f1619.inc"

  2. ; CONFIG1
  3. ; __config 0xFFFC
  4.     __CONFIG _CONFIG1, _FOSC_INTOSC & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_ON
  5. ; CONFIG2
  6. ; __config 0xFFFF
  7.     __CONFIG _CONFIG2, _WRT_OFF & _PPS1WAY_ON & _ZCD_OFF & _PLLEN_ON & _STVREN_ON & _BORV_LO & _LPBOR_OFF & _LVP_ON
  8. ; CONFIG3
  9. ; __config 0xFF9F
  10.     __CONFIG _CONFIG3, _WDTCPS_WDTCPS1F & _WDTE_OFF & _WDTCWS_WDTCWSSW & _WDTCCS_SWC
  11. ;*******************************************************************************
  12. ; Reset Vector
  13. ;*******************************************************************************

  14. RES_VECT  CODE    0x0000            ; processor reset vector
  15.     GOTO    START                   ; go to beginning of program

  16. ;*******************************************************************************
  17. ; MAIN PROGRAM
  18. ;*******************************************************************************

  19. MAIN_PROG CODE                      ; let linker place main program

  20. START
  21.     ;***************************************************************************
  22.     ;初始化系统时钟
  23.     BANKSEL        OSCCON
  24.     MOVLW        0x38
  25.     MOVWF        OSCCON
  26.     ;***************************************************************************
  27.     ;初始化I/0
  28.     BANKSEL        PORTA
  29.     CLRF        PORTA
  30.     CLRF        PORTB
  31.     CLRF        PORTC
  32.     BANKSEL        TRISA
  33.     MOVLW        0x11
  34.     MOVWF        TRISA
  35.     CLRF        TRISA
  36.     MOVLW        0xF0
  37.     MOVWF        TRISB
  38.     MOVLW        0xDF
  39.     MOVWF        TRISC
  40.     BANKSEL        ANSELA
  41.     CLRF        ANSELA
  42.     CLRF        ANSELB
  43.     MOVLW        0x01
  44.     MOVWF        ANSELC
  45.     BANKSEL        WPUA
  46.     CLRF        WPUA
  47.     CLRF        WPUB
  48.     ;CLRF        WPUC
  49.     MOVLW        0x01                        ;POT1弱上拉会增加采样电压,否则最低亮度太暗
  50.     MOVWF        WPUC
  51.     BANKSEL        OPTION_REG
  52.     BCF                OPTION_REG,NOT_WPUEN
  53.     ;***************************************************************************
  54.     ;初始化ADC
  55.     BANKSEL        ADCON0
  56.     MOVLW        0x11
  57.     MOVWF        ADCON0
  58.     CLRF        ADCON1
  59.     CLRF        ADCON2
  60.     CLRF        ADRESL
  61.     CLRF        ADRESH
  62.     BSF                ADCON0,            ADGO
  63.     ;***************************************************************************
  64.     ;TMR2初始化
  65.     BANKSEL        T2CLKCON
  66.     CLRF        T2CLKCON                ;FOSC/4
  67.     CLRF        T2HLT                        ;自由运行周期,软件门控
  68.     MOVLW        0x01
  69.     MOVWF        T2RST
  70.     MOVLW        0xFF
  71.     MOVWF        PR2
  72.     CLRF        TMR2
  73.     BCF                PIR1,            TMR2IF
  74.     BSF                T2CON,            TMR2ON
  75.     ;***************************************************************************
  76.     ;初始化PWM1
  77.     BANKSEL        CCP1CON
  78.     MOVLW        0x9F
  79.     MOVWF        CCP1CON                        ;MODE PWM,EN enabled,FMT left_aligned;
  80.     CLRF        CCPTMRS                        ;Selecting Timer 2
  81.     ;MOVLW        0x03
  82.     MOVLW        0xCC
  83.     MOVWF        CCPR1H
  84.     ;MOVLW        0x32
  85.     MOVLW        0x80
  86.     MOVWF        CCPR1L
  87.     BANKSEL        RC5PPS
  88.     MOVLW        0x0C
  89.     MOVWF        RC5PPS                        ;Set RC5(D7) as output of CCP1 using PPS
  90. ;*******************************************************************************
  91. ;主程序
  92. MAIN
  93.     BANKSEL        ADCON0
  94.     BTFSC        ADCON0,            ADGO
  95.     GOTO        $-1
  96.     CALL        LOAD_TO_CCP1
  97.     GOTO        MAIN
  98. LOAD_TO_CCP1
  99.     MOVF        ADRESH,            W
  100.     BANKSEL        CCPR1H
  101.     MOVWF        CCPR1H
  102.     BANKSEL        ADRESL
  103.     MOVF        ADRESL,            W
  104.     BANKSEL        CCPR1L
  105.     MOVWF        CCPR1L
  106.     ;***************************************************************************
  107.     ;再次开启ADC
  108.     BANKSEL        ADCON0
  109.     BSF                ADCON0,            ADGO
  110.     RETURN
  111.    
  112.     END
读书人 发表于 2018-4-7 14:49 | 显示全部楼层
来看看
772740573 发表于 2018-4-12 13:40 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部