blackhawk123 escreveu:Maurício escreveu:Cadê o pulso de clock em E do LCD?
[]'s
que pulso de clock?? eu li algo sobre isso na apostila que estou usando, mas não entendi direito.
brasilma, nas pesquisas que fiz no google não achei exemplos em C para o SDCC, mas vou procurar denovo
O LCD tem 3 linhas de controle (RW, RS e E). Toda a vez que vc tiver que enviar/receber um dado pro LCD vc precisa pulsar a linha de clock.
No seu exemplo ficaria algo parecido com isto:
- Código: Selecionar todos
#define RW P1_0
#define RS P1_1
#define ENABLE P1_2 // POR EXEMPLO. PODE SER QUALQUER OUTRO PINO
#define PULSE_CLOCK ENABLE = 0; ENABLE = 1; ENABLE = 0
/*Inicializa LCD*/
RS=RW=0;
P2=0x38;
PULSE_CLOCK;
Tempo_15m();
P2=0x38;
PULSE_CLOCK;
Tempo_15m();
P2=0x06;
PULSE_CLOCK;
Tempo_15m();
P2=0x0E;
PULSE_CLOCK;
Tempo_15m();
P2=0x01;
PULSE_CLOCK;
Tempo_15m();
/* Fim da inicialização*/
P2=0x0D;
PULSE_CLOCK;
Tempo_15m();
RW=0;
RS=1;
P2=0x32;
PULSE_CLOCK;
return(0);
Outra coisa, também: 15ms é tempo demais pra esperar pelo LCD. Este valor de tempo só é usado na inicialização do LCD. Pra todos os outros comandos, vc pode usar um tempo de 2ms, por exemplo, já que o comando que mais consome tempo no LCD, consome em torno de 1,6ms (clear screen).
Se vc vai somente escrever no LCD, vc pode aterrar o pino RW e usar este tempo de 2ms entre cada envio de dados para o LCD.
[]'s