LCD Ekranlarda Işıklı Menü Nasıl Yapılır ?

Başlatan orhanc, 14 Mayıs 2010, 17:27:04

orhanc

Dos Programlarında aktif satırın renk değiştirmesi gibi bir olayı lcd de yapmak mümkün müdür? Nasıl bir yöntem izlenmeli ?
i'm doing nothing... Giddy Up  http://www.drorhan.com

Tagli

Karakter LCD'de yapamazsın. Grafik LCD ise mantık basit: Karakteri (veya satırı) oluşturan bitlerin tersini alacaksın. Ama bunu yüksek seviyeli bir dilde nasıl yaparsın onu bilmiyorum. Kütüphane dosyalarını kurcalayıp içlerine kendi fonksiyonlarını yazman gerekebilir.
Gökçe Tağlıoğlu

arslan74

Evet mümkün,

Karakter LCD ile ikonun nerede olduğu göstermenisini isityorsan ona göre ayarlayabiliyorsin. Birkaç versiyonu var; sadece alt satır yanıyor veya yanıp sönme gibi yapabiliyorsun.

Grafik LCD lerde ise o olay sana kalmış oluyor. Yazılım olarak istediğin şekilde yapılabilinir.

Tagli

Benim anladığım kadarı ile orhanc tüm satırın renk değiştirmesini istiyor. Yani bir çeşit karakterin negatifini alma işlemi arzulanıyor. Bu işlem karakter LCD'de yapılamaz. Özel karakter tanımlanabilir ama yanlış hatırlamıyorsam en fazla 8 adet olabilen özel karakterlerin yeterli olmayacağı düşüncesindeyim.

arslan74, hocam dediğin doğrudur ancak bu işlem aynı anda sadece tek bir karakterin negatifini alır, tüm satırı ters olarak gösteremezsin.
Gökçe Tağlıoğlu

orhanc

Dos veya bios ekranlarındaki tarzı bir menü sormuştum ana ona uygun arka ışıklı lcd olması gerekiyor sanırım.
i'm doing nothing... Giddy Up  http://www.drorhan.com

Tagli

Arka ışığın konuyla bağlantısını çözemedim. Kullanılması düşünülen LCD, tek renk (monochrome) olanlardan mı? Ben normalde siyah olan yazı, siyah çerçeve içinde beyaz olacak şeklinde canlandırdım aklımda. Yani o satır için bitler ters dönmüş olacak, 1'ler 0, 0'lar 1 olacak. Yanlış mı anlamışım?
Gökçe Tağlıoğlu

orhanc

i'm doing nothing... Giddy Up  http://www.drorhan.com

CLR

Merhaba

Standart lcd'de de ilgili satırdaki verileri bir dizide tutmak kaydıyla, yazılımla yapabilirsin, gerçekte karakter lcdnin öyle bir özelliği yok sadece bir karakter için var,  background nasıl olmasını istiyorsan özel karakter tanımlarsın, 1 timer ile isteğin süreler(250ms gibi) arasında o karakteri string olarak istediğin satıra atarsın sonra süre sonunda olması gereken verileri atarsın, 250ms background karakteri, 750ms orjial data yazılmış olur. Bunu timer interrupt içinde bir loop yaparsan, işlem tamam.



Knowledge and Experience are Power

Tagli

eemkutay, yani 7 parçalı LED göstergelerde yaptığımız gibi tarama yöntemi ile mi çalıştırmaktan bahsediyorsun? Bu ilginç bir fikir, ve eğer LCD'nin işlem hızı yeterli olursa işe yarayabilir. Zaten 16 karakter genişliğinde bir LCD için 2 tarama yeterli olacaktır. Tarama yapılmadan da 8 karaktere kadar bu işlem yapılabilir.

Şimdi işlemi tekrar özetleyeyim: Öncelikle kullanılacak her karakterin negatiflerinin PIC'te bulunması gerekiyor. Bir satırı ters çevirmeden önce, o satırda kullanılacak karakterleri belirleyip bunların negatif versiyonlarını LCD'nin character generator RAM'ine yazmak gerekiyor. Burada en fazla 8 karakter olabilir. Yani satırdaki yazının uzunluğu en kötü ihtimalle azami 8 karakter olabilir, karakter tekrarı varsa daha uzun da olabilir. Daha sonra ise bu satırdaki orijinal karakterler yerine negatif versiyonları yazılacak. Tabi bu işlemi yapmadan, daha önce seçili ve nagatif durumdaki satırı normal hale getirmek şart.

