Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
8
Cevap
576
Tıklama
0
Öne Çıkarma
PIC16F877A ile 2 tane LCD Panel (2x16) kontrol edilebilir mi?
H
11 yıl
Onbaşı
Konu Sahibi

Arkadaşlar, PIC16F877A ile PORTB'ye bir LCD panel ve PORTC'ye bir LCD panel olarak iki LCD paneli kontrol etmem münkün mü? PICBasicPro komutlarına
göre bir LCD için DEFINE komutları başta tanımladıktan sonra sanki ikinci LCD için tanımlanamıyor gibi gözüküyor.
ASlında her iki LCD panelde de aynı veriler gözükecek. Fakat aynı hat üzerinden bağlantıda voltaj yeterli olmayabilir diye ayrı porta ayrı LCD programlyaım dedim. Bilen arkadaşların yardımını istiyorum teşekkürler.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



G
11 yıl
Binbaşı

picBasic yetenekleri sınırlı olabilir.

İki, üç, ... on beş lcd bile bağlanır. Bu kadar çok lcd bağlanınca bacak sayısı yeterli gelir mi sorusu aklına geliyor olabilir, portları buffer kullanarak çoklayabilirsin.

İki LCD aynı verileri gösterecekse 74HC244 gibi bir buffer entegresi ile sinyallerin karışmadan iletilmesini sağlayabilirsin.

Hatta 74HC595 ile sadece 3 pin ile LCD sürülmüş örnek var. link


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @hicazkar37
H
11 yıl
Onbaşı
Konu Sahibi

Teşekkür ederim. Bacak sayısı 16f877 için yeterli oluyor. Ama PIC BASIC tek LCDyi yönlendiriyor komutlarıyla. Paralel olarak iki LCD yi bağlanıp bir tasarım yaptım ISIS'te oluyor gibi. Pratikte durumun ne olacağına bakacağım artık sonra.


Bu mesaja 1 cevap geldi.
O
11 yıl
Yüzbaşı

Buffer'a gerek yok. Kaç tane LCD bağlamak istiyorsan hepsinin data pinlerini, okuma-yazma (RW) pinlerini ve RS pinlerini paralel bağla. Enable bacaklarını ayrı ayrı pic'e gir. Enable bacaklarını kontrol ederek her LCD'yi aynı anda birbirinden bağımsız bir şekilde kontrol edebilirsin.


Bu mesaja 1 cevap geldi.
E
11 yıl
Er

mux kullanarak yapabilirsiniz hocam sırayla çıkış verirsiniz. veya lcd kütüphane dosyaları üzerinde değişiklik yapıp pinlerini değiştirirseniz olur ama fonksiyonlarını da değiltirmeniz lazım mesela printf1 ve printf2 gibi kaç tane lcd kullanacaksanız gibi.


Bu mesaja 1 cevap geldi.
O
11 yıl
Yüzbaşı

Şema:

< Resime gitmek için tıklayın >

Hangi dili kullanıyorsun bilmiyorum. Ben Pic Basic'de yazdım. Ama bakarak mantığı anlayabilirsin sanırım.

Program:

@ DEVICE PIC16F876A 
@ DEVICE PIC16F876A, WDT_ON
@ DEVICE PIC16F876A, PWRT_ON
@ DEVICE PIC16F876A, PROTECT_OFF
@ DEVICE PIC16F876A, XT_OSC

TRISB=%00000000

SYMBOL LCD_1=PORTC.1
SYMBOL LCD_2=PORTC.2
SYMBOL LCD_3=PORTC.3
SYMBOL LCD_4=PORTC.4
SYMBOL LCD_5=PORTC.5
SYMBOL LCD_6=PORTC.6

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTC
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTC
DEFINE LCD_EBIT 7
DEFINE LCD_BITS 8
DEFINE LCD_LINES 2

PAUSE 200
LCDOUT $FE,1

