Neste projeto, vou exibir caracteres do idioma urdu em um lcd 16×2 usando o microcontrolador pic16f877. Urdu é um idioma falado no Paquistão, Índia e Bangladesh. Os lcds de caracteres geralmente contêm um controlador Hitachi HD4478. O HD4478 contém apenas o conjunto de caracteres ASCII e podemos exibir apenas os caracteres predefinidos que estão presentes nele. Ele contém caracteres numéricos, ingleses e chineses.
Portanto, para exibir caracteres urdu, devemos saber como criar caracteres personalizados e exibi-los em LCD de 16 × 2 caracteres. Exibir caracteres personalizados feitos por você mesmo no LCD requer conhecimento sobre a estrutura interna do LCD. Para exibir caracteres personalizados como urdu, você deve conhecer lcd CG-RAM, registros de dados e comandos.
Um tutorial bom e perfeito para entender a estrutura interna da ram lcd CG (character generated) é dado abaixo. Como é um tópico muito importante e longo, não é possível explicá-lo aqui. Recomendo que você faça o tutorial abaixo, caso contrário, você não conseguirá entender o código do projeto abaixo.
- Como gerar caracteres personalizados em cg ram de lcd de 16×2 caracteres.
Requisitos do Projeto
|
Chegando à parte do código. O código é escrito em linguagem c usando MP-lab ide. O compilador c de alta tecnologia é usado para compilar o código. O arquivo de cabeçalho htc.h é importado primeiro. Este arquivo deve ser incluído em todos os projetos que usam o compilador c de alta tecnologia para compilar o código. Então a frequência do cristal é definida, que é 20 MHz (20e6 = 20^6). Os pinos de controle do LCD são definidos em seguida. Então a função delay é definida, que está gerando algum atraso arbitrário para nós. A função lcdcmd está enviando comandos para o registro de comando do lcd. A função dispaly está enviando dados para o registro de dados do lcd. Se você não sabe sobre dados do lcd e registro de comando e seu funcionamento, aqui está um bom tutorial.
- Dados LCD e registros de comando funcionando
A função Lcdint está inicializando nosso lcd. O tutorial dado uma linha acima também abrange a fase de inicialização do lcd e os comandos de inicialização. Na função principal, estou gerando alfabetos urdu em CG-RAM e, em seguida, eles são exibidos em um lcd 16×2. Primeiro, dou o comando lcdcmd(0x40) para lcd. Este 0x40 é o endereço inicial do CG-RAM. Em seguida, os pontos individuais do primeiro caractere urdu “i” são enviados para lcd. O próximo 0x48 é enviado para lcd. Que é o segundo endereço do caractere CG-RAM. Os pontos do segundo caractere são então enviados para CG-RAM do lcd. Este processo se repete para os oito caracteres. Em seguida, todos os oito caracteres gerados personalizados são invocados para exibição no lcd, apenas fornecendo seus endereços (0 a 8).
Depois de exibir os primeiros oito caracteres urdu, os próximos oito são construídos em CG-RAM e exibidos no LCD. Este processo se repete até que o último caractere seja exibido. Após o último caractere, o lcd começa do início e começa a exibir caracteres urdu desde o início.
Observação: A primeira linha do LCD exibe continuamente “Urdu Characters!” e os caracteres urdu são exibidos na segunda linha. Cada caractere urdu é exibido no LCD com uma lacuna de matriz do outro. Como o LCD 16×2 tem 16 coulombs, 8 caracteres com uma separação de matriz dos outros são exibidos perfeitamente na segunda linha do LCD.