发新帖我要提问
12
返回列表

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

[复制链接]
楼主: hzocce
手机看帖
扫描二维码
随时随地手机跟帖
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开发板写的一个例子,你看看吧。
#include "p16f1619.inc"

; CONFIG1
; __config 0xFFFC
    __CONFIG _CONFIG1, _FOSC_INTOSC & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_ON
; CONFIG2
; __config 0xFFFF
    __CONFIG _CONFIG2, _WRT_OFF & _PPS1WAY_ON & _ZCD_OFF & _PLLEN_ON & _STVREN_ON & _BORV_LO & _LPBOR_OFF & _LVP_ON
; CONFIG3
; __config 0xFF9F
    __CONFIG _CONFIG3, _WDTCPS_WDTCPS1F & _WDTE_OFF & _WDTCWS_WDTCWSSW & _WDTCCS_SWC
;*******************************************************************************
; Reset Vector
;*******************************************************************************

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

;*******************************************************************************
; MAIN PROGRAM
;*******************************************************************************

MAIN_PROG CODE                      ; let linker place main program

START
    ;***************************************************************************
    ;初始化系统时钟
    BANKSEL        OSCCON
    MOVLW        0x38
    MOVWF        OSCCON
    ;***************************************************************************
    ;初始化I/0
    BANKSEL        PORTA
    CLRF        PORTA
    CLRF        PORTB
    CLRF        PORTC
    BANKSEL        TRISA
    MOVLW        0x11
    MOVWF        TRISA
    CLRF        TRISA
    MOVLW        0xF0
    MOVWF        TRISB
    MOVLW        0xDF
    MOVWF        TRISC
    BANKSEL        ANSELA
    CLRF        ANSELA
    CLRF        ANSELB
    MOVLW        0x01
    MOVWF        ANSELC
    BANKSEL        WPUA
    CLRF        WPUA
    CLRF        WPUB
    ;CLRF        WPUC
    MOVLW        0x01                        ;POT1弱上拉会增加采样电压,否则最低亮度太暗
    MOVWF        WPUC
    BANKSEL        OPTION_REG
    BCF                OPTION_REG,NOT_WPUEN
    ;***************************************************************************
    ;初始化ADC
    BANKSEL        ADCON0
    MOVLW        0x11
    MOVWF        ADCON0
    CLRF        ADCON1
    CLRF        ADCON2
    CLRF        ADRESL
    CLRF        ADRESH
    BSF                ADCON0,            ADGO
    ;***************************************************************************
    ;TMR2初始化
    BANKSEL        T2CLKCON
    CLRF        T2CLKCON                ;FOSC/4
    CLRF        T2HLT                        ;自由运行周期,软件门控
    MOVLW        0x01
    MOVWF        T2RST
    MOVLW        0xFF
    MOVWF        PR2
    CLRF        TMR2
    BCF                PIR1,            TMR2IF
    BSF                T2CON,            TMR2ON
    ;***************************************************************************
    ;初始化PWM1
    BANKSEL        CCP1CON
    MOVLW        0x9F
    MOVWF        CCP1CON                        ;MODE PWM,EN enabled,FMT left_aligned;
    CLRF        CCPTMRS                        ;Selecting Timer 2
    ;MOVLW        0x03
    MOVLW        0xCC
    MOVWF        CCPR1H
    ;MOVLW        0x32
    MOVLW        0x80
    MOVWF        CCPR1L
    BANKSEL        RC5PPS
    MOVLW        0x0C
    MOVWF        RC5PPS                        ;Set RC5(D7) as output of CCP1 using PPS
;*******************************************************************************
;主程序
MAIN
    BANKSEL        ADCON0
    BTFSC        ADCON0,            ADGO
    GOTO        $-1
    CALL        LOAD_TO_CCP1
    GOTO        MAIN
LOAD_TO_CCP1
    MOVF        ADRESH,            W
    BANKSEL        CCPR1H
    MOVWF        CCPR1H
    BANKSEL        ADRESL
    MOVF        ADRESL,            W
    BANKSEL        CCPR1L
    MOVWF        CCPR1L
    ;***************************************************************************
    ;再次开启ADC
    BANKSEL        ADCON0
    BSF                ADCON0,            ADGO
    RETURN
   
    END

使用特权

评论回复
读书人| | 2018-4-7 14:49 | 显示全部楼层
来看看

使用特权

评论回复
772740573| | 2018-4-12 13:40 | 显示全部楼层
学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则