???binary karsılıkların led le gosterimi

Başlatan kavbar, 05 Ocak 2006, 00:52:52

kavbar

ornegin counter dan aldıklarımı binary olarak-9 kadar saysın mesela-
4 tane led e nasıl cıkıs verecem biri bana ornek bir program gosterebilirmi
baktım ya 7-segment kulanmıslar bulunanlarda yada lcd display
picpro ile yazılmıs bi ornek  verebilirmisiniz

Gerok

Alıntı yapılan: "kavbar"
picpro ile yazılmıs bi ornek  verebilirmisiniz



http://rapidshare.de/files/10414448/ikilisayici.rar.html

buraya picbasic pro ile yazılmış bir örnek ve proteus çizimini yükledim..
kolay gelsin...
Mum başka bir mumu yakmakla ışığından birşey kaybetmez...

kavbar

simdi bu programda
 
        "portb=sayac"

diyo bunu yazdıgımda b portunun dan cıkıslar nasıl olur
yani 0000,0001,...........,1001 seklindemi cıkacak led leri hangi pin lere baglıyacam bu durumda b portunda 8 bit lik yani 8 cikis olunca hangisinden cıkacak lsb dindenmi baslar.
bir baska sayac cıkısınıda aynı portun kulanılmayan bacaklarına nasıl yoneltirim

tnen

Sayac degeri portb nin 0. biti ile 7 biti arasına yerleşir.Yani senin sayaç değerin 0 ise 00000000 sayaç degerin 1 ise 00000001 2 ise 00000010 ..... 255 ise 11111111 olur sen sayacı 0-9 arasında saydıracağından son 4 bit yani kucuk degerlikli bitler konum degistirir. ilk 4 bit sürekli 0 dır.

kavbar

simdi benim demek istedigim anlasılmadı galiba
sole anlatayım
59 sn gosterecez 7 tane led
4 u ilk basamak 9 a kadar olan kısmı gosterecek
3 u ikinci basamak 5 e kadar gosterecek
gosterimler binary olarak olacak
bunuları aynı porttan alarak nasıl yaparım

ben ikinciyi shift leyip birinci ile OR layıp ole port ta esitlesek olur diye dusundum ama bilmem olurmu calısan bi program yazamadım bole

Gerok

benim merak ettiğim neden 5 ile 9 u ayrı düşünüyorsun ?
yani amaç ikili sayı sisteminde 59 a kadar saymaksa bunu tek sayaçla yapabilirsin
Mum başka bir mumu yakmakla ışığından birşey kaybetmez...

tnen

Sayacını dijitlere ayırıp.Ornegin 59 için birler 9 onlar 5 olacak sekilde birer degişkene ata. Sonra onlar degerini 16 ile çarp.Elde ettiğin sayı ile birler basamagını topla. Bu degeri porta yolla. Kolay gelsin...

ete

@Kavbar,
Sorunun cevabı basit ve şöyle,
Diyelimki sayın 59 olsun (Sayı=59)
Birler basamağı BIRLER=DIG 0
Onlar basamağı ONLAR =DIG 1

Yine diyelimki PortB 0-1-2-3 nolu pinlere de ledler bağlı.
Şimdi önce birler basamağını binary olarak PortB.0-3 pinlerine veriyoruz.
Portun diğer pinlerinin durumunu bozmamak için;
DURUM=PORTB | BIRLER (yalnızca 0-3 arası bitlere ONLAR bilgisini yerleştirdik.)
PORTB=DURUM
PAUSE 200 '200 ms bekledik
DURUM=PORTB | ONLAR
PORTB=DURUM

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

tnen

@Ete hocam arkadas 7 led kullanmak istiyor. Portun 0-1-2-3 uncu bitlerine birler 4-5-6 ncı bitlerine onlar basamagının bınary degerini gormek istiyor benim anladıgım kadarıyla bunun için sayacın basamaklara ayrılmıs degerleri uzerinden işlem yapıp porta 7 bitlik bi deger gondermemiz gerekecek. söyleki;

onlar = sayac dig 1
birler = sayac dig 0

daha sonra onlar degeri 16 ile carparak onlar basamagı 4 bit kaydırılır.Yani sayac 59 ise onlar basamağı 5 bunun binary karşılığı 8 bit için 00000101 ama biz bu degeri portun 0-1-2-3 değil 4-5-6 ncı bitlerine yerlestirmek istiyorsak 4 bit kaydırmalıyız. Bunuda 2 uzeri 4 = 16 ile carparak yapabiliriz. Bu durumda onlar basamagı için 5 olan sayımız ; 5*16 = 80 olur bunun binary karsılıgı 01010000 olur. daha sonra birler basamagının degeri ile or işlemine tabi tutulursa  onlar basamagı için elde ettiğimiz degeri etkilemez. Or işleminden sonra elde edilen degerin 4-5-6 ncı bitleri onlar 3-2-1-0 ıncı bitleri birler basamagını ifade eder.Elde edilen deger porta yollanabilir.

ete

@tnen,
önerdiğin yolda yanlış değil. Ancak ben aşağıdakini tercih ederim. Daha az kod üretir.
Şayet 7 bit de her iki çıkışı görmek ister ise o zaman bana göre kısa çözüm şöyle olmalı;
DURUM=ONLAR
DURUM= DURUM << 4
DURUM=DURUM | BIRLER
PORTB=DURUM

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

tnen

Hocam hakl1s1n zaten benim 16 ile çarpmam onlar basamag1n1 4 bit kaydirmak  içindir.
Kolay gelsin saygilar..