_MeRKeZ_
Üye
- Katılım
- 30 May 2011
- Mesajlar
- 44
- Puanları
- 1
- Yaş
- 31
Merhaba arkadaşlar,
74164 port çoğullayıcısıyla matrix led yakmak istiyorum. Amacım bu çoğullayıcının kullanımını öğrenerek daha fazla matrix led yakabilmek. Serdar Çiçek'in CCS C kitabında bulunan 74164 çoğullayıcısının 7 segment display örneğinden esinlenerek bu uygulamayı yazmaya karar verdim. Sizlerden ricam aşağıda kodunu ve benzetimini verdiğim devredeki hatayı bulma konusunda bana yardımcı olmanız
Teşekkürler
74164 port çoğullayıcısıyla matrix led yakmak istiyorum. Amacım bu çoğullayıcının kullanımını öğrenerek daha fazla matrix led yakabilmek. Serdar Çiçek'in CCS C kitabında bulunan 74164 çoğullayıcısının 7 segment display örneğinden esinlenerek bu uygulamayı yazmaya karar verdim. Sizlerden ricam aşağıda kodunu ve benzetimini verdiğim devredeki hatayı bulma konusunda bana yardımcı olmanız
Kod:
#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use fast_io(b)
#define data_1 pin_b0
#define data_2 pin_b2
#define data_3 pin_b4
#define data_4 pin_b6
#define clock_1 pin_b1
#define clock_2 pin_b3
#define clock_3 pin_b5
#define clock_4 pin_b7
int A[]={0xFF,0xFF,0x76,0x75,0X03};
int B[]={0x00,0X36,0X36,0x36,0X49};
int C[]={0x41,0x3E,0x3E,0x3E,0x5D};
int D[]={0x00,0x3E,0x3E,0x3E,0x41};
int E[]={0x00,0xB6,0xB6,0xB6,0xBE};
int sutun[]={0x01,0x02,0x04,0x08,0x10};
char i=0,j=0,k=0;
/* burada matrix ledin sütunlarını tek tek aktif ediyorum */
void sutunsec_1(int a)
{
for(j=0;j<8;j++)
{
output_bit(data_1,bit_test(sutun[a],j));
output_high(clock_1);
output_low(clock_1);
}
}
void sutunsec_2(int a)
{
for(j=0;j<8;j++)
{
output_bit(data_3,bit_test(sutun[a],j));
output_high(clock_3);
output_low(clock_3);
}
}
/* burada matrix lede yukarıdaki karakterleri yolluyorum */
void karakter_1(int tekrar)
{
for(k=0;k<tekrar;k++)
{
for(i=0;i<5;i++)
{
sutunsec_1(i);
for(j=0;j<8;j++)
{
output_bit(data_2,bit_test(A[i],j));
output_high(clock_2);
output_low(clock_2);
}
delay_ms(500);
}
}
}
void karakter_2()
{
for(i=0;i<5;i++)
{
sutunsec_2(i);
for(j=0;j<8;j++)
{
output_bit(data_4,bit_test(B[i],j));
output_high(clock_4);
output_low(clock_4);
}
delay_ms(500);
}
}
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_b(0x00);
while(1)
{
output_b(0x00);
karakter_1(10);
output_b(0x00);
karakter_2();
}
}
Teşekkürler