BASLA:
GOSUB LCD1
LCDOUT $FE,$80,"ABCDEFGHIJKLMNOP"
LCDOUT $FE,$C0,"QRSTUVWXYZ......"
GOSUB LCD2
LCDOUT $FE,$80,"abcdefghijklmnop"
LCDOUT $FE,$C0,"qrstuvwxyz......"
GOSUB LCD3
LCDOUT $FE,$80," Donanim Haber "
LCDOUT $FE,$C0," 11.02.2015 "
GOSUB LCD4
LCDOUT $FE,$80," Overclock "
LCDOUT $FE,$C0," Makinesi "
GOSUB LCD5
LCDOUT $FE,$80," 9876543210"
LCDOUT $FE,$C0," 0123456789 "
GOSUB LCD6
LCDOUT $FE,$80," Goruldugu gibi "
LCDOUT $FE,$C0,"hepsi calisiyor."
GOTO BASLA


LCD1:
INPUT LCD_1
LOW LCD_2
LOW LCD_3
LOW LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD2:
LOW LCD_1
INPUT LCD_2
LOW LCD_3
LOW LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD3:
LOW LCD_1
LOW LCD_2
INPUT LCD_3
LOW LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD4:
LOW LCD_1
LOW LCD_2
LOW LCD_3
INPUT LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD5:
LOW LCD_1
LOW LCD_2
LOW LCD_3
LOW LCD_4
INPUT LCD_5
LOW LCD_6
RETURN

LCD6:
LOW LCD_1
LOW LCD_2
LOW LCD_3
LOW LCD_4
LOW LCD_5
INPUT LCD_6
RETURN


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @hicazkar37
A
11 yıl
Binbaşı

quote:

Orijinalden alıntı: Overclock Makinesi

Şema:

< Resime gitmek için tıklayın >

Hangi dili kullanıyorsun bilmiyorum. Ben Pic Basic'de yazdım. Ama bakarak mantığı anlayabilirsin sanırım.

Program:

@ DEVICE PIC16F876A 
@ DEVICE PIC16F876A, WDT_ON
@ DEVICE PIC16F876A, PWRT_ON
@ DEVICE PIC16F876A, PROTECT_OFF
@ DEVICE PIC16F876A, XT_OSC

TRISB=%00000000

SYMBOL LCD_1=PORTC.1
SYMBOL LCD_2=PORTC.2
SYMBOL LCD_3=PORTC.3
SYMBOL LCD_4=PORTC.4
SYMBOL LCD_5=PORTC.5
SYMBOL LCD_6=PORTC.6

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTC
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTC
DEFINE LCD_EBIT 7
DEFINE LCD_BITS 8
DEFINE LCD_LINES 2

PAUSE 200
LCDOUT $FE,1

BASLA:
GOSUB LCD1
LCDOUT $FE,$80,"ABCDEFGHIJKLMNOP"
LCDOUT $FE,$C0,"QRSTUVWXYZ......"
GOSUB LCD2
LCDOUT $FE,$80,"abcdefghijklmnop"
LCDOUT $FE,$C0,"qrstuvwxyz......"
GOSUB LCD3
LCDOUT $FE,$80," Donanim Haber "
LCDOUT $FE,$C0," 11.02.2015 "
GOSUB LCD4
LCDOUT $FE,$80," Overclock "
LCDOUT $FE,$C0," Makinesi "
GOSUB LCD5
LCDOUT $FE,$80," 9876543210"
LCDOUT $FE,$C0," 0123456789 "
GOSUB LCD6
LCDOUT $FE,$80," Goruldugu gibi "
LCDOUT $FE,$C0,"hepsi calisiyor."
GOTO BASLA


LCD1:
INPUT LCD_1
LOW LCD_2
LOW LCD_3
LOW LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD2:
LOW LCD_1
INPUT LCD_2
LOW LCD_3
LOW LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD3:
LOW LCD_1
LOW LCD_2
INPUT LCD_3
LOW LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD4:
LOW LCD_1
LOW LCD_2
LOW LCD_3
INPUT LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD5:
LOW LCD_1
LOW LCD_2
LOW LCD_3
LOW LCD_4
INPUT LCD_5
LOW LCD_6
RETURN

