2 girişli 7segment devremde sorun

Başlatan yucelcem, 01 Kasım 2010, 17:59:15

yucelcem

Yönetici arkadaşlar öncelikle siteye 1 hafta civarı giremedim çünkü bandwidth limit exceed diye bir pencere çıkıyordu, sorun acaba benden mi kaynaklanıyor?

Neyse sorunumuza gelelim, 16F84A kullanarak yeni aldığım ortak katot displayleri denemek için breadboarda devre kurdum. Portb'de 0-6. pinler arasını displayin gereken yerlerine bağladım, displayin ortak ucunu eksiye verdim, porta nın 1. ve ikinci pinine butonlar bağladım,diğer uçlarını ise 5V'a bağladım. 9.4k direnç kullanarakta kullanmayarakta denedim sonuç aynı. Porta.1 deki butona bastığımda sayının artması, diğerine bastığımda sayının azalması gerekiyordu.

Soruna geliyorum, benim giriş olarak ayarladığım pinlerden 1 çıkıyor. sadece buton bağladığım pinlerden bu şekilde çıkış var, led bağlayarak anladım. Sanırım ikisi de 1 olduğu için sayı olduğu gibi kalıyor. Butonları tersledim yani + yerine - bağladım. Bu sefer butonlar tam tersi şekilde çalışmaya başladı. Aslında çözüm oldu diyebiliriz ama sadece bu devre için çözüm oldu, sorunun kaynağını bulmak için yardımlarınızı bekliyorum.

yucelcem

Kodlar şu şekilde;



trisa=1
trisb=0
sayi var byte
x var byte
a var byte
portb=0

sayi=0

dongu:

if sayi=0 then
sayi=0
endif

if sayi>9 then
sayi=9
endif

if porta.1=1 then
sayi=sayi+1
endif

if porta.2=1 then
sayi=sayi-1
endif

a=sayi
call cevir
portb=x

pause 300

goto dongu

cevir:
lookup a,[$3F,$06,$5B,$4F,$66,$6D,$7c,$07,$7F,$6F],x
return

justice_for_all

arkadasim semasini koyabilirsen daha verimli olur die dusunuyorum...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay


justice_for_all

#4
simdi arkadasim trisa registerine sen 1 degerini atarsan sadece porta nin sifirinci bitini giris yapmis olursun...

ya hex olarak girin yada desimal olarak dogru degeri girip yeniden deneyiniz...

yani ya 0x03 girersin veya desimal olarak 3 girersin...


simdi resimi gordum sen porta nin 1. ve 2. bitini yapmissin yani

0000 0110  bu sekilde olursan trisa registerine ya 0x06 girersin veya desimal olarak 6 degerini girersin..
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

justice_for_all

ayrica butonlarinda yalnis

http://www.resimupload.com/ds537328680_sdsd.html

resimdeki gibi takarsan daha iyi olur..

o zaman dijital giristen 0 bilgisi alirsin butona basinca hatta MCLR pininede boyle baglaman gerek...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

yucelcem

beni büyük bir hatadan kurtardınız tris registerlarını sürekli yanlış kullandığımı farkettim, şimdide şöyle bir sorun var, tuşlara hızlı bastımmı program resetleniyor, acaba bu butonlara direnç koymadığımdan mıdır? (wdt kapalı)

justice_for_all

evet devrede bi kararsizlik oluyo ama yukari cekme direciyle devreyi bu kararsizliktan kurtariyoruz...

bide tusa basdiktan sonra biraz bekleme koymalisiniz yoksa surekli sayar ama siz goremezsiniz veya buton birakilana kadar while ile dongu yapabilirsiniz...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

yucelcem

evet iyice saçmalamaya başladı devre kendi kendine sayıyor falan,dediğiniz gibi yapıcam.

buarada bu dirençleri koymamızdaki amaç nedir, mclr'deki amacı biliyorum ama diğerlerine neden koyuyoruz pinemi zarar veriyor?

justice_for_all

simdi arkadasim ordada kararsizlik olmasin die tusa basmayinca + 5 volt gidiyor,basilinca 0 volt gidiyor...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

yucelcem

onu anladım, ama direnç koymasakta 5v gidicek, direncin amacını soruyorum pull up'ın değil..

yucelcem

breadboardım çok küçük olduğu için çok karıştı ve direnç koymadan butonu tersledim, ama bu bütün sistemde resetlenmeye yol açıyor, bu direnç koymadığımdan mı kaynaklanıyor?

justice_for_all

sen hangi direncten bahsediyosun bitane var oda pull up zaten...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

yucelcem

pull up direnci bağlamadan direk kabloyu çektim

justice_for_all

Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay