entao fabim, tem bem pouca informacao mesmo no datasheet... mas meo, bota a cuca para pensar: eh um display STN passivo sem controlador, entao ele nao deve ter memoria, ou seja, o que vc jogar para ele, ele vai jogar em uma posicao na tela... mas qual posicao? bom, vc indica usando CP, LP e FLM. se o display for parecido com os outros, a ideia eh simples: CP eh uma especie de clock para transferir os dados, o LP eh uma especie de HSYNC e o FLM eh uma especie de VSYNC. os sinais vc pode gerar por um loop infinito:
- Código: Selecionar todos
int main()
{
int x,y;
while(1) // loop infinito
{
for(y=0;y!=240;y++) // 240 linhas
for(x=0;x!=320;x++) // 320 colunas
{
GPIO.CP = 1; // bota o clock em nivel 1: eh quando vc pode mexer em qq sinal
GPIO.D0 = (y==0 || x==0 || x==y); // desenha as linhas
GPIO.D1 = (y==0 || x==0 || x==y); // desenha as linhas
GPIO.D2 = (y==0 || x==0 || x==y); // desenha as linhas
GPIO.D3 = (y==0 || x==0 || x==y); // desenha as linhas
GPIO.LP = (x==319); // ativo na ultima coluna
GPIO.FLM = (y==239); // ativo na ultima linha
GPIO.M = (y==0&&x==0) ? !GPIO.M : GPIO.M; // inverte AC a cada frame
// talvez precise de um delay de nanosegundos aqui! :O
GPIO.CP = 0; // bota o clock em nivel zero: eh quando o chip lah amostra os sinais, entao vc nao mexe em nada.
// talvez precise de um delay de nanosegundos aqui! :O
}
}
}
infelizmente nao tenho como testar o codigo aqui e vc tem que adaptar para seu microcontrolador ae... mas nao eh de todo dificil de testar, entao fiz uma versao dele em verilog para testar:
- Código: Selecionar todos
`timescale 1 ns / 1 ps
module stn;
reg GPIO_CP,GPIO_D0,GPIO_D1,GPIO_D2,GPIO_D3,GPIO_LP,GPIO_FLM,GPIO_M=0;
integer x,y,z;
initial
for(z=0;z!=4 ;z=z+1) // 4 frames
for(y=0;y!=240;y=y+1) // 240 linhas
for(x=0;x!=320;x=x+1) // 320 colunas
begin
GPIO_CP = 1; // bota o clock em nivel 1: eh quando vc pode mexer em qq sinal
GPIO_D0 = (y==0 || x==0 || x==y); // desenha as linhas
GPIO_D1 = (y==0 || x==0 || x==y); // desenha as linhas
GPIO_D2 = (y==0 || x==0 || x==y); // desenha as linhas
GPIO_D3 = (y==0 || x==0 || x==y); // desenha as linhas
GPIO_LP = (x==319); // ativo na ultima coluna
GPIO_FLM = (y==239); // ativo na ultima linha
GPIO_M = (y==0&&x==0) ? !GPIO_M : GPIO_M; // inverte AC a cada frame
#80; // talvez precise de um delay de nanosegundos aqui! :O
GPIO_CP = 0; // bota o clock em nivel zero: eh quando o chip lah amostra os sinais, entao vc nao mexe em nada.
#80; // talvez precise de um delay de nanosegundos aqui! :O
end
endmodule
no verilog eu coloquei um clock de 160ns, daih cada frame está com uns 18ms, ou seja, 55Hz. nao sei se seu microcontrolador roda esse loop em 160ns, mas nao eh um tempo de outro mundo e tambem nao eh um requisito rodar nessa velocidade para testar, enfim, eh soh para ver se funciona no seu display e o que aparece na tela!

bom, poderia gerar uma imagem ou outro padrao mais maluco, mas a ideia eh gerar apenas um padrao simples para ver como eh a interface.
fabim escreveu:Sam, Estou perdidinho !!
Para desencargo, eu preferi abandonar a idéia de usar o barramento dedicado, e aproveitar os pinos que já estão no flat para usar a entrada de 8 bits padrão para o controlador !!
rsrs
ABÇS