TUTORIAL: Escrevendo um carácter customizado no LCD
Neste post irei ensinar como criar e escrever um carácter customizado num display de LCD.
No display LCD pode-se criar até 8 caracteres.
O mikroC possui uma ferramenta que auxilia na geração de um carácter de formatos 5x7 e 5x10. Clique no menu Tools e em seguida clique em LCD Custom Character.
Após você ter desenhado seu carácter, clique no botão GENERATE CODE. Veja que será gerado um código.
Selecione e copie somente o array de bytes, de acordo com o retângulo vermelho da imagem acima. Cada um dos 7 bytes corresponde a uma linha, e cada um dos bits de um byte corresponde a uma coluna, juntos formam o carácter.
Criei duas funções para que você pode criar e escrever esse caracter.
void CreateCustomChar(char address, const char *caracter) { char i=0; address &= 0x07; Lcd_Cmd(64 + (address << 3)); for (i = 0; i<8; i++) Lcd_Chr_CP(caracter[i]); } void WriteCustomChar(char row, char col, char address) { address &= 0x07; //Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(row, col, address); }
A função "CreateCustomChar()" salva o carácter num determinado endereço (0 à 7) na memória CGRAM do LCD.
A função "WriteCustomChar()" escreve o carácter salvo no determinado endereço.
EXEMPLO:
//Conexões do LCD sbit LCD_RS at RD0_bit; sbit LCD_EN at RD1_bit; sbit LCD_D4 at RD2_bit; sbit LCD_D5 at RD3_bit; sbit LCD_D6 at RD4_bit; sbit LCD_D7 at RD5_bit; sbit LCD_RS_Direction at TRISD0_bit; sbit LCD_EN_Direction at TRISD1_bit; sbit LCD_D4_Direction at TRISD2_bit; sbit LCD_D5_Direction at TRISD3_bit; sbit LCD_D6_Direction at TRISD4_bit; sbit LCD_D7_Direction at TRISD5_bit; //O array de bytes gerado pela ferramenta do MikroC. const char coracao[] = {0,10,31,31,31,14,4,0}; void CreateCustomChar(char address, const char *caracter) { char i=0; address &= 0x07; Lcd_Cmd(64 + (address << 3)); for (i = 0; i<8; i++) Lcd_Chr_CP(caracter[i]); } void WriteCustomChar(char row, char col, char address) { address &= 0x07; //Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(row, col, address); } void main() { Lcd_Init(); //Inicia o LCD CreateCustomChar(0, coracao); //salva o caracter "coracao" no endereço 0. WriteCustomChar(2, 2, 0); //Escreve o caracter do endereço 0 na segunda linha //na segunda coluna }
Tiago, você saberia escrever caracteres na CGRAM do LCD utiliando o Compilador CCS ? Valeu mesmo e parabéns.
ResponderExcluirNao lembro mais como se programa no CCS, mas acho que é assim:
Excluirrom char coracao[8] = {0,10,31,31,31,14,4,0};
void CreateCustomChar( char addr, rom char *map )
{
char i;
lcd_send_byte( 0, 64 + ( addr << 3 ) );
for( i = 0; i < 8; i++)
{
lcd_send_byte( 1, map[i] );
}
}
void main()
{
CreateCustomChar( 0, coracao ); //salva o caracter na posicao 0
lcd_gotoxy(1,2);
lcd_send_byte(1,0); //escreve o caracter da posicao 0
}
Mito da Programação... tenho mais nada a dizer... Valeu MESMO!!!!!
ExcluirTu és um mestre! Parabéns Tiago!
ResponderExcluirOla Tiago, eu consigo criar mais que 8 caracteres no lcd, sem perde os dado da tela.
ResponderExcluirTenho essa dúvida também
ExcluirBoa noite amigo andei lendo seu projetos com microcontroladores e gostei.
ResponderExcluirgostaria da sua ajuda em um condigo para controla um motor via RF entre TX e RX controla a velocidade