quarta-feira, 4 de setembro de 2019

Fazendo um contagem de acionamentos de um botão no LCD com PIC18F4520.

Olá pessoal, nessa interface de simulação do Proteus fiz com o PIC18F4520 fiz um contagem de acionamentos do Botão no LCD .
A programação feita no MikroC pro PIC e nela podemos ver como ler um botão, converte o número em carácter e escreve-ló no LCD.

Interface montada no proteus para fazer a simulação do programa

Programação executada no MIKROC pro PIC:

//definição dos pinos de ligação do LCD de acordo com a ligação feita na interface
sbit LCD_RS at Rc0_bit;
sbit LCD_EN at Rc1_bit;
sbit LCD_D4 at Rc2_bit;
sbit LCD_D5 at Rc3_bit;
sbit LCD_D6 at Rc4_bit;
sbit LCD_D7 at Rc5_bit;
sbit LCD_RS_Direction at TRISc0_bit;
sbit LCD_EN_Direction at TRISc1_bit;
sbit LCD_D4_Direction at TRISc2_bit;
sbit LCD_D5_Direction at TRISc3_bit;
sbit LCD_D6_Direction at TRISc4_bit;
sbit LCD_D7_Direction at TRISc5_bit;
// fim das configurações dos pinos

//Variáveis utilizadas para contagem(conta) e conversão de número para texto(txt)

int conta=0;
char txt[7];

void main()

{ 
adcon1=15;  //define todas as entradas e saídas como digitais  
trisc=0;//define o portc com saída 
trisb=255;//define o portb como entrada 
portc=0;//desliga todas as saídas do portc

Lcd_Init();//inicializa o lcd  

Lcd_Cmd(_LCD_CLEAR);//limpa o display  
Lcd_Cmd(_LCD_CURSOR_OFF);//desliga o cursor, para nao ficar piscando

   while(1)

   {    
     if(rb3_bit==1) 
     {    
        conta=conta+1;     
        delay_ms(500);  //tempo para incrementar a contagem

        IntToStr(conta, txt); //converte a contagem(numeral) em texto


         Lcd_Out(1,1,"Contando:      ");//escreve o texto na primeira linha posição 1     

        delay_ms(10);//da um tempo para a informação ser escrita

          Lcd_Out(2,1,"               ");//escreve o espaços em branco na primeira linha posição 1

         delay_ms(10);//da um tempo para a informação ser escrita

         Lcd_Out(2,1,txt);//escreve o texto na segunda linha posição 6     

        delay_ms(10);//da um tempo para a informação ser escrita
      }   

     if(rb3_bit==0)
     {     
         conta=0;//zera a contagem

          Lcd_Out(1,1,"A contagem sera");//escreve o texto na primeira linha posição 1    

         delay_ms(10);//da um tempo para a informação ser escrita

         Lcd_Out(2,1,"zerada!");//escreve o texto na primeira linha posição 1    

        delay_ms(300);//da um tempo para a informação ser escrita

     } 

  }
}


Espero que ajude, qualquer dúvida por favor mande mensagem, estou a disposição. Qualquer dúvida poste o comentário ou encaminhe um e-mail.

Nenhum comentário:

Postar um comentário