Display de sete segmentos

Crie uma função que recebe um valor hexadecimal de 0 a F e retorna sua máscara de bits para um display de sete segmentos de cátodo comum. As oito posições de bit são dp, g, f, e, d, c, b, a, e um 1 lógico acende o segmento correspondente.

Texto alternativo

Exemplos

to_display(0x1) ➞ 0x06
# [dp, g, f, e, d, c, b, a] = [0, 0, 0, 0, 0, 1, 1, 0]

to_display(0x8) ➞ 0x7F
# [dp, g, f, e, d, c, b, a] = [0, 1, 1, 1, 1, 1, 1, 1]

to_display(0x0) ➞ 0x3F
# [dp, g, f, e, d, c, b, a] = [0, 0, 1, 1, 1, 1, 1, 1]

Notas

  • A ordem dos bits é a seguinte: MSB [dp, g, f, e, d, c, b, a] LSB.
  • Isso aparece bastante em trabalhos com FPGA, nos quais é preciso fazer algum tipo de conversão entre valores numéricos e bits que controlam o hardware. Essas conversões muitas vezes não têm um algoritmo simples e exigem codificação manual.
  • Se você codificar este desafio manualmente, pode tentar determinar os valores corretos por conta própria, mas, na indústria, se você pode consultar uma referência, é isso que faz. Neste caso, os testes de código contêm todos os valores necessários.