005 tutpro pisca pisca led
TRANSCRIPT
Coleção TUTPRO
Tutoriais sobre programação de microcontroladores
Solbet LtdaExpandindo a percepção humana
Neste volume: Pisca pisca com led e o
PIC16F877A - Linguagem “C”
versão 1.0 Campinas 16/12/2007
1/7
Sumário
Objetivo deste tutorial..........................................................................................................................3
Recursos necessários para acompanhar este tutorial ...........................................................................3
Como se acende um LED utilizando um microcontrolador?...............................................................4
Montando o hardware necessário para o experimento:........................................................................4
O desenvolvimento do fimrware..........................................................................................................5
2/7
Objetivo deste tutorial
Este tutorial se destina aqueles que estão se iniciando na programação de
microcontroladores. Seu objetivo é demonstrar como podemos utilizar as portas do PIC16F877A
para fazer um led piscar numa cadencia predeterminada.
Após estudar este tutorial e realizar os experimentos aqui descritos, você saberá um
pouco mais sobre como a utilizar as portas digitais do PIC, no modo saída e entrada digital.
Recursos necessários para acompanhar este tutorial
Compilador “C”. Utilizamos neste exemplo o CCS, mas você pode experimentar com
outros compiladores. Uma versão gratuita você pode obter em:
http://www.ccsinfo.com/demopoll.php
Software sbMaster: Disponível gratuitamente:
versão Linux: http://www.solbet.com.br/softwares/sbMaster.tar.gz
versão Windows: http://www.solbet.com.br/softwares/sbMasterInstall.exe
Manual do PIC16F877A: http://www.solbet.com.br/manuais/manf877.pdf
Manual do Powerboard2:
http://www.solbet.com.br/manuais/ManualUsuarioPowerboard2.pdf
Placa Powerboard2: Este programa irá operar nas versões Light, Standard e Xtreme.
http://www.solbet.com.br/produtos.php
Cabo RS232-C DB9 macho/fêmea.
http://www.solbet.com.br/produtos.php
Fonte de alimentação 9V, 500mA.
http://www.solbet.com.br/produtos.php
3/7
Caso o seu micro não tenha porta serial RS232C disponível, será necessário também um
conversor USB para serial.
Um LED
Um resistor de 150 ohms.
E principalmente, vontade de aprender.
Como se acende um LED utilizando um microcontrolador?
Utilizaremos uma saída digital do microcontrolador PIC16F877A. Observe a figura 1.
Ela mostra como é o circuito para se acender um LED. Com a saída do PIC em nível lógico 0 (zero
volts), o LED estará aceso. Com a saída em nível lógico 1 o LED estará apagado.
Vamos utilizar para o nosso experimento o bit correspondente ao bit zero da PORTD.
De uma maneira resumida identificamos este bit como PORTD,0. Caso você ainda não saiba o que
são as portas de um microcontrolador, leia inicialmente o nosso tutorial básico disponível em
http://www.solbet.com.br/downloads/notas_aplicacao/001_TUTPRO_BASICO.pdf.
Montando o hardware necessário para o experimento:
Monte um circuito como explanado na figura 1. O uso de placas de montagem
temporária (protoboards) é muito interessante, por não exigir solda e não estragar os componentes.
Deixe dois fios, de preferencia vermelho (para ligar os cinco volts) e preto (para ligar no conector
da Powerboard2 correspondente ao PORTD,0. Os cinco volts podem ser obtidos da própria placa
Powerboard, no conector marcado como Vcc. Monte também o interruptor, o resistor de 10000
ohms. O interruptor é ligado na PORTD,1. Siga a figura 1.
Identifique na placa (através do manual do Powerboard2 ou da serigrafia) :
O conector com cinco volts: (vcc)
O conector da PORTD,0 (RD0)
4/7
Ligue o fio vermelho da montagem do LED no conector com cinco volts.
Ligue o fio preto da montagem do LED no conector da PORTD,0
Ligue a porta serial do Powerboard2 à porta serial do seu micro ou ao conversor
USB/RS232C.
Ligue a alimentação a placa. O led vermelho DA PLACA deverá se acender, indicando
a alimentação.
Pronto, o hardware está pronto para o nosso desenvolvimento do firmware.
Figura 1: Circuito para acionar o LED a partir da portD,0
O desenvolvimento do fimrware
Você deve ter notado, talvez com algum desapontamento, que o LED do protoboard não
acendeu, sequer piscou. Isto aconteceu porque, quando você energiza o PIC, todas as PORTAS são
inicializadas como entrada. A PORTD,0 está também como entrada. Nesta configuração ela possui
uma alta impedância de entrada e a corrente que flui é insuficiente para acender o LED.
O nosso software deve então:
1- programar a PORTD,0 para ser uma saída.
2-Ficar lendo a PORTD,1 (entrada) num loop contínuo. Sempre que o interruptor for
acionado a porta vai para zero(veja no esquema porque isto conteve). Qdo a porta RD1 vai a zero,
5/7
temos que fazer a porta RD0 também igual a zero, ou seja, acendemos o LED.
Utilizando um compilador “C” o programa é muito simples. Digite o programa abaixo
em um editor qualquer ou na IDE do seu compilador. Salve o arquivo com o nome tutorial005.c .
#include <16F877A.h> // seleciona o PIC16F877A#fuses HS,PUT,BROWNOUT,WRT,NOWDT#use delay (clock=10000000) //diretiva necessária para se utilizar a função
#ZERO_RAM
void main() {
setup_adc_ports(NO_ANALOGS); // nao usaremos nenhum porta analogica setup_adc(ADC_OFF); // desligamos o conversor AD setup_psp(PSP_DISABLED); // nao utiizamos a porta PSP setup_spi(FALSE); // nao utilizamos a porta SPI setup_counters(RTCC_INTERNAL,RTCC_DIV_2); //configuracao TMR0 default setup_timer_1(T1_DISABLED); // desabilitarmos o TMR1 setup_timer_2(T2_DISABLED,0,1); // desabilitamos o TMR2 setup_comparator(NC_NC_NC_NC); // desabilitamos os comparadores setup_vref(FALSE); // desabilitamos a tensão de referencia
while(true) // fica em loop continuo, piscando para sempre { output_bit( PIN_D0, 0); // liga o led delay_ms(1000); // fica um segundo aceso output_bit(PIN_D0,1); // desliga o led delay_ms(1000); // fica um segundo apagado }}
Após inserir este código no compilador e acionar a compilação, é gerado um arquivo
chamado tutorial005.hex. O formato hexa é um formato padrão gerado pelos compiladores e
montadores. Este aquivo em formato hexa deve agora ser transferido para o PIC.
Utilizando o Powerboard, como ele já possui um carregador embutido, esta
transferência é muito simples. Basta conectar a porta serial do Powerboard na porta serial do micro
e ativar o programa SbMaster, disponível na home page da Solbet.
Usando o SbMaster, selecione em primeiro lugar o item Configuração do menu
principal e ajuste os parâmetros da porta serial para a porta disponível no seu computador e o
6/7
formato 9600, 8, N, 1. Feche o programa após selecionar estes parâmetros e abra novamente. Se
você tiver escolhido uma porta inexistente ou já ocupada uma mensagem correspondente lhe será
apresentada. Corrija a porta e repita o passo.
Após configurada a serial pressione o botão SbTerm . Olhe na parte inferior e encontre o
botão “Upload 38400”. Click com o mouse neste botão.
Na caixa de texto selecione o arquivo tutorial005.hex.
Assim que começarem a aparecer pontos na tela superior, pressione e libere o botão de
reset do Powerboard. O arquivo hex começara a ser transmitido para o Powerboard.
Ao final da transferência o programa entra automaticamente em execução. O LED
ficará piscando a uma cadencia de 1 segundo apagado, 1 segundo aceso.
Parabéns: Você acabou de completar o Tutorial005 de programação de microcontroladores!
7/7