PLED display

Başlatan Sdttn, 08 Eylül 2011, 12:43:56

Sdttn

Ebay'den 16x2 pled display aldım ama normal LCD'de çalışan kodlar bunda çalışmıyor.

Display'ler mi bozuk yoksa kodda özel bir şeymi yapmam lazım.
Kullandığım MCU 16f877a 4 Mhz kristal ile çalışıyor.

Displayin datasheet.
http://www.csie.nctu.edu.tw/~mfchang/dgt-lab/OSD1602-03_LCD.pdf

Kod ETE'nin 5. dersindeki ADC devresi.

'****************************************************************
'*  Name    : ADC.BAS                                      *
'*  Author  : [ETE]                                *
'*  Notice  : Copyright (c) 2005 [ETE]                          *
'*          : All Rights Reserved                               *
'*  Date    : 20.04.2005                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
TRISA=%00000001
TRISB=0
TRISC=0
TRISD=0
'-------------------------------------------------------------------------------
@ DEVICE pic16F877a
@ DEVICE pic16F877a, WDT_on
@ DEVICE pic16F877a, PWRT_ON
@ DEVICE pic16F877a, PROTECT_OFF
@ DEVICE pic16F877a, XT_OSC
'-------------------------------------------------------------------------------
DEFINE LCD_DREG		PORTB	'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT		4		'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG		PORTB	'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT		3		'LCD Enable Bacağı Hangi bite bağlı ?
define LCD RWREG    PORTB   'LCD R/W Bacağı Hangi Porta bağlı?
define LCD_RWBIT    2       'LCD R/W Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG	PORTB	'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT	1		'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS		4		'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES	2		'LCD Kaç sıra yazabiliyor

DEFINE	ADC_BITS	10	    'A/D çevirim sonucu kaç bit olacak
DEFINE	ADC_CLOCK	3	    'Clock kaynağı (3=rc)
DEFINE	ADC_SAMPLEUS	100	'Örnekleme zamanı mikro saniye cinsinden.
'-------------------------------------------------------------------------------
ADCON1=%10001110 '7. bit 1 yapıldı 10 bit sonuç almak için.
'-------------------------------------------------------------------------------
HAM    var  word  'ADC den okunan ham digital değer.                                                                        
VOLT   var  word '16 bit değişken tipi seçtik kullanacağımız değer 10 bit olacak.
Mvolt  var  byte
'-------------------------------------------------------------------------------
Low PORTB.2		' LCD R/W line low (W), şemada direkt GND ye bağlanabilir.
LCDOut $FE,1	' LCD de CLS yapar
pause 200       ' LCD nin açılması için gerekli süredir.
'------------------------------------------------------------------------------- 

BASLA:
      ADCIN 0,HAM  '0 nolu kanaldan Analog değeri oku ve RAW değişkenine aktar.
      
BAK:  IF ADCON0.2=1 THEN BAK 'Çevirme işlemi tamamlanınca Adcon0.2=0 olacak.
      
      lcdout $FE,1," HAM =",# HAM
      Ham=ham+1 'Hesap kolaylığı açısından Ham değerini bir artırdık
      
'Okunan değer 0-5 volt için 0-1024 olacağından okunacak değer başına volt değeri
' 5/1024 =0,0048828 olacaktır. Sayı çok küçük olduğundan bu değeri 1000 ile 
'çarpmalıyız. Ohalde (Okuma/V)= 4,8828 bu değeri 256 ile çarpar isek 
'4,8875 x 256 = 1250 değerini buluruz. Bu değeri kullanarak 32 bit işlem yapabiliriz.
'1250 değeri (5/1024)*256 değerine karşılık gelmektedir. 
'sonuçta ADC HAM değerini bu sayı ile çarpıp 256'ya bölersek sonucu elde etmiş oluruz.
'ancak sonuç 32 bitlik sınırda olduğundan bu işi 32 bit çarpma ile yapıyoruz ve orta
'baytı aldığımızda ise zaten sayının 256'ya bölünmüş halini aldığımızdan başka bir
'işlem yapmadan sonucu elde etmiş oluruz.

      Volt=(ham */ 1250)/100 'Ham ile 1250 yi 32 bit olarak çarp ve 100'böl
      Mvolt=volt//10

