Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Nossos objetivos
Quando criamos o nosso primeiro treinamento, baseado no livro “Desbravando o PIC”,
dedicamos muitas horas de trabalho para que tudo saísse dentro do grau de excelência
requerido pela Mosaico. Acreditamos que o reconhecimento de nossos alunos e o crescente
número de formandos é a confirmação da qualidade do nosso trabalho. Entretanto, era nossa
intenção desde o começo, a qual foi confirmada pelas solicitações de nossos alunos, que os
sistema de ensino da Mosaico para o PIC fosse muito mais abrangente.
O objetivo deste segundo curso é exatamente este: complementar o conhecimento dos
usuários do PIC. Enquanto o primeiro módulo destinava-se ao aprendizado da linguagem
assembly, utilizando-se para isso dos recursos disponíveis no PIC16F84, é nossa intenção
agora aprimorar seus conhecimentos nos demais recursos da família PIC, além da integração
com periféricos práticos e totalmente necessários nos dias de hoje, como varredura de
displays, LCD e comunicação RS-232.
Os pré-requisistos
Entretanto, tudo isso exige um conhecimento prévio. Por isso, para um bom desempenho neste
treinamento, é necessário que o aluno já conheça e domine a linguagem assembly do PIC, assim
como as ferramentas de trabalho: o MpLab e um sistema de gravação. Como já dissemos, nossa
intenção não é o ensino da programação básica, mas sim a exploração de recursos avançados e
sistemas complementares. Caso você ainda não domine a linguagem, recomendamos primeiro o
“Treinamento Assembly – Módulo I”, aquele dedicado na obra “Desbravando o PIC”.
A sistemática do treinamento
Mais uma vez houve, por parte da Mosaico, grande empenho em relação a didática e ordem
cronológica aplicada ao treinamento. Consideramos esta sistemática muito importante para o
desempenho do aluno.
Desta vez resolvemos dividir este material em 5 grandes partes:
Aulas práticas
Todos os recursos e funções estudados estão divididos em 10 aulas práticas. Cada uma
destas aulas possui uma estruturação padronizada, baseada nos seguintes tópicos:
· Introdução: Explicações gerais sobre os assuntos estudados;
· Teoria: Quando necessário, detalha o embasamento teórico obrigatório para o
entendimento do assunto em questão;
· Recursos do PIC: Detalhamento dos recursos do PIC que serão utilizados nos
exemplos expostos, com a explicação do funcionamento, registradores envolvidos,
etc. Muitas vezes este tópico pode estar agrupado com o anterior;
· Fluxograma: Este tópico apresentará o fluxograma de operação para complementar a
lógica apresentada anteriormente e facilitar o entendimento do exemplo;
· Código: O código propriamente dito, em assembly, para o exemplo da aula;
· Dicas e comentários: Dicas, manhas, comentários importantes e demais
desdobramentos resultantes da utilização do exemplo apresentado;
· Exercícios propostos: Outros problemas e questões que podem ser discutidos e
resolvidos com os recursos já aprendidos.
Um fato importante é que com esta sistemática todos os tópicos relacionados a um
determinado assunto encontram-se agrupados na mesma aula, desde o embasamento teórico
até o exemplo estudado e os exercícios propostos. Desta forma, cada aula torna-se independente
das demais, podendo ser estudada separadamente.
Projeto final
Ao término das aulas será apresentado um projeto prático envolvendo a medição de
temperatura, com atuadores manuais para aquecimento e resfriamento. Trata-se de um exemplo
capaz de utilizar os recursos adicionais da placa McLab2 (sistema de temperatura) utilizando as
práticas aprendidas durante o treinamento.
Apêndices
Como já conhecemos as características marcantes de nossos treinamentos e alunos, os
apêndices tornaram-se obrigatórios em nossos materiais didáticos. Eles são de grande valia aos
alunos que se transformam em programadores dedicados, pois tornam-se fontes de consulta
permanentes. Desta forma, tentamos colocar nos apêndices informações úteis ao dia a dia do
programador, seguindo, sempre que possível, a formatação e termos utilizados nas literaturas
técnicas da própria Microchip.
CD-Rom
Ao adquirir este treinamento, você estará recebendo também um CR-Rom para facilitar seu
acesso as informações adicionais. Nele será encontrado:
· Os códigos-fonte dos exemplos apresentados;
· O MpLab completo para instalação;
· O data sheet e especificação de gravação in-circuit (ICSP) do PIC 16F877;
· Os data sheets dos componentes adicionais: LCD e memória;
· O software M2Com para comunicação serial RS232;
· O esquema elétrico completo da placa McLab2;
Padrões textuais
Para facilitar o entendimento deste material, alguns padrões textuais foram utilizados:
Capítulo 7 - Aula 3: Operação com Display de Cristal Líquido (LCD)
Introdução
Dando continuidade às melhorias no sistema de interface com o usuário, veremos agora a
operação com display de cristal líquido. Estes displays são muito mais poderosos que os
displays de segmentos, pois possuem muito mais caracteres e são alfanuméricos. Entretanto,
são também mais caros e com uma visualização inferior, pois os caracteres não possuem
iluminação própria e são de tamanho bem reduzido.
1 1 1 1 1 9 8 7 6 5 4 3 2 1 1 1
4 3 2 1 0 6 5
Neste LCD possuímos 16 pinos para ligação do mesmo ao nosso projeto. A tabela seguinte
identifica cada um destes pinos:
+5V
7 VDD 2 10K
DB0
8
DB1 VO 3
9 VSS 1
DB2
10
DB3
11 RS
DB4
12 4
DB5 RS
13 6
DB6 EN EN
14 5
DB7 R/W
LCD
+5V
RESET 10K
+5V
MC1
1 32
MCLR VDD
2 31
RA0 VSS
3 40
RA1 RB7
4 39
RA2 RB6
5 38
RA3 RB5
6 RA4 RB4 37
7 36
RA5 RB3
RS 8 RE0 RB2
35
+5V EN 9 34
RE1 RB1
10 33
RE2 RB0
11 30
VDD RD7
12 29
VSS RD6
13 28
OSC1 RD5
14 27
OSC2 RD4
15 22
RC0 RD3
16 21
4MHz RC1 RD2
17 20
RC2 RD1
18 19
RC3 RD0
23 26
RC4 RC7
24 25
RC5 RC6
PIC16F877
S0 S1 S2 S3
Fluxograma
INÍCIO
VETOR DE RESET
PULA P/ INÍCIO DO
PROGRAMA
CONFIGURAÇÕES INICIAIS
PORTAS, TIMERS,
INTERRUPÇÕES, OPTION, ADs.
Sim
LIMPA A RAM ATRAVÉS
DO END. INDIRETO
INICIALIZA VARIÁVEIS
INICIALIZAÇÃO DISPLAY
ENVIA COMANDO 0x30 P/ DISPLAY
DELAY DE 4ms
INICIALIZA DISPLAY
ENVIA COMANDO 0x38 P/ DISPLAY P/ 8 VIAS DE DADOS
DELAY DE 1ms
DESLOCAR CURSOR À
ENVIA COMANDO 0x06 P/ DISPLAY DIREITA
1
Código
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONECTANDO O PIC – EXPLORANDO RECURSOS AVANÇADOS *
; * EXEMPLO 3 *
; * *
; * CENTRO DE TREINAMENTO – MOSAICO ENGENHARIA *
; * *
; * TEL: (0XX11) 4992-8775 SITE: www.mosaico-eng.com.br *
; * (0XX11) 4992-8003 E-MAIL: mosaico@mosaico-eng.com.br *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * VERSÃO : 1.0 *
; * DATA : 10/05/2002 *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DESCRIÇÃO GERAL *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; ESTE EXEMPLO FOI ELABORADO PARA EXPLICAR O FUNCIONAMENTO DO MÓDULO DE LCD.
; FOI CRIADA UMA ROTINA PARA ESCREVER COMANDOS OU CACACTRES NO LCD. EXISTE
; TAMBÉM UMA ROTINA DE INICIALIZAÇÃO NECESSÁRIA PARA A CORRETA CONFIGURAÇÃO
; DO LCD. OS BOTÕES CONTINUAM SENDO MONITORADOS. UMA MENSAGEM É ESCRITA
; NO LCD PARA CADA UM DOS BOTÕES, QUANDO O MESMO É PRESSIONADO.
;
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
__CONFIG _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _WRT_ENABLE_OFF & _BODEN_OFF &
_PWRTE_ON & _WDT_ON & _XT_OSC
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; ESTE BLOCO DE VARIÁVEIS ESTÁ LOCALIZADO LOGO NO INÍCIO DO BANCO 0
TEMPO1
TEMPO0 ; CONTADORES P/ DELAY
ENDC
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS INTERNAS DO PIC *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; O ARQUIVO DE DEFINIÇÕES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE
; OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS, SEM A NECESSIDADE
; DE REDIGITAÇÃO.
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DOS BANCOS DE RAM *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; OS PSEUDOS-COMANDOS "BANK0" E "BANK1", AQUI DEFINIDOS, AJUDAM A COMUTAR
; ENTRE OS BANCOS DE MEMÓRIA.
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * FIM DO PROGRAMA *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Dicas e Comentários
Apesar da estrutura do sistema ficar muito simples com a implementação da rotina ESCREVE,
nunca se esqueça de confirmar o estado da saída RS antes de utilizá-la. Conforme empregado
neste exemplo, recomendamos deixar RS=1 como valor padrão, alterando-o para 0 sempre que
desejar escrever algum comando. Em seguida, retornar RS=1 (padrão) para enviar dados.
Para enviar um caractere ao LCD, não se esqueça que deve ser especificado o seu código
ASCII. Para facilitar a sua vida, o MpLab efetua esta conversão quando você digita um caractere
entre aspas simples (Ex: ‘A’). Neste caso, existe diferença entre maiúsculas e minúsculas. Para
caracteres não printáveis, seu código pode ser diretamente definido (Ex: 0x35). O MpLab, assim
como a maioria dos programas para Windows, também aceita a especificação de um caractere
que não aparece no teclado através da combinação da tecla ALT seguido do código ASCII,
imprimindo o resultado na tela. O problema é que nem sempre o código ASCII é equivalente ao
mesmo símbolo para o LCD e para a fonte do MpLab.
Apesar da placa McLab2 possuir ligação com o módulo de LCD através de 8 vias de dados é
possível utilizá-la para testar e implementar a comunicação com 4 vias. Basta modificar a rotina de
inicialização e a de escrita de um byte.
Exercícios Propostos
Agora que o exemplo já foi estudado e esclarecido, aproveite para gerar novos problemas e
soluções, seguindo os exercícios propostos:
1. Altere a comunicação para 4 vias;
2. Mantenha a tela principal disponível somente quando o sistema é ligado. Após alguns
segundos, mostre uma tela com o nome das quatro teclas e indique a tecla pressionada
através de um caractere de seta (? ) ou outro qualquer.