terça-feira, 1 de setembro de 2020

Usando displays LCD com o controlador LCD do PIC16F1933.

       O microcontrolador PIC16F1933 tem um controlador dedicado para acionar diretamente displays LCD. Este controlador pode acionar os segmentos do LCD diretamente, usando um terminal por segmento, ou de forma multiplexada, usando um terminal para vários segmentos. Por ter somente 19 terminais disponíveis para o acionamento de LCDs, melhor usar este controlador no modo multiplexado, especialmente no modo com 1/4 duty e 1/3 bias. A tensão de acionamento do LCD pode ser fornecida pela referência interna de 1,024V multiplicada por 3 ou pela tensão de alimentação do PIC16F1933.
        O display usado é o GDV04520, tem 6 dígitos, opera em 3,3V com 1/4 duty e 1/3 bias, tem 16 pinos e é um pouco mais largo que um IC com encapsulamento DIP.


Display LCD GDV04520 de 7 segmentos e 6 dígitos visto de cima. É um pouco mais largo que um IC com encapsulamento DIP de 16 pinos.


Display LCD visto de baixo.

Pinagem do LCD GDV04520.

Inicialização do controlador LCD
Registro LCDCON (LCD CONTROL REGISTER) com o valor 0x8B: LCD driver enabled and enabled in Sleep mode, clock source LFINTOSC, 1/4 multiplex.

Registro LCDPS (LCD PHASE REGISTER) com o valor 0x01:Type-A phase changes within each common type, 1/3 Bias mode, 1:2 LCD Prescaler Selection bits.

Registro LCDREF (LCD REFERENCE VOLTAGE CONTROL REGISTER) com o valor 0xCE: Internal LCD Reference is enabled and powered by a 3.072V output of the FVR, VLCD3PE, VLCD2PE e VLCD1PE conectados aos rspectivos terminais externos.

Registro LCDCST (LCD CONTRAST CONTROL REGISTER) com o valor 0x00: máximo contraste.

Registro LCDRL (LCD REFERENCE LADDER CONTROL REGISTERS) com o valor 0x50: Internal LCD Reference Ladder is powered in Low-Power mode.

Registros LCDSE0 e LCDSE1 (LCD SEGMENT ENABLE REGISTERS) com os valors 0xBF e 0x37: segment enabled to RA1, RA5, RA4, RC2, RA7, RA6, RB0, RB7, RA0, RC5 , RC6 and RC7.


O mapeamento dos segmentos do LCD ficam assim:
     bit:  7  6  5  4  3  2  1  0
Registro:
LCDDATA0  3B -- 2A 2B 1A 1B 0A 0B
LCDDATA1  -- -- 5A 5B -- A4 4B 3A
LCDDATA3  3G -- 2F 2G 1F 1G 0F 0G
LCDDATA4  -- -- 5F 5G -- 4F 4G 3F
LCDDATA6  3C -- 2E 2C 1E 1C 0E 0C
LCDDATA7  -- -- 5E 5C -- 4E 4C 3E
LCDDATA9  3P -- 2D 2P 1D 1P 0D 0P
LCDDATA10 -- -- 5D 5P -- 4D 4P 3D

Sendo 1 para segmento ligado e 0, desligado.

Display em ação mostrando a tensão do IC INA219.



Saída do COM0.




Saída típica de um dos segmentos.