Uma maneira não padrão de controlar a exibição no controlador HD44780 para renderizar fontes russas com qualquer própria tabela de códigos de exibição.
A própria idéia de tal controle nasceu da tarefa de russificação de um dispositivo com uma exibição personalizada baseada no controlador HD44780. Tendo considerado a opção de substituir caracteres russos por caracteres latinos semelhantes, decidi não mexer com isso, porque parece não comercializável e o dispositivo é comercial.
Ao contrário dos monitores OLED baseados no driver Winstar WS0010, os monitores nos drivers HD44780 ou seus equivalentes não possuem um modo operacional gráfico. Mas eles têm a chamada memória CGRAM, na qual você pode escrever até 8 caracteres em uma representação gráfica.
O algoritmo em si é bastante simples:
- Iniciamos o timer de renderização com uma frequência de interrupção aceitável para a carga do processador.
- Na interrupção do temporizador:
- apagar (preencher com espaços) tudo o que estava na tela;
- carregar as informações gráficas necessárias na primeira familiaridade da memória CGRAM do controlador;
- exibimos esses caracteres no visor em um determinado deslocamento e saímos da interrupção.
O código se parece com isso: Nesse caso, é muito importante configurar corretamente o controle do monitor e usar tempos de troca mínimos, bem como, se possível, uma interface de 8 bits para o monitor (embora, de acordo com os testes, o de 4 bits não carregue muito o controlador). Também é necessário usar a leitura do sinal BUSY na linha D7 no visor para reduzir o tempo de espera por sua resposta.
A aparência de uma tela real pode ser vista no vídeo abaixo:
A linha superior é controlada pelo método de redesenho rápido e exibe informações do CGRAM. A linha contém caracteres desenhados graficamente da tabela de códigos CP866 com os códigos 0x80-0xFF, e os pseudográficos são substituídos por losangos de xadrez. Na linha inferior, estão os símbolos do gerador de caracteres interno da tela e ao lado de seus códigos.
As desvantagens do método:
Em uma taxa de atualização abaixo de 25Hz, a cintilação é notada na tela quando vista em ângulo e, ao olhar diretamente, não é visível na vertical.
Além disso, o contraste da imagem na tela diminui um pouco, mas isso quase não é perceptível.