4Sat 20 sut Lcd Dis. ile 4 Sat. Kapsayan Yazı Yazılabilirm

Başlatan rree, 29 Ocak 2006, 19:15:13

rree

Arkadaşlar Elimde 4Satır 20 sütün Lcd Dis.  var 4 Satıra Kapsayacak şekilde büyük yazılar yazılabilirmi  yoksa tasviye edebileceğiniz başka
display tipleri varmı.  Yazıların yüksekliği 1 cm kadar olmasını istiyorum.
Proton pic basic kullanıyorum

Erol YILMAZ

Grafik LCD leri incelemen gerekiyor...

Kolay Gelsin

fsan


rree

Yukarıdaki Lcdler işime yarar turkiyede bulunuyormu  Elimdeki GDM2004D Kotlu displey de büyük yazılar yazılabilirmi.ilg Arkadaşlara teş.

OG

Bunlar çok işe yarar, bulan olursa haber eyleye. Türkiye'ye 1kg lık taşıma 45usd. toplu getirmek lazım.
http://www.seetron.com/foreign.htm
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mhk

Neden yazılmasınki? Bir ara bu forumda lcd karakter seti oluşturluması üzerine yazı yazmıştık lakin nerde olduğunu bulamadım. Onunla ilgili kutucuk oluşturulup birleştirilerek yazılar büyük yazılabilir. Örneğin A harfi yazmak için bir alt programda bu hrafi oluşturmak için karakterler tanıtılıp lcd ye yazılabilir. Dikkat edersen fsan'ın verdiği resimde L harfi için 1. 2. 3. 4. satır ilk karakterleri kutucuk şeklinde. Hatta lcd karakter setinde içi dolu kutu şekli var.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

ete

Aslında bu yazıları yazmak için illaki serial LCD olması şart değil. Normal LCD lerde de aynı iş yaptırılabilir. Baştan söylemek gerekir ise biraz zahmetli bir iş.
Yazılan yazılara bakarsanız toplamda 4-5 karekter kullanılıyor. LCD ler de 8 adet yeni karekter oluşturulabiliyor. Bu karekterler oluşturulacak ki adamlar zaten datalarında vermişler. Hatta rakam ve harflerin büyük karekter datalarınıda vermişler. Bunlar kullanılarak akıllı bir programla istenilen yazı ekrana yazılabilir. İşin zahmetli kısmı karekterin ekranda istenilen bir konumda oluşturulması. Biraz daha açarsak;
- Her bir karekter yan yana 4 karekterden oluşuyor. Yukarıdan aşağıya ise 4 satır kullanılıyor. Bu demektirki 20x4 lik bir LCD ye aynı anda ekrana 5 karekter yazabilirsiniz. Bu nekadar işinize yarıyacak tartışılır. ANcak karekter kaydırma yapılarak belkide LCD biraz daha kullanışlı hale getirilebilir. Her bir karekter yan yana 4 karekterden oluştuğuna göre bit tipi kaydırma bile yapılabilir.
- 1 adet karekterin ekrana yazılması işi aşağıdaki safhalardan oluşmaktadır.
 a) Karekterin 1. satır da yer alan 4 adet karekterini yaz.
 b) Kursörü alt satıra al ve karekterin 2. satırda yer alan 4 adet datasını yaz.
 c) Kursörü 3. satıra al ve karekterin 3. satırda yer alan 4 adet datasını yaz.
 d) Kursörü 4. satıra al ve karekterin 4. satırda yer alan 4 adet datasını yaz.
Böylece ilk karekter ekranda belirir. İkinci karekter için satır ilerleme değişkeni 5 artırılır. Bu şu demektir. YAzılacak yer ekranda baştan itibaren 5. konumdur. Aynı işlemler orada tekrarlanır.
Karekter dataları birer lookup tablosunda tutularak iyi bir program yazılabilir. Tabiiki uzun bir program olacaktır.

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

rree

