Controlando um LCD com o PIC16F628A

Controlando um LCD com o PIC16F628A

Controlando um LCD através do PIC16F628A Vitor Amadeu

Todos nós já tivemos contato com um LCD do tipo de cristal líquido. Seja através de um celular, CLP, catracas eletrônicas ou uma máquina que faça interface com o homem, a necessidade de uma IHM (Interface Homem-Máquina) se torna imperativa. Iremos mostrar neste artigo, a utilização de um display de cristal líquido com o microcontrolador mais usado do mundo, que são os microcontroladores da família PIC.

Temos dois tipos de displays no mercado, os alfanuméricos e os gráficos. Os gráficos são os displays comumente encontrados em celulares. Estes displays são caracterizados por pixels ao invés dos alfanuméricos que apresentam números e letras. Apesar do display alfanumérico também poder funcionar em modo gráfico, a maior aplicação deste display é para apresentar texto. Abaixo podemos visualizar um display gráfico e outro alfanumérico:

GráficoAlfanumérico

Nosso projeto consistirá em mostrar uma mensagem no display lcd alfanumérico. A mensagem escolhida será “DISPLAY LCD” porém esta mensagem pode ser alterada sem problemas. O esquema elétrico do nosso exemplo é:

Verifique que todo o PORTB do microcontrolador PIC16F628A está sendo utilizado como linha de dados para o display enquanto dois pinos do PORTA, sendo estes o RA6 e RA7 estão sendo utilizados como linhas de controle para o display. É através das linhas de dados que iremos escrever um caracter em um registrador do display ou posicionar em alguma posição. Através das linhas de controle, iremos informar ao display se iremos escrever um dado ou comando e gerar o pulso de habilitação, para que o mesmo possa ler o barramento de dados. O sinal que informa se o dado presente no barramento é um comando ou dado é a linha RS enquanto a linha EN gera o pulso para o display ler o barramento de dados. Note que a linha R/W está ligada ao terra. Através deste pino, o R/W, podemos ler ou escrever os dados que são apresentados no display. Como o nosso interesse é apenas escrever nos registradores, para que os dados sejam mostrados no display, podemos tranqüilamente aterrar este pino. É através destas linhas que nosso sistema será montado. Note que iremos precisar de uma fonte de 5 VCC para alimentar o PIC e o LCD, abaixo está sendo apresentado uma fonte que pode ser montada pelo leitor. Através de uma fonte de 12VCC comprada facilmente no comércio eletrônico, o leitor poderá montar está fonte para fornecer 5VCC para o sistema:

Todo este material citado pode ser comprado facilmente através do telefone (21)3064-4526 ou através do site w.cerne-tec.com.br . Este projeto pode ser montado através de uma placa padrão ou através de um protoboard ou até mesmo pode ser confeccionada uma placa de circuito impresso.

A lista de material para a placa de controle neste exemplo é: º PIC16F628A; º Display LCD 16x2; º 02 Capacitores 100nF; º Trimpot 10Kohms; º Fios e etc.

Para a fonte é: º Regulador LM7805; º Diodo 1N4007; º 02 Capacitores 100nF; º Capacitor 100uF/50V; º Capacitor 10uF/25V; º Conector KRE02; º Fios e etc.

O fluxograma que rege este exemplo é:

Já definimos toda a parte de hardware e fluxo de software, agora vamos nos ater a parte de software. Para que o microcontrolador funcione, é necessário que o mesmo “rode” um programa. O programa que roda no microcontrolador foi escrito na linguagem BASIC. O compilador utilizado chama-se mikroBASIC e o mesmo pode ser baixado através do link w.mikroelektronika.co.yu. Este compilador é gratuito para versão estudante, que limita o código gerado para gravação do microcontrolador até 2kW. O código que irá “rodar” no microcontrolador é o seguinte:

Veja que todo o programa escrito neste compilador começa com program nome_do_programa e termina com end. Depois notamos um label chamado main. Em todos os nosso programas, será necessário a colocação deste label, pois ele é o label principal. Verificamos também que os registradores trisb e trisa estão configurados como saída, pois os registradores de direção estão em 0 (quando está em 0 é saída de Output e quando está para entrada está em 1, pois é Input). Após esta observação é chamada a função LCD8_Config que faz a configuração das portas de controle e dados do display e logo em seguida a função LCD8_Init que inicializa o display (mais informações consulte o help pressionando F1). Logo em seguida, o próximo comando manda limpar o display através do comando Lcd8_cmd(LCD_CLEAR) e é apresentado o texto “Display LCD” através do comando LCD8_Out(linha,coluna, texto).

program DisplayLCD Main:

trisb=0 trisa=0 LCD8_Config(PORTA, PORTB, 7, 6, 5, 7, 6, 5, 4, 3, 2, 1, 0) LCD8_Init(PORTA,PORTB)

lcd8_cmd(LCD_CLEAR)' limpa o display
LCD8_Out(1,1,"Display LCD")' escreve um texto no lcd

loop_principal: end.

Início

Configurações Iniciais

De I/O Inicialização do display

Mostra “Display LCD” no display

Fim

Após escrever este código e gerar o arquivo a ser gravado no microcontrolador, grave o mesmo através de um gravador de PICs, que também pode ser conseguido facilmente através do site w.cerne-tec.com.br ou pelo telefone (21)3064-4526.

E ai, gostou do projeto? Este é apenas o início de um universo grande denominado desenvolvimento de projetos em microcontroladores. Nas próximas edições iremos explorar outros conhecimentos como IrDA, RC5, USB, Ethernet e outras coisas. Qualquer dúvida, comentário, elogio ou crítica, envie um e-mail para vitor@cerne-tec.com.br ou ligue para (21)3064-4526. Até breve!

Comentários