basic ile 3310 lcd'ye yazmak biraz daha kolaylaştı

Başlatan est32, 15 Eylül 2011, 01:11:06

est32

3310 lcd ile ilgili netten bir süre araştırma yaptım.Hep C kütüphaneleri buldum ama işin içine basic girince kütüphane değil de hep program yazılmıştı.Bunları inceledim ama ilk başlarda hiçbirşey anlamamıştım,çok karışık gelmişti,daha doğrusu çalışma mantığını kavrayamamıştım.

Tabii insan zamanla bazı şeyleri çözmeye başlıyor,ben de bulduğum programlar arasında karşılaştırma yaptım,hatta lcd komut kısımları hepsinde neredeyse aynıydı.Derken azar azar mantığını çözmeye/anlamaya başladım.Ardından bunu nasıl basitleştirebileceğimi düşündüm.Çünkü herkes kendi ihtiyacına göre birşeyler yapmış,kendi mantığına göre yazı yazmış.Programa bakıyorum programda bir satır yazı yok ama ekrana görüntü gelince yazılar çıkıyor allah allah???

Biraz düşündüm,eğer Türkçe karakterleri de desteklerse bu belki LOOK UP tablosu ile yapabilirdi(benim için lcd ekranda Türkçe karakter çok önemli,nedense buna çok önem veriyorum).Bir deneme yaptım ve Türkçe karakter konusunda sıkıntı olmadı,derleyici Türkçe karakter için hata vermedi,anlaşılan Türkçe karakterler de ascii olarak tablodan çıkabilmişti.

Ardından LOOK UP komutunu kullanmaya karar verdim ve programdaki gerekli alanları yeniden düzenledim,hiç olmazsa yazı yazacağım yeri göreyim,yazılarımı o belirli satır içine yazayım dedim.Ayrıca kod tasarrufu da sağlıyor,program şu hali ile 1236 kelime kullandı,diğer satırlar açılsa bile tasarruflu

Doğrusu yazdığım program tamamı ile bana ait değil,netten bulduğum(hatta ete hocanın programından da biraz arakladım) programların işime yarayacak kısımlarını tek programda birleştirdim ve üst kısımdaki LOOK UP tablolarını içeren kısımları da kendim tasarladım.
Yazı yazmayı başardım ama ekrana değişken verme sorunu başladı bu sefer.Onunla da bugün cebelleştim ve onu da çözdüm çok şükür(rakamlar da tablodan ascii olarak çıkıyormuş,bu yüzden biraz uğraştım).

Neyse çok konuştum,programı ve resimleri aşağıya ekliyorum.Programdaki yazıları görürsünüz zaten oraya ne isterseniz yazarsınız,düzenler derlersiniz.

Programda alıntı bölümler var,tamamı bana ait değil,sanırım bunu belirttiğim için bir sorun çıkmaz,yazarlarını bilmiyorum çünkü

Programı proton ile yazdım,aslında bulduklarımın hepsi pbp idi ben  protona çavirdim,proton derleyiciniz varsa olduğu gibi alır kullanırsınız,yoksa bazı komutları pbp'ye göre değiştirirsiniz,basit zaten.Bilemezseniz yardım istersiniz.

Bu program sadece bir deneme,isterseniz ilerletebilirsiniz,ben sadece bugüne kadar geldiğim/öğrendiğim noktada paylaştım.daha sonrasını bilemem belki bırakır bi daha hiç uğraşmam,garantisi yok,bana güvenmeyin:) isteyen resim ekler başka bişey yapar,büyük font yazı yazar...

Ayrıca çok ilginç bir şey keşfettim;forum için lcd'nin fotoğrafını çekerken flaş patlayınca ekrandaki tüm yazılar siliniyor(yani lcd sapıtıyor ve kilitleniyor ekran boş olarak öylece kalıyor).Önce flaş ta oluşan yüksek gerilimden olabileceğini düşünmüştüm ama değil,flaşı elimle kapatınca sorun olmuyor,anlaşılan çok parlak ışıktan lcd etkileniyor.

Aklınıza takılanları sorarsınız,amacım bu ekran ile uğraşmak isteyip de mantığını çözemeyen,cesareti gelmeyen... arkadaşlara işi azıcık daha basitleştirerek yol göstermek.Yoksa çok daha güzel uygulamalar yapanlar var,ben de acemisiyim







'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [ESAT METİN ERDOĞAN]                              *
'*  Notice  : Copyright (c) 2011 [İZİNSİZ KULLANMAK HARAMDIR]   *
'*          : All Rights Reserved                               *
'*  Date    : 05.09.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEVICE=16F628A
CONFIG CP_OFF,DATA_CP_OFF,WDT_OFF,INTRC_OSC_NOCLKOUT,MCLRE_OFF,LVP_OFF,BODEN_OFF,PWRTE_ON
XTAL=4
CMCON=7
SYMBOL CLK=PORTA.6
SYMBOL DTA=PORTA.7
SYMBOL RST=PORTA.1
SYMBOL D_C=PORTA.0

DIM POSX AS BYTE,POSY AS BYTE,I AS WORD,SATIR AS BYTE,SUTUN AS BYTE,SAYI AS WORD
DIM LCDDATA AS BYTE,KONUM AS BYTE,DEGISKEN AS BYTE,COLUMN [6] AS BYTE,DIJ AS BYTE

GOSUB LCD_AC
GOSUB LCD_SIL
CLEAR
DELAYMS 100
'************************************************************************************************
SATIR_1:
         SATIR=0'İLK SATIR
         FOR I=1 TO 10'ALTTAKİ KÖŞELİ PARANTEZ İÇİNDE KAÇ KARAKTER VARSA I DEĞERİ O KADAR OLACAK
         DEGISKEN=LOOKUP KONUM,["ESAT METİN"]'YAZMAK İSTEDİĞİNİZ YAZIYI BURAYA YAZIN(DEĞİŞKEN YAZILAMAZ)
         KONUM=KONUM+1'TABLODAN BİR SONRAKİ KARAKTERİ AL
         GOSUB SATIR_YAZ'BU ETİKETE GİT VE KARAKTERLERİ DEĞİŞKENLERE YERLEŞTİR
         GOSUB YOLLA'DEĞİŞKENLERE YERLEŞTİRİLEN KARAKTERLERİ BU SATIRDA YOLLA
         'GOSUB YAVAS_YAZ'İSTENİRSE SATIR AÇILARAK HARFLER EKRANA YAVAŞ YAVAŞ TANE TANE GETİRİLEBİLİR
         NEXT'TÜM KARAKTERLERİ GÖNDERENE KADAR DEVAM ET,BURADA 10 DEFA
         CLEAR SUTUN : CLEAR KONUM'SUTUN VE TABLOYU SIFIRLA