'Burada yeni bir komut veya işlem şekli görüyorsunuz. MOD alma yani (//) kalan bulma
'Bir sayını başka bir sayıya bölünmesinden sonra kalan miktarı bulma işlemine MOD
'alma denir. Örnek W=A//1000 , A'yı 1000'e böl kalanı W değişkenine koy anlamındadır.
'bizde yukarıda Milivolt değerini bulmak için volt (10 ile çarpılmış halini) 10'a 
'bölüp kalanı Mvolt değişkenine yerleştiriyoruz.

      Volt=Volt/10

      LCDOUT $FE,$C0," VOLT=",#VOLT,",",# Mvolt
      PAUSE 500
      GOTO BASLA
                                                                             





-Hasan-

Beslemeniz bu display için yeterli mi?

Sdttn

Ne kadar güç gerektirir ki?
Bir adet 7805 ile besliyorum gerilim düşmesi oluşmuyor.


mountaineer153

Yazılım kısmında bir sorun yok gibi gözüküyor.Bence donanım kısmında kabloları tekrar takip edin.Kablolar birbirine çok benziyor karışmasın.Lcd ile ne yapacaksınız bilmiyorum ama internette çok güzel uygulamalar var.Tepki süresi hızlı olduğu için vumetre spectrum analyzer çok hoş duruyor.Belki sizede ilham verir.


gokhangokcen

yazılımda gördüğüm kadarı ile fuse ayarlarında watch dog açık görünüyor bununla ilgili bir sıkıntınız olmasın ?
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

Sdttn

Alıntı yapılan: gokhangokcen - 09 Eylül 2011, 08:15:42
yazılımda gördüğüm kadarı ile fuse ayarlarında watch dog açık görünüyor bununla ilgili bir sıkıntınız olmasın ?

WDT'yi kapatıp deneyeceğim. Öneri için teşekkürler.

Alıntı yapılan: mountaineer153 - 09 Eylül 2011, 00:28:19
Bence donanım kısmında kabloları tekrar takip edin.Kablolar birbirine çok benziyor karışmasın.

Bütün kabloların tek tek denedim bağlantıda sorun yok. Elimde 4 adet pled display var hiçbirini çalıtıramadım.

ete

4 adet displayin hiç biri çalışmıyor ise ortada bir terslik var demektir.
Öncelikle bağlantıların kontrol edilmesinde yarar görüyorum.
İkincisi genelde devre şemalarında çizilmeyen ve kullanıcılarında devreye eklemedikleri kontrast ayar trimpotunu koydunuzmu onu da sormak lazım. Ayrıca çalışmayan LCD de ekranda hiçmi görüntü yok ?
Genelde çalışmayan LCD de 3 alternatif görülür;
- Ekranda hiç bir görüntü yada değişiklik yoktur. BU durumda LCD bağlantıları doğru değildir. Yada LCD ye voltaj ulaşmıyordur. Yada kontrast ayarı en düşük seviyededir.
- Ekranda Yalnızca üst sıradaki kareler dolu (siyah yada ne renk ise) gözükür. Bu LCD nin doğru çalıştığını ancak programın çalışmadığını gösterir. Normalde devre haricinde LCD ye GND ve +5V bağladığınızda bu görüntüyü görmeniz gerekir.
- Ekranda hem üst sıra hemde alt sırada dolu kareler gözükür. BU LCD ve programın çalıştığını ancak kontrast ayarının maksimum seviyeye ayarlı olduğunu gösterir.

Kontrast ayarı genelde 10 K lık trimpotun orta ucunun LCD nin orta ucuna bağlanması, Üst uçlardan birinin +5V ta diğerininde GND ye bağlanması ile hazırlanan düzenek ile yapılır. Bu şekilde bağlanmış LCD de trimpot ayarı değiştirilerek ekranda görülecek olan görüntü gözlenir yada karelerin ilk belirdiği anda ayar bırakılır.
Genelde uygulamalarımızda uyumsuz bir LCD ye rastlamadık. Ama yinede uyumsuzluk olma ihtimalinide göz ardı etmemek gerekir. Uzak ihtimal ama yinede olabilir diyorum.
Devre çalıştıktan sonra LCD de görünenleri belirtirsen daha fazla fikir yürütme yapabiliriz sanırım. Ayrıca kontrast işinide açıklarsanız memnun oluruz.

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

