Sei sulla pagina 1di 21

CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS

TECNOLOGIA EM AUTOMAÇÃO INDÚSTRIAL

JEAN FERNANDO DOS SANTOS VIEIRA

MICROCONTROLADORES
Relatório de utilização

Londrina
2009
JEAN FERNANDO DOS SANTOS VIEIRA

MICROCONTROLADORES
Relató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

Londrina
2009
SUMÁRIO

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
3

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.
4

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.

INÍCIO

CONFIGURAR

BOTÃO
APERTAD
O? NÃO DESLIGA
LED

S
I
M

LIGA LED

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
5

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()
{
6

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)
7

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.
8

INÍCIO

CONFIGURAR

BOTÃO BOTÃO
APERTAD NÃO APERTAD SIM LIGA LED
O2? O1?

N
Ã
O
O

N
Ã

DESLIGA
LED

Figura 4 – Fluxograma da nova aplicação para acender o Led


9

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.

INÍCIO

CONFIGURAR

BOTÃO
APERTADO
? NÃO MENSAGEM:
SAÍDA DESATIVADA
Desliga Led

S
I
M

MENSAGEM:
SAÍDA ATIVADA
Liga Led

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
10

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
11

#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);
}
}
}
12

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


13

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).

INÍCIO

CONFIGURAR

Leitura
Analógico/Digital

Escreve na linha 2 do LCD


a leitura

Figura 8 – Fluxograma da aplicação para analisar o valor analógico e converte-lo em digital


14

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"
15

#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);
16

}
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


17

Figura 10 – Posição do reostato no mínimo

Figura 11 – Posição do reostato no centro


18

Figura 12 – Posição do reostato no qual existe um erro de leitura


19

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.
20

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.

Potrebbero piacerti anche