Lcd'ye Yazı Yazdıramadım Bir Türlü

Başlatan vitruvius, 13 Haziran 2011, 00:36:26

vitruvius

Merhaba, ortam sıcaklığını hep lcd'ye hem de bilgisayara yazdırmak istiyorum. Bilgisayara veri geliyor gelmesine de lcd'de sürekli kareler çıkıyor.
Bugüne kadar hep lehimlerden kıllandım çünkü breadboard'da yazı yazdırmıştım. Defalarca lehimledim, lehim pompasıyla söktüm tekrar lehimledim.
Lcd için bacaklar var onları kullandım yine omadı. Aslında oldu da şöyle oldu; breadboard'da devreyi sorunsuz çalıştırdım akşam yattım sabah tekrar baktığımda kareler gözüktü.
1-2 saat önce lcd'ye yine yazı geldi adaptörü çıkartıp tekrar taktım bu sefer yine kareler çıktı. Şu an çok dikkatlice lehimledim ancak yine kareler var. Bu iş için gerçekten çok ince
lehim mi yapmak gerekiyor yoksa gözden kaçırdığım bir şey mi var?

PIC olarak 16F877A, Lcd: JHD162A, Ares resminde gözüken U3: max232, U2: Lm35, U4: 7805.

Devrenin CCS C kodu:

#include <16f877A.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use fast_io(a) // Port yönlendirme a portu için geçerli
#define use_portb_lcd TRUE
#include <lcd.c>
#use rs232 (baud=9600,rcv=PIN_C7, xmit=PIN_C6, parity=N, stop=1) //rs 232 için
unsigned long int bilgi;
float gerilim, sicak;
int i;
void main ()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_a(0x01); // RA0 giriş olarak yönlendirildi
setup_adc(adc_clock_div_32);
setup_adc_ports(AN0); // RA0/AN0 girişi analog
lcd_init();
set_adc_channel(0); //RA0/AN0 ucundaki sinyal A/D işemine sokulacak
delay_us(100);
printf(lcd_putc,"\f    Proje I");
delay_ms(800);
printf(lcd_putc,"\nSicaklik Sensoru");
delay_ms(1000);
printf(lcd_putc,"\f Ogretim Uyesi");
printf(lcd_putc,"\n Doc. Dr. Abdullah BAL");
delay_ms(450);
while (i<23) // Kayan yazı
{
i++;
lcd_send_byte(0, 0x1E);
delay_ms(100);
}
delay_ms(100);
printf(lcd_putc,"\f  Baris Yakut");
printf(lcd_putc,"\n   07013038");
delay_ms(1800);
printf(lcd_putc,"\fSicaklik=");
while (1)
{
bilgi=read_adc(); // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
gerilim=(0.0048828125*bilgi)*1000; //Dijitale çevirme işlemine uğrayan sinyalin mv değeri
sicak=(gerilim/10)-0.3;
lcd_gotoxy(10,1);
printf(lcd_putc,"%5.1f'C"sicak);
delay_ms(100);
printf("Sicaklik: %.1f\n\r",sicak);
delay_ms(1000);
}
}


Isis:



Ares:



Dosyalar:

https://rapidshare.com/files/2253187182/Yeni_klas__r.zip

Teşekkürler.

ferdem

İnce lehim gerektirmiyor, datasheetlerde sıcaklık değerleri belirtilir ama genel olarak havyayı bacaklarda çok bekletmek lehimlenen elemana zarar verebilir, bundan kaçınmalısınız. Bir çalışıp bir çalışmama durumları zayıf bağlantılardan kaynaklanıyor olabilir, multimetrenizin kısa devre testiyle lcd nin tüm pinlerinin gereken yerlere bağlı ve aralarında(ki ohm bilgisine de dikkat ederek) kısa devre olup olmadığını kontrol edebilirsiniz. LCD ye besleme geldiğinde üst sıradaki kareler çıkar, enable, R/W, RS ve data pinlerini kontrol edebilirsiniz. Devrelerinizde mikrodenetleyiciye yakın VDD-GND arasına 100 nf koyabilirsiniz. İyi çalışmalar.