1,5" 132*132 TFT LCD ile Projeler

Başlatan aYe, 08 Şubat 2006, 01:46:09

aYe

Evet buyrun, vip class TFT socket;





Bir de sayın mp3dragon bu lcd'nin backlight'i 6volt'ta 3ma çekiyor.
Sizce bendeki lcd mi çok ekonomik yoksa son model 5 dolarlık yeni bir ölçü aletimi almalıyım  :lol:
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

mp3dragon

Valla ben bana söyleyenlerin yalancısıyım  :lol:
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

aYe

Benim bugün beceriksizliğim üzerimde bütün gece uğraştım yine de bitiremedim.

Kod da bir hata yapiyorum ama ne bulmak için tekrar tekrar kontrol gerekiyor yada lehimlerken bozdum bu lcd'yi. Mukayese edecek çalışan birşeyin olmaması çok kötü  :cry:

Elimde pic16 pic18 AVR M16C PSoC mevcut bu 5'inden birine yazilmiş bir şey bulup mukayese etmek yada çalışan bir telefonu dağıtmak lazim.

Üzerinde bu lcd olan en ucuz telefon modeli hangisiydi?  :lol:
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

mp3dragon

asm ama bunu bulabildim

; Nokia 3510i colour LCD interface routines
;
; MPASM assembler, PIC16F84
;
; neil_manc@yahoo.com    11/10/2005
;
; 11/10 NS Created
;
;

   list   p = 16f84
   #include p16f84.inc

; ports and pins for display interface
#define NRESET   PORTB, 0
#define NCS      PORTB, 1
#define SCK      PORTB, 3
#define SDA      PORTB, 2


; declarations for exported functions
   global LCD3510_Initialise
   global LCD3510_BeginWritePixel
   global LCD3510_WritePixel
   global LCD3510_WritePixelPair
   global LCD3510_CASET
   global LCD3510_PASET
   global LCD3510_SET_12BPP
   global LCD3510_SET_8BPP
   global LCD3510_Command
   global LCD3510_Parameter


; local storage
lcd_if_data      udata
_ctr_i   res   1
;_ctr_j   res 1
_ctr_n   res 1
_ctr_w1   res 1
_ctr_w2   res 1
_s_byte   res 1
_c_byte res 1

; relocatable code starts here
lcd_interface   code


; look-up table for display initialisation sequence. call with index
; in W reg. each element consists of
; <parameter count> <command code>
;     [<parameter> [<parameter [<parameter> ... ]]]
_init_seq
   addwf   PCL, f

   retlw   .0
   retlw   0xC6   ; initial escape

   retlw   .1
   retlw   0xB9   ; refresh set
   retlw   .0

   retlw   .7
   retlw   0xB6   ; display control
   retlw   .128
   retlw   .128
   retlw   .129
   retlw   .84
   retlw   .69
   retlw   .82
   retlw   .67

   retlw   .15
   retlw   0xB3   ; setup greyscale map 0
   retlw   0x11
   retlw   0x22
   retlw   0x33
   retlw   0x44
   retlw   0x55
   retlw   0x66
   retlw   0x77
   retlw   0x88
   retlw   0x99
   retlw   0xAA
   retlw   0xBB
   retlw   0xCC
   retlw   0xDD
   retlw   0xEE
   retlw   0xFF

   retlw   .1
   retlw   0xB5   ; gamma curve set
   retlw   .1

   retlw   .1
   retlw   0xBD   ; common driver output
   retlw   .0

   retlw   .1   
   retlw   0xBE   ; power supply setup
   retlw   .4

   retlw   .0
   retlw   0x11   ; sleep out

   retlw   .2
   retlw   0xBA   ; voltage control
   retlw   .127
   retlw   .3

   retlw   .1
   retlw   0x25   ; contrast
   retlw   .70

   retlw   .20
   retlw   0x2D   ; colour look up table for 8BPP mode
   retlw   0x00   ; red (8 levels)
   retlw   0x02
   retlw   0x04
   retlw   0x06
   retlw   0x09
   retlw   0x0B
   retlw   0x0D
   retlw   0x0F
   retlw   0x00   ; green (8 levels)
   retlw   0x02
   retlw   0x04
   retlw   0x06
   retlw   0x09
   retlw   0x0B
   retlw   0x0D
   retlw   0x0F
   retlw   0x00   ; blue (4 levels)
   retlw   0x05
   retlw   0x0A
   retlw   0x0F

   retlw   .13
   retlw   0xB7   ; setup temp gradient
   retlw   .0      ; -.05(n+1)%/K, 0 <= (n) < 4
   retlw   .0      ; all zeros(?) from here on:
   retlw   .0      ; used during factory testing
   retlw   .0
   retlw   .0
   retlw   .0
   retlw   .0
   retlw   .0
   retlw   .0
   retlw   .0
   retlw   .0
   retlw   .0
   retlw   .0

   retlw   .0
   retlw   0x03   ; booster voltage on

   retlw   0xED   ; end of sequence!

   retlw   .0
   retlw   0x21   ; inversion on

   retlw   .0
   retlw   0x29   ; display on



