Londrina2009
JEAN FERNANDO DOS SANTOS VIEIRA
CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICASTECNOLOGIA EM AUTOMAÇÃO INDÚSTRIAL
MICROCONTROLADORESRelatório de utilização
Londrina2009
MICROCONTROLADORESRelatório de utilização
Trabalho apresentado à Universidade Norte do Paraná - UNOPAR, como requisito parcial para a obtenção de média bimestral na disciplina de Microcontroladores
Orientador: Prof. Miguel Angel Chincaro Bernuy
JEAN FERNANDO DOS SANTOS VIEIRA
SUMÁRIO
1 INTRODUÇÃO.....................................................................................................3
2 BÁSICO................................................................................................................4
2.1 Materiais Utilizados para o experimento...........................................................4
2.2 Código fonte......................................................................................................5
2.3 Resultados obtidos............................................................................................6
3 INTERMEDIÁRIO.................................................................................................9
3.1 Materiais...........................................................................................................9
3.2 Código fonte....................................................................................................10
3.3 Resultados obtidos..........................................................................................12
4 AVANÇADO.......................................................................................................13
4.1 Materiais.........................................................................................................14
4.2 Código fonte....................................................................................................14
4.3 Resultados obtidos..........................................................................................16
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.
3
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
DESLIGALEDNÃO
SIM
4
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()
{
5
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)
6
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.
7
Figura 4 – Fluxograma da nova aplicação para acender o Led
INÍCIO
CONFIGURAR
BOTÃO APERTAD
O2?
LIGA LED
DESLIGALED
NÃO
NÃO
BOTÃO APERTAD
O1?SIM
NÃO
8
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
SIM
9
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)
Arquivo modulointermediario.c
10
#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);
}
}
}
11
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
Figura 7 – Posição desligada
12
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
13
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 "C:\TEMP\moduloavancado.h"
14
#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;
printf(lcd_putc,"Valor= %u", analo);
15
}
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 9 – Posição do reostato no máximo
16
Figura 10 – Posição do reostato no mínimo
Figura 11 – Posição do reostato no centro
17
Figura 12 – Posição do reostato no qual existe um erro de leitura
18
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.
19
6 REFERÊNCIAS BIBLIOGRÁFICAS
PEREIRA, Fábio. Microcontroladores PIC: técnicas avançadas. São Paulo: Érica, 2002.
SOUZA, David José de. Desbravando o PIC. São Paulo: Érica, 2000.
20
Top Related