as.yıldırım
Usta Üye
- Katılım
- 14 Eki 2011
- Mesajlar
- 1,287
- Puanları
- 181
arkadaslar bankalarda gördügümüz bi sistem var.Farklı veznelerin üstünde birer display var ve butona bastıkca displaylardaki sayı 1 artmaktadır.Burada isin esprisi displaylarin birbiriyle bir nevi iletişim içinde olması ve butona basıldıgında o displaydaki sayıyı degil,en yüksek sayının oldugu displaydaki sayıyı 1 arttırır ve kendi displayinde gösterir.
Bende bu sistemi 3 display için yaptım.pic16f877 kullandım.CCS ile yazdım.Cok zor bir sistem degil ama özellikle kesme konusunu ögrenmek isteyen arkadaslara yardımcı olabilir.
#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(c)
char sayi=0;
char sayi_1=0;
char sayi_2=0;
char sayi_3=0;
char sayi_1_onlar;
char sayi_1_birler;
char sayi_2_onlar;
char sayi_2_birler;
char sayi_3_onlar;
char sayi_3_birler;
char display[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6f};
#int_RB
void abc(){
if(input(pin_b4)){
sayi++;
sayi_1=sayi;
if(sayi>99)sayi=0;
if(sayi_1>99)sayi_1=0;
sayi_1_birler=sayi_1%10;
sayi_1_onlar=sayi_1/10;
}
if(input(pin_b5)){
sayi++;
sayi_2=sayi;
if(sayi>99)sayi=0;
if(sayi_2>99)sayi_2=0;
sayi_2_birler=sayi_2%10;
sayi_2_onlar=sayi_2/10;
}
if(input(pin_b6)){
sayi++;
sayi_3=sayi;
if(sayi>99)sayi=0;
if(sayi_3>99)sayi_3=0;
sayi_3_birler=sayi_3%10;
sayi_3_onlar=sayi_3/10;
}
}
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(0x70);
set_tris_c(0x00);
set_tris_d(0x00);
output_b(0);
output_c(0);
output_d(0);
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
while(1){
output_d(0b11111110);
output_c(display[sayi_1_birler]);
delay_ms(10);
output_d(0b11111101);
output_c(display[sayi_1_onlar]);
delay_ms(10);
output_d(0b1111011);
output_c(display[sayi_2_birler]);
delay_ms(10);
output_d(0b1110111);
output_c(display[sayi_2_onlar]);
delay_ms(10);
output_d(0b11101111);
output_c(display[sayi_3_birler]);
delay_ms(10);
output_d(0b11011111);
output_c(display[sayi_3_onlar]);
delay_ms(10);
}
}
rar dosyasını ekleyemedim.Forumda yeni sayılırım.Eger nasıl yüklendigini ayrıntılı anlatırsanız proteus cizim ccs dosyası hex dosyasını da paylasabilirim...
Bende bu sistemi 3 display için yaptım.pic16f877 kullandım.CCS ile yazdım.Cok zor bir sistem degil ama özellikle kesme konusunu ögrenmek isteyen arkadaslara yardımcı olabilir.
#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(c)
char sayi=0;
char sayi_1=0;
char sayi_2=0;
char sayi_3=0;
char sayi_1_onlar;
char sayi_1_birler;
char sayi_2_onlar;
char sayi_2_birler;
char sayi_3_onlar;
char sayi_3_birler;
char display[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6f};
#int_RB
void abc(){
if(input(pin_b4)){
sayi++;
sayi_1=sayi;
if(sayi>99)sayi=0;
if(sayi_1>99)sayi_1=0;
sayi_1_birler=sayi_1%10;
sayi_1_onlar=sayi_1/10;
}
if(input(pin_b5)){
sayi++;
sayi_2=sayi;
if(sayi>99)sayi=0;
if(sayi_2>99)sayi_2=0;
sayi_2_birler=sayi_2%10;
sayi_2_onlar=sayi_2/10;
}
if(input(pin_b6)){
sayi++;
sayi_3=sayi;
if(sayi>99)sayi=0;
if(sayi_3>99)sayi_3=0;
sayi_3_birler=sayi_3%10;
sayi_3_onlar=sayi_3/10;
}
}
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(0x70);
set_tris_c(0x00);
set_tris_d(0x00);
output_b(0);
output_c(0);
output_d(0);
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
while(1){
output_d(0b11111110);
output_c(display[sayi_1_birler]);
delay_ms(10);
output_d(0b11111101);
output_c(display[sayi_1_onlar]);
delay_ms(10);
output_d(0b1111011);
output_c(display[sayi_2_birler]);
delay_ms(10);
output_d(0b1110111);
output_c(display[sayi_2_onlar]);
delay_ms(10);
output_d(0b11101111);
output_c(display[sayi_3_birler]);
delay_ms(10);
output_d(0b11011111);
output_c(display[sayi_3_onlar]);
delay_ms(10);
}
}
rar dosyasını ekleyemedim.Forumda yeni sayılırım.Eger nasıl yüklendigini ayrıntılı anlatırsanız proteus cizim ccs dosyası hex dosyasını da paylasabilirim...