Auxilio LCD 3.5Dig 7S

Enviado:
06 Mar 2018 09:02
por fabim
Pessoal, para quem já fez algo ou pelo menos conhece algo, peço auxilio.
Estou a 4 dias gastanto algumas horas por dia lendo o manual do PIC18F67K90, na parte que trata sobre a utilização do direct display drive.
Eu estou querendo utilizar o display LCD de 3.5Dig e 7S padrão de mercado, que é encontrado nestes multimetros de baixo custo.
Porém até o momento eu não consegui entender, ou sair do lugar!!
Vi que existe apenas 1 comum para todos os segmentos!!
Imagino que os segmentos devem ser multiplexados por nivel de tensão ou algo do tipo, pois já li isto a uns trocentos anos atrás.
Porém não consigo entender como conectar o display aos pinos do pic, ou sequer configurar para o fim que descrevi!!
Alguém sabe me explicar, indicar ou qualquer coisa que possa me ajudar ???
Muito obrigado!
Re: Auxilio LCD 3.5Dig 7S

Enviado:
06 Mar 2018 10:54
por tcpipchip
talvez o pessoal da CIKA ELETRONICA, se ainda existir pode lhe ajudar
Eu trabalhei com HOLTEK e fiz funcionar na epoca um LCD destes, mas, foi em 1995

