PIC16F877A ile 4 digit 7 segment display kontrolü
/* KEYPAD ÜZERİNDEN GELEN SAYILARI DİSPLAY ÜZERİNDEN KAYDIRARAK GÖSTERİR
CODE BY YAHYA KARALİ
*/
#include <16f877a.h>
#fuses xt, nowdt, noprotect, nobrownout, nolvp, noput, nowrt, nodebug, nocpd
#use delay(clock=4000000)
#use fast_io(a)
#use fast_io(c)
#use fast_io(b)
#use fast_io(d)
#byte PORTC=0x07
#byte PORTD=0x08
/*
case 0 : return 0x3F;
case 1 : return 0x06;
case 2 : return 0x5B;
case 3 : return 0x4F;
case 4 : return 0x66;
case 5 : return 0x6D;
case 6 : return 0x7D;
case 7 : return 0x07;
case 8 : return 0x7F;
case 9 : return 0x6F;
*/
char keys[]={
0x06, 0x5b, 0x4f,0X3F, 0x66, 0x6d,
0x7c,0X3F, 0x07, 0x7f, 0x6f,0X3F, 0x77, 0X3F, 0x7C
};
int16 dizi[20];
int16 dizi2[20];
int i=0,k,s,m,y;
#int_ext
void kesme()
{
dizi[i]=keys[PORTC & 0x0F];
i++;
s=i;
for (m=0; m<5; m++) // SATIRLARI KAYDIR DİĞER DİZİYE AKTAR
{
dizi2[m]=dizi[s];
if (s==0) break;
s--;
}
}
void temizle() // DİSPLAY TEMİZLE FONKSİYONU
{
for (y=0;y<=5;y++)
{
dizi[y]=keys[13];
}
}
void main()
{
setup_psp(psp_disabled);
setup_timer_1(t1_disabled);
setup_timer_2(t2_disabled,0,1);
setup_adc_ports(no_analogs);
setup_adc(adc_off);
setup_ccp1(ccp_off);
setup_ccp2(ccp_off);
set_tris_c(0x0f);
set_tris_b(0x01);
set_tris_a(0x00);
set_tris_d(0x00);
ext_int_edge(l_to_h);
enable_interrupts(int_ext);
enable_interrupts(global);
output_b(0x00);
output_a(0x0f);
temizle();
while(1)
{
k=1;
output_low(pin_a0);
portd=dizi2[k];
delay_ms(5);
output_high(pin_a0);
k++;
output_low(pin_a1);
portd=dizi2[k];
delay_ms(5);
output_high(pin_a1);
k++;
output_low(pin_a2);
portd=dizi2[k];
delay_ms(5);
output_high(pin_a2);
k++;
output_low(pin_a3);
portd=dizi2[k];
delay_ms(5);
output_high(pin_a3);
k=1;
}
}
Proje Dosyaları İNDİR