1. sayfa
|
Arkadaşlar sorunu uzun uğraşlar sonunda buldum. LCD_SendCmd movwf LCD_data ; swapf LCD_data, W SWAPF LCD_data,W LCD_RS_LOW call LCD_NybbleOut movf LCD_data, W ;En değersiz 4 bit’i gönder. LCD_RS_LOW ;RS = 0 (komut modu) call LCD_NybbleOut return LCD_NybbleOut andlw 0x0F movwf LCD_tmp0 SWAPF LCD_tmp0,W movf LCD_DataPort,W ;LCD'nin data pinlerinin bağlı ;olduğu port bilgisi W'de. andlw 0xF0 ;Port bilgisinin en değe SWAPF LCD_tmp0,W ;korunuyor. iorwf LCD_tmp0, W ;Korunan bilgi ile veri ;birleştiriliyor. movwf LCD_DataPort ;PortA transfer ediliyor. LCD_EStrobe ;LCD'nin veriyi alması sağlanıyor. movlw .255 ;250us kadar bekle. Bu süre LCD ;içerisindeki işlemlerin tamamlanması call delay_us ;için gerekli ( en az 160us kadar ). return LCD_init bsf STATUS, RP0 ;BANK1 seçildi. Yönlendirme ;kaydedicileri bu bankta. movf LCD_DataPort, W andlw 0x0F ;Portun en değersiz Kodlarındaki koyu renkli komutları ekledim.Artık PORTB'nin üst 4bit'ine bağlı şekilde çalışıyor. Herkese teşekkürler. |
|
1 bit yöntemiyle sürmenin daha rahat ve avantajlı olduğunu düşünüyorum.Ben 1 bitlik yöntemi öneririm. Çalışmalarınızda başarılar dilerim. |
Devreyi kurmuş bulundum.Bu şekilde idare etmem gerek. |
Çalışmalarınızda başarılar.Ben genel olarak fikrimi belirtmek istedim. |
|
Arkadaşlar ufak bir sorun çıktı.RS,E bacaklarını PORTB'deki byte işlemlerinden etkilenmemesi için D portuna tşımıştım.Yukarda bahsettiğim değişikleri yapıp çalıştırdıktan sonra bitleri tekrar B portuna taşıdım.Fakat bu sefer çalışmadı. Tahmin ediyorum SWAP komutları LCD'yi etkiledi.Ama başka bir çözümde bulamadım. Benim yaptığım yolu yok sayarak yeni önerilerde bulunabilir misiniz? Herkese teşekkürler... (Not:RS,E bacaklarının port değiştirmelerini #define LCD_CtrlPort PORTB ;Kontrol pinlerinin bağlandığı port ; LCD'nin kontrol pinlerinin bağlı olduğu mikrodenetleyici pinleri ; tanımlanıyor. #define LCD_RS 4 ;LCD RS pini RB4'e bağlı. #define LCD_EN 5 ;LCD E pini RB5'e bağlı. satırlarını değiştirerek yapıyorum.) |
|
Arkadaşlar yukarıdaki kodu boşverin. Bana LCD PORTB D4 ---- B4 D5 ---- B5 D6 ---- B6 D7 ---- B7 ve RS ---- B1 E ---- B0 Şekilde LCD-16F877 bağlantısı olan ve ekrana herhangi birşey yazdıran bir program gönderbilir misiniz??? Ben şu şekilde yazdım.Ama çalışmadı; ;******************************************************************* (Yukardaki kod ilk verdiğim kodun sadeleşmiş halidir) |
1. sayfa
Kod "PİC PROGRAMLAMA TEKNİKLERİ ve PIC16F877A" kitabından alınmıştır.
Benim problemim şu;
Kodlar lcd'nin Data uçlarının PORTB'nin ilk dört bitine göre verilmiş.Benim devrede son dört bitine bağlı.Gerekli birkaç değişikliği yaptım ama ekrandan görüntü almayı beceremedim.
Zaten 4bit Modda ilk denemem, kafam iyice karıştı.
Sizce kodlarda nasıl bir değiştirme yapmam gerek?
Kodlar aşağıda
Fikirlerinizi bekliyorum.
(Bu arada @tyilgin1 benim işi birkaç ufak hatyla da olsa hallettim.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜ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.
< Bu mesaj bu kişi tarafından değiştirildi strom -- 18 Ocak 2008; 22:25:56 >