LCD6:
LOW LCD_1
LOW LCD_2
LOW LCD_3
LOW LCD_4
LOW LCD_5
INPUT LCD_6
RETURN


Ellerinize sağlık. Tarama yöntemini kullanmışsınız sanırım. gayet işlevsel ve güzel olmuş.


Bu mesaja 1 cevap geldi.
O
11 yıl
Yüzbaşı

quote:

Orijinalden alıntı: akyildizemre

quote:

Orijinalden alıntı: Overclock Makinesi

Şema:

< Resime gitmek için tıklayın >

Hangi dili kullanıyorsun bilmiyorum. Ben Pic Basic'de yazdım. Ama bakarak mantığı anlayabilirsin sanırım.

Program:

@ DEVICE PIC16F876A 
@ DEVICE PIC16F876A, WDT_ON
@ DEVICE PIC16F876A, PWRT_ON
@ DEVICE PIC16F876A, PROTECT_OFF
@ DEVICE PIC16F876A, XT_OSC

TRISB=%00000000

SYMBOL LCD_1=PORTC.1
SYMBOL LCD_2=PORTC.2
SYMBOL LCD_3=PORTC.3
SYMBOL LCD_4=PORTC.4
SYMBOL LCD_5=PORTC.5
SYMBOL LCD_6=PORTC.6

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTC
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTC
DEFINE LCD_EBIT 7
DEFINE LCD_BITS 8
DEFINE LCD_LINES 2

PAUSE 200
LCDOUT $FE,1

BASLA:
GOSUB LCD1
LCDOUT $FE,$80,"ABCDEFGHIJKLMNOP"
LCDOUT $FE,$C0,"QRSTUVWXYZ......"
GOSUB LCD2
LCDOUT $FE,$80,"abcdefghijklmnop"
LCDOUT $FE,$C0,"qrstuvwxyz......"
GOSUB LCD3
LCDOUT $FE,$80," Donanim Haber "
LCDOUT $FE,$C0," 11.02.2015 "
GOSUB LCD4
LCDOUT $FE,$80," Overclock "
LCDOUT $FE,$C0," Makinesi "
GOSUB LCD5
LCDOUT $FE,$80," 9876543210"
LCDOUT $FE,$C0," 0123456789 "
GOSUB LCD6
LCDOUT $FE,$80," Goruldugu gibi "
LCDOUT $FE,$C0,"hepsi calisiyor."
GOTO BASLA


LCD1:
INPUT LCD_1
LOW LCD_2
LOW LCD_3
LOW LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD2:
LOW LCD_1
INPUT LCD_2
LOW LCD_3
LOW LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD3:
LOW LCD_1
LOW LCD_2
INPUT LCD_3
LOW LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD4:
LOW LCD_1
LOW LCD_2
LOW LCD_3
INPUT LCD_4
LOW LCD_5
LOW LCD_6
RETURN

LCD5:
LOW LCD_1
LOW LCD_2
LOW LCD_3
LOW LCD_4
INPUT LCD_5
LOW LCD_6
RETURN

LCD6:
LOW LCD_1
LOW LCD_2
LOW LCD_3
LOW LCD_4
LOW LCD_5
INPUT LCD_6
RETURN


Ellerinize sağlık. Tarama yöntemini kullanmışsınız sanırım. gayet işlevsel ve güzel olmuş.

Teşekkür ederim. Mantıken tarama yöntemi. Aslında Enable bacakları dirençler üzerinden paralel bağlı. Hangi lcd'ye veri yazılacaksa o lcd dışındaki lcd'lerin tüm Enable pinleri şaseye çekiliyor.


Bu mesaja 1 cevap geldi.
H
11 yıl
Onbaşı
Konu Sahibi

Verdiğiniz bilgilere teşekkür ederim. Sayın Overlock kodları denemeye çalışacağım.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.