Burak B

#7
Kontrolcünün ne olduğunu biliyor musun ? Kullandığın komutların doğru olduğuna emin misin ? Benim hatam, datasheet gözümden kaçmış.

Yazdığın kodu HD44780 uyunmluluğuna göre doğru farzediyorsun. Yolladığın verinin kontrolcüye ulaştığından emin ol. Birda arka kısma yakın plan bir foto çekip buraya koyabilirsen daha iyi olur.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

Sdttn

Elimde farklı marka 4 adet LCD display (bunlar PLED değil normal) var onlar ile çalışıyor program.

Ama PLED displayler çalışmıyor datasheet'de hd44780 uyumludur demesine rağmen.

Pled displaylere enerji verdiğimde hiç tepki vermiyor. +5v besleme ile display 10-12mA akım çekiyor. parlaklık (pin 3 e bağlı pot) potunu çeviriyorum ama yinede hiç tepki alamıyorum, tamamen ölü. 

4 bit bağlanıyı ve 8 bit bağlanıyı denedim hiç biri çalışmadı.

Denemeleri önce normal LCD ile yapıp programın çalıştığından bağlantıların düzgün olduğuna emin olduktan sonra pled displayi takıyorum. Tabiki bunları yaparken gücü kesiyorum en son emin olmak için mclr'yi gnd'ye bağlayıp sonra tekrar +5v'a veriyorum.

Datasheet'de c dilinde yazılmış bir kod var ama atmel mcu'larına göre. Bunu pic'e çevirip derleyecek biri var mı?

Sdttn

Alıntı yapılan: ByteMaster - 09 Eylül 2011, 10:09:37
Kontrolcünün ne olduğunu biliyor musun ? Kullandığın komutların doğru olduğuna emin misin ? Benim hatam, datasheet gözümden kaçmış.

Kontrolcü hd44780 uyumlu diyor ama belki de pbasic'in LCDout komutu ile uyumlu değildir.

Burak B

#10
Mesajımı düzenlerken cevap yazmışsın. Birde şöyle yap. Çalışan bir devren varsa LCD ile PLED i değiştirip dene. Uyumlu dediğine göre birşey değişmeyecektir. Yani çalışması lazım. @ETE üstadımın yazdıklarını iyi kontrol et. Ayrıca Ebay bana göre pek güvenilir bir alışveriş kaynağı değil.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

Sdttn

Zaten elimde çalışan bir devre var. daha doğrusu bread board üzerinde denemeleri yapıyorum.

LCD displayle çalışıyor ancak PLED displayler çalışmıyor.

Kadir Can(16F84)

Hocam displaylerin bozuk olmadığından emin miyiz?
Alıntı yapılan: ete - 09 Eylül 2011, 09:17:45
- Ekranda Yalnızca üst sıradaki kareler dolu (siyah yada ne renk ise) gözükür. Bu LCD nin doğru çalıştığını ancak programın çalışmadığını gösterir. Normalde devre haricinde LCD ye GND ve +5V bağladığınızda bu görüntüyü görmeniz gerekir.
Ete
Bu yöntemi dener misiniz?

fatihkuzucu

#13
İlk meajdaki resimleri sizmi çektiniz ? 15-16 numaralı pinler neden  boşta gözüküyorlar ?

Ek=Datasheete baktım NC olarak gözüküyor.
Exp.Kits http://tinyurl.com/3qhs8pm   Küçük adamların, küçük fikirleri... Büyük adamların, büyük hayalleri...

Ersin

Kontrast için trimpotu tam sağ çevirdiğinizde 2x16 dikdörtgenler yaniyosa hardware de sorun yok gibi yazılımda bakmak gerek , ama ben o trimpotu hiç takmadığınızı düşünüyorum.Söz konusu trimpot takılı mı?