Boa tarde galera, estou tendo um problema com um display de oled da utc, o display é um 16x2, o modelo dele é este aqui, utc 1602elpp5n.

Estou tendo um problema com os caracteres especias que eu crio e salvo na memoria dele, as barras criadas não imprimem certo nesse display, mais em modelos normais como o hitachi funciona certo. aqui estão os arrays das barras.

const char character0[] = {0,0,0,0,0,0,0,31}; //-48 uma barra horizontal
const char character1[] = {0,0,0,0,0,0,31,31}; //-47 duas barras horizontais
const char character2[] = {0,0,0,0,0,31,31,31}; //-46 tres barras horizontais
const char character3[] = {0,0,0,0,31,31,31,31}; //-45 quatro barras horizontais
const char character4[] = {0,0,0,31,31,31,31,31}; //-44 cinco barras horizontais
const char character5[] = {0,0,31,31,31,31,31,31}; //-43 seis barras horizontais
const char character6[] = {0,31,31,31,31,31,31,31}; //-42 sete barras horizontais
const char character7[] = {31,31,31,31,31,31,31,31}; //-41 oito barras horizontais

as barras mudam de tamanho conforme são precionadas as teclas de  + ou - no teclado, elas servem para mostrar ao usuario o nivel de intensidade na carga.

aqui é o codigo de configuração do display.

void init_lcd(void){
//configuração do lcd: limpa o display, retorna para o endereço 0, desloca para direita
// cursor off, configura para modo de 4 pinos para dados,


TRIS_RS = 0; TRIS_EN = 0; TRIS_BL = 0;

TRIS_LCD1 = 0; TRIS_LCD2 = 0; TRIS_LCD3 = 0; TRIS_LCD4 = 0;

RS = 0;//COMANDO


envia_nibbles(0x02); //ENVIA UM NIBBLE DE CADA VEZ
delay_ms(50); //ATRASO PARA PROCESSAMENTO DO LCD

envia_nibbles(0X28);//ENVIA UM NIBBLE DE CADA VEZ
delay_ms(50);//ATRASO PARA PROCESSAMENTO DO LCD

envia_nibbles(0X06);//ENVIA UM NIBBLE DE CADA VEZ
delay_ms(50);//ATRASO PARA PROCESSAMENTO DO LCD


envia_nibbles(0X14);//ENVIA UM NIBBLE DE CADA VEZ
delay_ms(50);//ATRASO PARA PROCESSAMENTO DO LCD

envia_nibbles(0X17);//ENVIA UM NIBBLE DE CADA VEZ
delay_ms(50);//ATRASO PARA PROCESSAMENTO DO LCD

envia_nibbles(0X0C);//ENVIA UM NIBBLE DE CADA VEZ
delay_ms(50);//ATRASO PARA PROCESSAMENTO DO LCD

envia_nibbles(0x02);
delay_ms(50);

envia_nibbles(0x01);
delay_ms(50);

}

e aqui é a função que configura e desenha as barras.

void config_caract_barra()
{
unsigned char j;
RS=0; envia_nibbles(64);

for (j = 0; j<=7; j++){
RS = 1; //DADO

delay_us(50);
envia_nibbles(character0[j]);
delay_us(50);
}

RS=0; envia_nibbles(72);

for (j = 0; j<=7; j++){
RS = 1; //DADO

delay_us(50);
envia_nibbles(character1[j]);
delay_us(50);
}

RS=0; envia_nibbles(80);

for (j = 0; j<=7; j++){
RS = 1; //DADO

delay_us(50);
envia_nibbles(character2[j]);
delay_us(50);
}

RS=0; envia_nibbles(88);

for (j = 0; j<=7; j++){
RS = 1; //DADO

delay_us(50);
envia_nibbles(character3[j]);
delay_us(50);
}

RS=0; envia_nibbles(96);

for (j = 0; j<=7; j++){
RS = 1; //DADO

delay_us(50);
envia_nibbles(character4[j]);
delay_us(50);
}

RS=0; envia_nibbles(104);

for (j = 0; j<=7; j++){
RS = 1; //DADO

delay_us(50);
envia_nibbles(character5[j]);
delay_us(50);
}

RS=0; envia_nibbles(112);

for (j = 0; j<=7; j++){
RS = 1; //DADO

delay_us(50);
envia_nibbles(character6[j]);
delay_us(50);
}

RS=0; envia_nibbles(120);

for (j = 0; j<=7; j++){
RS = 1; //DADO

delay_us(50);
envia_nibbles(character7[j]);
delay_us(50);
}
}


void barra(char zona, unsigned char coluna){
unsigned char aux_barra,i;
//aux_barra = tempo_Eeprom_zonas_cenarios[zona-1]/6.6;
if(tempo_Eeprom_zonas_cenarios[zona-1] == 15){aux_barra = 15;}
else{aux_barra = (70 - tempo_Eeprom_zonas_cenarios[zona-1]+3)/4;}

escreve_dado_lcd(-16,1,coluna); //espaco em branco
escreve_dado_lcd(-48,2,coluna); //uma barra horizontal
if(aux_barra>=7){// escreve caracter cheio
escreve_dado_lcd(-48,2,coluna); //caractere cheio
aux_barra = aux_barra-7;
i = 0;
while(aux_barra!=i){i++;}
if(i!=0){escreve_dado_lcd(-41+i-8,1, coluna);}
}
else{
i = 0;
while(aux_barra!=i){i++;}
if(i!=0){escreve_dado_lcd(-41+i-7,2, coluna);}
}

Alguem ae sabe porque pode estar dando esse erro??

Exibições: 212

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço