avatar_serkan_31_31

PİC16F628'li multidısplay (7segmend tarama yöntemi ev kesmeli)

Başlatan serkan_31_31, 13 Aralık 2011, 19:12:52

serkan_31_31

İyi akşamlar hocam, size takıldığım bi yeri soracaktım,soru şu; 2 adet displayde kesme kullanarak 0-99 sayma işlemi gerçekleştiren programı INTERRUPT (kesme) kullanarak yapmak istiyorum. nasıl bi program yazmam gerekiyor? sizin projelerde tarama yöntemi ile yaptıklarınızı inceledim, ama kesme işe karışınca kafam çok karıştı. zaten yeni 7seg displayle uğraşmaya basladım birde ınterupt olunca iyice kafam karıştı.yardımcı olursanız çok sevinirim hocam, şimdiden teşekkürler
serkan ünaldı
Serkan Ünaldı

ete

Serkan ,
Ben de genelde kesme kullanarak taramalı display sürerim. Benim projelere yeniden bak istersen.

Ben sana yinede yapman gerekeni yazayım.
Öncelikle bir Timer0 kesmesi oluştur. Kemse süresi 1 ms yada 1500 us olsun.
Her kesme oluştuğunda ;
- Bir sayaç değişkenini bir artır. Sayac=0 ise birler hanesi displeyine sayac=1 ise onlar hanesi displeyine aşağıdakileri uygula. Sayac 3 ise sayacı yeniden sıfır yap.
- Bir önceki kesmede aktif edilen displayi söndür (ortak besleme ucunu kapat Anot yada katod)
- Yenisine yazılacak bilgiyi segmentelere ver
- Display aktif et
- kesmeden çık.

Buraya kadar yazdıklarımı anladı isen mesele yok demektir. Anlamadı isen bir kez daha anlatayım. Her 1-2ms de bir Timer kesmesi oluşturacaksın.  Her kesmede bir tek displayi aktif edeceksin. Bunuda sayac değişkeni ile taip edeceksin
Hepsi bu kadar.

Ete

serkan_31_31

hocam kusura bakmayın ama anlamadım, okulda daha kesme konusunu anlatmadı hocamız, 2 adet display sürmeyi işliyoruz daha.gördüğüm konulara bağlı olarak 2 display'de sabit sayıyı gösterebiliyorum ama bi lookup tablosu yapıp o tablodakileri bi değişkene yükleme ve kesme konusunu bilmiyorum, okudum kesmeyi ama anlamadım :/ mantık olarak çalışmasını anladım bu tarama yönteminin ama uygulama olarak zayıfım hocam. programa göz atınca çoğu yeri anlayabiliyorum fakat bir komut var araştırdım bulamadım mantığınıda anlamadım.yardımcı olabilirmisiniz hocam, satır şu;
"PORTB=240 | BIRLER"  bu satırda"|"ve"240" ne anlamda kullanılıyor, işlevi nedir hocam?
serkan ünaldı
Serkan Ünaldı

ete

PORTB=240 | BIRLER bir lojik operatör işlemidir. "|" işareti bit bazında OR işleminin işaretidir.
240 Sayısına binary olarak baktığımız zaman 240=%1111 0000  şeklinde bir sayı olarak görürüz.
Birler isimli değişkende birler basamağını rakam olarak tutuyor. Değeri en fazla dokuz olabilir. Diyelimki değeri 6.
Bu durumda PortB=%1111 0000 | %00000110 işleminin sonucu =%1111 0110 şeklinde bir değer olacaktırki buda 246 sayısına eşdeğerdir.  Gördüğün gibi bu satır bu işlemi yapmaktadır.

Ete

serkan_31_31

şimdi bu %11110000 sayısına "|" işareti %00000110 sayısını mı ekliyor yanlış anlamadım değilmi hocam.peki bu 240'a karşılık gelen %11110000 sayısında 1'ler sabitmi? değişkense, değiştiğinde nasıl bi değişiklik olur programda?
Serkan Ünaldı

ete

Anlaşılan ikili (binary) sayı aistemini bilmiyorsun.
240 desimal sayısının ikili sistemdeki karşılığı %11110000 şeklinde yazılır. Birlerin yeri değişirse sayıda degisir. Sayi sistemlerine çalışman gerek. Ayrıca bir OR işlemi toplama yapar. Lojik işlemleri de calısmalısın.
Ete

serkan_31_31

ben kendimi yanlış ifade ettim galiba hocam. sayı sistemlerini tabiki biliyorum or komutunuda biliyorum ben ordaki 240 sayısın anlamı ne demek istemiştim, yani ordaki amacı ne?
Serkan Ünaldı

ete

Program onumde degil. Mutlaka sondaki o 4 adet "1" bir şeyleri kontrol ediyordur.
Ete

serkan_31_31

peki hocam ben biraz uğraşayım çalıştırmayı deneyim, olmadı size tekrar sorarım.herşey için teşekkürler hocam sagolun.iyi akşamlar
Serkan Ünaldı

serkan_31_31

iyi akşamlar hocam ben size bahsettiğim konu hakkında bir çalışmayla uğraştım ama sadece en soldaki display birler hanesini sayıyor. çalışıp çalışmadığını görmek için bir tane LCD ekledim sayac çalışıyor. displayde onlar, yüzler, binler hanesini gösteremedim.yardımcı olurmusunuz hocam teşekkürler
Serkan Ünaldı

Powered by EzPortal