Açıklamalr için teş. Verdiğiniz ip uçları sayesinde Programı yazdım.Kotlarını  aşağıya yazıyorum daha basit program yazan olursa paylaşırım.
Print $FE,$40,00,00,00,01,03,07,15,31  '0 Tanımlı kul Tan. Adrese Karekter yukle
Print $FE,$48,00,00,00,16,24,28,30,31  '1 Tanımlı kul Tan. Adrese Karekter yukle
Print $FE,$50,31,15,07,03,01,00,00,00  '2 Tanımlı kul Tan. Adrese Karekter yukle
Print $FE,$58,31,30,28,24,16,00,00,00  '3 Tanımlı kul Tan. Adrese Karekter yukle
Print $FE,$60,00,00,00,00,31,31,31,31  '4 Tanımlı kul Tan. Adrese Karekter yukle
Print $FE,$68,31,31,31,31,00,00,00,00  '5 Tanımlı kul Tan. Adrese Karekter yukle
Print $FE,$70,31,31,31,31,31,31,31,31  '6 Tanımlı kul Tan. Adrese Karekter yukle 
Print $FE,$78,00,00,00,00,00,00,00,00  '7 Tanımlı kul Tan. Adrese Karekter yukle

rree

Str StR1="1,23"  
   For i=0 to 3 
    Asc2=STR1[i]
   
   

Select Case ASC2
 Case 46
   Bk1=Lread D460
   Bk2=Lread D461
   Bk3=Lread D462
   Bk4=Lread D463
 
 Case 48
   Bk1=Lread D480
   Bk2=Lread D481
   Bk3=Lread D482
   Bk4=Lread D483
 Case 49
   Bk1=Lread D490
   Bk2=Lread D491
   Bk3=Lread D492
   Bk4=Lread D493

Case 50
   Bk1=Lread D500
   Bk2=Lread D501
   Bk3=Lread D502
   Bk4=Lread D503

Case 51
   Bk1=Lread D510
   Bk2=Lread D511
   Bk3=Lread D512
   Bk4=Lread D513

Case 52
   Bk1=Lread D520
   Bk2=Lread D521
   Bk3=Lread D522
   Bk4=Lread D523

Case 53
   Bk1=Lread D530
   Bk2=Lread D531
   Bk3=Lread D532
   Bk4=Lread D533

Case 54
   Bk1=Lread D540
   Bk2=Lread D541
   Bk3=Lread D542
   Bk4=Lread D543

Case 55
   Bk1=Lread D550
   Bk2=Lread D551
   Bk3=Lread D552
   Bk4=Lread D553
Case 56
   Bk1=Lread D560
   Bk2=Lread D561
   Bk3=Lread D562
   Bk4=Lread D563
Case 57
   Bk1=Lread D570
   Bk2=Lread D571
   Bk3=Lread D572
   Bk4=Lread D573

End Select
   
   Print At 1,Sut,Bk1.Byte3,Bk1.Byte2,Bk1.Byte1,Bk1.Byte0
   Print At 2,Sut,Bk2.Byte3,Bk2.Byte2,Bk2.Byte1,Bk2.Byte0
   Print At 3,Sut,Bk3.Byte3,Bk3.Byte2,Bk3.Byte1,Bk3.Byte0
   Print At 4,Sut,Bk4.Byte3,Bk4.Byte2,Bk4.Byte1,Bk4.Byte0
   Sut=Sut+5
   if Asc2=46 Then Sut=Sut-4
 Next i
 
End 
 
D460:Ldata $07070707
D461:Ldata $07070707
D462:Ldata $07070707
D463:Ldata $31070707

D480:Ldata $00050501
D481:Ldata $06070706
D482:Ldata $06070706
D483:Ldata $02040403

D490:Ldata $07000607
D491:Ldata $07070607
D492:Ldata $07070607
D493:Ldata $07040604

D500:Ldata $00050501
D501:Ldata $07070403
D502:Ldata $00050707
D503:Ldata $06040404

D510:Ldata $00050501
D511:Ldata $07070403
D512:Ldata $07070501
D513:Ldata $02040403

D520:Ldata $06070706
D521:Ldata $06070706
D522:Ldata $02050506
D523:Ldata $07070706

D530:Ldata $06050505
D531:Ldata $02040401
D532:Ldata $07070706
D533:Ldata $02040403

