005 tutpro pisca pisca led

7
Coleção TUTPRO Tutoriais sobre programação de microcontroladores Solbet Ltda Expandindo 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

Upload: claudioregis

Post on 10-Feb-2015

40 views

Category:

Documents


3 download

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