Lab-05 LEDs e Displays
Lab-05 LEDs e Displays
Lab-05 LEDs e Displays
RD7 RC0 7 8 9 A
LEDs Linha 4
Figura 2 – Circuito esquemático de conexões de PIC com LEDs e teclado básico.
Quatro pinos da PORTB e 4 pinos da PORTC são usados para implementar mecanismos de varredura para
leitura de um teclado matricial 4x4. Um arranjo matricial de teclas é um método utilizado nos
microcomputadores, pois permite usar um menor número de pinos do processador, necessários para a
varredura um teclado, ou seja, se cada tecla fosse ligada a um pino do processador seriam necessários 16
pinos para acessar individualmente cada tecla. No modo matricial a varredura de um teclado, com 16 teclas,
foi possível com apenas 8 pinos (4 da PORTB e 4 da PORTC).
Como mostrado na Figura 2, para implementar uma varredura, os quatro pinos PORTC<3:0> devem ser
definidas como saídas (TRISC<3:0> = 0000). Os quatros pinos PORTB<3:0> devem ser definidas como
entradas (TRISB<3:0> = 1111).
O processo de identificação de qual tecla está sendo pressionada deve ser realizada por software, onde um
pino da PORTC é colocado em nível baixo e os demais pinos em nível alto. Assim, se uma tecla é
pressionada, um nível lógico zero é transmitido pela coluna onde a tecla está conectada, entrando pelo
correspondente pino da PORTB.
Para permitir o acesso ao teclado matricial, é necessário fechar as chaves CH3(1-4) e CH5(1-4).
PIC16F877A
RE2
RB1
RE1 RB0
RE0
UMIL CENT DEZE UNID 330 RC3
a a RD7
b RD6 RC2
f b c RD5
g d RD4 RC1
e RD3
e c f RC0
g RD2
d p RD1
RD0
DP-4 DP-3 DP-2 DP-1
Figura 3 - Circuito esquemático de conexões de PIC com os Displays de 7 segmentos.
PIC
PICbootPlus
(RC7) Rx Tx
(RC6) Tx Rx
GND GND USB PC
list p=16f877a
#include <p16f877a.inc>
__CONFIG H'2F02'
cblock 0x20
contador1,contador2
endc
org 0x00
goto Inicio
org 0x04
Inicio: bsf PORTA,5
movlw 0xFF
movwf PORTB ; PORTB<3:0> = 1111
movwf PORTC ; linhas desbilitadas
movwf PORTD ; LEDs off
movwf PORTE ; Displays desabilitados
bsf STATUS,RP0 ; banco 1
bcf TRISA,5 ; RA5 como saída
movlw 0x0F
movwf TRISB ; PORTB<3:0> como entrada
clrf TRISC ; PORTC como saída
clrf TRISD ; PORTD como saída
clrf TRISE ; PORTE como saída
movlw 0x06
movwf ADCON1 ; PORTA e PORTE como E/S digitais
movlw 0xDF ; RA5 como saída
movwf TRISA
bcf STATUS,RP0 ; banco 0
loop: bcf PORTC,2 ; habilita linha 2: teclas [1],[2],[3],[C]
btfsc PORTB,0 ; [1] foi pressionada?
goto $+6 ; não, vai testar outra TECLA
movlw 0x9F ; código de 7 seg do digito 1
movwf PORTD
bcf PORTA,5 ; habilita display UMIL
call delay_3ms ; atraso 3ms
bsf PORTA,5 ; desabilita display UMIL
btfsc PORTB,1 ; [2] foi pressionada?
goto $+6 ; não, vai testar outra TECLA
movlw 0x25 ; código de 7 seg do digito 2
movwf PORTD
bcf PORTE,2 ; habilita display CENT
call delay_3ms
bsf PORTE,2 ; desabilita display CENT
btfsc PORTB,2 ; [3] foi pressionada?
goto $+6 ; não, vai testar outra TECLA
movlw 0x0D ; código de 7 seg do digito 3
movwf PORTD
bcf PORTE,1 ; habilita display DECE
call delay_3ms
bsf PORTE,1 ; desabilita display DECE
btfsc PORTB,3 ; [C] foi pressionada?
goto $+6 ; não, vai testar outra TECLA
movlw 0x63 ; código de 7 seg de letra C
movwf PORTD
bcf PORTE,0 ; habilita display UNI
call delay_3ms
bsf PORTE,0 ; desabilita display UNI
bsf PORTC,2 ; desabilita linhas
goto loop
delay_3ms:
movlw D'147'
movwf contador1
movlw D'16'
movwf contador2
decfsz contador1,F
goto $-1
decfsz contador2,1
goto $-3
return
END
Faça a montagem do programa: Project > Build All ou <Ctrl> + <F10>.
b) Procedimento para simulação usando MPLAB-IDE + Proteus
Habilitar a ferramenta no menu Debugger > Select Tool > Proteus VSM
Na janela “Proteus VSM MPLAB viewer” abrir o circuito esquemático do módulo didático.
Na janela de propriedades do µC, anexe o arquivo Lab-05_p2_7seg_e_teclado.hex. Esse arquivo
deve-se encontrar na pasta do projeto.
Inicie a simulação pulsando <F12> ou pulsando o botão da cor verde.
Para executar a simulação, pulse <F9> ou use os controles da barra de ferramentas correspondente.
c) Procedimento para gravar o programa no PIC do módulo didático
Todas as chaves CH2 e CH7 devem estar em OFF (abertas, para baixo)
Execute o programa PICbootPlus, desde a área de trabalho. Na janela do programa, localize o
arquivo Lab-05_p2_7seg_e_teclado.hex. Verifique que sejam selecionados a porta COM ocupado
pelo conversor UART-USB e o baud-rate = 9600. Então, clique no botão Write e na sequência pulse
o botão RESET do módulo didático.
d) Procedimento para testar o programa no módulo didático
Ligue os jumpers e as chaves conforme indicado na Tabela 2, a seguir:
Dispositivos sob teste Jumper ON Chaves ON Jumper OFF Chaves OFF
Displays de 7seg J3 – B CH4(1-8), CH6(1-4) J4
As demais chaves
Teclado básico 4x4 CH3(3), CH5(1-4)
Para testar: enquanto uma tecla da linha 2 for pressionada (teclas [1], [2], [3] ou [C], ver Figura 2),
em um display de sete segmentos, será mostrado um caractere que representa a tecla pressionada.
Porém, se a tecla for solta, o display correspondente será apagado.
9) Avaliação do aprendizado
No dia do Laboratório 06, cada aluno deve apresentar funcionando no módulo didático PIC-2377, os
programas solução dos enunciados a seguir:
Exercício 1: escreva um programa em Assembly para mostrar, nos LEDs, uma contagem binaria crescente
ou decrescente. A contagem crescente será a contagem por default, porém enquanto a tecla [D] é
pressionada, o tipo de contagem deverá mudar decrescente.
Exercício 2: escreva um programa em Assembly para mostrar, nos LEDs, um rotacionamento de bits à
esquerda ou à direita. O rotacionamento à direita será escolhido por default, porém cada vez que a tecla [C]
for pulsada, o tipo de rotacionamento deverá mudar: à esquerda ou à direita.
Exercício 3: escreva um programa em Assembly a fim de mostrar, nos Displays, o caractere que
corresponde a qualquer tecla pressionada, conforme a distribuição de caracteres do teclado básico 4x4
ilustrado na Figura 2.
BOM TRABALHO!