AT89S52 ile POV display

writersoul

Üye
Katılım
15 Nis 2017
Mesajlar
69
Puanları
1
Yaş
58
Arkadaşlar merhaba,
Aşağıda linkini verdiğim havada yazı yazan devreyi lehimleyip çalıştırdım. Merak ettiğim acaba içinde gömülü gelen yazılımı değiştirilerek istediğimiz yazıyı yazdırabilir miyiz?

https://github.com/tardate/LittleArduinoProjects/tree/master/Electronics101/PovShakeStickKit
 
Nasıl? Biraz açıklayabilir misiniz?
---linkte verilen kodun neresi nasıl değiştirilerek yeni harfler oluşturulacak?
---AT89s52 mikroişlemcisi Atmel studio ile derlenemiyor. Bu iş için galiba Keil kullanılıyor.
---linkte verilen kod hangi IDE kullanılarak değiştirilecek...

Ekte verdiğim kodda LOVE yazısını çıkartan dizi nasıl oluşturulmuş? Bunun mantığı çözülürse her türlü yazı oluşturulabilir.
 

Ekli dosyalar

  • POV KODU.txt
    9.2 KB · Görüntüleme: 3
Ben konuya tam hakim değilim.Hobi olarak ilgileniyorum.
Hangi derleyici olduğunu bilmiyorum. Kodlarda işaretlediğim yerler olması lazım.
 

Ekli dosyalar

  • POV KODU.txt
    9.3 KB · Görüntüleme: 4
Derleyici olayını çözdüm. Derleyici Keil uVision işlemci ise ARM tabanlı AT89S52 . Kodlar C++ ile yazılmış. Sizinde işaretlediğiniz kod bölümünde karakterler oluşturulmuş. Bunun Mantığını çözmek lazım...
 
Mantığı çözmek için devreyi yapıp kodu değiştirerek deneme yapılabilir.
 
Mantık derken devrenin çalışması mı karakterleri mi kast ettiniz? KArakterler için bu mesaja veya konuya genel bakmanızda fayda var sanırım;

https://www.kontrolkalemi.com/forum/konu/havada-yazı-örnek-kodlar.75158/post-814366

Devre çalışması temel olarak anahtarlama sonrası belirli süreden sonra ledleri kırpmak diye aklımda kalmış, anahtar olarak her tür olabilir (basit anahtardan değişik sensörlere kadar).
 
Mantığı çözmek için devreyi yapıp kodu değiştirerek deneme yapılabilir.

Gömülü gelen kodde oynayarak karakterin nasıl oluşturulduğunun mantığını çözmek de bir yöntem ama bu çok uzun zaman alabilir. genel olarak harflerin/sayıların/karakterlerin bu tip sistemlerde nasıl oluşturulduğunun mantığı bilinirse daha kolay olur diye düşünüyorum...
Mantık derken devrenin çalışması mı karakterleri mi kast ettiniz? KArakterler için bu mesaja veya konuya genel bakmanızda fayda var sanırım;

https://www.kontrolkalemi.com/forum/konu/havada-yazı-örnek-kodlar.75158/post-814366

Devre çalışması temel olarak anahtarlama sonrası belirli süreden sonra ledleri kırpmak diye aklımda kalmış, anahtar olarak her tür olabilir (basit anahtardan değişik sensörlere kadar).


devrenin nasıl çalıştığı değil de harflerin/sayıların/karakterlerin kod ile nasıl oluşturulduğunu anlamak istemiştim. Örneğin 7 segment displayde nasıl rakamların oluştuğunu biliyoruzi. Uygun şekilde Devreyi kurduktan sonra 0xFF dersek tüm segmentler yanar ve 8 sayısı oluşur (ortak katod).. peki bu pov sisteminde bu nasıl yapılıyor...
https://www.kontrolkalemi.com/forum/konu/havada-yazı-örnek-kodlar.75158/post-814366

bu konuyu inceliyorum.

Çok değişik karakter oluşturma şekli var.

örneğin;

0xFF,0x02,0x0C,0x02,0xFF,0x00, // M
0xFF,0x89,0x89,0x89,0x81,0x00, // E
0xFF,0x11,0x31,0x51,0x8E,0x00, // R
0xFF,0x10,0x10,0x10,0xFF,0x00, // H
0xFC,0x12,0x11,0x12,0xFC,0x00, // A
0xFF,0x89,0x89,0x89,0x76,0x00, // B
0xFC,0x12,0x11,0x12,0xFC,0x00, // A
0x00,0x00,0x00,0x00,0x00,0x00 // Bosluk

