PROGRAMAÇÃO DIMMER
Por: Eemmaannuueellyy • 29/5/2017 • Trabalho acadêmico • 1.888 Palavras (8 Páginas) • 262 Visualizações
ANHANGUERA EDUCACIONAL – KROTON
UNIDADE GUARULHOS
ENGENHARIA ELÉTRICA
MICROCONTROLADORES E MICROPROCESSADORES
GUARULHOS
2017
PROPOSTA DO PROJETO
Criação de um controle de intensidade de luz (Dimmer) em uma lâmpada 12v (ou um LED de auto brilho) com controle de aumento e diminuição de intensidade (2 botões) e display de 7 segmentos para exibir o valor atual da intensidade.
ETAPAS DE PROJETO
Para chegar ao objetivo final desse projeto, foram cumpridas 7 etapas (listadas abaixo), onde em cada uma delas gradativamente os conceitos necessários foram estudados.
ETAPAS:
- Botão / LED;
- Delay (Temporização);
- Display de 7 segmentos temporizado;
- Display de 7 seguimentos acionado por botões;
- Problema de projeto, modificação de Hardware;
- PDW (Controle de intensidade);
- Controle de intensidade de luz (Dimmer).
Componentes utilizados:
- 1 PIC 16F628A;
- 9 Resistores;
- 2 Botões;
- 1 LED;
- 1 Proto Board;
- 1 Display 7 SEG Anodo comum;
FLUXOGRAMA
[pic 2]
ESQUEMA ELÉTRICO
[pic 3]
CÓDIGO FONTE
#include "P16F628A.INC" ; ADICIONA A BIBLIOTECA DO PIC
;CONFIGURA BITS DE CONFIGURAÇAO
__CONFIG _BOREN_OFF & _CP_OFF & _PWRTE_OFF & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _INTOSC_OSC_NOCLKOUT
; AREA PARA CRIACAO DE VARIAVEIS
CBLOCK 0x20
T1; VARIAVEL PARA ARMAZENAR UM VALOR PARA O DELAY
T2; VARIAVEL PARA ARMAZENAR UM VALOR PARA O DELAY
CONTADOR; VARIAVEL PARA ARMAZENAR UM VALOR PARA O CONTADOR
ENDC
; VETOR DE RESET
ORG 0X00
GOTO INICIO
; VETOR DE INTERRUPCAO
ORG 0X04
RETFIE
;______________________________________________________________________________
INICIO
CLRF PORTA ;LIMPAR O PORT A (DEIXAR TUDO EM NIVEL LOGICO 0V)
CLRF PORTB ;LIMPAR O PORT B (DEIXAR TUDO EM NIVEL LOGICO 0V)
;SELECIONA BANCO 1
BSF STATUS,RP0
MOVLW B'00000000'
MOVWF TRISA ;CONFIGURA PORT A COMO SAIDA
MOVLW B'11110111'
MOVWF TRISB ; CONFIGURA O RB3 COMO SAIDA PARA O PWM E OS BOTOES DE SUBIDA DE DESCIDA DO PWM.
MOVLW B'0000000' ;CONFIGURA OPTION
MOVWF OPTION_REG
MOVLW B'00000000' ; CONFIGURA INTCON
MOVWF INTCON
MOVLW B'00001000' ;CONFIGURA OSCILADOR INTERNO EM 4 MHZ
MOVWF PCON
TR2.249 ;
;SELECIONA BANCO 0
BCF STATUS,RP0
MOVLW B'00000101'
MOVWF CMCON
;INICIALIZACAO DO PWM
MOVLW B'00000101'
MOVWF T2CON
MOVLW B'1111' ; MOVER O VALOR QUE SERA ULTILIZADO PARA CONFIGURAR A FUNÇÃO PWM PARA O REGISTRADOR W.
MOVWF CCP1CON ; (CCP1CON Utilizado para configurar o modo de operação (captura, comparação ou PWM) e configurar os 2 bits menos significativo do duty cycle)
CLRF CCPR1L; INICIA O PWM EM ZERO, ( CCPR1L É ULTILIZADO PARA CONFIGURA OS 8 BITS MAIS SIGNIFICATIVOS DO PWM)
;______________________________________________________________________________
MAIN; INICIO
MOVLW 0X00 ; ACIDIONAR O VALOR "0" NA VARIAVEL W.
MOVWF CONTADOR ; MOVER O VALOR DA VARIAVEL W PARA A VARIAVEL CONTADOR.
EXIBIR_NO_DISPLAY ; CHAMA SUBROTINA EXIBIR_NO_DISPLAY.
CALL ATUALIZA ; CHAMA SUBROTINA PARA APRESENTAR O VALOR DA VARIAVEL "CONTADOR" NO DISPLAY DE 7 SEGMENTOS.
CALL VERIFICACAO_DO_PWM ;SUBROTINA PARA VERIRIFICAR VALOR DA VARIAVEL CONTADOR E ADICIONAR O PERCENTUAL NA SAIDA DO PWM.
BTFSS PORTB,1 ; VERIFICA SE O BOTAO (RB1) ESTA PRESIONADO; SE ESTIVER EXECUTE A PROXIMA INSTRUCAO SENAO, EXECUTE A SEGUNDA INSTRUCAO.
GOTO INCREMENTAR_INICIO ; SALTA PARA LABEL INCREMENTAR_INICIO
BTFSS PORTB,0 ; VERIFICA SE O BOTAO (RB2) ESTA PRESIONADO; SE ESTIVER EXECUTE A PROXIMA INSTRUCAO SENAO, EXECUTE A SEGUNDA INSTRUCAO.
GOTO DECREMENTAR_INICIO ; SALTA PARA LABEL DECREMENTAR_INICIO.
GOTO EXIBIR_NO_DISPLAY ; CHAMA SUBROTINA EXIBIR_NO_DISPLAY.
;______________________________________________________________________________
...