'***********************************************************************************************
SATIR_2:
         SATIR=1'İKİNCİ SATIR
         FOR I=1 TO 7'ERDOĞAN KELİMESİ 7 KARAKTERDEN OLUŞTUĞU İÇİN DÖNGÜ 7 KEZ TEKRAR EDECEK
         DEGISKEN=LOOKUP KONUM,["ERDOĞAN"]'YAZINI YAZ,FOR NEXT DÖNGÜSÜNDEKİ SAYI BURADAKİ KARAKTER SAYISI İLE AYNI OLACAK
         KONUM=KONUM+1
         GOSUB SATIR_YAZ
         GOSUB YOLLA
         'GOSUB YAVAS_YAZ
         NEXT
         CLEAR SUTUN : CLEAR KONUM
'***********************************************************************************************
SATIR_3:
         SATIR=2
         FOR I=1 TO 14'HER KARAKTER 6 SUTUN,EKRAN 84*48 OLDUĞUNDAN EN FAZLA 14 KARAKTER SIĞAR,6X14=84
         DEGISKEN=LOOKUP KONUM,["NOKIA 3310 LCD"]
         KONUM=KONUM+1
         GOSUB SATIR_YAZ
         GOSUB YOLLA
         'GOSUB YAVAS_YAZ
         NEXT
         CLEAR SUTUN : CLEAR KONUM
'***********************************************************************************************
SATIR_4:
         SATIR=3
         FOR I=1 TO 6
         DEGISKEN=LOOKUP KONUM,["SAYI: "]'HER KARAKTER 6 SUTUNDUR.BURADA 6 KARAKTER VAR 6X6=36
         KONUM=KONUM+1
         GOSUB SATIR_YAZ
         GOSUB YOLLA
         'GOSUB YAVAS_YAZ
         NEXT
         CLEAR SUTUN : CLEAR KONUM
         DELAYMS 1000

'////////////////////////////DEĞİŞKEN BU SATIR ALTINDA EKRANA GETİRİLİYOR////////////////////////////                                         
         
         'SATIR=4'BU SATIRI AÇARSANIZ ALTTAKİ SATIRIN 36.SÜTUNUNA YAZAR,DAHA İYİ ANLAMAK İÇİN DENEYİN
         SUTUN=36'"SAYI: " YAZISINDAN SONRA YAZMAK İÇİN SUTUNU 36 YAPTIK,DEĞİŞTİRİP DENEYEBİLİRSİNİZ
         IF SAYI>10000 THEN DIJ=4'EKRANDA SAYILARIN BAŞINDAKİ SIFIRLARIN ÇIKMASINI ENGELLER,65535'E KADAR
         IF SAYI<10000 THEN DIJ=3'ÖRNEK;SAYI=25 İSE EKRANDA 00025 OLARAK GÖRÜNMESİNİ
         IF SAYI<1000 THEN DIJ=2'BU SATIRLARLA ENGELLEDİM
         IF SAYI<100 THEN DIJ=1'SAYI 100'DEN KÜÇÜKSE ÇİFT HANE
         IF SAYI<10 THEN DIJ=0'SAYI 10'DAN KÜÇÜKSE TEK HANE
         
         FOR I=DIJ TO 0 STEP -1'EN KÜÇÜK DEĞERİN EN SAĞDA OLMASI İÇİN ÇIKARMA YAPIYORUZ,YOKSA EN SOLDA GÖRÜNÜR
         DEGISKEN=SAYI DIG I
         IF DEGISKEN<48 AND DEGISKEN<58 THEN DEGISKEN=DEGISKEN+48'RAKAMLARIN ASCİİ KARŞILIĞINI BULMAK İÇİN
         GOSUB SATIR_YAZ'ASCİİ TABLOSUNDA 0=48,1=49,2=50,3=51,....,9=57'DİR
         GOSUB YOLLA
         NEXT             
                             
         SAYI=SAYI+1'SAYIYI 1 ARTIR
         CLEAR SUTUN
         'GOSUB LCD_SIL'İSTERSEK LCD'Yİ SİLEBİLİRİZ,ÇOK FAZLA SİLERSEK EKRANDA TİTREME OLUR,BU PROGRAMDA SİLMEYE GEREK YOK
         GOTO SATIR_1'EN BAŞA DÖNER,İSTERSENİZ ALT SATIRLARI AÇAR GEREKLİ DÜZENLEMELERİ YAPAR DEVAM EDERSİNİZ

'//////////////////////////////////////////////////////////////////////////////////////////////////////////
'SATIR_5:
         'SATIR=4
         'KONUM=0
         'FOR I=1 TO 14
         'DEGISKEN=LOOKUP KONUM,["LMNOÖPRSŞTUÜVY"]
         'KONUM=KONUM+1
         'GOSUB SATIR_YAZ
         'GOSUB YOLLA
         'GOSUB YAVAS_YAZ
         'NEXT
         'CLEAR SUTUN : CLEAR KONUM
'***********************************************************************************************
'SATIR_6:
         'SATIR=5
         'KONUM=0
         'FOR I=1 TO 14
         'DEGISKEN=LOOKUP KONUM,["Z1234567890+-."]
         'KONUM=KONUM+1
         'GOSUB SATIR_YAZ
         'GOSUB YOLLA
         'GOSUB YAVAS_YAZ
         'NEXT
         'CLEAR SUTUN : CLEAR KONUM
'EKRAN 3310 EKRANI İSE(84X48 İSE)BUNDAN SONRASINI DESTEKLEMEZ,EKRANINIZ 96*64 İSE 8 SATIRA KADAR YAZAR
'***********************************************************************************************
'SATIR_7:
         'SATIR=6
         'KONUM=0
         'FOR I=1 TO 16
         'DEGISKEN=LOOKUP KONUM,["HIİJKLMNOÖPRSŞTU"]
         'KONUM=KONUM+1
         'GOSUB SATIR_YAZ
         'GOSUB YOLLA
         'GOSUB YAVAS_YAZ
         'NEXT
         'CLEAR SUTUN : CLEAR KONUM
'***********************************************************************************************
'SATIR_8:
         'SATIR=7
         'KONUM=0
         'FOR I=1 TO 16
         'DEGISKEN=LOOKUP KONUM,["BU SON SATIR!..."]
         'KONUM=KONUM+1
         'GOSUB SATIR_YAZ
         'GOSUB YOLLA
         'GOSUB YAVAS_YAZ
         'NEXT
         'CLEAR SUTUN : CLEAR KONUM
         'DELAYMS 5000
         'GOSUB LCD_SIL
         'GOTO SATIR_1
'***********************************************************************************************
'YAVAS_YAZ:
        'DELAYMS 50
        'RETURN
'***********************************************************************************************
YOLLA:
        POSX=SUTUN:POSY=SATIR:GOSUB LCD_XY_VER:HIGH D_C'EKRANA YAZIYI BURASI YAZIYOR
        SHOUT DTA,CLK,1,[COLUMN[0],COLUMN[1],COLUMN[2],COLUMN[3],COLUMN[4],COLUMN[5]]'BU SATIRDA 1 HARF EKRANA YOLLANIYOR
        SUTUN=SUTUN+6'BİR KARAKTER 6 SUTUN KAPLIYOR İSE,YENİ KARAKTERLERİN SAĞA DOĞRU YAZILABİLMESİ İÇİN KAYDIRIYORUZ
        RETURN'BURAYA KADAR EKRANA SADECE 1 KARAKTER YAZILDI(ÖRN A HARFİ),YENİ KARAKTERLER YAZMAK İÇİN GERİ DÖN VE DÖNGÜYE DEVAM ET
'************************************************************************************************
LCD_YAZ:
        SHOUT DTA,CLK,1,[LCDDATA]'EKRANA KOMUT YOLLAMAK İÇİN ÖRNEĞİN KONTRAST AYARI,EKRANI SİLME,EKRANDA YER BELİRLEME...
        RETURN
'************************************************************************************************
LCD_SIL:
        POSX=0:POSY=0:GOSUB LCD_XY_VER
        HIGH D_C
        FOR I=1 TO 252'EKRANINIZ 96*64 İSE BURAYI 500 YAPIN
        LCDDATA=0:GOSUB LCD_YAZ '1. yarı siliniyor
        LCDDATA=0:GOSUB LCD_YAZ '2. yarı siliniyor   
        NEXT
        RETURN
'************************************************************************************************
LCD_XY_VER:
        LOW D_C
        LCDDATA=%01000000 | POSY
        GOSUB LCD_YAZ
        LCDDATA=%10000000 | POSX
        GOSUB LCD_YAZ
        HIGH D_C
        RETURN
'************************************************************************************************
LCD_AC:
        LOW RST
        DELAYMS 10 
        HIGH RST 
        LOW D_C  ' RESET LCD   
        LCDDATA= $21: GOSUB LCD_YAZ        ' LCD EXTENDED COMMANDS
        LCDDATA= $b0: GOSUB LCD_YAZ        ' SET LCD Vop (CONTRAST)
        LCDDATA= $06: GOSUB LCD_YAZ        ' SET TEMP COEFFICENT
        LCDDATA= %00010101: GOSUB LCD_YAZ  ' LCD BIAS MODE
        LCDDATA= $20: GOSUB LCD_YAZ        ' LCD STANDARD COMMANDS
        LCDDATA= $0c: GOSUB LCD_YAZ        ' LCD IN NORMAL MODE
        RETURN
