LCD ekrana yazı hiç gelmiyor

Başlatan AsHeS, 06 Mart 2012, 21:51:03

AsHeS

Hocalar isiste çalışan kod ve şema gerçekte yapılınca tık bile etmiyor aşağıda şema ile kodu verdim yardımlarınız için şimdiden teşekkürler(Serdar Çiçek'in kitabından aldım kodları sadece pici değiştirdim.
/******************************************************
*******************************************************/

#include <16f877A.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

#use fast_io(b) //Port yönlendirme komutları B portu için geçerli

#define use_portb_lcd TRUE   // LCD B portuna bağlı

#include <lcd.c>   // lcd.c dosyası tanıtılıyor

int x;      // Tamsayı tipinde değişken tanımlanıyor
float y;    // Ondalıklı tipte değişken tanımlanıyor
char z;     //  Karakter tipinde değişken tanımlanıyor

byte dizi[6]={0x45,0xC6,0xA3,0xE2,0x56};

//********** ANA PROGRAM FONKSİYONU*******

void main ( )
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

   set_tris_b(0x00);   // B portu komple çıkış

   lcd_init();   // LCD hazırlanıyor

   x=10;   // x değişkenine değer veriliyor
   y=32.6; // y değişkenine değer veriliyor
   
   
   
   while(1) // Sonsuz döngü
   {shift_right(dizi,4,1);
      lcd_send_byte(0,0x0d);   // LCD'ye komut gönderiliyor. İmleç yanıp sönsün komutu.
      printf(lcd_putc,"\f     CCS C"); // LCD'ye veri gönderiliyor.
      delay_ms(1000); // 1 sn gecikme
      printf(lcd_putc,"\n  Derleyicisi");
      delay_ms(1000); // 1 sn gecikme
      lcd_gotoxy(1,2);   // Kursör 1.sütun, 2.satıra konumlandırılıyor.
      printf(lcd_putc,"\fX DEGERI=%d",x); // LCD'de tamsayı olarak x değişken değeri görüntüleniyor.
      delay_ms(1000); // 1 sn gecikme
      printf(lcd_putc,"\f\nY DEGERI=%f",y); // LCD'de ondalıklı olarak y değişken değeri görüntüleniyor.
      delay_ms(1000); // 1 sn gecikme
      printf(lcd_putc,"\fDIRENC"); // LCD siliniyor ve "Direnc" stringi yazdırılıyor.
      delay_ms(1000); // 1 sn gecikme
      z=lcd_getc(3,1);  // LCD'de o an 3.Sütun ve 1.Satırda olan karakter alınıyor. Alınan değer z değişkenine aktarılıyor.
      printf(lcd_putc,"\f%c",z);    // z değişkeni LCD'ye aktarılıyor
      delay_ms(2000); // 2 sn gecikme
   }
}

Şema
[IMG]http://img18.imageshack.us/img18/5153/adsznx.jpg[/img]

haydarpasamikro

Simülasyonda çalışan devre gerçekte de çalışır. Ancak bir eksik veya yanlış bağlantı gerçek devrenin çalışmamasına neden olur?
1. PIC in +5V ve GND bağlantıları yapıldı mı? ISIS te gözükmezler.
2. Kristal ve 22pf(22nf değil) bağlantısı doğru mu?
3. MCLR ucu dirençle +5v gidiyor mu?
4. LCD V0 kontrast ucu potansı çevirip ayar yapıldı mı?
5. LCD nin sadece 1,2,3 uçlarına enerji ve kontrast verilse, 15-16 backlight +5V-gnd bağlansa da ekranın üst satırı gelir. Ancak tüm pixeller dolu gelir(pic ile haberleşme olmasa).
6. lcd data uçları ve kontrol uçları doğru portlara gidiyor mu?
7. PIC inizi doğru programladınız mı? Config bitlerine bir müdahale var mı?
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

F.T

şemada potun üst ucunu vee den ayırıp vdd +5 volt a  bağlamalısın.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

haydarpasamikro

evet. potansın orta ucu LCD 3.nolu V0(Vee) kontast ucuna bağlanmalı.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

AsHeS

gerçek devrede onu direkt 5 volt bağladım ekran