Tenho dois circuitos idênticos, um na protoboard e outro em um PCB. Na protoboard o LCD funciona normalmente com o PIC18F4550, o problema é que no PCB só fica os quadradinhos na tela. Medi a tensão dos pinos, e o q identifiquei é q na protoboard o pino RW fica sempre com GND, já no circuito da PCB o RW fica sempre com VCC. Creio q por isso esteja aparecendo apenas os quadradinhos no circuito da PCB.

Como isso é possível, sendo q estou utilizando o mesmo PIC com a mesma programação? PS: Ambos os pinos (E,RS,RW,etc) estão ligados corretamente!

PS: Alem disso, o pino RS q tem VCC no circuito da protoboard, no PCB fica com GND. Como isso é possível? Credo estou horas em cima disso, o circuito está correto! Não compreendo!

Exibições: 81

Responder esta

Respostas a este tópico

O pino R/W (leitura R / gravação W) é pulsante e não fixo como esta informando. 

O pino RS serve para selecionar dados ou comandos (também pulsante). 

Para saber como esses pinos estão funcionando, precisa usar um analisador Lógico. 

Confira todas as conexões e use um programa idêntico nas duas montagens.

Certifique-se que a tensão de alimentação esta correta e ajuste o brilho do LCD (potenciometro). 

Cara, será que vc poderia fazer um teste com esse código e essa biblioteca? De repente pode me ajudar a solucionar o problema que estou tendo também!                                                                                                                                                

#include <p18f4550.h>
#include <delays.h>
#include<stdio.h>//Chama biblioteca stdio.h C18.
#include<string.h>//Chama biblioteca string.h C18.
#include "C:\Users\Dayvisson Barbosa\Desktop\Pic18\PIC18\biblioteca_lcd_2x16.h"
#include "C:\Users\Dayvisson Barbosa\Desktop\Pic18\PIC18\config_PIC18F4550.h"
#define Fosc 20

void gera_atraso_segundos(unsigned char atraso)
{
do
{
Delay10KTCYx(20*Fosc/4);//gera um delay de 0,2seg
Delay10KTCYx(20*Fosc/4);//gera um delay de 0,2seg
Delay10KTCYx(20*Fosc/4);//gera um delay de 0,2seg
Delay10KTCYx(20*Fosc/4);//gera um delay de 0,2seg
Delay10KTCYx(20*Fosc/4);//gera um delay de 0,2seg
atraso--;
}
while(atraso>0);
}

void main()
{
unsigned char dado_lido;
ADCON1=0b00000111;//Todas as portas A do PIC como digital(desliga os conversores a/d)
TRISA=0b00011111;//RA0 a RA4 - entrada e RA5 a RA6 - saída
TRISB=0b11100111;//RB0,RB1,RB2,RB5,RB6 e RB7 - entrada e RB3 a RB4 - saída
TRISC=0b10111111;//RC0 a RC5 e RC7 - entrada e RC6 - saída
TRISD=0b00000000;//RD0 a RD7 - saída
TRISE=0b00000000;//RE0 a RE2 - saída

PORTD=0x00;//Coloca a porta D em 0V
PORTE=0x00;//Coloca a porta E em 0V

lcd_inicia(0x28, 0x0F, 0x06);//inicializa o display com 4 linhas de dados
lcd_LD_cursor(0);//desliga o cursor
lcd_limpa_tela();
lcd_posicao(1,16);

while(1)//loop infinito
{
//lcd_escreve_dado('Q');
imprime_string_lcd("0123456789");
//dado_lido=lcd_le_dado();
//lcd_escreve_dado(dado_lido);

gera_atraso_segundos(20);


}
}

Anexos

Alterando é claro o destino dos arquivos biblioteca_lcd_2x16.h e config_PIC18F4550.h conforme salvar em seu computador, o arquivo conig pic segue abaixo, se for possível fazer o teste te agradeço.

Anexos

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2017   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço