pic 16F877 2x16 LCD ve PortA

Başlatan Franisto, 23 Haziran 2010, 11:55:32

Franisto

Merhabalar. Tecrübeli arkadaşlara bir sorum olacak. 877 ile bir proje üzerinde çalışıyorum ve 877 nin tüm bacaklarını kullanıyorum. sadece 1 adet daha giriş bacağına ihtiyacım var. Herhangi bir ek malzeme kullanmadan bir giriş-çıkış pini yaratmak için aklıma gelenler;

Lcd yi bağlamak için 7 pin kullanıyoruz. (aslında 6 biri şase). lcdyi ProtB veya PortD ye bağladığımda ki bu portlar 8 bitlik boşta kalan bir bacağı kullanabilirmiyim? Aslında mümkünse daha güzeli olan portA ya bağlantı yapabilmek. PortA 6 bitlik PortA ile lcd çalıştırabilirmiyiz? mümkünse porta için örnek kod verebilirmisiniz?

(Not: analog girişlere ihtiyacım yok)

gokhangokcen

merhaba franisto;
pbp yi çok fazla bilmem ama sana örnek olabilecek bir kod verebilirim lcd bağlantısı hakkında kodlar proton ile yazılmıştır.
TRISA=%00000000
PORTA = 0
ADCON1 = 7

Declare LCD_DTPIN PORTA.0	'LCD DATA PİNİ KACINCI PİNDEN BAŞLAYACAK
Declare LCD_ENPIN PORTA.4	'LCD'nin ENable ucu
Declare LCD_RSPIN PORTA.5	'LCD'nin Register Select ucu
Declare LCD_INTERFACE 4	'LCD veri yolu 4 bit olacak
Declare LCD_LINES 2		'LCD 2 satırdan oluşuyor


gibi bir kod ile lcd bağlantısını porta'ya  kolayca yapalirsin.
sanırım pbp da ise DECLARE yerine DEFİNE tanımlaması kullanılıyordu konuyu bilen arkadaşlar daha iyi yardımcı olacaklardır.kolay gelsin
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

serdararikan

Alıntı yapılan: franisto - 23 Haziran 2010, 11:55:32
Merhabalar. Tecrübeli arkadaşlara bir sorum olacak. 877 ile bir proje üzerinde çalışıyorum ve 877 nin tüm bacaklarını kullanıyorum. sadece 1 adet daha giriş bacağına ihtiyacım var. Herhangi bir ek malzeme kullanmadan bir giriş-çıkış pini yaratmak için aklıma gelenler;

Lcd yi bağlamak için 7 pin kullanıyoruz. (aslında 6 biri şase). lcdyi ProtB veya PortD ye bağladığımda ki bu portlar 8 bitlik boşta kalan bir bacağı kullanabilirmiyim? Aslında mümkünse daha güzeli olan portA ya bağlantı yapabilmek. PortA 6 bitlik PortA ile lcd çalıştırabilirmiyiz? mümkünse porta için örnek kod verebilirmisiniz?

(Not: analog girişlere ihtiyacım yok)

evet portb nin veya portd nin 7 bitini LCD diğer kalan pininide istediğin şey için kullanabilirsin.Eğer portA ya bağlayacaksan opencollector ucunu kullanırken dikkat et.

subram

daha önce 877 kullanmadım ama LCD nin bağlandığını biliyorum PORTA ya. Dikkat etmen gereken çıkışların dijital olması aynı zamanda da open collektor olmaması. Open collektor ise bir pull-up direnci ile 5V a çekmen lazım!
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

Franisto

#4
Arkadaşlar cevaplar için çok teşekkür ederim. Önceden benzer denemeler yaptım. Biraz önce yazdıklarınızdan ilham alarak tekrar denedim sonuç hüsran LCD çalışmıyor bpb kodu ve bağlantı aşağıda. nerde hata yapıyor olabilirim.

TRISA=%00000000  'PortA yı çıkış yaptık
PORTA = 0                          
ADCON1 = 7                       ' PortA Digital olarak ayarlandı.

DEFINE LCD_DTPIN PORTA.0   'LCD DATA PİNİ KACINCI PİNDEN BAŞLAYACAK
DEFINE LCD_ENPIN PORTA.4   'LCD'nin ENable ucu
DEFINE LCD_RSPIN PORTA.5   'LCD'nin Register Select ucu
DEFINE LCD_INTERFACE 4   'LCD veri yolu 4 bit olacak
DEFINE LCD_LINES 2      'LCD 2 satırdan oluşuyor

pause 200 
lcdout $FE,1,    "DENEME"
pause 200 
END



[IMG]http://img692.imageshack.us/img692/6748/adszkdx.jpg[/img]

Ek olarak bpb da define ile yaptığımız tanımlamalarda;

LCD_RSPIN PORTA.5
LCD_RSBIT PORTA.5

hangisi doğru bit mi pin mi? Gerçi ikisinide denedim...

subram

kodlarda eksik var!! düzeltilmiş halini atrım şimdi!!
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

subram

#6
Define LCD_DREG PORTB
Define LCD_DBIT 0
Define LCD_EREG PORTB
Define LCD_EBIT 4
Define LCD_RSREG PORTB
Define LCD_RSBIT 5
DEFINE LCD_BITS      4      
DEFINE LCD_LINES   2


yukarıdaki komutlar benim bir projede kullandığım LCD li devre içindir. sen bu komutlara uygun şekilde düzelt kendi devrene göre.. yapamazsan haber ver onu da hallederiz  ;D
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

Franisto

TRISA=%00000000
PORTA = 0
ADCON1 = 7

Define LCD_DREG PORTA
Define LCD_DBIT 0
Define LCD_EREG PORTA
Define LCD_EBIT 4
Define LCD_RSREG PORTA
Define LCD_RSBIT 5
DEFINE LCD_BITS      4      
DEFINE LCD_LINES   2

pause 200 
lcdout $FE,1,    "DENEME"
pause 200 
END


Kodları bu şekilde düzenledim. ra4 ü 10K ile +5V a çektim. sonuş aynı çalışmıyor.  :'(

subram

Alıntı yapılan: franisto - 23 Haziran 2010, 15:58:02
TRISA=%00000000
PORTA = 0
ADCON1 = 7

TEKRAR

Define LCD_DREG PORTA
Define LCD_DBIT 0
Define LCD_EREG PORTA
Define LCD_EBIT 4
Define LCD_RSREG PORTA
Define LCD_RSBIT 5
DEFINE LCD_BITS      4      
DEFINE LCD_LINES   2

pause 200 
lcdout $FE,1,    "DENEME"
pause 200 
GOTO TEKRAR
END


Bunu dene  ;)
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

Franisto

Denedim sonuç başarısız. isis aşağıdaki hatayı veriyor.


subram

LCD nin RW bacağını şaseye bağladın mı?
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

Franisto


subram

programdaki ADCON komutunu sil, programı pic16f84 ile dene. bu arada derleyici olarak ne kullanıyorsun?
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

Franisto

mcs kullanıyorum şimdi denerim.

BenC

#14
Porta.4 ü Çıkış olarak kullanacaksan ki kullanmak durumunda kalacaksın LCD_E ucuna bağlı. Bu porta 10 K lık bir pull-up direnci koy. Pardon bu cevap denenmiş.

Çalışmayan ne esas onu bir söylerseniz. Ekranda bişey mi göremiyorsunuz?
ŞEHİT KANIYLA ALINMIŞ BU GÜZELİM VATANIN TOPRAKLARI KARIŞ KARIŞ SATILIYOR!!  VATAN HAİNİ OLMA!!