'************************************************************************************************
SATIR_YAZ:'YENİ KARAKTER TANIMLAMALARINIZI BU SATIRLARIN ALTINA YAPABİLİRSİNİZ
   
     SELECT CASE DEGISKEN

     CASE "A"'A HARFİNİN 6 SÜTUN OLARAK TANIMI
     COLUMN[0]=$7E
     COLUMN[1]=$11
     COLUMN[2]=$11
     COLUMN[3]=$11
     COLUMN[4]=$7E
     COLUMN[5]=$00
   
     CASE "B"'65
     COLUMN[0]=$7F
     COLUMN[1]=$49
     COLUMN[2]=$49
     COLUMN[3]=$49
     COLUMN[4]=$36
     COLUMN[5]=$00
     
     CASE "C"
     COLUMN[0]=$3E
     COLUMN[1]=$41
     COLUMN[2]=$41
     COLUMN[3]=$41
     COLUMN[4]=$22
     COLUMN[5]=$00

     CASE 199'"Ç"
     COLUMN[0]=$1E
     COLUMN[1]=$21
     COLUMN[2]=$61
     COLUMN[3]=$21
     COLUMN[4]=$12
     COLUMN[5]=$00
     
     CASE "D"'65
     COLUMN[0]=$7F
     COLUMN[1]=$41
     COLUMN[2]=$41
     COLUMN[3]=$22
     COLUMN[4]=$1C
     COLUMN[5]=$00
   
     CASE "E"'65
     COLUMN[0]=$7F
     COLUMN[1]=$49
     COLUMN[2]=$49
     COLUMN[3]=$49
     COLUMN[4]=$41
     COLUMN[5]=$00
   
     CASE "F"'65
     COLUMN[0]=$7F
     COLUMN[1]=$09
     COLUMN[2]=$09
     COLUMN[3]=$09
     COLUMN[4]=$01
     COLUMN[5]=$00
   
     CASE "G"'65
     COLUMN[0]=$3E
     COLUMN[1]=$41
     COLUMN[2]=$49
     COLUMN[3]=$49
     COLUMN[4]=$7A
     COLUMN[5]=$00

   
     CASE 208'"Ğ"
     COLUMN[0]=$38
     COLUMN[1]=$45
     COLUMN[2]=$55
     COLUMN[3]=$55
     COLUMN[4]=$20
     COLUMN[5]=$00

     CASE "H"'65
     COLUMN[0]=$7F
     COLUMN[1]=$08
     COLUMN[2]=$08
     COLUMN[3]=$08
     COLUMN[4]=$7F
     COLUMN[5]=$00

     CASE "I"'65
     COLUMN[0]=$00
     COLUMN[1]=$41
     COLUMN[2]=$7F
     COLUMN[3]=$41
     COLUMN[4]=$00
     COLUMN[5]=$00

     CASE 221'"İ"
     COLUMN[0]=$00
     COLUMN[1]=$44
     COLUMN[2]=$7D
     COLUMN[3]=$44
     COLUMN[4]=$00
     COLUMN[5]=$00

     CASE "J"'65
     COLUMN[0]=$20
     COLUMN[1]=$40
     COLUMN[2]=$41
     COLUMN[3]=$3F
     COLUMN[4]=$01
     COLUMN[5]=$00

     CASE "K"'65
     COLUMN[0]=$7F
     COLUMN[1]=$08
     COLUMN[2]=$14
     COLUMN[3]=$22
     COLUMN[4]=$41
     COLUMN[5]=$00

     CASE "L"'65
     COLUMN[0]=$7F
     COLUMN[1]=$40
     COLUMN[2]=$40
     COLUMN[3]=$40
     COLUMN[4]=$40
     COLUMN[5]=$00

     CASE "M"'65
     COLUMN[0]=$7F
     COLUMN[1]=$02
     COLUMN[2]=$0C
     COLUMN[3]=$02
     COLUMN[4]=$7F
     COLUMN[5]=$00

     CASE "N"'65
     COLUMN[0]=$7F
     COLUMN[1]=$04
     COLUMN[2]=$08
     COLUMN[3]=$10
     COLUMN[4]=$7F
     COLUMN[5]=$00

     CASE "O"'65
     COLUMN[0]=$3E
     COLUMN[1]=$41
     COLUMN[2]=$41
     COLUMN[3]=$41
     COLUMN[4]=$3E
     COLUMN[5]=$00

     CASE 214'"Ö" $3C,$43,$42,$43,$3C,$00
     COLUMN[0]=$3C
     COLUMN[1]=$43
     COLUMN[2]=$42
     COLUMN[3]=$43
     COLUMN[4]=$3C
     COLUMN[5]=$00

     CASE "P"'65
     COLUMN[0]=$7F
     COLUMN[1]=$09
     COLUMN[2]=$09
     COLUMN[3]=$09
     COLUMN[4]=$06
     COLUMN[5]=$00

     CASE "R"'65
     COLUMN[0]=$7F
     COLUMN[1]=$09
     COLUMN[2]=$19
     COLUMN[3]=$29
     COLUMN[4]=$46
     COLUMN[5]=$00

     CASE "S"'65
     COLUMN[0]=$46
     COLUMN[1]=$49
     COLUMN[2]=$49
     COLUMN[3]=$49
     COLUMN[4]=$31
     COLUMN[5]=$00

     CASE 222'"Ş"$22,$65,$65,$25,$19,$00
     COLUMN[0]=$22
     COLUMN[1]=$65
     COLUMN[2]=$65
     COLUMN[3]=$25
     COLUMN[4]=$19
     COLUMN[5]=$00

     CASE "T"'65
     COLUMN[0]=$01
     COLUMN[1]=$01
     COLUMN[2]=$7F
     COLUMN[3]=$01
     COLUMN[4]=$01
     COLUMN[5]=$00
     
     CASE "U"'65
     COLUMN[0]=$3F
     COLUMN[1]=$40
     COLUMN[2]=$40
     COLUMN[3]=$40
     COLUMN[4]=$3F
     COLUMN[5]=$00
     
     CASE 220'"Ü"  $3D,$40,$40,$40,$3D,$00
     COLUMN[0]=$3D
     COLUMN[1]=$40
     COLUMN[2]=$40
     COLUMN[3]=$40
     COLUMN[4]=$3D
     COLUMN[5]=$00

     CASE "V"'65
     COLUMN[0]=$1F
     COLUMN[1]=$20
     COLUMN[2]=$40
     COLUMN[3]=$20
     COLUMN[4]=$1F
     COLUMN[5]=$00

     CASE "Y"' $07,$08,$70,$08,$07,$00
     COLUMN[0]=$07
     COLUMN[1]=$08
     COLUMN[2]=$70
     COLUMN[3]=$08
     COLUMN[4]=$07
     COLUMN[5]=$00   
     
     CASE "Z"'65
     COLUMN[0]=$61
     COLUMN[1]=$51
     COLUMN[2]=$49
     COLUMN[3]=$45
     COLUMN[4]=$43
     COLUMN[5]=$00

     CASE "0"'65
     COLUMN[0]=$3E
     COLUMN[1]=$51
     COLUMN[2]=$49
     COLUMN[3]=$45
     COLUMN[4]=$3E
     COLUMN[5]=$00

     CASE "1"'65
     COLUMN[0]=$00
     COLUMN[1]=$42
     COLUMN[2]=$7F
     COLUMN[3]=$40
     COLUMN[4]=$00
     COLUMN[5]=$00

     CASE "2"'65
     COLUMN[0]=$42
     COLUMN[1]=$61
     COLUMN[2]=$51
     COLUMN[3]=$49
     COLUMN[4]=$46
     COLUMN[5]=$00

     CASE "3"'65
     COLUMN[0]=$21
     COLUMN[1]=$41
     COLUMN[2]=$45
     COLUMN[3]=$4B
     COLUMN[4]=$31
     COLUMN[5]=$00

     CASE "4"'65
     COLUMN[0]=$18
     COLUMN[1]=$14
     COLUMN[2]=$12
     COLUMN[3]=$7F
     COLUMN[4]=$10
     COLUMN[5]=$00

     CASE "5"'65
     COLUMN[0]=$27
     COLUMN[1]=$45
     COLUMN[2]=$45
     COLUMN[3]=$45
     COLUMN[4]=$39
     COLUMN[5]=$00

     CASE "6"'65
     COLUMN[0]=$3C
     COLUMN[1]=$4A
     COLUMN[2]=$49
     COLUMN[3]=$49
     COLUMN[4]=$30
     COLUMN[5]=$00

     CASE "7"'65
     COLUMN[0]=$01
     COLUMN[1]=$71
     COLUMN[2]=$09
     COLUMN[3]=$05
     COLUMN[4]=$03
     COLUMN[5]=$00

     CASE "8"'65
     COLUMN[0]=$36
     COLUMN[1]=$49
     COLUMN[2]=$49
     COLUMN[3]=$49
     COLUMN[4]=$36
     COLUMN[5]=$00

     CASE "9"'65
     COLUMN[0]=$06
     COLUMN[1]=$49
     COLUMN[2]=$49
     COLUMN[3]=$49
     COLUMN[4]=$3E
     COLUMN[5]=$00

     CASE " "'65
     COLUMN[0]=$00
     COLUMN[1]=$00
     COLUMN[2]=$00
     COLUMN[3]=$00
     COLUMN[4]=$00
     COLUMN[5]=$00

     CASE "+"'65
     COLUMN[0]=$08
     COLUMN[1]=$08
     COLUMN[2]=$3E
     COLUMN[3]=$08
     COLUMN[4]=$08
     COLUMN[5]=$00   
     
     CASE "-"'65
     COLUMN[0]=$08
     COLUMN[1]=$08
     COLUMN[2]=$08
     COLUMN[3]=$08
     COLUMN[4]=$08
     COLUMN[5]=$00

     CASE "."
     COLUMN[0]=$00
     COLUMN[1]=$00
     COLUMN[2]=$60
     COLUMN[3]=$60
     COLUMN[4]=$00
     COLUMN[5]=$00

     CASE "*"
     COLUMN[0]=$14
     COLUMN[1]=$08
     COLUMN[2]=$3E
     COLUMN[3]=$08
     COLUMN[4]=$14
     COLUMN[5]=$00

     CASE ":"
     COLUMN[0]=$00
     COLUMN[1]=$36
     COLUMN[2]=$36
     COLUMN[3]=$00
     COLUMN[4]=$00
     COLUMN[5]=$00
     
     CASE ","
     COLUMN[0]=$00
     COLUMN[1]=$40
     COLUMN[2]=$50
     COLUMN[3]=$30
     COLUMN[4]=$00
     COLUMN[5]=$00
     
     CASE "!"
     COLUMN[0]=$00
     COLUMN[1]=$00
     COLUMN[2]=$5F
     COLUMN[3]=$00
     COLUMN[4]=$00
     COLUMN[5]=$00

     END SELECT
     RETURN'1 KARAKTER BULUNUP DEĞİŞKENLERE YERLEŞTİRİLDİ VE GERİ DÖN
'************************************************************************************************
'KENDİ TANIMLADIĞIM KARAKTERLER
'0x3E,0x51,0x49,0x45,0x3E,0,_'0
'0x00,0x42,0x7F,0x40,0x00,0,_'1
'0x42,0x61,0x51,0x49,0x46,0,_'2
'0x22,0x49,0x49,0x49,0x3E,0,_'3
'0x18,0x14,0x12,0x7F,0x10,0,_'4
'0x4F,0x49,0x49,0x49,0x31,0,_'5
'0x3E,0x49,0x49,0x49,0x32,0,_'6
'0x01,0x01,0x79,0x05,0x03,0,_'7
'0x36,0x49,0x49,0x49,0x36,0,_'8
'0x06,0x49,0x49,0x29,0x1E,0,_'9
'0x7C,0x12,0x11,0x12,0x7C,0,_'A
'0x7F,0x49,0x49,0x49,0x36,0,_'B
'0x3E,0x41,0x41,0x41,0x22,0,_'C
'0x1E,0x21,0x61,0x21,0x12,0,_'Ç
'0x41,0x7F,0x41,0x41,0x3E,0,_'D
'0x7F,0x49,0x49,0x49,0x41,0,_'E
'0x7F,0x09,0x09,0x09,0x01,0,_'F
'0x3E,0x41,0x49,0x49,0x30,0,_'G
'0x38,0x45,0x55,0x55,0x20,0,_'Ğ
'0x7F,0x08,0x08,0x08,0x7F,0,_'H
'0x00,0x41,0x7F,0x41,0x00,0,_'I
'0x00,0x44,0x7D,0x44,0x00,0,_'İ
'0x40,0x44,0x3D,0x04,0x00,0,_'J
'0x7F,0x08,0x14,0x22,0x41,0,_'K
'0x7F,0x40,0x40,0x40,0x40,0,_'L
'0x7F,0x02,0x04,0x02,0x7F,0,_'M
'0x7F,0x02,0x04,0x08,0x7F,0,_'N
'0x3E,0x41,0x41,0x41,0x3E,0,_'O
'0x38,0x45,0x44,0x45,0x38,0,_'Ö
'0x7F,0x09,0x09,0x09,0x06,0,_'P
'0x7F,0x11,0x11,0x11,0x6E,0,_'R
'0x26,0x49,0x49,0x49,0x32,0,_'S
'0x26,0x29,0x69,0x29,0x11,0,_'Ş
'0x01,0x01,0x7F,0x01,0x01,0,_'T
'0x3F,0x40,0x40,0x40,0x3F,0,_'U
'0x3C,0x41,0x40,0x41,0x3C,0,_'Ü
'0x1F,0x20,0x40,0x20,0x1F,0,_'V
'0x07,0x08,0x70,0x08,0x07,0,_'Y
'0x61,0x51,0x49,0x45,0x43,0,_'Z
'0x00,0x00,0x00,0x00,0x00,_'BOŞLUK
'0x00,0x60,0x60,0x00,0x00,0,_'.
'0x00,0x40,0x50,0x30,0x00,0,_',
'0x00,0x66,0x66,0x00,0x00,0,_':
'0x00,0x00,0x56,0x36,0x00,0,_';


inventor

Aslında piyasa bu telefon ekranları ile doldu taştı. Değişik projelerle bu tür ekranların kullanım alanlarını geliştirmek lazım. Bende bir kaç proje hazırlamak istiyorum. Neler yapılabileceğini denemek lazım. Şu anda bulunduğum yerde 2x16 lcd nin parasına 4-5 adet 3310 ekranı alabilirim diye düşünüyorum. Fırsat varken bu ekranlardan stok yapmalı arkadaşlar. Yarın kıymete biner.

Selam
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

est32

Zaten bineceği kadar kıymete bindi.telefoncular da öğrendi bunlarla devre yapıldığını,şimdi alayım desen direniyor adamlar nasıl olsa alacaklar diye.Hatta bi çok telefoncu elimde kaldı diye çöpe bile atmış,lafı geçince itiraftan da sakınmıyorlar.
Forum olarak birkaç yere sorsak ve toptan alsak belki ucuza alabiliriz.Çöpe atacaklarına az da olsa kazansınlar bize satsınlar.
Bu konuda küçük bir çalışma yapmamız lazım.Umarım bir çok arkadaş da alır.Stok yaparsak iyi olur,zaten şu sıralar bile zor bulunuyor.
Düşünüyorum da telefoncu tanıdığı olanlar sorsun toptan alımda kaç para olacağını öğrensin mutlaka alanlar olacaktır.Ya da bununla ilgili bir konu açalım forumda,mutlaka alanlar olur...

zoptrik

Mükemmel çalışma. Müsait bir vaktimde bununla ilgili çalışmalar yapacağım. Kodlar basic olsaydı belki bir şeyler anlardım fakat şu anda hiçbirşey anlamadım :D dediğiniz gibi elimde nerdeyse 7-8 tane bu tarz ekran var (8210, 3310 vs vs.) bir şekilde parça kodları bulunup datasheet çıkarılır, bir şeyler yapılabilir. bence bu ekranlar çok daha avantajlı çünkü karakterin belirli bir yeri yok. istediğiniz yere yazabiliyorsunuz ve ekranı istediğiniz gibi kullanabiliyorsunuz. illa ki sadece karakter de değil resimlerle animasyon bile yapılabilir. Şimdiden heyecanlandım :D
Teşekkür ederim.
Kolay gelsin...
iyi forumlar...
DEHA; İMKANSIZDA MÜMKÜNÜ GÖREBİLMEK DEMEKTİR.GEMİLERİN KARADA DA YÜZEBİLECEĞİNİ SEZMEK, MEHMETLERDEN BIRINI "FATİH" YAPAR...!

zoptrik

DEHA; İMKANSIZDA MÜMKÜNÜ GÖREBİLMEK DEMEKTİR.GEMİLERİN KARADA DA YÜZEBİLECEĞİNİ SEZMEK, MEHMETLERDEN BIRINI "FATİH" YAPAR...!

est32

kodlar proton basic ile yazıldı.PBP den çok az farkı var.Sadece bazı kısımlar değişecek.Örneğin;
dim x as byte yerine x var byte olacak.
DEGISKEN=LOOKUP KONUM,["ESAT METİN"] yerine LOOKUP KONUM,["ESAT METİN"] DEGISKEN olacak.
sadece bu tarz kısımlar değişecek,zaten derleyici bu kıskımlarda hata verir,oralar düzeltilebilir.

Kodları anlamak için acele etmeye hiç gerek yok,yavaş yavaş nerden nereye gidilmiş nerede ne değişmiş dikkatli inceleyince ekrana nasıl yazıldığı anlaşılıyor.

zoptrik

Hocam kodları inceledim. Olayı anlar gibi oldum fakat kodlar çok karışık (benim için şimdilik fazla yani :) ). Çok fazla gosub var akış diagramını kafamda canlandıramıyorum. Bir de programda LCD tanımlamalarını göremedim. sinyali doğrudan mı gönderiyoruz? Tek kanal mı gönderiliyor? Bundan önce seri iletişim konusuna çalışmam mı gerekiyor? Bir de izniniz olursa sizden bir şey rica etsem?
Mesela x konumunda 15. piksel y konumunda 20. piksele bir nokta koymak istesek en basit kod ne olurdu? Ancak böyle anlayabileceğim galiba.
Araştırmalarım sonucu bu LCD ler pcd8544 diye bir entegre ile sürülüyorlar. yani elimizde datasheeti var. yanlız 8210 ekranı ile 3310 ekranı arasında biri tersten mi yazılıyormuş fark varmış.
Alıntı YapAdded a display driver for the SED1565 LCD controller, which as of 08/05/2006 is untested.
Added a display driver for the PCD8544 LCD controller. PCD8544 controllers are found in Nokia 3310,
3210, 8210, 8250, 5210, 6210, 5110 and many others. Driver has been tested with an 8210, 3310, and a 5210.
Note: 5210 displays are addressed 'right to left' as opposed to 'left to right' of the 8210 and co.
CAP flag 'CAP_PCD8544_FLIPH' should be used when dealing with 5210's
Basicle ilgili bir tane bile kod bulamadım. Tek kod sizin yazdığınız kod. o yüzden basit bir alternatif istiyorum. Kaynak gösterirseniz çok sevinirim.
Kolay gelsin
İyi forumlar...
DEHA; İMKANSIZDA MÜMKÜNÜ GÖREBİLMEK DEMEKTİR.GEMİLERİN KARADA DA YÜZEBİLECEĞİNİ SEZMEK, MEHMETLERDEN BIRINI "FATİH" YAPAR...!