; short wait (for debugging)
_short_wait
   clrf   _ctr_w2
   incf   _ctr_w2
   clrf   _ctr_w1
   goto   __wait_loop

; waits 50ms (at 4MHz) TODO: find a way of automating this
_wait_5ms
   movlw   70
   movwf   _ctr_w2
   clrf   _ctr_w1
__wait_loop
   decfsz   _ctr_w1, F
   goto   __wait_loop
   decfsz   _ctr_w2, F
   goto   __wait_loop
   return

; exported function: LC3510_Command
; used for sending misc command bytes to the display
LCD3510_Command

; sends a command byte to the display. call with command stored in
; W register
_command
   movwf   _s_byte   ; save W reg
   
               ; terminate any prior sequence of parameters
   bsf      NCS

   bcf      SCK
;   call   __per_cycle_wait
   bcf      NCS

               ; first bit is zero for command
   bcf      SDA
;   call   __per_cycle_wait
   bsf      SCK

   bsf      SDA      ; data pin high, ready for byte sending
   goto   __send_byte




; exported function: LC3510_WritePixel
; pixel value stored in W register
; writes one 8BPP pixel to display
LCD3510_WritePixel

; exported function: LC3510_Parameter
; used for sending misc parameter bytes to the display
LCD3510_Parameter

; sends a parameter byte to the display. call with parameter in W
; register
_parameter
   movwf   _s_byte   ; save W reg

   bcf      SCK      ; clock in a one for parameter
   bsf      SDA
   bsf      SCK

__send_byte         ; unrolled byte serialisation loop
   bcf      SCK
   btfss   _s_byte, 7
   bcf      SDA
   bsf      SCK
   
   bcf      SCK
   btfsc   _s_byte, 6
   bsf      SDA
   btfss   _s_byte, 6
   bcf      SDA
   bsf      SCK

   bcf      SCK
   btfsc   _s_byte, 5
   bsf      SDA
   btfss   _s_byte, 5
   bcf      SDA
   bsf      SCK

   bcf      SCK
   btfsc   _s_byte, 4
   bsf      SDA
   btfss   _s_byte, 4
   bcf      SDA
   bsf      SCK

   bcf      SCK
   btfsc   _s_byte, 3
   bsf      SDA
   btfss   _s_byte, 3
   bcf      SDA
   bsf      SCK

   bcf      SCK
   btfsc   _s_byte, 2
   bsf      SDA
   btfss   _s_byte, 2
   bcf      SDA
   bsf      SCK

   bcf      SCK
   btfsc   _s_byte, 1
   bsf      SDA
   btfss   _s_byte, 1
   bcf      SDA
   bsf      SCK

   bcf      SCK
   btfsc   _s_byte, 0
   bsf      SDA
   btfss   _s_byte, 0
   bcf      SDA
   bsf      SCK

   return


; exported function: LCD3510_initialise
; no paramters
LCD3510_Initialise
   bcf      STATUS, RP1
   bsf      STATUS, RP0
   
   bcf      NRESET   ; set ports to be outputs
   bcf      NCS
   bcf      SDA
   bcf      SCK

   bcf      STATUS, RP0
   bcf      NRESET
   bsf      NCS
   bsf      SDA
   bsf      SCK

   call    _wait_5ms

   bsf      NRESET
   movlw   0x01   ; send soft reset
   call   _command
   bsf      NCS
   call   _wait_5ms

   clrf   _ctr_i   ; begin display initialisation loop