ya da;
{0x7e,0x09,0x09,0x09,0x7e}, // A 0x41 65
{0x7f,0x49,0x49,0x49,0x36}, // B 0x42 66
{0x3e,0x41,0x41,0x41,0x22}, // C 0x43 67
{0x7f,0x41,0x41,0x41,0x3e}, // D 0x44 68
{0x7f,0x49,0x49,0x49,0x41}, // E 0x45 69
{0x7f,0x09,0x09,0x09,0x01}, // F 0x46 70
{0x3e,0x41,0x49,0x49,0x7a}, // G 0x47 71
{0x7f,0x08,0x08,0x08,0x7f}, // H 0x48 72
{0x00,0x41,0x7f,0x41,0x00}, // I 0x49 73
{0x20,0x40,0x41,0x3f,0x01}, // J 0x4a 74
{0x7f,0x08,0x14,0x22,0x41}, // K 0x4b 75
{0x7f,0x40,0x40,0x40,0x40}, // L 0x4c 76
{0x7f,0x02,0x0c,0x02,0x7f}, // M 0x4d 77
{0x7f,0x04,0x08,0x10,0x7f}, // N 0x4e 78
{0x3e,0x41,0x41,0x41,0x3e}, // O 0x4f 79
{0x7f,0x09,0x09,0x09,0x06}, // P 0x50 80
{0x3e,0x41,0x51,0x21,0x5e}, // Q 0x51 81
{0x7f,0x09,0x19,0x29,0x46}, // R 0x52 82
{0x46,0x49,0x49,0x49,0x31}, // S 0x53 83
{0x01,0x01,0x7f,0x01,0x01}, // T 0x54 84
{0x3f,0x40,0x40,0x40,0x3f}, // U 0x55 85
{0x0f,0x30,0x40,0x30,0x0f}, // V 0x56 86
{0x3f,0x40,0x30,0x40,0x3f}, // W 0x57 87
{0x63,0x14,0x08,0x14,0x63}, // X 0x58 88
{0x07,0x08,0x70,0x08,0x07}, // Y 0x59 89
{0x61,0x51,0x49,0x45,0x43}, // Z 0x5a 90

ya da buradaki gibi (L,O,V,E) - örneğin burada hangi satır/sütun L harfi;

uchar code love[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,
0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,
0x04,0x10,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x04,0x10,0xF8,0x0F,0x00,0x00,
0x00,0x00,0x00,0x00,0xFE,0x07,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x10,
0x00,0x08,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x82,0x20,0x82,0x20,
0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*LOVE*/
};

hiçbiri birbirini tutmuyor

A harfi için iki farklı yazım var.
0xFC,0x12,0x11,0x12,0xFC,0x00, // A
{0x7e,0x09,0x09,0x09,0x7e}, // A 0x41 65

sanırım devredeki led bağlantılarına göre sıfırdan oluşturuluyor..

işte bu nasıl yapılıyor?

başka bir siteden bunu buldum, tam olarak öğrenmek istediğim buydu;
(site kuralının izin vermiyeceğini düşünerek linki yazmadım)

"" Program yazmaya geçmeden önce havada yazılacak harflere (veya karakterlere) göre sütun bilgilerinin elde edilmesi gerekiyor. Bunun için kağıt üstünde birkaç çizim yapmak lazım. Örneğin şekil 2’de, A, B, C harflerini oluşturmak için 8 LED’den hangilerinin yanması gerektiği zaman adımına bağlı olarak gösteriliyor.

abc led display


Şekilden görüldüğü gibi her bir harf, 8 satır ve 5 sütundan oluşuyor. Harfler arasında da 1 boş sütun bulunuyor. Bu mantığa göre havaya 8 harften oluşan bir yazı yazmak için toplam 48 adet sütun bilgisi gerekli. Yani PIC mikro denetleyicinin 48 adet sütun bilgisini uygun zaman

havasa yazi isis devre semasi


aralıklarıyla porttan gönderecek şekilde programlanması gerekiyor.

Sütun bilgilerinin nasıl elde edildiği şekil 3’de ayrıntılı olarak görülüyor. Örneğin A harfine ait sütun bilgilerini elde etmek için yapılması gereken işlem, sönük haldeki LED’lerin yerine 0 rakamını, yanan LED’lerin yerine de 1 rakamını yazmaktan ibaret. Bu durumda her bir sütun için 0 ve 1’lerden oluşan 8 bitlik bir sayı elde edilir.


Bu sayı 16’lık (hexadesimal) tabanda yazıldığında sütun bilgileri elde edilmiş olur. Örneğin A harfi için ilk sütundaki 8 bitlik 11111100 sayısının 16’lık taban karşılığı 0xFC’dir. Aynı şekilde son sütundaki 00000000 sayısının 16’lık taban karşılığı da 0×00’dır. Burada 0x sembolü sayının 16’lık tabanda olduğunu gösterir. Bu şekilde bütün harfler için sütun bilgileri kolaylıkla elde edilebilir.

0x00 led harf
""
Ayrıca bunları da buldum;

"" her harf 8x6 şeklide kodlanıyordu. Yazacağınız kelimenin harflerini tek tek 8x6 şeklinde ayırdığınız kareli deftere kareleri doldurarak kodluyorsunuz. Sonra bunları yukardan aşağı binary olarak altına yazıyorsunuz. Sonra bilimsel hesap makinesi kullanarak veya kafadan binary sayıları hexadecimal e çeviriyorsunuz. Programdaki her harfin yerine oluşturduğunuz kodları tek tek yazıyorsunuz. ""
 
Son düzenleme:

Forum istatistikleri

Konular
128,133
Mesajlar
915,316
Kullanıcılar
449,852
Son üye
ddknght

Yeni konular

Geri
Üst