Página 1 de 1

lcd graffico em 4 vias

MensagemEnviado: 04 Nov 2011 13:03
por lafourcade
Eu montei uma placa com um lcd 16x2, normalzinho para uma aplicação simples. Tem um lcd 4 teclas, um led e um circuitinho para dimmer. Eu não to fazendo nada com o dimmer, por enquanto eu to apenas criando uns textos para por no lcd.
Estava tudo bem até cair na minhas mãos um display de lcd grafico com o pinout igual ao que eu estava usando. Tirei um e coloquei o outro para testar. O bom é que eu não precisaria mexer em nada... Foi o que eu pensei. Eu estou escrevendo no Lcd usando 4 vias para dados. Imaginei que mexendo um pouco nos tempos de escrita seria o suficiente para enviar dados para o cara. Acontece que quando eu vou mandando muitos 0s de dados para limpar uma linha, por exemplo, ele enlouquece. Acredito que estou errando na hora de configurar o display inicialmente.
Eu uso a seguinte rotina:


extern void Lcd_Write(unsigned int com_dado, unsigned char val)
{
unsigned int i;

LCD_RS = com_dado; //Define dado=1 ou comando=0
DelayUs(1);

//manda a parte alta do dado
lcd.store = PORT_LCD & 0xF0;
var.lixo = (val >> 4);
lcd.store |= ((val >> 4) & 0x0F);
PORT_LCD = lcd.store;

LCD_EN = 1; //da um enable
DelayUs(1);
LCD_EN = 0; //e um disable
DelayUs(1);

//manda a parte baixa do dado
lcd.store = PORT_LCD & 0xF0;
var.lixo = val;
lcd.store |= (val & 0x0F);
PORT_LCD = lcd.store;

LCD_EN = 1; //da um enable
DelayUs(1);
LCD_EN = 0; //e um disable
}

extern void Lcd_Init_Grafico(void)
{
char const init[8]={0x02,0x28,0x0C,0x01,0x06,0x1F};

int i_lcd;

for(i_lcd=0;i_lcd<6;i_lcd++)
{
Lcd_Write(CMD,init[i_lcd]); //envia o vetor de inicializacao
DelayMs(50);
}
}

Alguem ja tentou fazer isso: Escrever em um display grafico usando 4 bits de dados? Isso funciona?

Obrigado