Londrina Londrina
2009 2009
JEAN FERNANDO DOS SANTOS VIEIRA
JEAN FERNANDO DOS SANTOS VIEIRA
MICROCONTROLADORES
MICROCONTROLADORES
Relatório de utilização
Relatório de utilização
Londrina Londrina 2009 2009
MICROCONTROLADORES
MICROCONTROLADORES
Relatório de utilização
Relatório de utilização
TrabalTrabalho apresentado à ho apresentado à UniverUniversidade Norte do sidade Norte do Paraná -Paraná -UNOPAR, como requisito parcial para a obtenção de UNOPAR, como requisito parcial para a obtenção de média bimestral na disciplina de Microcontroladores média bimestral na disciplina de Microcontroladores Orientador: Prof. Miguel Angel Chincaro Bernuy Orientador: Prof. Miguel Angel Chincaro Bernuy
1 INTRODUÇÃO...3 2 Básico...4 3 Intermediário...9 4 Avançado...13 5 CONCLUSÃO...19 6 REFERÊNCIAS BIBLIOGRÁFICAS...20
1 INTRODUÇÃO
o microcontrolador é um circuito integrado de custo baixo que contém na sua síntese: memória programável somente para leitura, que armazena permanentemente as instruções programadas; memória RAM, que trabalha armazenando “variáveis” utilizadas pelo programa; CPU, que interpreta e executa comandos desse programa. Existem também dispositivos de entradas e saídas, que tem a finalidade de controle de dispositivos externos ou de receber sinais pulsados de chaves e sensores. Esses componentes se encontram num mesmo circuito integrado.
Este relatório tem como finalidade expor os recursos discretos, o uso de periféricos intermediários, e alguns recursos relacionados à conversão Analógica para digital em microcontroladores.
2 BÁSICO
Nesta aplicação foi desenvolvido um programa que utiliza um botão e um Led, sendo que quando o botão estiver pressionado o led ficará acesso. Caso contrário, o Led ficará apagado.
Utiliza-se neste programa a linguagem C, e as funções bit_test(), output_high(), output_low(), input_a(), SET_TRIS_A(); alem das estruturas condicionais e de loop, if e while.
Inicialmente o programa fará o teste se existe um sinal digital vindo no pino do microcontrolador, caso esteja ele acenderá o Led, pelo contrário ele manterá o estado de repouso do Led (desligado), figura 1.
Figura 1 – Fluxograma da aplicação do Led
2.1 MATERIAIS UTILIZADOS PARA O EXPERIMENTO
PIC 16F628A Resistor 1k Ohm
Botão Normalmente Aberto (NA) LED Resistor 330 Ohm Cristal 4Mhz INÍCIO CONFIGURAR BOTÃO APERTAD O? LIGA LED DESLIGA LED NÃO S I M
Compilador C CCS Simulador Proteus
2.2 CÓDIGO FONTE
Foi configurado o compilador, os fusíveis de programação ativando o PowerUP Timer e Reset Whem Brownout Detect.(que aparecem na tela inicial do assistente de configuração do programa C CCS).
O seguinte código fonte foi utilizado:
Biblioteca do arquivo modulobasico.h #include <16F628A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES RC //Resistor/Capacitor Osc with CLKOUT
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
#FUSES MCLR //Master Clear pin enabled
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD //No EE protection
#use delay(clock=10000000)
Arquivo modulobasico.c
#include "C:\TEMP\modulobasico.h"
void main() {
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); setup_oscillator(False); SET_TRIS_A(0xF1); while(true) { if(bit_test(input_a(),0)) { output_high(PIN_A1); while(input_a(),0); } else { output_low(PIN_A1); while(!input_a(),0); } } } 2.3 RESULTADOS OBTIDOS
Simulando-se no programa Proteus, verificou-se que com o experimento realizado obteve-se o resultado esperado, a aplicação do Led foi realizada com sucesso. Ao fechar o contato NA ligou-se o Led (figura 2), ao abri-lo o Led se apaga (figura 3)
Figura 2 – Led ligado com chave fechada
Figura 3 – Led desligado com chave aberta
Essa aplicação poderia ser trabalhada utilizando-se dois botões um para ligar e o outro para desligar o Led, figura 4.
Figura 4 – Fluxograma da nova aplicação para acender o Led INÍCIO
CONFIGURAR
BOTÃO APERTAD
O2? LIGA LED
DESLIGA LED NÃO N Ã O BOTÃO APERTAD O1? SIM N Ã O
3 INTERMEDIÁRIO
Nesta aplicação foi desenvolvido um programa que utiliza um botão, um Led e um LCD, sendo que quando o botão estiver pressionado o led ficará acesso e no LCD aparecerá a seguinte informação Saída Ativada. Caso contrário, o Led ficará apagado e no LCD ficará escrito Saída Desativada.
Utiliza-se neste programa a linguagem C, e as funções bit_test(), output_high(), output_low(), input_a(), SET_TRIS_B(), lcd_gotoxy(), lcd_putc; alem das estruturas condicionais e de loop, if e while.
Inicialmente o programa fará o teste se existe um sinal digital vindo no pino do microcontrolador, caso esteja ele acenderá o Led e escrever no LCD Saída Ativada, pelo contrário ele manterá o estado de repouso do Led (desligado) e No LCD a Mensagem Saída Desativada, figura 5.
Figura 5 – Fluxograma da aplicação para acender o Led e escrever no LCD
3.1 MATERIAIS
PIC 16F877A
LCD 16X2 (Display de Cristal Líquido) Resistor 1k Ohm INÍCIO CONFIGURAR BOTÃO APERTADO ? MENSAGEM: SAÍDA ATIVADA Liga Led MENSAGEM: SAÍDA DESATIVADA Desliga Led NÃO S I M
Botão Normalmente Aberto (NA) LED Resistor 330 Ohm Cristal 4Mhz Compilador C CCS Simulador Proteus 3.2 CÓDIGO FONTE
Foi utilizado os mesmos recursos de configuração da aplicação anterior.
Biblioteca do arquivo modulointermediario.h
#include <16F877A.h> #device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES RC //Resistor/Capacitor Osc with CLKOUT #FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading #FUSES NODEBUG //No Debug mode for ICD
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=10000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include "C:\TEMP\modulointermediario.h" #include <LCD.C> void main() { setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); SET_TRIS_B(0x02); lcd_init(); while(true) { if(bit_test(input_b(),0)) { lcd_gotoxy(1,1); printf(lcd_putc,"Saida Ativada "); output_high(PIN_B1); } else { lcd_gotoxy(1,1); printf(lcd_putc,"Saida Desativada"); output_low(PIN_B1); } } }
3.3 RESULTADOS OBTIDOS
Simulando-se no programa Proteus, verificou-se que com o experimento realizado não obteve o resultado desejado, a aplicação do Led com recurso de intermediação do LCD, a partir do código fonte especificado não trouxe sucesso. Ao fechar o contato NA ligou-se o Led não ligou, entretanto a mensagem do LCD foi mostrada (figura 6), ao abrir o contato, observou-se que o Led manteu-se apagado, com a mensagem Saída Desativada (figura 7).
Figura 6 – Posição ligada
4 AVANÇADO
Nesta aplicação foi desenvolvido um programa que utiliza um reostato e um LCD, sendo que quando o reostato estiver na posição máxima, no LCD aparecerá a informação do valor máximo referenciado, que na experiência é de 255, quando o reostato estiver no valor mínimo o resultado deve ser 0 (zero) a ser mostrado no LCD, no meio do reostato deve ser a referência 127 que será visível no LCD e nos valores restantes a variação será de acordo com os valores máximo (255) e mínimo (0).
Utiliza-se neste programa a linguagem C, e as funções bit_test(), output_high(), output_low(), input_a(), SET_TRIS_B(), lcd_gotoxy(), lcd_putc, setup_adc_ports (), set_adc_channel(), read adc(); alem das estruturas condicionais e de loop, if e while.
Inicialmente o programa fará o teste se existe um sinal analógico vindo do reostato no pino do microcontrolador, em seguida o microcontrolador fará a conversão analógico/digital para mostrar os valores em decimal no LCD (figura 8).
Figura 8 – Fluxograma da aplicação para analisar o valor analógico e converte-lo em digital
INÍCIO CONFIGURAR Escreve na linha 2 do LCD a leitura Leitura Analógico/Digital
4.1 MATERIAIS
PIC 16F877A
LCD 16X2 (Display de Cristal Líquido) Potenciômetro Resistor 1k Ohm Cristal 4Mhz Compilador C CCS Simulador Proteus 4.2 CÓDIGO FONTE Arquivo moduloavancado.h #include <16F877A.h> #device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES RC //Resistor/Capacitor Osc with CLKOUT #FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading #FUSES NODEBUG //No Debug mode for ICD
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B0,rcv=PIN_B0,bits=8)
#include <LCD.C>
Arquivo moduloavancado.c
void main()
{int analo, refmin, refmax; refmin=0; refmax=255; setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); lcd_init(); while(true) { set_adc_channel(0); analo=read_adc(); lcd_gotoxy(1,2); if(analo<refmin) { analo=refmin; printf(lcd_putc,"Valor= %u",analo); } else if(analo>refmax) { analo=refmax;
} else printf(lcd_putc,"Valor= %u",analo); } } 4.3 RESULTADOS OBTIDOS
Ao ligar o experimento, verificou-se que os dados foram obtidos com sucesso, na posição máxima do reostato o valor que é demonstrado no LCD é de 255 (figura 9), nas posições mínima e central são apresentados os valores de 0 e 127 respectivamente na leitura do LCD (figura 10 e 11), entretanto notou-se que nos valores em que estivessem entre essas duas posições no reostato apresentaram valores inesperados à este experimento o que é demonstrado na figura 12.
Figura 10 – Posição do reostato no mínimo
5 CONCLUSÃO
Por meio deste trabalho, podem-se perceber as características de alguns circuitos utilizando microcontroladores mais conhecidos. Acima de tudo, julga-se necessário um melhor aprimoramento nos comandos relacionados aos recursos de manipulação de dados analógicos e interação com outros dispositivos.
6 REFERÊNCIAS BIBLIOGRÁFICAS
PEREIRA, Fábio. Microcontroladores PIC: técnicas avançadas. São Paulo: Érica, 2002.