16F84A ile 0-99 sayıcı display sorunu

Başlatan hasankomur, 03 Temmuz 2012, 14:27:51

hasankomur

Hayırlı günler arkadaşlar;
Kaynak olarak Serdar ÇİÇEK'in CCS C ile PIC Programlama adlı kitabını kullanıyorum.
Kitabın içinde yazılı olan bir program var onu deniyorum. Bir sorun var artırma butonuna basınca iki display aynı anda artıyor. ör: 11 22 33 vb. Acaba ben bağlantılarını mı yanlış yaptım?
Bağlantılar şu şekilde ;
RB0'a 330 bağlayıp kitapta gösterildiği gibi a1 ve a2 ucuna bağladım. Rb1 ve diğerlerini de aynı şekilde kitapta gösterildiği gibi uyguladım.
Programda şu şekilde

#include <16f84a.h>
#use delay(clock=4000000)
#fuses xt,noput,nowdt,noprotect
#use fast_io(a)
#use fast_io(b)
#define dis_1 pin_a0
#define dis_2 pin_a1
#define but pin_a2
char birler=0,onlar=0,sayi=0;

const int digit[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x6F};

void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   
   set_tris_a(0xFC);
   set_tris_b(0x00);
   
   output_low(dis_1);
   output_low(dis_2);
   while(1){
   birler=sayi%10;
   onlar=sayi/10;
   
   output_high(dis_2);
   output_b(digit[birler]);
   delay_ms(5);
   output_low(dis_2);
   output_high(dis_1);
   output_b(digit[onlar]);
   delay_ms(5);
   output_low(dis_1);
   if(input(but)){
   delay_ms(10);
   sayi++;
   if(sayi==100)
   sayi=0;
   birler=sayi%10;
   onlar=sayi/10;
   while(input(but)){
   output_high(dis_2);
   output_b(digit[birler]);
   delay_ms(5);
   output_low(dis_2);
   output_high(dis_1);
   output_b(digit[onlar]);
   delay_ms(5);
   output_low(dis_1);
   }
   }
   }
  }
   

JKramer

Display'in ortak uçlarını kontrol edin, muhtemelen bağlantı hatasıdır.

picpicpic

tahminime göre enable pinleri, şu transistörü bağladığımız bacaklar birbirine temas ediyordur

hasankomur


gareven

aynı devreyi proteuste kurun buna göre programda mı bi sorun var yoksa bağlantılarda mı görebilirsiniz.

kesta

Displaylerin ortak uçlarına bağlı transistörlerin kollektörlerine 10K'lık pull-up direnci takıp dener misin. Dirençlerin diğer uçları besleme hattında olacak.
ZO

jrcapa

#6
Simülasyonda denediniz mi?Serdar Çiçek'in belirttiği gibi simülasyonda  transistörler yerine not kapısı koyun. Program doğru.

hasankomur

Yardımlarınızdan dolayı çok teşekkür ederim. Sorun transistördeymiş. Kolektör ile beyz in yerini karıştırmışım :) Şuan çalışyor.