Merhabalar bu yazımda geçen dönem mikrodenetleyiciler dersi kapsamında gerçekleştirmiş olduğum elektronik zar projesinden bahsedeceğim. Uygulama adında da anlaşılacağı gibi elektronik zar devresidir. Zarlar atılmasıyla rastgele değer verdikleri için uygulamanın en önemli kısmı rastgele sayı üretilmesidir. Sayısal Dünyada rastgele sayı üretimi bir çok yerde kullanılan önemli bi konudur.
Mikrodenetleyici ile yada bilgisayar sistemlerinde rastgele sayı üretmek için çeşitli algoritmalar bulunmaktadır. Hatta bazı mikrodenetleyicilerde rastgele sayı üretmek için çevre birimleri bulunmaktadır.
Ben bu uygulamada ratsgele sayı üretme için LFSR (Lineer Feedback Shift Register) yani Doğrusal Geribeslemeli Kaydırmalı Yazmaç algoritmasını kullandım. LFSR’nin basit bir algoritması vardır.
Birbirine bağlı flip flopların çıkışları ex-or kapısından geçirilerek tekrar girişine geribesleme olarak uygulanmasıyla elde edilebilir. Teorik olarak üretilen çıkışlar sınırlıdır ve belli bi sayıdan sonra kendini tekrarlar.
Fakat geri besleme fonksiyonu yani ex-or kapısı ile oluşturulan geribesleme sistemi iyi seçilirse tekrar sayısı oldukça yükseltilebilir. Bu sayede rastgele üretilen sayılar elde edilir. Mikrodenetleyici ile LFSR gerçeklemek için kaydırma ve ex-or işlemlerinden faydalanır.
LFSR’ye başlangıç değeri girilir. Bu değer sıfırdan farklı olmalıdır. Sonrasında her LFSR fonksiyonu çalıştırılınca rasgele sayı üretilir. Ben uygulamamda başlangıç değerini her seferinde mikrodenetleyiciden bağımsız çalışan bir zamanlayıcıdan aldım. Bu sayede daha sağlıklı rastgele sayılar elde ettim.
Rastgele sayı üretmede dikkat edilmesi gereken önemli nokta üretilen rastgele sayıların olasılık yoğunluk fonksiyonun uniform olmasıdır. Yani üretilen her sayının gelme olasılığının aynı olmasıdır. Örneğin bizim uygulamamız için 1-6 arası üretilen her sayının 1/6 olasılıklarla gelmesi gerekir.
Örneğin 600 rastgele değer üretilip bunlar birbirleri ile kıyaslanınca tüm sayıların gelme olasılığı birbirine yakınsa üreteçimiz sağlıklı rastgele sayılar üretiyor demektir. Ben uygulamamda 8 bit (0-255) LFSR kullandım.
Fakat zar için üretilen sayılar 1-6 arasında olacağından üretilen sayının birler basamağına göre işlem yaptım. Birler basamağı 1-6 arasında bir değer değilse tekrar rastgele sayı ürettim. Ayrıca LFSR başlangıç değerini her seferinde bağımsız çalışan zamanlayıcı dan aldım. Bu şekilde zar değerlerini ürettim. Denemelerimde gayet sağlıklı sonuçlar elde ettim. Tüm zar değerleri elde edilebiliyor. Sürekli bi değerde takılma falan yapmıyor.
Yukarı′da devre şeması görülmektedir. Devre şeması basittir. Mikrodenetleyici olarak AT89S52 kullanılmıştır. AT89S52 Atmel firmasının ürettiği flash hafızalı 8051 temelli mikrodenetleyicisidir. Çok iyi bir mikrodenetleyici olmamasına rağmen küçük kapsamlı projelerde düşük maliyet için tercih edilebilir.
AT89S52′nin özellikleri sınırlı olmasına karşın Atmel dahil bir çok firmanın ürettiği gelişmiş özelliklere sahip 8051 temelli mikrodenetleyici bulunmaktadır. Devrede zar değerlerini görüntülemek için 7 parçalı göstergeler kullanılmıştır.
Göstergeleri sürmek için 74HC595 seri tutucu (latch) kullandım. Göstergeleri sürmek için AT89S52 pin sayıları yeterlidir fakat ben mikrodenetleyici portlarından fazla akım çekmemek için hemde daha sağlıklı bi yöntem olduğu için göstergeleri bu şekilde sürdüm. Bu sayede daha az pin kullanılır. 74HC595 kullanışlı bir (entegre) tümdevredir ar darda bağlanarak sadece 3 pin ile birçok çıkış sürülebilir.
Ayrıca devrede bir reset butonu birde zar atma butonu bulunmaktadır. Zar atma butonuna basıldığı müddet göstergelerde zar çalkalamaya benzer animasyon oynatılır. Buton bırakıldığında zar değerleri üretilir.
Yukarı′da devrenin bread board üzerine kurulmuş şekli görülmektedir. Uygulamanın kodları ders kapsamında asembly istendiği için asembly dili ile yazılmıştır. Derleme işleme keil üzerinde yapılmıştır. Keil üzerinde hem C hem asembly program yazımı mümkündür. Ayrıca internet üzerinde 8051 için çeşitli ücretsiz asembly derleyiciler bulunabilir.
AT89S52 74HC595 Elektronik Zar test görüntüleri;
Uygulamaya ait proteus simülasyon ve asm dosyaları;
Şifre-Pass: 320volt.com
Yayım tarihi: 2012/04/26 Etiketler: 74HC595, AT89S52, atmel avr projeleri, electronic dice, elektronik zar
asm dosyası hatalı hex çevirmiyor
Hangi derleyici kullanıyorsun sürümü ne? Keilde sorunsuz derlemesi lazım.
bu devrede zorlanacağımız bir durum söz konusumu acaba .