Peki tarama işi nasıl olacak? Seçili satırın 2 adet 8'li parça gibi düşünüp önce yarısını ters çevireceğiz, daha sonra onu normal yapıp diğer yarısını ters çevireceğiz. Ve bu hızlı bir şekilde devam ederse belki göz yanılması ile tüm satır negatif görünebilir. Belki de görünmez... Ayrıca LCD'nin işlem süresi tarama hızını gerekli seviyeye çıkartmaya engel de olabilir. Denemek lazım.
Gökçe Tağlıoğlu

CLR

Alıntı yapılan: Tagli - 01 Temmuz 2010, 01:46:52
eemkutay, yani 7 parçalı LED göstergelerde yaptığımız gibi tarama yöntemi ile mi çalıştırmaktan bahsediyorsun? Bu ilginç bir fikir, ve eğer LCD'nin işlem hızı yeterli olursa işe yarayabilir. Zaten 16 karakter genişliğinde bir LCD için 2 tarama yeterli olacaktır. Tarama yapılmadan da 8 karaktere kadar bu işlem yapılabilir.

Şimdi işlemi tekrar özetleyeyim: Öncelikle kullanılacak her karakterin negatiflerinin PIC'te bulunması gerekiyor. Bir satırı ters çevirmeden önce, o satırda kullanılacak karakterleri belirleyip bunların negatif versiyonlarını LCD'nin character generator RAM'ine yazmak gerekiyor. Burada en fazla 8 karakter olabilir. Yani satırdaki yazının uzunluğu en kötü ihtimalle azami 8 karakter olabilir, karakter tekrarı varsa daha uzun da olabilir. Daha sonra ise bu satırdaki orijinal karakterler yerine negatif versiyonları yazılacak. Tabi bu işlemi yapmadan, daha önce seçili ve nagatif durumdaki satırı normal hale getirmek şart.

Peki tarama işi nasıl olacak? Seçili satırın 2 adet 8'li parça gibi düşünüp önce yarısını ters çevireceğiz, daha sonra onu normal yapıp diğer yarısını ters çevireceğiz. Ve bu hızlı bir şekilde devam ederse belki göz yanılması ile tüm satır negatif görünebilir. Belki de görünmez... Ayrıca LCD'nin işlem süresi tarama hızını gerekli seviyeye çıkartmaya engel de olabilir. Denemek lazım.

Merhaba,

Tarama mantığı gibi düşünülebilir ama burada tarama mantığına göre süreler çok büyük olacağı için kolay bir işlem.
250ms için background karakterleri basılacak(250ms ekranda kalacak), 750ms olması gereken karekterler basılacak(750ms ekranda kalacak), tek timer interrupt ile yapıabilir. Sadece interrupt'a ulaştığında diğer süreye interrupt süresi kurulacak. Tümü bu.

Knowledge and Experience are Power

Tagli

Sanırım daha önce yanlış anlamışım. "Background Karakteri" dediğin şey tamamı dolu kutu şeklinde olan karakter mi (bağımsız LCD'yi elektriğe bağladığımızda üst satırı kaplayan karakterler)? Yani diğer karakterlerin negatiflerini tanımlamamıza gerek yok? 750 ms normal karakterler gösterilecek, 250 ms de tüm satırda dolu kutular gösterilecek, ki bu karakter de zaten tanımlı. Veya dediğin gibi başka bir arka plan karakteri de oluşturulabilir. Bu çok iyi ve kullanışlı bir fikir.
Gökçe Tağlıoğlu

CLR

Alıntı yapılan: Tagli - 01 Temmuz 2010, 18:28:47
Sanırım daha önce yanlış anlamışım. "Background Karakteri" dediğin şey tamamı dolu kutu şeklinde olan karakter mi (bağımsız LCD'yi elektriğe bağladığımızda üst satırı kaplayan karakterler)? Yani diğer karakterlerin negatiflerini tanımlamamıza gerek yok? 750 ms normal karakterler gösterilecek, 250 ms de tüm satırda dolu kutular gösterilecek, ki bu karakter de zaten tanımlı. Veya dediğin gibi başka bir arka plan karakteri de oluşturulabilir. Bu çok iyi ve kullanışlı bir fikir.

Evet, istediğin gibi background oluşturabilirsin, background karakteri sana kalmış, istersen 1 tane background karakteri oluşturursun ve hep onu basarsın veya karakterlerin tersinide alabilirsin ama tarama mantığında kullanılan (5*7)*kullanmak istediğin karakter sayısı kadar byte yer, buna gerek yok bence.
Knowledge and Experience are Power