__disp_init_loop
   movf   _ctr_i, W   ; get number of parameters
   call   _init_seq
   movwf   _ctr_n
   incf   _ctr_i, F

   xorlw   0xED      ; test for end of sequence
   btfsc   STATUS, Z
   goto   __init_end
   
   movf   _ctr_i, W   ; send command byte
   incf   _ctr_i, F
   call   _init_seq
   call   _command

   movf   _ctr_n, F   ; test if n = 0 (no parameters)
   btfsc   STATUS, Z
   goto   __disp_init_loop

__init_param_loop      ; get each parameter and send to display
   movf   _ctr_i, W
   incf   _ctr_i, F
   call   _init_seq
   call   _parameter
   decfsz   _ctr_n, F
   goto   __init_param_loop

   goto   __disp_init_loop

__init_end
   call   _wait_5ms   ; time for booster voltage to settle

   movlw   0x21   ; inversion on
   call   _command

   movlw   0x29   ; display on
   call   _command

   bsf      NCS      ; terminate final parameter sequence
   return


; exported function: LCD3510_BeginWritePixel
; no parameters
LCD3510_BeginWritePixel
   movlw   0x2C      ; write memory command
   call   _command
   return


; exported function: LC3510_WritePixelPair
; pointer to six-byte array of RGB values stored in W register
; writes two adjacent 12BPP pixels to display
LCD3510_WritePixelPair
   movwf   FSR
   movf   INDF, W
   andlw   0xF0
   movwf   _c_byte
   
   incf   FSR, F
   swapf   INDF, W
   andlw   0x0F
   iorwf   _c_byte, W
   call   _parameter

   incf   FSR, F
   movf   INDF, W
   andlw   0xF0
   movwf   _c_byte
   
   incf   FSR, F
   swapf   INDF, W
   andlw   0x0F
   iorwf   _c_byte, W
   call   _parameter

   incf   FSR, F
   movf   INDF, W
   andlw   0xF0
   movwf   _c_byte
   
   incf   FSR, F
   swapf   INDF, W
   andlw   0x0F
   iorwf   _c_byte, W
   call   _parameter
   return


; exported function: LC3510_CASET
; pointer to two-byte array stored in W register: start column no.
; and end column respectively.
LCD3510_CASET
   movwf   FSR
   movlw   0x2A
   call   _command

   movf   INDF, W
   call   _parameter

   incf   FSR, F
   movf   INDF, W
   call   _parameter
   return

; exported function: LC3510_PASET
; pointer to two-byte array stored in W register: start row no.
; and end row respectively.
LCD3510_PASET
   movwf   FSR
   movlw   0x2B
   call   _command

   movf   INDF, W
   call   _parameter

   incf   FSR, F
   movf   INDF, W
   call   _parameter
   return

   
; exported function: LC3510_SET_12BPP: pixels are packed RRRRGGGGBBBB
; no parameters
LCD3510_SET_12BPP
   movlw   0x3A
   call   _command
   movlw   0x03
   call   _parameter
   return


; exported function: LC3510_SET_8BPP. pixels are packed RRRGGGBB
; no parameters
LCD3510_SET_8BPP
   movlw   0x3A
   call   _command
   movlw   0x02
   call   _parameter
   return

   end
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

Macera

Arkadaşlar
Yeni bir konu açmak istemediğimden vede bu konuyla ilgili olduğu için burda soracağım
Piyasada MCU dan kontrol edilebilecek bir LCD ekran arıyorum.
İstediğim LCD ekranda controller üzerinde olacak (tercihan SED1335)
tek renk tercihan 8 inch yada fazlası çözünürlüğü ise 640x200 olabilir.
(SED 1335 in max çözünürlüğü bu seviyede)
Bu konuda yardımcı olursanız sevinirim.
320x240 çözünürlükte olanları piyasada buluyorum.
Saygılar
"Art without engineering is dreaming; engineering without art is calculating." -- Steven K. Roberts

aYe

Selam mp3dragon ,

asm;
retlw 0x29 ; display on

epson;
#define DISON       0xaf  

Bu bizim LCD değil ama yinede çok teşekkürler, aramızda konuyu aşmış 640*200'lere terfi etmiş uzmanlar varken nerdeyse tek destek senden geliyor...