D540:Ldata $00050507
D541:Ldata $06000401
D542:Ldata $06070706
D543:Ldata $02040403

D550:Ldata $02050506
D551:Ldata $07070003
D552:Ldata $07070607
D553:Ldata $07070607

D560:Ldata $00050501
D561:Ldata $02040403
D562:Ldata $00050501
D563:Ldata $02040403

D570:Ldata $00050501
D571:Ldata $06070706
D572:Ldata $02050306
D573:Ldata $07040403


End



rree

Not:Select 46 virgül kullanmak için  AscII cogu tutmazsa ilgili ascII kodunda yazılmalı

rree

'Değişken turude soyle
Dim i as Byte
Dim Asc2 as Byte
Dim Sat as Byte
Dim Sut as Byte
Dim Bk1 as Dword
Dim Bk2 as Dword
Dim Bk3 as Dword
Dim Bk4 as Dword
Dim AnDF1 as Float
Dim STR1[5] AS BYTE


Code tag ı unutmayalım !!

rree

Proteusta çalıştı ama Proatikte problem çıktı..Sorunu çözen olursa sevinirim. Pcm1602B Kotlu 2 satır lcd de yazılar çıkıyor(çalışıyor). Esas aradım büyük yazılar idi. Gdm2004D  4 satırlık Lcd takıyorum Anlaşılmaz karekterler çıkıyor. Lcd Config. Şöyle
DECLARE LCD_TYPE = 0
 DECLARE LCD_DTPIN = PortB.4
 DECLARE LCD_ENPIN = PortB.3
 DECLARE LCD_RSPIN = PortB.2
 DECLARE LCD_RWPIN = PORTB.1
 DECLARE LCD_INTERFACE = 4
 DECLARE LCD_LINES = 4
Acaba Gdm2004D Lcd arızalımı yoksa ozel bir işlemmi yapmam lazım.

ete

Senin bu GDM2004D normal bir LCD midir yoksa Grafik LCD midir. Bundan emin olman gerekir. Kod açıklaması bana sanki grafik LCD gibi geldi.
Bizim bahsini ettiğimiz büyük yazı yazdırma işi normal LCD ler için geçerli idi. Grafikte bu iş daha başka yolla halledilmesi gerekir.
Önce aşağıdakini bir dene istersen
LCD ye normal bir yazı yazdırma komutu ver. Örneğin 1-2-3-ve 4.. satırlara merhaba yazsın. Bakalım yazabiliyormu yoksa yine abuk subuk karekterlermi çıkıyor. Şayet yazı düzgün çıkıyor ise yazdığın programı bu LCD de de kullanabilirsin demektir. Yok çıkmaz ise ortaya iki ihtimal çıkıyor. Ya LCD in grafik tipi dir yada H44780 uyumlu değildir.

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

rree

3 gün uğraşı sonrası hatayı buldum. O da tesadüfen. Mikro denetleyiciyi 4Mhz de derledim  display de garip semboller vardı.  Sonra 10 mhzde derledim  devreyi 4Mhz de çalıştırdım disply çalıştı. Bunun üzerinde internette  araştırma yaptım proton Picbasicde disply data gecikmesi ile ilgili bir  Declare  rutini varmı bir iki komut buldum. her print önüne Delayms 500 yazdım disply çalıştı. Tabii bu içime sinmedi.Standart dışı bir durum oluştu. Sonra bir cls komutu eklemem gerekti ekledim. Disply eski anlaşılmaz sembolleri yine üretti. Bu çalışmam sırasında fişi prizden sökerken elim kaydı fiş tekrar takılı kaldı o sırada dispy den düzgün karekterlerinin çıktığını gördüm. O durumda şunu düşündüm mikro işlemci configirasyon bitlerini disply e gönderiyor disply henüz çalışma gerilimine ulaşmadığı için konfigirasyon ayarları yapılmadığına karar verdim. Bütün Delay komutlarını sildim. Programın ilk başına 4 sn bir gecikme komutu ekledim. Disply 10 mhz derlemedede 4Mhz derlemedede düzgün çalışıyor.
Mavi ışıklı disply kullanan arkadaşlara bu  tecrübenin  yaralı olacağını düşünerek yazdım.