Relógio LCD com números grandes
Autor: Jean Carlos | Publicado: 2012-07-17T18:56:00-07:00

Durante o desenvolvimento do projeto de um robô de sumô para a disciplina de projeto integrado II do curso de Engenharia de Controle e Automação, me deparei com a necessidade de mostrar informações numa tela de LCD caractere de 20X4, porém uma grande limitação destes displays facilmente encontrados a venda no comércio é o tamanho efetivo do caractere. Pensando nisto busquei um artigo que havia me deparado na internet, em que o programador utilizava mais de um caractere para a construção dos dígitos a serem exibidos. O artigo em questão pode ser visto aqui. Utilizando a técnica descrita anteriormente, aqui mesmo neste blog&nbsp; foram criados alguns caracteres especiais que formam os dez algarismos utilizados para a criação deste relógio que apresento hoje a vocês.  A junção de quatro destes caracteres especiais formam um numeral decimal que ocupa o lugar de seis caracteres do display com exceção dos dois últimos caracteres que formam os pontos para divisão dos dígitos do relógio. Para a base de tempo utilizamos o RTC PCF8583 contido na placa PK2Lab, que nos retorna de forma serial as informações referentes a hora, minutos e segundos e ainda gera um sinal de clock de 1Hz&nbsp; para a atualização dos dados no display a cada segundo.  O microcontrolador escolhido para este exemplo é o PIC18F4520, por ser o microcontrolador escolhido pela Microchip como substituto natural ao PIC16F877 sendo a pinagem totalmente compatível com os microcontroladores da linha 16F, portanto os pinos de comunicação I2C também seguem esta regra, consequentemente a placa tem que estar com os jumpers na posição 16F e não na posição 18F como usual.  Os pinos de enables dos leds devem estar dasabilitados para não influenciarem na comunicação serial I2C. O programa foi desenvolvido utilizando a ferramenta MikroC PRO e foi baseado no código exemplo do RTC que acompanha a placa, apenas foram feitas algumas modificações para a inserção do código que gera os caracteres maiores no LCD. Para este projeto foi utilizado o oscilador interno de 8MHz do microcontrolador, é importante observar que por default o microcontrolador opera com uma frequência de 1MHz e é necessário que sejam setados dois bits do registrador OSCCON para configurar a frequência de 8MHz. OSCCON.B5 = 1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Ajusta oscilador interno para 8MHzOSCCON.B4 = 1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Ajusta oscilador interno para 8MHz Foram criadas algumas funções para conversão e exibição dos números no LCD. void Caracter_Especial()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Cria os caracteres especiais na CGRAM do display LCD void Converte_Numeros(char numero,char lin, char col)  Efetua a conversão dos numeros do RTC para os digitos grandes void Display_Time() Mostra os digitos na tela do display LCD void ZERO(char linha, char coluna) Prepara os caracteres especias para exibição dos digitos grandes void PONTOS(char linha, char coluna) Prepara os caracteres especiais para exibição dos pontos   O resultado pode ser visto abaixo:  &nbsp;    &nbsp; Código do projeto