@Macera
Bu adresten tüm firmaların tüm çıkmış ve çıkacak modellerini görebilir dolayısıylada lcd detaylarına ulaşabilirsiniz. Ancak bu tip ekranların genellikle kullanıldığı communicator denen aletler az satıldığı için yedek parçasında da çok uçuk fiyatlar karşınıza çıkabilir.

www.gsmarena.com

İyi çalışmalar...
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

mp3dragon

@tatlısukurnazı

Macera nın bahsettiği renkli olan TFT LCD değil, şu devasa olan SED kontrollü, genelde mavi beyaz GLDC ler var ya onlardan.

verilen kodda zaten LCD farklı olduğu yazılmış ancak epson kontrolör yapısı benziyormuş, öyle demiş vatandaş
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

ARM başlığı altında bir ara konusu geçmişti tam hatırlamıyorum ama TR de 80 euro civarında büyük ekran TFT LCD bulunabiliniyormuş. Ama onlar heralde SPI den kontrol edilmiyorlardır.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

Şu an deneme imkanım olmadığı için kodları tam inceleyemedim ama verilen kodlarda dikkatimi çekti 8x8x4 = 256 renk için yazılmışlar. oda bize yeter zaten. Epson ve philips arasındaki renk derinliği farkı bence hiç önemli değil. Yeterki çalıştırabilelim.

Bir şey sorcan LCD nin tepkisi nasıl yani sadece beyaz ekran mı çıkıyor yoksa sadece backlight mı yanıyor?
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

aYe

Sahiden de öyle, monocolor lcd'den bahsediyormuş, e normal uykusuzluk o bu beyin iptal.

Macera hocam ankarada bir hurdalikta çok temiz 640*480'ler var 3000 tane civarı inverter dahil 5 dolardan veriyorlar, bankamatik çıkması, benim elimde bir tane var, numune geldi(hurdacilar sample olayina girdi), sıfır kadar temiz. Ama işlemci üzerinde değil sed'i kendi kartiniza çakmanız gerekir. Zaten 320*240 üzeri de sed de dahil üzerinde işlemcisi olan lcd bulamazsınız.

mp3dragon hocam beyaz olsa rgb var diyicem sadece backlight yanıyor bakışıyoruz arkadaşla :D
Bu arada epson display on komutu "0xaf" hex philips display on komutu "0x29" hex yani tamamen farklilar.
İkisinin aynı yerde çalışabilmesinin tek bir açıklaması var; ya nokia lcd'yi algılayıp ona göre drive eden bir yazılıma sahip yada bu tamirciler ekranı degiştiririken yazılımı da degiştiriyorlar.

Ben derim ki; başta zor olsun, sonra ucuz olsun, epson olsun, bizim olsun  ;)
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

aYe

@Macera

Bahsettiğim 640x480 LCD'nin resimlerini çektim, ilgilenirseniz budur;





Malum 5 dolar inverter parası :D
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

mp3dragon

@tatlısukurnazı

Nette 6610 lcd ile ilgili forumlarda contrast sorunu bembeyaz ekran şeklinde anlatılıyor.Yani ne renk gönderirsek gönderelim ekran bembeyaz diye
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

.
.
.
Delay(100000); //???????????????????
WriteCommand(DISON);

2. sayfadaki C kodu atmel mega 8515 için delay 100000 gibi bir gecikme koymuş geçikme (nop) komutu bile olsa hatrı sayılır bir süre belki LCD kendini anca toparlıyor.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

aYe

Hocam 8515 elimde 100 tane var plcc kılıf ama olsun şunun hex'i yokmu derleyici aramasak???

Belki bi kaçtane dip40 bile bulabilirim hurdaların araya bakmak lazim.

Hatta ver kargo adresini sana da göndereyim piyasada bulmak zor olur en azından elinde çalışan bir lcd olsun kıyaslama yapmak için.

Ek: Kusura bakmayın yeni farkettim mega8515 diye bişeymiş bendekiler at90s8515 hex uyumlu olmayabilir.  
Bunlar niye habire model çıkartıyolar anlamadım ki, kim kullanıyor bu avr'leri?
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

Petek

“Önyargıları yıkmak atomu parçalamaktan zordur” A.Einstein