LCD ye görüntü aktaramıyorum.

ibrahim_89

Üye
Katılım
28 May 2008
Mesajlar
98
Puanları
1
Yaş
35
iyi günler kolay gelsin. pic16f648 ile lcd ekranda görüntü oluşturmaya çalışıyorum fakat olmuyor.

bağlantılarım aşağıdaki şekilde(donanımsal hiçbir sorun yok)


1 gnd
2 +
3 Pot orta ucu
4 RA.2 ye
5 RA.4 e
6 RA.3 e
7 boş
8 boş
9 boş
10 boş
11 rb.0
12 rb.1
13 rb.2
14 rb.3



yazılımım aşağıdaki gibi

Kod:
@ DEVICE pic16F648a
@ DEVICE pic16F648a, WDT_OFF
@ DEVICE pic16F648a, PWRT_OFF
@ DEVICE pic16F648a, PROTECT_OFF
@ DEVICE pic16F648a, MCLR_OFF
@ DEVICE pic16F648a, INTRC_OSC_NOCLKOUT

TRISA=0 'A portu çıkış olarak ayarlandı.
TRISB=%01110000 'B portu çıkış olarak ayarlandı.


OPTION_REG.7=1

DEFINE LCD_DREG PORTB                 'LCD data bacakları hangi port a baglı?
DEFINE LCD_DBIT 0                     'LCD data bacakları hangi bitten baslıyor?
DEFINE LCD_RSREG PORTA                'LCD RS Bacagı Hangi Port a baglı ?
DEFINE LCD_RSBIT 2                    'LCD RS bacagı Hangi Bite baglı ?
DEFINE LCD_RWREG PORTA
DEFINE LCD_RWBIT 4
DEFINE LCD_EREG PORTA                 'LCD Enable Bacagı Hangi Port a baglı?
DEFINE LCD_EBIT 3                     'LCD Enable Bacagı Hangi bite baglı ?

DEFINE LCD_BITS 4                     'LCD 4 bit mi yoksa 8 bit olarak baglı?
DEFINE LCD_LINES 2                    'LCD Kaç sıra yazabiliyor
  DEFINE LCD_COMMANDUS 2000 'Command delay time in us 
  DEFINE LCD_DATAUS 50 'Data delay time in us

symbol up=portb.5
symbol down=portb.6
symbol ok=portb.7
pause 200
LOW PORTa.4 

LCDOUT $FE,1            'Önce Ekranı siliyoruz.
LCDOUT "     LCD LCD "           'ilk sıra baştan itibaren yazdırıyoruz. Aslında bu komutu başka bir şekilde de yazabiliriz, şöyle LCDOUT $FE,2,"BASIC DERSLERI"
LCDOUT $FE,$C0,"  TEST TEST  " 



LCDOUT $FE,$86, "MERHABA"
  pause 1000
  
  
LCDOUT $FE,$02, "      LCD   "
LCDOUT $FE,$C3,"     TEST "
pause 2000


LCDOUT $FE,1

ibo:
pause 10


if up=1 then 
LCDOUT $FE,$80,"  yukari   "
pause 100
endif

if down=1 then 
LCDOUT $FE,$80,"  asagi   "
pause 100
endif

if ok=1 then 
LCDOUT $FE,$80,"  ok   " 
pause 100
endif

gosub ibo


sorunum ise LCD de hiç Yazı görüntü vs Oluşturamıyorum. LCD arızalıdır diye düşündüm değiştirdim sonuç yine aynı tüm donanım sağlam. Önerilerinizi dikkatle bekliyorum iyigünler.
 
kontrol pinlerini ra.0'dan itibaren sırayla bağlayıp dene, rs - ra.0, rw - ra.1, e - ra.2 şeklinde.
 
Madem sende benim gibi basic kullanıyorsun, sorununa çözüm bulalım. Ama önce isis dosyanı göndersen de bizi çizmekten kurtarsan iyi olur. Hatta kullandığın LCD nin ismini cismini de belirtirsen ona göre emin oluruz. Bu arada LCD bağlantılarını port.a dan yapmışsın. 648 le hiç çalışmadım (datasheetine sen çizim dosyasını gönderdikten sonra bakarız) ama genelde a portu default olarak analog giriş olarak açılır. O yüzden programın başında bu pinleri dijitale çevirmen gerekir. (adcon1=7)
 
arkadaşım sorun sende deg,l derleyicinden bende aynı sorunu yaşadım geçenlerde derleyiciyi silip proton ıde ile derledim şuan normal protonda derledigin her kod proteus ortamında çalışmıyor bunun için ıde sürümünü tavsiye ediyorum şuan çok iyi durumda..yok dersen şu kodu başa ekle kendine göre düzenle çalışır..

Device = 16F876
XTAL=4
ALL_DIGITAL true
LCD_DTPIN PORTB.4
LCD_RSPIN PORTC.2
LCD_ENPIN PORTC.0
 

Biotec te bizim gibi basic çi. Ancak senin verdiğin kod parçası 876 ya göre yazılmış ve protonda yazmışsın. Arkadaş pic basic te yazmış. Sen proton ide kullanıyorsun, o microcode studio kullanıyor. Yani derleyiciler ve diller farklı. Üstelik define tanımlamalarını program başında da yapmış. Yani problem burdan kaynaklanmıyor. Önce arkadaş bizimle şemasını ve lcd nin model bilgilerini paylaşsın, sonra problem çıkar ortaya.
 
peki bekliyoruz da ben sadece örnek verdim..
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…