16f628a lcd saçma karakterler

Başlatan Emre MERMİ, 15 Ocak 2016, 21:35:07

Emre MERMİ

merhaba hocalarım,

16f628a  ve 2x16 lcd ile bir devre yaptım. Devre bir iki gün çalıştı. Sonra  bir kere devreyi enerjilendirdim. ??/ yazdı. Daha sonra ekranda hiçbirşey yazmadı. Arada bi devreyi enerjilendirdiğimde yine aynı karakterler yazıyordu. Bende devreyi yeniden bastım. Yeniden aynı karakterler çıktı. Yılmadım yeniden sıfırdan baskı yaptım yine aynı sorun.  Sonra kodu silip sıfırdan dosya açıp yeniden derledim. Bu sefer ilk satır kareleri tamamen dolu. LCD çalışmıyor lcd ye güç gidiyor bilgi yok. PIC çalışıyor. Var mı böyle sorun yaşayan biri ? Var mı çözümü. Bilen paylaşırsa çok mutlu olurum.

#include <16F628A.h>
#FUSES NOBROWNOUT               //No brownout reset
#FUSES MCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#fuses INTRC_IO

#use delay(oscillator=4MHz)
#define use_portb_lcd true

#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7

#include <LCD.C>

void main()
{
  

   setup_oscillator(osc_4MHz);

   lcd_init();

   lcd_putc("\fReady...\n");
   set_tris_a(0x00);
   delay_ms(50);
   output_high(pin_a3);

   while(TRUE)
   {


   }

}


kod bu bağlantılar da aynen kodda tanımlanan gibi.

mehmet

Beslemeniz nasıl bir şey, ayrıca tam şema eklerseniz
daha iyi olacak...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Emre MERMİ

#2
Hocam beslemeyi adaptör ile yapıyorum 9v veriyorum 7805 in çıkışında pic bacaklarında ve lcd pinlerinde 5v görüyorum.

mesaj birleştirme:: 16 Ocak 2016, 00:40:14

http://i.hizliresim.com/1MGX6Y.png

http://i.hizliresim.com/m1Jn2Y.png

mehmet

#3
B portu ile LCD yazılım tanımlamalarınıza göre bağlı mı?
EN B0
RS B1
RW B2
DATA4 B4
DATA5 B5
DATA6 B6
DATA7 B7


Ek: Resimleri sonradan gördüm;
* Pull - up, pull - down dirençlerini ve röle
beyz dirençlerini 1K yapınız.
* Kontras için gerilim bölücü ya da pot kullanınız.
* Arka aydınlatma ledine/lambasına seri bir diyot
ekleyiniz.
* Röleleri 12V ile değiştiriniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Emre MERMİ

Aynen hocam şemada da görülür zaten.


Emre MERMİ

@selimkoc hocam lehimlerin üzerinden birçok sefer geçtim ve 4 kartta da olması soğuk lehim ihtimalini düşürmüyor mu ? öneriniz üzerine tekrar lehimlerin üzerinden geçeceğim. LCD leri çinden almıştım acaba patates çıkma ihtimali var mı ? daha önce de farklı bir satıcıdan aynı lcd den almıştım sorun olmamıştı. Bu partiyi hiç sağlam bir devrede kontrol etmedim.

selimkoc

Ölçü aletiyle elektrik olmadan ohm kademesinde mcu ile lcd arası bağlantıları ölç. Sıfıra yakın direnç ölçmelisin. Bu kontrolden sonra başka alternatiflere bak.

Bir de config ayarlarına bak.

RaMu

Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Emre MERMİ

Hocam her ikisini de denedim zaten 10k direnç bağlı

dursuncemal

eger lcdnin saglam olduguna emınsen ve ilk kareler tamamen dolu ise cok buyuk ihtimal lcd init  olmuyor.init fonksiyonuna bi bak ordaki delaylari biraz uzat derim.
:=

aliveli

baskı devrede MCLR pininde direnç yok
programda lcd ye kendine gelmesi için zaman ver
lcd tanımlamaları hem porttan hem pinden olmuyor

#include <16F628A.h>
#FUSES NOBROWNOUT               //No brownout reset
#FUSES MCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#fuses INTRC_IO

#use delay(oscillator=4MHz)
// #define use_portb_lcd true

#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7

#include <LCD.C>

void main()
{
  

  // setup_oscillator(osc_4MHz);
delay_ms(150);
   lcd_init();
delay_ms(150);
   lcd_putc("\fReady...\n");
   set_tris_a(0x00);
   delay_ms(50);
   output_high(pin_a3);

   while(TRUE)
   {


   }

}

Emre MERMİ

@aliveli hocam güncel aresi bulamadım farklıymış son çizim mclr ekliymiş.

kodu kaç kere yeniden yazmama rağmen çalışmamıştı şimdi çalıştı. çok teşekkürler yanıtlar için. kod aşşağıdadır.
#include <16F628A.h>
#use delay(internal=4MHz)


#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7

#include <lcd.c>

void main()
{



   lcd_init();
   delay_ms(200);
   lcd_putc("\fReady...\n");

   while(TRUE)
   {


      //TODO: User Code
   }

}