Ir ao conteúdo
  • Cadastre-se

PIC PIC acionando LED e identificando no LCD


Posts recomendados

Boa tarde amigos! É minha primeira participação nesse forum de microcontroladores. Estou inciando meus estudos com PIC e CCS e fiz esse circuito:

 

PIC_LED_01.JPG.b1f7305431036a479857034d168d45e5.JPG

Funcionou, fiquei contente! Mas sou admirador de LCD display. 

Alguém poderia me ajudar com um código simples para escrever no LCD (16x2)  a palavra "LED 1" ou "LED 2" quando acionado os botôes?

E aproveitando, vi outros exemplos de estudo com apenas um botão e não dois. Cada pressionado, acende um led apenas.Dá para mudar esse?

Usei esse código para o teste: 

// PIC16F84A LED blink example

// https://simple-circuit.com/

// [email protected]



#include <16F84A.h>;

#fuses HS,NOWDT,PUT,NOPROTECT

#use delay(crystal=8000000)



void main(){

   while(TRUE){                  // Endless loop

     if(input(PIN_B0) == 0){     // If RB0 button is pressed

       output_toggle(PIN_A0);    // Toggle RA0 LED status

       delay_ms(500);            // Wait 500 ms

     }

     if(input(PIN_B1) == 0){     // If RB1 button is pressed

       output_toggle(PIN_A1);    // Toggle RA1 LED status

       delay_ms(500);            // Wait 500 ms

     }

   }

}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Pic e display lcd é dúvida genérica demais e você acha com muita facilidade.

 

50 minutos atrás, Romolo Gama disse:

apenas um botão e não dois. Cada pressionado, acende um led apenas.Dá para mudar esse?

Claro. Apague o 2º if

while(TRUE){                  // Endless loop

     if(input(PIN_B0) == 0){     // If RB0 button is pressed

       output_toggle(PIN_A0);    // Toggle RA0 LED status

       delay_ms(500);            // Wait 500 ms

     }

Em C (de verdade) algo como...

for(;;)// o mesmo que while(1)
{
if (!RB0) {RA0^=1;delay(500);}
}

 

Link para o comentário
Compartilhar em outros sites

Muito obrigado! Agora só preciso saber como montar um código para usar um LCD 16x2 básico para obter a informação na tela para cada vez que apertar o botão, nomear cada LED que acender. Eu só possuo 16f84A e 12f675, mas temo que o 12f675 não tem portas suficiente um comando desse com 2 LED e mais interface com LCD, por isso estou aprendendo com o 16F84A. Qualquer dica, agradeço muito!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá. De novo o google deve te ajudar nesta façanha genérica de escrever no display lcd. Depois de conseguir, escrever algo dependente de botão no display é fácil

Algo como:
 

#define bt1 RA1
#define bt2 RA2
#define bt3 RA3
...

if (!bt1) printlcd(''led1'');
if (!bt2) printlcd(''led2'');
if (!bt3) printlcd(''led3'');
...

Desculpe mas não uso ccs. A exemplo do arduíno, a sintaxe dele é muito xata e percebes que mais complexa que a acima

 

Pra usar o f675 com display você deve lançar mão de um shift register qualquer...

Schematic_21.png

http://www.electronics-lab.com/project/3-wire-serial-lcd-using-a-shift-register/

☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️

Tem exemplo bacaninha no site acima

Link para o comentário
Compartilhar em outros sites

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...