est32

tamam ben bunu kısa süre içerisinde en temel hale getirip,sadece ekrana şekil çıkartacak şekle getirip buraya yeniden yazayım.o zaman ekrana yazının nasıl yazıldığı daha iyi anlaşılır.

zoptrik

Çok teşekkür ederim. Beklemedeyim. Müsait bir vaktinizde hallederseniz çok sevinirim :D
DEHA; İMKANSIZDA MÜMKÜNÜ GÖREBİLMEK DEMEKTİR.GEMİLERİN KARADA DA YÜZEBİLECEĞİNİ SEZMEK, MEHMETLERDEN BIRINI "FATİH" YAPAR...!

est32

ekrana yazmak için binary olarak düşünmek gerekiyor.
Aklıma yazacak başka bişey gelmedi,anlaşılmayan bir yer olursa bildiğim kadarıyla anlatmaya çalışırım.

zoptrik

Mükemmel anlatım olmuş est32 :D İzninle kodları buraya koyup ayrıntılı bir açıklama ile benim gibi sıkıntı yaşayanların bundan faydalanmasını istiyorum. Daha deneme yapmadım ama ilk öğrendiğim bu LCD lerin aşağıdan yukarı yazıldığı. Farklı sayı biçimleriyle bu olayı mükemmel anlatmışsın Allah razı olsun. Anlamadığım tek şey konum bilgileri, şöyle ki;
LCD_XY_VER:
        LOW D_C
        LCDDATA=%01000000 | POSY
        GOSUB LCD_YAZ
        LCDDATA=%10000000 | POSX
        GOSUB LCD_YAZ
        HIGH D_C
        RETURN

gibi bir kodla pozisyon bilgisi veriliyor. mesela posy=0 ve posy=2 komutu ile or yaptığımızda LCDDATA=%01000010 ve LCDDATA=%01000000 gibi bir pozisyon bilgisi gönderecek. onluk sistemde biri 64 biri 66 ediyor ve 64 olanda x doğrultusunda 1 y doğrultusunda 8. pikselden yazdırmaya başlamış 66 olanda ise  x doğrultusunda 1 y doğrultusunda 23. pikselden yazdırmaya başlamış bu konum bilgilerini LCD nasıl algılıyor yoksa ben hesapta mı yanlışlık yapıyorum ya da yanlış mı biliyorum %01000000 | %10(2) = %01000010=66 değil mi?
Tekrar teşekkür ederim.
görüşmek üzere...
DEHA; İMKANSIZDA MÜMKÜNÜ GÖREBİLMEK DEMEKTİR.GEMİLERİN KARADA DA YÜZEBİLECEĞİNİ SEZMEK, MEHMETLERDEN BIRINI "FATİH" YAPAR...!

est32

#11
hayır yukarıdan aşağıya yazılıyor.Lcd ye 1 gönderince sol üst köşede tek piksel görünüyor.
LCD_XY_VER:
        LOW D_C
        LCDDATA=%01000000 | POSY
        GOSUB LCD_YAZ
        LCDDATA=%10000000 | POSX
        GOSUB LCD_YAZ
        HIGH D_C
        RETURN

bu kısım lcd'nin datasheetine bakılıp anlaşılabilecek bişey.Arada veya komutu var,sanıyorum ekran işlemcisi x veya y koordinatı olduğunu en yüksek ilk ve ikinci bitten anlıyor.7. bit 1 ise x koordinat verildi,6.bit 1 ise y koordinat verildi gibi sanıyorum.
Zaten posx ve posy 0 olduğunda lcddata bilgileri olduğu gibi değişmeden gitmiş oluyor ve lcd sol üst köşeden yazmaya hazır hale geliyor.

Hesabın o şekilde olduğunu sanmıyorum. Ekran 6.ve 7. bitlere bakıp davranıyor(x-y seçimi),bu yüzden de bunlardan sonraki değerleri dikkate alıyordur.Bu durumda POSX pozisyonu için 7.bit sayılmacağı için en büyük değer 127 olabilir.Zaten x pozisyonu 84*48 lcd için en fazla 83 olabilir.

Dikkat edilirse D_C pini low'a çekilince bu veri yollanıyor.Yani koordinat bilgisi low da iken veriliyor D_C hıgh olduğunda da ekrana yazılıyor.

zoptrik

Nasıl atlamışım tabiki x y pozisyonlarını oradan anlıyordur. Çok mantıklı :D Dün dersten gelip yatmışım daha yeni uyandım şu anda denemeye vaktim olsa deneyeceğim. Ama 9 da dersim var tekrardan. Zaten bi çok şey denedim de bu şekilde olacağı aklıma gelmemişti. D_C pini lowda iken bu şekilde x ve y bilgisini gönderip high a çekip seri bir şekilde karakter bilgisini gönderiyor. Denemelerim devam edecek. Çok teşekkür ederim. Olayı çözdüğüm an ne anladıysam buraya aktaracağım.
Tekrar teşekkürler.
görüşmek üzere...
DEHA; İMKANSIZDA MÜMKÜNÜ GÖREBİLMEK DEMEKTİR.GEMİLERİN KARADA DA YÜZEBİLECEĞİNİ SEZMEK, MEHMETLERDEN BIRINI "FATİH" YAPAR...!

zoptrik

Aynen dediğiniz gibi x,y pozisyonlarını 7. ve 8. bitten anlıyor. gönderilen vermiş olduğunuz LCD_XY_VER etiketi altında gönderilen datanın sırasının bir önemi yok. sıralarını değiştirip gönderdim aynen aynı pozisyonu algılıyor. LCD yi öyle kafamıza göre pozisyonlandıramıyoruz. belli pixel adresleri var ve sıra şu şekilde:
mesela x=0 y=0 pozisyonunda sol en üst karakterden başlayıp alta doğru 8 pixele hükmedebiliyorsunuz. y=1 olursa (yani D_C pini low iken gönderilen %01000001 bilgisi) üstten aşşağı 9-16. (yani D_C pini low iken gönderilen %01000010 bilgisi) piksele, y=2 olursa 17-24. , y=3 olursa 25-32, y=4 olursa 33-40 , y=5 olursa da 40-48. pixele hükmedebiliyorsunuz. Akla ilk gelen soru y=6 olursa ne olacak sorusu ki bunu da denedim y=6 olduğu zaman y=0 mış gibi davranıp yine üstten aşşağı ilk 8 pine hükmediliyor. 7 olursa 2. satır gibi...
sayın est32 nin verdiği proton kodlarının yine kendisinin yardımıyla pbp ye çevirilmiş hali:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 28.12.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F628
@ DEVICE pic16F628, WDT_OFF
@ DEVICE pic16F628, PWRT_ON
@ DEVICE pic16F628, PROTECT_OFF
@ DEVICE pic16F628, MCLR_OFF 'mclr inaktif'
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'dahili osilatör

