Vous êtes sur la page 1sur 8

DEPARTAMENTO DE ELCTRICA Y ELECTRNICA

CARRERA DE INGENIERA ELECTRNICA Y


TELECOMUNICACIONES

ASIGNATURA MICROCONTROLADORES

INFORME DE LABORATORIO No.2_5

TEMA: PWM
Profesor: Ing. Danny Sotomayor

EQUIPO No5:
Angelo Rodriguez
David Sandoval
Guillermo Rodriguez

SANGOLQU 19-06-2014

1. Tema: PWM (MODULACION POR ANCHO DE PULSOS)


2. Objetivo(s)
2.1.
General
2.2.
Disear un circuito usando el microcontrolador PIC16F877A que mediante dos
teclas del teclado matricial, aumente y con la otra disminuya el pwm
respectivamente.
2.3.
Especficos
Aplicar los conocimientos adquiridos sobre el PWM
3. Diagrama de bloques

4. Valor de los registros de configuracin:


PR2=.255
TRISC= 0XFDH (Pin C1 como salida)
CCPR2L = 127
CCP2CON=0XCH
T2CON = 0x06H

5. Diagrama de flujo:

6. Diagrama electrnico.

7. Clculos
Periodo PWM
PWM = [(PR29+1}*4T*(TMR2 Prescale Value)
PWM = (255+1)*1us*16
PWM= 4096us = 4ms
PWM DUTY CITE
PWMDC=(CCPR2L:CCPICON<5:4>)* TOSC*(TMR2 PRESCALE VALUE)
PWMDC = 508*0,25*16
PWMDC = 2032us

8. Programa:
list
p=16f877a;tipo de procesador
INCLUDE
"P16F877A.Inc"; librerias del registro del pic
__CONFIG(0x3f71);Grabar desde el Programa del PICKIT
DATO EQU 20H
;Define constantes para 20 milisegundos

N
EQU 0x1A
M
EQU 0x0
CONT1 EQU 0x20
CONT2 EQU 0x21
;Define constante para mascara 0xFF (tecla pulsada)
MASQ EQU 22H
ORG 00H
;____________________________CONFIGURACIN_______________________________
_______________________
CONFI
CLRF STATUS
BSF
STATUS,RP0 ;Banco1
MOVLW
0xF0
MOVWF
TRISB
;Puerto B teclado
BCF
OPTION_REG,7 ;Conecta todas las resistencias Pull-Up
BCF
STATUS,RP0 ;Banco 0
CALL INICIA_PWM
;CLRF PORTC
CLRF PORTB
;_________________________________MAIN___________________________________
_________________
INICIO MOVLW
.127
MOVWF

CCPR2L

LOOP MOVLW
0xFF
MOVWF
MASQ
0xFF
CALL DETECTAR
SUBWF
MASQ,1
BTFSS STATUS,Z
GOTO LOOP
CALL CODIFICAR
MOVWF
DATO
puerto C
SUBLW 'A'
BTFSC STATUS,Z
GOTO INC
MOVF DATO,0
SUBLW 'B'

;Almacena en W la mascara 0xFF


;Almacena en masq la mascara
;Llama a la subtutina detect
;Resultado en W=0
;Repite el proceso
;Llama a la subtutina codif
;Mueve la tecla presionada al
;Comparo el valor ingresado

BTFSC STATUS,Z
GOTO DEC
GOTO LOOP
INC
INCFSZ CCPR2L,1
;Incremento Dutty Cicle
GOTO LOOP
GOTO DEC
DEC
DECFSZ CCPR2L,1
;Decremento Dutty Cicle
GOTO LOOP
GOTO INC
;___________________________________PWM__________________________________
______________
INICIA_PWM
BSF
STATUS,RP0
MOVLW
.255
MOVWF
PR2
;Establece periodo del
PWM
BCF
TRISC,1
;Pin C1 como salida
BCF
STATUS,RP0
CLRF CCPR2L
;inicializa Ciclo de Trabajo en cero
MOVLW
0CH
MOVWF
CCP2CON
MOVLW
06H
MOVWF
T2CON
;Habilita Timer 2
RETURN
;__________________________________TECLADO_______________________________
_______________
DETECTAR
CLRF
BTFSS
GOTO
BTFSS
GOTO
BTFSS
GOTO
BTFSS
GOTO
RETLW

PORTB
PORTB,7
REBOTE
PORTB,6
REBOTE
PORTB,5
REBOTE
PORTB,4
REBOTE
0x0

CALL

DELAY_20ms

;activa las cuatro filas


;lee rengln 1,2,3,A
;si tecla presionada limpia rebote
;lee rengln 4,5,6,B
;si tecla presionada limpia rebote
;lee rengln 7,8,9,C
;si tecla presionada limpia rebote
;lee rengln *,0,#,D
;si tecla presionada limpia rebote
;no hubo tecla presionada retorna con w=0

REBOTE
;pausa de 20 milisegundos

BTFSS
RETLW
BTFSS
RETLW
BTFSS
RETLW
BTFSS
RETLW
RETLW

PORTB,7
0xFF
PORTB,6
0xFF
PORTB,5
0xFF
PORTB,4
0xFF
0x0

CODIFICAR

;lee rengln 1,2,3,A


;tecla presionada, retorna con w=0xFF
;lee rengln 4,5,6
;tecla presionada, retorna con w=0xFF
;lee rengln 7,8,9
;tecla presionada, retorna con w=0xFF
;lee rengln *,0,#
;tecla presionada, retorna con w=0xFF
;falsa alarma retorna con w=0
; Se hace un barrido por columnas

; Primera columna
MOVLW
0xF7
MOVWF
PORTB
BTFSS PORTB,7
RETLW '1'
BTFSS PORTB,6
RETLW '4'
BTFSS PORTB,5
RETLW '7'
BTFSS PORTB,4
RETLW '*'
; Segunda columna
MOVLW
0xFB
MOVWF
PORTB
BTFSS PORTB,7
RETLW '2'
BTFSS PORTB,6
RETLW '5'
BTFSS PORTB,5
RETLW '8'
BTFSS PORTB,4
RETLW '0'
; Tercera columna
MOVLW
0xFD
MOVWF
PORTB
BTFSS PORTB,7
RETLW '3'
BTFSS PORTB,6
RETLW '6'
BTFSS PORTB,5
RETLW '9'

;Activa la primera columna


;y activa la columna 1,4,7,*
;Es la tecla 1?
;retorna cdigo del 1
;Es la tecla 4?
;retorna cdigo del 4
;Es la tecla 7?
;retorna cdigo del 7
;Es la tecla *?
;Retorna cdigo del *
;Activa la segunda columna
;y activa la columna 2,5,8,0
;Es la tecla 2?
;retorna cdigo del 2
;Es la tecla 5?
;retorna cdigo del 5
;Es la tecla 8?
;retorna cdigo del 8
;Es la tecla 0?
;Retorna cdigo del 0
;Activa la tercera columna
;y activa la columna 3,6,9,#
;Es la tecla 3?
;retorna cdigo del 3
;Es la tecla 6?
;retorna cdigo del 6
;Es la tecla 9?
;retorna cdigo del 9

BTFSS PORTB,4
RETLW '#'
; Cuarta columna
MOVLW
0xFE
MOVWF
PORTB
BTFSS PORTB,7
RETLW 'A'
BTFSS PORTB,6
RETLW 'B'
BTFSS PORTB,5
RETLW 'C'
BTFSS PORTB,4
RETLW 'D'
RETLW 0x00

;Es la tecla #?
;Retorna cdigo del #
;Activa la tercera columna
;y activa la columna 3,6,9,#
;Es la tecla 3?
;retorna cdigo del 3
;Es la tecla 6?
;retorna cdigo del 6
;Es la tecla 9?
;retorna cdigo del 9
;Es la tecla #?
;Retorna cdigo del #
;falsa alarma, no hay tecla presionada

DELAY_20ms
MOVLW
MOVWF

N
CONT1

;(1) Carga dato N


;(1) inicializa contador1

ciclo externo
REP1 MOVLW
M
;(1) Carga dato M
MOVWF
CONT2
;(1) inicializa contador2
ciclo interno
REP2 DECFSZ
CONT2,1
;(1,2)Decrementa contador2 y escapa si
cero
GOTO REP2
;(2) si no es cero, repite ciclo interno
DECFSZ
CONT1,1
;(1,2)Decrementa contador1 y
escapa si cero
GOTO REP1
;(2) si no es cero repite ciclo externo
RETURN
;(2) regresa de esta subrutina
;_________________________________________________________________________
END

9. Conclusiones y recomendaciones:

Se logr verificar el correcto funcionamiento del PWM del circuito implementado.


Tomar en cuenta la sintaxis de las distintas instrucciones y si las mismas estn
orientadas a registros, bits o constantes.

Vous aimerez peut-être aussi