Ir ao conteúdo
  • Cadastre-se

Matriz de leds


DAVID GOMES DA S

Posts recomendados

#include	<16f877.h>
#device adc=10
#fuses xt,wdt,noprotect,put,brownout,nolvp,nocpd,nowrt
#use delay(clock=4000000, RESTART_WDT)
#include <math.h>

#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
#define COL_0 PIN_B0
#define COL_1 PIN_B1
#define COL_2 PIN_B2
#define COL_3 PIN_B3
#define COL_4 PIN_B4
#DEFINE RDD_DATA PIN_A0
#DEFINE RDD_CLOCK PIN_A1





unsigned char letra[5];
unsigned char col[10];
unsigned char temp2 = 31;
unsigned char CARACTER, car;
int cont, x;
int8 i,j;
int32 w;



#use fast_io(a)
#use fast_io(
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)

#byte porta = 0x05
#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte porte = 0x09
#define DISPLAY PORTD //porta para displays de sete segmentos
#define botao input(pin_c0)





//******************************************************************************
// Constantes do módulo (tabela para conversão dos caracteres)
// valores a serem inseridos nos displays da matriz
//******************************************************************************
void converter(i)
{

letra[0] = 0;
letra[1] = 0;
letra[2] = 0;
letra[3] = 0;
letra[4] = 0;

switch(car)
{
case 0:
{
letra[4] = 0B11000001;
letra[3] = 0B10000000;
letra[2] = 0B10110110;
letra[1] = 0B10101110;
letra[0] = 0B11000001;

}
Break;

case 1:
{
letra[4] = 0B11111111;
letra[3] = 0B11111111;
letra[2] = 0B11011111;
letra[1] = 0B10000000;
letra[0] = 0B10000000;
}
Break;

case 2:
{
letra[4] = 0B11011100;
letra[3] = 0B10111000;
letra[2] = 0B10110010;
letra[1] = 0B10000110;
letra[0] = 0B11001110;
}
Break;






case 'B':
{
letra[4] = 0B10000000;
letra[3] = 0B10000000;
letra[2] = 0B10110110;
letra[1] = 0B10000000;
letra[0] = 0B11001001;
}
Break;


}



DISPLAY = letra[i];


}




//******************************************************************************
// Função para escrever na matriz
// SELECIONA VALOR PARA AS LINHAS
//
//******************************************************************************
void contador_coluna(){

unsigned char i;


for (i=0;i<5;i++){
j = i;


output_low(COL_0);
output_low(COL_1); //desliga todos os catodos
output_low(COL_2);
output_low(COL_3);
output_low(COL_4);


//DISPLAY=0; //zera segmentos (desliga todos)




switch (j){
case 0:
output_high(COL_0);
break;
case 1:
output_high(COL_1);
break;
case 2:
output_high(COL_2);
break;
case 3:
output_high(COL_3);
break;
case 4:
output_high(COL_4);
break;


}
converter(i);

// printf("\n\r Apertado %ld vezes",rotacao);
restart_WDT(); //zera WDT
delay_ms(5); //aguarda
}

restart_WDT(); //zera WDT

}


void main()
{

setup_adc (adc_clock_div_32);
setup_counters (rtcc_internal, rtcc_div_64);
setup_timer_1 (t1_external_sync | t1_div_by_1);
setup_timer_2 (t2_div_by_16,255,1);
set_adc_channel (0);

set_tris_a(0b00000000);
set_tris_b(0b00000000);
set_tris_c(0b11111111);
set_tris_d(0b00000000);
set_tris_e(0b11111111);

porta = 0x00;
portb = 0x00;
portc = 0x00;
portd = 0x00;
porte = 0x00;
enable_interrupts(GLOBAL | INT_RTCC );

while(TRUE)
{


//******************************************************************************
// FUNÇÃO PARA INCREMENTAR OS CARACTERES DA MATRIZ
//******************************************************************************
if(botao){
x++;

if(botao)
delay_ms(200);

if(x<=0)x+1;
if(x>2)x=0;
switch (x)
{
case 0:
car = 0;
Break;

case 1:
car = 1;
Break;

case 2:
car = 2;
Break;
}

}


//******************************************************************************


contador_coluna();

}
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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