CMCON=7
SYMBOL CLK=PORTA.6
SYMBOL DTA=PORTA.7
SYMBOL RST=PORTA.1
SYMBOL D_C=PORTA.0

POSX var BYTE
POSY var BYTE
LCDDATA var BYTE
I var BYTE

GOSUB LCD_AC
GOSUB LCD_SIL
CLEAR
pause 100
'***********************************************************************************************
BASLA:'SADECE BASLA-GOTO BASLA KISMI İLE İLGİLEN.SHOUT KOMUTU PBP'DE SHIFTOUT OLARAK YAZILACAK
        POSX=0
        POSY=0
        GOSUB LCD_XY_VER
        HIGH D_C'ALTTAKİ SAYILARI BINARY'E ÇEVİR DAHA İYİ ANLAYACAKSIN
        SHIFTOUT DTA,CLK,1,[255,127,63,31,15,7,3,1,3,7,15,31,63,127,255,128,64,32,16,8,4,2,1,2,4,8,16,32,64,128]
       
       
        pause 500'  PBP'DE PAUSE 500 YAZILACAK
       
        POSX=0
        POSY=2
        GOSUB LCD_XY_VER
        HIGH D_C'  3.SATIRA A-B-C YAZALIM
        SHIFTOUT DTA,CLK,1,[$7E,$11,$11,$11,$7E,$00,$7F,$49,$49,$49,$36,$00,$3E,$41,$41,$41,$22,$00]
       
        pause 500
       
        POSX=0
        POSY=4
        GOSUB LCD_XY_VER
        HIGH D_C'  BINARY OLARAK
        SHIFTOUT DTA,CLK,1,[%10000000,%01000000,%00100000,%00010000,%00001000,%00000100,%00000010,%00000001]
   
'     "A"
'     HARF[0]=$7E
'     HARF[1]=$11
'     HARF[2]=$11
'     HARF[3]=$11
'     HARF[4]=$7E
'     HARF[5]=$00

'     "B"
'     HARF[0]=$7F
'     HARF[1]=$49
'     HARF[2]=$49
'     HARF[3]=$49
'     HARF[4]=$36
'     HARF[5]=$00
     
'     "C"
'     HARF[0]=$3E
'     HARF[1]=$41
'     HARF[2]=$41
'     HARF[3]=$41
'     HARF[4]=$22
'     HARF[5]=$00

        pause 10000
        GOTO BASLA
'************************************************************************************************
LCD_YAZ:
        SHIFTOUT DTA,CLK,1,[LCDDATA]
        RETURN
'************************************************************************************************
LCD_SIL:
        POSX=0
        POSY=0
        GOSUB LCD_XY_VER
        HIGH D_C
        FOR I=1 TO 252
        LCDDATA=0
        GOSUB LCD_YAZ '1. yarı siliniyor
        LCDDATA=0
        GOSUB LCD_YAZ '2. yarı siliniyor   
        NEXT
        RETURN
'************************************************************************************************
LCD_XY_VER:
        LOW D_C
        LCDDATA=%01000000 | POSY
        GOSUB LCD_YAZ
        LCDDATA=%10000000 | POSX
        GOSUB LCD_YAZ
        HIGH D_C
        RETURN
'************************************************************************************************
LCD_AC:
        LOW RST
        pause 10 
        HIGH RST 
        LOW D_C  ' RESET LCD   
        LCDDATA= $21
        GOSUB LCD_YAZ        ' LCD EXTENDED COMMANDS
        LCDDATA= $b0
        GOSUB LCD_YAZ        ' SET LCD Vop (CONTRAST)
        LCDDATA= $06
        GOSUB LCD_YAZ        ' SET TEMP COEFFICENT
        LCDDATA= %00010101
        GOSUB LCD_YAZ  ' LCD BIAS MODE
        LCDDATA= $20
        GOSUB LCD_YAZ        ' LCD STANDARD COMMANDS
        LCDDATA= $0c
        GOSUB LCD_YAZ        ' LCD IN NORMAL MODE
        RETURN
'************************************************************************************************
END


ilk kendi çalışmam:

kod:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 28.12.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F628
@ DEVICE pic16F628, WDT_OFF
@ DEVICE pic16F628, PWRT_ON
@ DEVICE pic16F628, PROTECT_OFF
@ DEVICE pic16F628, MCLR_OFF 'mclr inaktif'
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'dahili osilatör

CMCON=7
SYMBOL CLK=PORTA.6
SYMBOL DTA=PORTA.7
SYMBOL RST=PORTA.1
SYMBOL D_C=PORTA.0

POSX var BYTE
POSY var BYTE
LCDDATA var BYTE
I var BYTE

GOSUB LCD_AC
GOSUB LCD_SIL
CLEAR
pause 100
'***********************************************************************************************
BASLA:'SADECE BASLA-GOTO BASLA KISMI İLE İLGİLEN.SHOUT KOMUTU PBP'DE SHIFTOUT OLARAK YAZILACAK
        POSX=6
        POSY=2
        GOSUB LCD_XY_VER
        HIGH D_C'ALTTAKİ SAYILARI BINARY'E ÇEVİR DAHA İYİ ANLAYACAKSIN
        shiftout  dta,clk,1,[3,255,255,255,255,255,255,255,255,255,195,195,195,195,227,227,3,59,155,219,219,155,27,27,27,27,27,27,27,27,251,251,251,251,251,251,251,251,27,27,91,91,91,91,91,91,91,91,91,91,56,3,255,255,255,255,255,255,255,255,227,224,227,255,255,255,255,255,255,255,255,3]
        'SHIFTOUT DTA,CLK,1,[255,127,63,31,15,7,3,1,3,7,15,31,63,127,255,128,64,32,16,8,4,2,1,2,4,8,16,32,64,128]
       
       
        'pause 500'  PBP'DE PAUSE 500 YAZILACAK
        'gosub lcd_sil
       
        POSX=6
        POSY=3
        GOSUB LCD_XY_VER
        HIGH D_C'ALTTAKİ SAYILARI BINARY'E ÇEVİR DAHA İYİ ANLAYACAKSIN
        shiftout dta,clk,1,[48,63,63,63,63,63,63,63,63,63,49,1,49,49,59,63,62,63,47,11,11,47,63,62,60,56,48,48,0,48,63,63,63,63,63,63,63,63,48,0,51,63,63,63,63,63,63,63,63,51,0,48,63,63,63,63,63,63,63,63,51,3,51,63,63,63,63,63,63,63,63,48]
       
       
        'POSX=0
        'POSY=2
        'GOSUB LCD_XY_VER
        'HIGH D_C'  3.SATIRA A-B-C YAZALIM
        'SHIFTOUT DTA,CLK,1,[$7E,$11,$11,$11,$7E,$00,$7F,$49,$49,$49,$36,$00,$3E,$41,$41,$41,$22,$00]
       
        pause 500
       
        'POSX=0
        'POSY=4
        'GOSUB LCD_XY_VER
        'HIGH D_C'  BINARY OLARAK
        'SHIFTOUT DTA,CLK,1,[%10000000,%01000000,%00100000,%00010000,%00001000,%00000100,%00000010,%00000001]
   
