quinta-feira, julho 16, 2026

Módulo Display de 14 Segmentos com Interface I2C

Há quase 12 anos, brinquei um pouco com displays de 14 segmentos (aqui e aqui). A montagem na segunda parte mostra a dificuldade de usar estes displays unitários: um monte de resistores e um monte de conexões.

Somente agora me deparei com um módulo que simplifica isso. O módulo possui quatro dígitos e utiliza um controlador com interface I2C.

O controlador é o HT16K33, que tem semelhanças com o MAX7219 (no sentido de ter memória interna que armazena o estado dos LEDs e realizar a multiplexação automaticamente). O HT16K33 também suporta a conexão de teclas (que não veremos aqui) e possui uma interface I2C padrão. O endereço pode ser configurado na faixa de 0x70 a 0x77, o que é suportado pelo módulo.

O módulo possui cinco conexões: os sinais SCL e SDA do I2C, o GND e dois sinais de alimentação, VCC e VI2C. O primeiro alimenta o controlador e os displays, o segundo está ligado aos resistores de pull-up nos sinais de I2C. Segundo o datasheet do controlador, o VCC deve ser 5V (vi relatos de funcionamento a 3,3V) e o VI2C a tensão de operação do microcontrolador que comanda o I2C. No caso da ligação de mais de um módulo em um barramento I2C, somente um dos módulos deve ter o VI2C conectado.

Para controlar os displays, vamos enviar comandos via I2C. Após um comando, podem ser enviados dados para serem escritos na memória. A tabela a seguir resume os comandos:


A iniciação do controlador consiste em:

  • Ligar o oscilador (comando 0x21)
  • Iniciar a memória (comando 0x00 seguido de 8 bytes)
  • Escolher a intensidade (opcional, comando 0xE0 a 0xEF)
  • Ligar o display (comando 0x81)
Cada dígito do módulo corresponde a dois bytes na memória, a figura abaixo mostra a relação entre os bits e os segmentos.


Coloquei em https://github.com/dquadros/demos_curtos dois exemplos em MicroPython (para uso com a Raspberry Pi Pico).

É um display bacana, tanto para fazer um mostrador exótico quanto para apresentar textos de até 32 caracteres (ligando 8 módulos em um único barramento I2C).

Nenhum comentário: