Ir ao conteúdo
  • Cadastre-se

LCD não exibe mensagens com PIC


Posts recomendados

Boa Tarde, fiz a simulação de um circuito Simples com LCD no Proteus e as ligações estão tudo ok, escrevi o código e compilei também tudo ok,funcionou perfeitamente, e quando passei para a protoboard e não apareceu nenhuma mensagem,( Não usei nenhum Crystal de clock, é obrigatório usar nesse caso?) já tentei de tudo não faço ideia do que possa ser, Obrigado

 

Cód.:

 

#include <16f877a.h>
#fuses xt, nowdt, noprotect, nocpd, nolvp
#use delay (clock=4000000)


#define LCD_ENABLE_PIN PIN_B2
#define LCD_RS_PIN PIN_B0
#define LCD_RW_PIN PIN_B1
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#define BOTAO PIN_A1
#define BOTAO2 PIN_A0

#include <lcd.c>


void main(){

lcd_init();
     
while(TRUE)
{

 
   lcd_gotoxy (4,1);
   printf(lcd_putc, "MENSAGEM 1");
   lcd_gotoxy (6,2);
   printf(lcd_putc, "MENSAGEM 2");
   delay_ms(30);
   lcd_putc("\f");
       
      if (input(PIN_A1))
             {
             lcd_putc("\f");
             delay_ms(200);
             lcd_gotoxy (6,1);
             printf(lcd_putc, "ACESSO");
             lcd_gotoxy (4,2);
             printf(lcd_putc, "AUTORIZADO");
             delay_ms(2000);
             lcd_putc("\f");
             delay_ms(5);
             lcd_gotoxy (7,1);
             printf(lcd_putc, "BEM");
             lcd_gotoxy (6,2);
             printf(lcd_putc, "VINDO");
             delay_ms(2000);
             lcd_putc("\f");
             delay_ms(10);  }      
        
      
      if (input(PIN_A0))
             {
   
      lcd_putc("\f");
             delay_ms(200);
             lcd_gotoxy (5,1);
             printf(lcd_putc, "VERIFIQUE");
             lcd_gotoxy (5,2);
             printf(lcd_putc, "NOVAMENTE");
             delay_ms(2000);
             lcd_putc("\f");
             delay_ms(10);  }   
           
      
       
    }
        
       
}

 

&key=932d69d8514fc575

tela001.thumb.jpg.119bdd5a8dc5c1a31a4505d1af4d9297.jpg

 

 

 

tela006.png

601.jpg

 

 

Link para o comentário
Compartilhar em outros sites

15 horas atrás, Isadora Ferraz disse:

Sim. Ou configure pra oscilador interno. E é bom colocar um C entre reset e gnd e entre VCC e GND bem perto dos respectivos pinos do mc.

abç

Bom dia obr. pela atenção, então já configurei o PIC para oscilador interno XT 4MHZ (#fuses xt, nowdt, noprotect, nocpd, nolvp)

#use delay (clock=4000000) no proteus deu certo,

mais mesmo assim devo colocar esses componentes entre RESET e GND/ VCC e GND ?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Não uso este compilador. O que eu uso "xt" não é interno. É algo como INTOSCIO. Mas antes verifique no datasheet do mc se este tem osc interno. Alternativamente podes colocar um cristal mesmo. Pode ser qualquer um dentro do limite do mc, claro. Ou até R&C (nunca usei).

 

14 minutos atrás, Airton_Diniz disse:

colocar esses componentes entre RESET e GND/ VCC e GND ?

Sim apesar de não ter relação direta com sua inquietação, é altamente recomendável.

Link para o comentário
Compartilhar em outros sites

Em 22/04/2019 às 10:29, Isadora Ferraz disse:

Não uso este compilador. O que eu uso "xt" não é interno. É algo como INTOSCIO. Mas antes verifique no datasheet do mc se este tem osc interno. Alternativamente podes colocar um cristal mesmo. Pode ser qualquer um dentro do limite do mc, claro. Ou até R&C (nunca usei).

 

Sim apesar de não ter relação direta com sua inquietação, é altamente recomendável.

Boa noite tudo bem, Então, coloquei um cristal e os Capacitores conforme o Datasheet, refiz e revisei todo código e conexões da protoboard, e não aparece as mensagens. o que pode ser ? Abraços O/

Link para o comentário
Compartilhar em outros sites

Se você realmente esta certo de que todos os pinos estão ligados corretamente e também esta setado o modo de comunicação adequado... Sabemos que o mundo real é diferente da simulação porque nele os componentes apresentam limitações físicas. Se o problema não for hardware é provável ser falha na temporização entre os comandos enviados para o display, justo pelo fato mencionado, por exemplo.

 

Vou ser sincero em dizer que acho estranho você usar uma função de printf() invés de lcd_write_string() e também de limpar o display com putc invés de uma função tipo lcd_clear(), você consultou o manual dessa lib antes de usar? Não vejo nenhuma definição de que o display deva comunicar em 4bits, porém você definiu 8 portas para os dados, como você tem certeza que ele por padrão inicia no modo de 4bits? Não estou dizendo que estás errado, apenas quero que reflita se realmente tem certeza do que esta fazendo, assim pode isolar os fatos com mais assertividade.

 

Quanto a questão de hardware, se tratando do lcd observe o seguinte: Sempre que alimenta-lo sem ligar nada nos pinos de comunicação (sem o pic no circuito precisamente falando) o lcd deve apresentar a primeira linha com todas as áreas de caracteres preenchidas, se não observar nada, ajuste o contraste até que seja possível visualizar. Se isso não ocorrer não adianta seguir em frente.

 

lcd_hw_init.png.7799ac1552a16493d914df8780ec4c4f.png

Link para o comentário
Compartilhar em outros sites

5 horas atrás, [Daniel] disse:

Se você realmente esta certo de que todos os pinos estão ligados corretamente e também esta setado o modo de comunicação adequado... Sabemos que o mundo real é diferente da simulação porque nele os componentes apresentam limitações físicas. Se o problema não for hardware é provável ser falha na temporização entre os comandos enviados para o display, justo pelo fato mencionado, por exemplo.

 

Vou ser sincero em dizer que acho estranho você usar uma função de printf() invés de lcd_write_string() e também de limpar o display com putc invés de uma função tipo lcd_clear(), você consultou o manual dessa lib antes de usar? Não vejo nenhuma definição de que o display deva comunicar em 4bits, porém você definiu 8 portas para os dados, como você tem certeza que ele por padrão inicia no modo de 4bits? Não estou dizendo que estás errado, apenas quero que reflita se realmente tem certeza do que esta fazendo, assim pode isolar os fatos com mais assertividade.

 

Quanto a questão de hardware, se tratando do lcd observe o seguinte: Sempre que alimenta-lo sem ligar nada nos pinos de comunicação (sem o pic no circuito precisamente falando) o lcd deve apresentar a primeira linha com todas as áreas de caracteres preenchidas, se não observar nada, ajuste o contraste até que seja possível visualizar. Se isso não ocorrer não adianta seguir em frente.

 

lcd_hw_init.png.7799ac1552a16493d914df8780ec4c4f.png

Tarde daniel obrigado. Pela ajuda, então eu uso o compilador PIC C(CSS C) já tentei compilar com esses códigos e da erro, o código em si acredito que esteja funcionando , agr tenho que definir a comunicação com lcd em 4 bits? Pois a aplicação eh simples, e todos exemplos que procurei não vi nenhum código definindo o LCD em 4 bits(para exemplo) 

E defini apenas 4 portas DATA do LCD, os outros pinos estão sem ligar.

Me tira uma dúvida: a Isadora me falou p ligar VDD/VSS, mais nesse PIC tem 2 pinos vdd e 2 pinos vss, vou ligar os 2 vdd com 5v e os outros 2 pinos vss no gnd isso ? Eo MCLR que já está alimentado com 5v ta certo assim ?sobre o teste do LCD com tudo ligado, fica desse jeito q você me mandou a foto, mais vou fazer o teste que você me falou também. Obrigado amigo.

Link para o comentário
Compartilhar em outros sites

Bem, faz tempo que não mexo com o CCS e alguns comentários foram equivocados. Nesse caso, a principio parece que o oscilador esta setado errado em fuses. Conforme a Isadora comentou anteriormente.

#include <16f877a.h> 
#fuses xt, nowdt, noprotect, nocpd, nolvp
#use delay (clock=4000000)

20190425_165821.png.f206134c7e1432e297c2a947c4798e99.png

 

1 hora atrás, Airton_Diniz disse:

Me tira uma dúvida: a Isadora me falou p ligar VDD/VSS, mais nesse PIC tem 2 pinos vdd e 2 pinos vss, vou ligar os 2 vdd com 5v e os outros 2 pinos vss no gnd isso ? Eo MCLR que já está alimentado com 5v ta certo assim?

 

#fuses RC, etc...

Vdd = +5V (pino 11 e 32)

Vss = 0V (pino 12 e 31)

Reset em nível alto (pino 1)

Link para o comentário
Compartilhar em outros sites

8 horas atrás, [Daniel] disse:

Bem, faz tempo que não mexo com o CCS e alguns comentários foram equivocados. Nesse caso, a principio parece que o oscilador esta setado errado em fuses. Conforme a Isadora comentou anteriormente.


#include <16f877a.h> 
#fuses xt, nowdt, noprotect, nocpd, nolvp
#use delay (clock=4000000)

20190425_165821.png.f206134c7e1432e297c2a947c4798e99.png

 

 

#fuses RC, etc...

Vdd = +5V (pino 11 e 32)

Vss = 0V (pino 12 e 31)

Reset em nível alto (pino 1)

Boa Noite, fiz o teste do lcd e acendeu como na sua foto, agora, coloquei toda alimentação correta e testei os pinos, tudo ok, mais ainda não aparece as mensagens

os capacitores no cristal são de 15pf, como no datasheet do PIC.

O código funciona certinho no Proteus, eu uso o Microbrn para gravar no PIC, ele grava sem problemas.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!