'     "A"
'     HARF[0]=$7E
'     HARF[1]=$11
'     HARF[2]=$11
'     HARF[3]=$11
'     HARF[4]=$7E
'     HARF[5]=$00

'     "B"
'     HARF[0]=$7F
'     HARF[1]=$49
'     HARF[2]=$49
'     HARF[3]=$49
'     HARF[4]=$36
'     HARF[5]=$00
     
'     "C"
'     HARF[0]=$3E
'     HARF[1]=$41
'     HARF[2]=$41
'     HARF[3]=$41
'     HARF[4]=$22
'     HARF[5]=$00

        pause 10000
        GOTO BASLA
'************************************************************************************************
LCD_YAZ:
        SHIFTOUT DTA,CLK,1,[LCDDATA]
        RETURN
'************************************************************************************************
LCD_SIL:
        POSX=0
        POSY=0
        GOSUB LCD_XY_VER
        HIGH D_C
        FOR I=1 TO 252
        LCDDATA=0
        GOSUB LCD_YAZ '1. yarı siliniyor
        LCDDATA=0
        GOSUB LCD_YAZ '2. yarı siliniyor   
        NEXT
        RETURN
'************************************************************************************************
LCD_XY_VER:
        LOW D_C
        LCDDATA=%01000000 | POSY
        GOSUB LCD_YAZ
        LCDDATA=%10000000 | POSX
        GOSUB LCD_YAZ
        HIGH D_C
        RETURN
'************************************************************************************************
LCD_AC:
        LOW RST
        pause 10 
        HIGH RST 
        LOW D_C  ' RESET LCD   
        LCDDATA= $21
        GOSUB LCD_YAZ        ' LCD EXTENDED COMMANDS
        LCDDATA= $b0
        GOSUB LCD_YAZ        ' SET LCD Vop (CONTRAST)
        LCDDATA= $06
        GOSUB LCD_YAZ        ' SET TEMP COEFFICENT
        LCDDATA= %00010101
        GOSUB LCD_YAZ  ' LCD BIAS MODE
        LCDDATA= $20
        GOSUB LCD_YAZ        ' LCD STANDARD COMMANDS
        LCDDATA= $0c
        GOSUB LCD_YAZ        ' LCD IN NORMAL MODE
        RETURN
'************************************************************************************************
END

şimdilik bu kadar işin en zor kısmı satırların kendi aralarında senkronizasyonu. bu sorun kesinlikle kısa bir yoldan aşılmıştır ama o kadar örnek inceleme fırsatım olmadı.
Allah razı olsun senden @est32
senden bir ricam daha olacak. avatarındaki görünümde birden fazla satır kullanmışsın bunu tek tek benim yaptığım gibi elinle mi yazdın yoksa bunun kısa bir yolu var mı? sakıncası yoksa kodları koyabilir misin?
Tekrar teşekkürler
iyi forumlar...
DEHA; İMKANSIZDA MÜMKÜNÜ GÖREBİLMEK DEMEKTİR.GEMİLERİN KARADA DA YÜZEBİLECEĞİNİ SEZMEK, MEHMETLERDEN BIRINI "FATİH" YAPAR...!

est32

#14
Onu yazmanın 2 yolu var ve bu 2 yol da yine hemen hemen aynı yola çıkıyor.

O saatteki her karakter 4 satır yüksekliğinde(4*8=32 piksel yükseklik yapar) ve 18 sutun uzunluğunda.Bunun için S[72] AS BYTE diye 73 adet aynı isimli değişken tanımladım.

Önce ekranı aklımdan böldüm nerede hangi yükseklik ve genişlikte yazılacak, nerede ne kadar boluk bırakılacak diye.

Fast lcd programını 32*18 pixel olarak ayarladım ve sayıları orda oluşturup koda dönüştürdüm.

18*4=72 yapar ki, bu kodların hepsini tek tek aşağıdaki döngü ile değişkenlere yerleştirdim;

'************************************************************************************************
RKM_1:' 1 rakamının tanımı
        X=0
        FOR I=1 TO 72
        S[X]=LOOKUP KONUM,[$00,$00,$00,$30,$38,$3C,$1E,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,_
                           $00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,_
                           $00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,_
                           $00,$00,$00,$38,$38,$38,$38,$3F,$3F,$3F,$3F,$38,$38,$38,$38,$00,$00,$00]
        X=X +1
        KONUM=KONUM +1
        NEXT
        RETURN
'************************************************************************************************


ekranın belirlediğim noktasına ilk 18 sutunu verdikten sonra bir alt satıra indim ve 4 satıra tamamladım.Yalnız her satırda shiftout komutunu kullandım(4 kez) .Yani en üstte 1-18, ikinci satırda 19-36...diye toplam 4 satır yazdım.Şu şekilde;

'************************************************************************************************
        POSX=SUTUN:POSY=0:GOSUB LCD_XY_VER:HIGH D_C
        SHOUT DTA,CLK,1,[S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[8],S[9],S[10],S[11],S[12],S[13],S[14],S[15],S[16],S[17]]
       
        POSX=SUTUN:POSY=1:GOSUB LCD_XY_VER:HIGH D_C
        SHOUT DTA,CLK,1,[S[18],S[19],S[20],S[21],S[22],S[23],S[24],S[25],S[26],S[27],S[27],S[29],S[30],S[31],S[32],S[33],S[34],S[35]]
       
        POSX=SUTUN:POSY=2:GOSUB LCD_XY_VER:HIGH D_C
        SHOUT DTA,CLK,1,[S[36],S[37],S[38],S[39],S[40],S[41],S[42],S[43],S[44],S[45],S[46],S[47],S[48],S[49],S[50],S[51],S[52],S[53]]
       
        POSX=SUTUN:POSY=3:GOSUB LCD_XY_VER:HIGH D_C
        SHOUT DTA,CLK,1,[S[54],S[55],S[56],S[57],S[58],S[59],S[60],S[61],S[62],S[63],S[64],S[65],S[66],S[67],S[68],S[69],S[70],S[71]]
'************************************************************************************************


Bu rakam bittikten sonra ekranın 19. pikseline geçtim ve ikinci rakamı yine aynı yöntem ile yazdım.

Diğer yöntem ise pek farklı sayılmaz. 72 tane değil de sadece 18 tane değişken tanımlıyorum ve döngülerle her satır için tablodan yeni bir yükleme yapıyorum.Bu biraz daha karışık,çünkü ekrana bir rakam yazabilmek için işlemci 4 defa rakamın bulunduğu satıra geliyor ve 18'er 18'er tablodan değer alıp geri gidiyor.

Bu iş döngülerle yapıldığından birazcık daha kafa karıştırıyor fakat bu şekilde de tek shiftout komutu ile iş yapıldığı için kod ve ram tasarrufu yapılıyor.


Powered by EzPortal