Usei o software HT-IDE3000V6
Achei até o codigo
- Código: Selecionar todos
//Controlador de LCd 3,5DIG
//Miguel Wisintainer 13-3-1995
#include <ht49c70-1.h>
unsigned char *ponteiro_lcd;
const char ROM_CHARACTER_1[8][30]={ {1,1,1,1,1,
1,0,0,0,1,
1,1,1,1,1,
1,0,0,0,1,
1,0,0,0,1,
0,0,0,0,0
},
{1,1,1,1,0,
1,0,0,0,1,
1,1,1,1,1,
1,0,0,0,1,
1,1,1,1,0,
0,0,0,0,0
},
{1,1,1,1,1,
1,0,0,0,0,
1,0,0,0,0,
1,0,0,0,0,
1,1,1,1,1,
0,0,0,0,0
},
{1,1,1,1,0,
0,1,0,0,1,
0,1,0,0,1,
0,1,0,0,1,
1,1,1,1,0,
0,0,0,0,0
},
{1,1,1,1,1,
1,0,0,0,0,
1,1,1,1,0,
1,0,0,0,0,
1,1,1,1,1,
0,0,0,0,0
},
{1,1,1,1,1,
1,0,0,0,0,
1,1,1,1,0,
1,0,0,0,0,
1,0,0,0,0,
0,0,0,0,0
},
{0,1,1,1,0,
1,0,0,0,0,
1,0,1,1,1,
1,0,0,1,0,
0,1,1,1,0,
0,0,0,0,0
},
{1,0,0,0,1,
1,0,0,0,1,
1,1,1,1,1,
1,0,0,0,1,
1,0,0,0,1,
0,0,0,0,0
}
};
const char ROM_CHARACTER_2[8][30]={ {0,1,1,1,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,1,1,1,0,
0,0,0,0,0
},
{0,1,1,1,1,
0,0,0,1,0,
0,0,0,1,0,
0,1,0,1,0,
0,1,1,1,0,
0,0,0,0,0
},
{1,0,0,1,0,
1,0,1,0,0,
1,1,0,0,0,
1,0,1,0,0,
1,0,0,1,0,
0,0,0,0,0
},
{1,0,0,0,0,
1,0,0,0,0,
1,0,0,0,0,
1,0,0,0,0,
1,1,1,1,0,
0,0,0,0,0
},
{1,0,0,0,1,
1,1,0,1,1,
1,0,1,0,1,
1,0,1,0,1,
1,0,0,0,1,
0,0,0,0,0
},
{1,0,0,0,1,
1,1,0,0,1,
1,1,1,0,1,
1,0,1,0,1,
1,0,0,1,1,
0,0,0,0,0
},
{0,1,1,1,0,
1,0,0,0,1,
1,0,0,0,1,
1,0,0,0,1,
0,1,1,1,0,
0,0,0,0,0
},
{1,1,1,1,0,
1,0,0,0,1,
1,1,0,0,1,
1,1,1,1,0,
1,0,0,0,0,
0,0,0,0,0
}
};
const char ROM_CHARACTER_3[8][30]={ {0,1,1,1,0,
1,0,0,0,1,
1,0,0,0,1,
0,1,1,1,1,
0,0,0,0,1,
0,0,0,0,0
},
{1,1,1,1,0,
1,0,0,1,0,
1,1,1,1,0,
1,0,1,0,0,
1,0,0,1,0,
0,0,0,0,0
},
{0,1,1,1,1,
1,0,0,0,0,
0,1,1,1,0,
0,0,0,0,1,
1,1,1,1,0,
0,0,0,0,0
},
{1,1,1,1,1,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,0,0,0
},
{1,0,0,0,1,
1,0,0,0,1,
1,0,0,0,1,
1,0,0,0,1,
1,1,1,1,1,
0,0,0,0,0
},
{1,0,0,0,1,
1,0,0,0,1,
1,0,0,0,1,
0,1,1,1,0,
0,0,1,0,0,
0,0,0,0,0
},
{1,0,0,0,1,
0,1,0,1,0,
0,0,1,0,0,
0,1,0,1,0,
1,0,0,0,1,
0,0,0,0,0
},
{1,0,0,0,1,
0,1,0,1,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,0,0,0
},
};
const char ROM_CHARACTER_4[1][30]= { {1,1,1,1,0,
0,0,0,1,0,
0,0,1,0,0,
0,1,0,0,0,
1,1,1,1,0,
0,0,0,0,0
}
};
char COM_SEG;
char BITMAP;
char ROM_TABLE_CHARACTER;
char INDEX_TABLE_CHARACTER;
char temp;
char Verifica_ROM_CHARACTER(char caracter, char bit_map_character)
{
if(caracter<=7)
{
INDEX_TABLE_CHARACTER=caracter;
return(ROM_CHARACTER_1[INDEX_TABLE_CHARACTER][bit_map_character]);
}
if(caracter>=8 && caracter<=15)
{
INDEX_TABLE_CHARACTER=caracter-8;
return(ROM_CHARACTER_2[INDEX_TABLE_CHARACTER][bit_map_character]);
}
if(caracter>15 && caracter<=23)
{
INDEX_TABLE_CHARACTER=caracter-16;
return(ROM_CHARACTER_3[INDEX_TABLE_CHARACTER][bit_map_character]);
}
if(caracter>23)
{
INDEX_TABLE_CHARACTER=caracter-24;
return(ROM_CHARACTER_4[INDEX_TABLE_CHARACTER][bit_map_character]);
}
return(1);
}
void Imprime_os_4_LCD(char c1,char c2, char c3,char c4)
{
ponteiro_lcd= (unsigned char *) 0x140;
COM_SEG=0;
for(BITMAP=0;BITMAP<=24;BITMAP++)
{
if(Verifica_ROM_CHARACTER(c1,BITMAP))
COM_SEG=COM_SEG+1;
if(Verifica_ROM_CHARACTER(c2,BITMAP))
COM_SEG=COM_SEG+2;
if(Verifica_ROM_CHARACTER(c3,BITMAP))
COM_SEG=COM_SEG+4;
if(Verifica_ROM_CHARACTER(c4,BITMAP))
COM_SEG=COM_SEG+8;
*ponteiro_lcd=COM_SEG;
COM_SEG=0;
ponteiro_lcd++;
}
}
void Imprime_o_5_LCD(char c5)
{
ponteiro_lcd= (unsigned char *) 0x159;
COM_SEG=0;
for(BITMAP=0;BITMAP<=4;BITMAP++)
{
if(Verifica_ROM_CHARACTER(c5,BITMAP))
COM_SEG=COM_SEG+1;
if(Verifica_ROM_CHARACTER(c5,BITMAP+10))
COM_SEG=COM_SEG+2;
if(Verifica_ROM_CHARACTER(c5,BITMAP+20))
COM_SEG=COM_SEG+4;
*ponteiro_lcd=COM_SEG;
COM_SEG=0;
ponteiro_lcd++;
}
ponteiro_lcd= (unsigned char *) 0x15E;
COM_SEG=0;
for(BITMAP=5;BITMAP<=9;BITMAP++)
{
if(Verifica_ROM_CHARACTER(c5,BITMAP))
COM_SEG=COM_SEG+1;
if(Verifica_ROM_CHARACTER(c5,BITMAP+10))
COM_SEG=COM_SEG+2;
*ponteiro_lcd=COM_SEG;
COM_SEG=0;
ponteiro_lcd++;
}
}
void main(void)
{
repete:
Imprime_os_4_LCD(0,1,2,3);
for(temp=0;temp<=24;temp++)
{
Imprime_os_4_LCD(temp,temp,temp,temp);
Imprime_o_5_LCD(temp);
}
goto repete;
}
Re: Auxilio LCD 3.5Dig 7S

Enviado:
06 Mar 2018 12:57
por KrafT
Só utilizei esse tipo de display burro com MSP430, baseado nesse doc:
http://www.ti.com/lit/an/slaa654a/slaa654a.pdf
Re: Auxilio LCD 3.5Dig 7S

Enviado:
06 Mar 2018 15:25
por fabim
Egidio, Miguel, Obrigado!!
Vou ler os documentos, e bater a cabeça até descobrir!!