Display serial com microcontrolador PIC

  
Fotos do protótipo (Outrubro de 2001)

Um display super simples para uso com "microcontroladores" do tipo “Stamp's”, “Step's” e outros. Agiliza o desenvolvimento e economiza pinos de I/O, pois utiliza apenas um único pino! Funciona em modo RS-232 ou modo TTL. No modo RS-232 possui drive para adequar os níveis de tensão (RS-232 para TTL), podendo neste caso ser utilizado com PC's a uma distância de até 30 metros (dependendo exclusivamente da qualidade do abo).

Características técnicas:
Alimentação: 5 VDC
Consumo: menor que 100mA
Comunicação: 2400 a 9600, sem paridade, 8 bits, 1 stop bit
Padrão: RS232 ou TTL normal

Como funciona

O circuito baseia-se no microcontrolador PIC16C54C-04/P Microchip. O microcontrolador é responsável pelo start-up do display e também pelo tratamento da comunicação serial.


Circuito elétrico do display serial

As linhas de I/O do microcontrolador RB0 a RB7 controlam os dados do display, RA1, RA2 e RA3 trabalham as linhas de controle do display (EN, R/W, RS) e RA0 recebe os dados a serem apresentados no display. O display é programado para operar com 8 bits de dados, cursor ligado, texto fixo com deslocamento do cursor para próximo caracter. O cálculo do Baud Rate está baseado no clock do microcontrolador. A velocidade de comunicação pode ser modificada trocando-se o cristal, conforme a tabela abaixo. Não há necessidade de qualquer alteração no software do PIC.

Relação Cristal/Velocidade de comunicação

Cristal

Velocidade

Capacitores C1 e C2

2 MHz

2400 bps

33 pF

4 MHz

4800 bps

22 pF

8 MHz

9600 bps

18 pF

O CI MAX232, é um driver para RS-232. Ele ajusta os níveis de tensão TTL para RS-232 e vice-versa. O jumper J1, permite escolher qual o tipo de entrada para o sinal (TTL/RS232) e deve ser configurado cuidadosamente, de acordo com o trabalho a ser realizado com o display.  O trimpot TP1 ajusta o contraste do display. O cristal de 2MHz e os capacitores de 33pF fazem a oscilação do microcontrolador e podem ser alterados conforme demonstrado na tabela acima.

O circuito pode controlar display’s de 1 e 2 linhas do tipo caracter. Não existe limite para o número de colunas, já que o microcontrolador envia os caracteres para o display sem se preocupar em qual coluna estes serão apresentados. Este “controle” deve ser feito pelo próprio usuário, que deverá saber o número de colunas do seu display e realizar a organização destas, através da pré-formatação do texto a ser apresentado.

Foram inseridos apenas dois comandos básicos no display. Porém se você tem conhecimento na Linguagem Assembly Microchip, poderá implementar outros que lhe sejam necessários. Abaixo a tabela mostra os comandos implementados.

Lista de comandos

Comando

Efeito

0x01

Apaga display e posiciona cursor na 1ª coluna/linha 1

0x02

Posiciona cursor na 1ª coluna/linha 2 (não apaga display)

Observe que os valores para os comandos são os bytes 01H e 02H, 01 e 02 decimais respectivamente. Não vá confundir o valor 01H com o caracter "1" ASCII (31H) ok.

Todo comando deve ser precedido do byte FEH (254 decimal). Assim, para enviar um comando qualquer para o display, basta enviar a seqüência: FEH + comando (01H ou 02H).


Dicas para Montagem

A sua montagem é bem simples e o lay-out da placa pode ser feito a partir da sugestão dada na figura abaixo. Na época que fiz este desenho, usei o Paint do Windows e, portanto, não existe uma versão Eagle, Tango, Orcad, etc. Lembre-se apenas de ao imprimir manter o tamanho original indicado.

Obs.: O desenho oferecido já está invertido. Trata-se do lado da solda ok!


Lay-out sugerido

Para facilitar ainda mais a sua montagem, no momento de inserir os componentes você poderá utilizar as imagens no inicio desta página como referência ou ainda a figura abaixo.


Disposição dos componentes na placa

A lista de materiais é a seguinte:

1 - Display padrão Hitachi
1 - PIC16C54C-04/P
1 - MAX232
1 - XTAL 2MHz (veja tabela)
2 - Cap. 18pF cerâmico (veja tabela)
4 - Cap. 10uFx16V eletrolítico
1 - Trimpot horizontal mini 10K
1 - Barra de pinos (20 pinos)

Para a alimentação do display você terá de montar uma fonte com 5VDC devidamente regulados. Abaixo dou uma sugestão para o circuito. Ah, desta vez não tem lay-out de placa ok. Uma excelente oportunidade para você praticar o desenho de lay-outs, não acha???


Circuito para fonte 5VDC

Caso você utilize um display com back-ligth, sugiro aumentar a corrente do transformador para 500 mA ok. A ligação do back-ligth é feita de maneira direta na fonte de 5VDC, com o uso de um resistor limitador de corrente da ordem de 50W a 100W.


Auxilio com os testes

Para evitar um "porrilhão" de e-mails perguntando como testar e usar o display serial, abaixo você tem duas figuras que matam esta charada!


Uso do display serial com um PC (modo RS-232)

Para usar/testar o display com um PC, sugiro utilizar um programa como o Hyper Terminal do Windows. Configure-o para que sua velocidade esteja de acordo com a velocidade escolhida para o display, oito bits de dados, sem paridade, um stop bit e sem controle de fluxo. Ligue o cabo de comunicação e a fonte. Não se esqueça que os "terras" da porta serial do PC, do display e da fonte devem ser interligados.


Uso do display com um microcontrolador Basic Step 1 (modo TTL)

Para testar/usar o display com um microcontrolador como o Basic Step 1, por exemplo, você terá de necessariamente operar o display com a velocidade de 2400 bps. O BS1 não permite comunicações com uma taxa maior que esta (limitação do próprio microcontrolador). Porém, uma taxa de 2400 bps para preencher 32 caracteres (16 x 2) num LCD é mais que suficiente. Nem dá para perceber qualquer cintilação ou mesmo ver os caracteres sendo grafados no LCD um a um. A "coisa" é realmente bastante rápida. Abaixo um programa exemplo para teste com o Basic Step.

`Programa teste para Basic Step I

`Márcio José Soares

symbol cmd = 254                           `entra em modo comando

symbol clear = 1                           `apaga LCD

symbol linha2 = 2                          `muda para a linha 2

 

       dirs=%11111111                      ‘todos pinos como saída

 

       pause 400                           ‘aguarda display inicializar

       serout 0,T2400,(cmd, clear)         ‘apaga display e posiciona na 1ª linha/coluna

       serout 0,T2400,(”Olá”)              ‘envia Olá para o display através do pino 0

       serout 0,T2400,(cmd, linha2)        ‘vai para linha 2, sem apagar display

       serout 0,T2400,(“Mundo!!!”)         ‘envia Mundo para o display

 

pare:

       goto pare                           ‘para o programa aqui


O programa de controle

O programa de controle foi desenvolvido em Assembly. Eu não pretendo explicar seu funcionamento, até porque meus programas são bem comentados. Estudando a linguagem (funcionamento de cada instrução e o modo como as mesmas afetam os registradores do microcontrolador) você terá todas as condições para compreender este programa, que foi muito bem comentado para auxiliar sua interpretação.

O único detalhe interessante que gostaria de ressaltar é que o microcontrolador PIC16C54 não possui USART, e a comunicação serial foi feita literalmente na "unha". E só mais uma coisa ok. A memória deste microcontrolador é OTP (One Time Program). Ou seja, gravou, já era!!! Porém seu preço é bastante convidativo. Acho que por isso muitas empresas ainda utilizam este microcontrolador.


Downloads:
Clique aqui para obter o código fonte
Clique aqui para obter o código hex

O circuito foi devidamente testado. Não me responsabilizo por possíveis problemas que possam ocorrer durante a sua montagem ou pelo uso inadequado deste circuito. Você está por sua própria conta e risco.


Perguntas mais freqüentes

1 - Tem como adaptar este programa para outros microcontroladores PIC, mais modernos, com memória FLASH e USART???

R. Sim tem. Você simplesmente mudará todo o programa, mas isso fica por sua conta ok!

2 - Eu posso usar este display com outros microcontroladores, como um PIC, AVR, 8051 ou outros? Como devo proceder?

R. Sim, claro que dá. Basta configurar a comunicação serial no microcontrolador desejado. Cada microcontrolador tem sua própria configuração e está deve ser feita de acordo com os recursos inseridos na linguagem a ser utilizada. Como se faz isso??? Estudando o uso da USART do microcontrolador e a linguagem de programação em questão!!! Bem simples não é?


Este projeto foi publicado, com minha autorização, na Revista Eletrônica Total nº 86 de setembro/outubro de 2002.

Características técnicas:

Alimentação: 5VDC
Consumo: menor que 100mA
Comunicação: 2400,8,N,1

Comandos já implementados:

01 - Apaga display e posiciona cursor na 1 coluna da linha 1
02 - Posiciona cursor na 1 coluna da linha 2 (não apaga display)

 



Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor.