Pesquisar neste blog

30/06/2022

Decodificador display multiplexado com PIC 16F877A

Objetivo: Receber as entradas nos pinos e decodifica -lás no display 7 segmentos (interface do LCD é importante).

Código feito em CCS C Compiler

#include <16F877A.h>
#device adc = 8
#fuses XT, NOWDT, BROWNOUT, NOLVP
#use delay(clock = 20MHz)
#include <math.h>
#use fast_io(b)
#include <lcd.c>
int v1[] = {0b00111111, 0b00000110, 0b01011011,
   0b01001111, 0b01100110, 0b01101101, 0b01111101, 
   0b00000111, 0b01111111, 0b11100111};
   
unsigned int8 a, b, c, d, e, f;   
byte decimal;
unsigned int8 aux, dezena, unidade;

void main(void){
   lcd_init();
   
   while(TRUE){
      
      a = input(PIN_B0);
      b = input(PIN_B1);
      c = input(PIN_B2);
      d = input(PIN_B3);
      e = input(PIN_B4);
      f = input(PIN_B5);
      decimal = (a<<5)|(b<<4)|(c<<3)|(d<<2)|(e<<1)|(f<<0);
      
      aux = decimal/10;           
      dezena = (int)floor(aux);
      
      aux = (decimal)-(10*dezena);
      unidade = (int)floor(aux);
            
      printf(lcd_putc,"\fBINARIO = %u%u%u%u%u%u \nDECIMAL = %u"a, b, c, d, e, f, decimal);
      delay_ms(100);
      
      for(int i = 0; i < 10; i++){
         output_a(0b0000010);
         output_c(v1[dezena]);
         delay_ms(50);
         
         output_a(0b000001);
         output_c(v1[unidade]);
         delay_ms(50);
      }
   }
}







Nenhum comentário: