Gostaria de usar um LCD em seu projeto, mas que não consuma tanto pinos de seu microcontrolador? Ou facilitar o ‘Debug’ de alguns arquivos? O LCD serial é a solução bem prática! Veja mais…
Veja o esquema abaixo:
Mesmo quando estamos desenvolvendo algum projeto, é interessante, para fins de debug (retirar falhas do programa), ter como visualizar o conteúdo de certos registradores em determinado momento do programa. Usando apenas um pino, fica fácil ‘jogar para fora’ do microcontrolador estes valores. Depois de concluído, é só deletar os arquivos de ‘debug’. Nesta função, não se necessita do circuito integrado MAX 232 ou do transistor usado para a recepção do protocolo. Se o microcontrolador dispõe de serial no seu hardware interno (SPI), basta escrever algumas linhas adicionais para configura-lo como TX. Em pontos estratégicos que deseja visualizar o conteúdo, chame uma rotina do tipo ‘call envia_para_lcd’ . Para facilitar a vida, escreva estas linhas adicionais para debug, entre linhas com comentários do tipo ‘apenas teste’ ou ‘apenas debug’. Fica mais fácil acha-las para remoção no final do projeto.
Alguns programadores preferem colocar uma expressão que identifica ao compilador quando deve usar as linhas de ‘debug’, como abaixo:
logo no inicio do arquivo coloca:
#define debug
Depois, em cada local que desejar ‘ver’ o valor da variável:
ifdef debug
movfw variavel_a_ver
call envia_para_lcd
;ou outra rotina que desejar
endif
Quando estiver pronto, basta comentar a definição no inicio do programa, que o compilador se encarrega de não ler as linhas usadas no debug.
Cada programador escolhe a maneira que prefere fazer isto. Muitos IDE’s já provém com o necessário para debugar, facilitando em muito. Mas tais ferramentas tem custo alto para hobistas. Aí, entra a improvisação e os ditados populares são novamente lembrados: ‘Quem não têm cão caça com gato’.
Outra situação de uso para este projeto, tem que ver com manutenção de equipamentos. Pode ser necessário verificar o funcionamento de uma saída serial de um equipamento. Geralmente para isto, usa-se um NoteBook para capturar esta comunicação. Mas se for somente para isto, este projetinho talvez seja útil, por ser compacto e facilmente montado em uma pequena caixa plastica com alimentação de pilhas AA ou mesmo de bateria de 9 Volts, com regulador de tensão 7805 montado. Visando facilitar o uso, foi previsto várias velocidades de comunicação, ajustadas com um ‘jumper’. Elas são: 1200, 2400, 4800, 9600, 19200 bauds , sendo um ‘default’ (quando não se coloca jumper para 4800 bauds). Para simplificar, a interface com a RS232( atual IEA-232, mas o costume fica), foi usado apenas um transistor NPN, de uso geral. Se desejar, poderá usar uma versão com MAX232, conforme figura abaixo:
O ARQUIVO ASM
O programa começa com as configurações iniciais das portas e inicialização da serial do PIC 16f628a. Neste momento, também é testado o PORTB, se existe algum ‘jumper’ colocado. Se houver, acertará o baud rate de acordo, senão, irá colocar o valor ‘default’ (4800 bauds). Momentaneamente, irá aparecer no LCD, a velocidade que irá se comunicar, para fins de acerto, se necessário. Em seguida, envia para o LCD, o nome do aparelho e depois apaga a tela, esperando uma transmissão provinda da serial. A medida que vai recebendo caracteres, e quando completar a linha, passará automaticamente da linha 1 para linha 2. Quando esta for também preenchida, voltará para a linha 1, isto de forma continua.
Para mudar o ‘baud rate’, desligue o aparelho da alimentação, escolha a posição do ‘jumper’ para a velocidade desejada e somente então religue o aparelho. Confira se apareceu após o nome do aparelho, a velocidade desejada. Se não, repita os passos anteriores.
Segundo o ASM, podemos receber 8 bits, sem paridade. Caso precise de outra configuração, altere no arquivo ASM fornecido, segundo suas necessidades, com valores apropriados no registradores ‘RCSTA’ e ‘TXSTA’ (vide datasheet pic 16f628a , pag80).
Também se desejar, poderá optar por outros valores de ‘baud rate’ (Veja pag 73 do data sheet)
O valor para o registrador ‘BRG’ que determina a velocidade é dado pela fórmula abaixo:
Valor -1 = Frequência do xtal / (64 x baudrate desejado) com bit BRGH=0 e SYNC=0
Valor -1 = Frequência do xtal / (16 x baudrate desejado) com bit BRGH=1 e SYNC=0
O erro efetivo da transmissão é dado pela fórmula abaixo:
Erro (em %) = (Baud rate calculado – Baud rate desejado) /Baud rate desejado
Este deverá ser o menor possível (2% máximo) para uma comunicação apropriada e não aparecer caracteres ‘estranhos’.
OBS. Este material é de carácter didático apenas, sujeito a bugs não identificados ainda e foi somente testado em protoboard.
Foi fornecido o arquivo ASM, portanto, sinta-se a vontade para alterar conforme julgar necessário, nas suas aplicações.
Segue o arquivo ASM:
Segue o arquivo HEX:
Curiosidades:
Prós e contras da globalização
O perigo dos mares ‘ruidosos’
Primeiros sinais de anorexia
Não conte ‘carneirinhos’
Contaminação por termomêtros
Sua ligação foi completada – Como?
Ouvindo sons do espaço
Porque as estrelas são cintilantes?
Outros assuntos:
Como lidar com dívidas
Como resolver diferenças no casamento
Como tratar o conjuge com respeito
Como evitar ferir com palavras
Ensine seus filhos bons principios com atividades de colorir
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Entrevista com um bioquímico
Até o próximo artigo!!!
😛 Olá Claudio, valeu ai por mais este exemplo ok, este vai cair como uma luva,assim que testar ti reporto obrigado mesmo…