hi tech de lcd kütüphane hatası

Başlatan mikro, 06 Mayıs 2012, 00:09:06

mikro

arkadaşlar HERKESE SELAMLAR  fxdev.org ARKADAŞIN  kitabından lcd kütüphanesi oluştururken hata alıyorum ilk olarak hi tech in kendi kütüphanesinde olan lcd h ve c dosyalarını oluşturduğum proje klasörüne kopyalıyorum sonra bunu proğramıma çağırıyorum lcd.h dosyasına tıklıyorum içeriyi siliyorum ve aşadaki kodları kopyala yapıştır yaparak kaydediyorum lcd.c dosyasınıda aşadaki ayrık olan kodları yazıyorum acaba nerde yanlış yapıyorum



/* www.FxDev.org
* D4,D5,D6,D7 pinlerini kullanarak 4 bit iletisim kullanır.
* Cursor kapalıdır.
* RW kullanılmadığı için direk toprağa bağlanabilir.
* 2x16 LCD Kullanım Klavuzu
* lcd_init(); ile LCD'nin ilk ayarlarını yap
* lcd_clear(); ile LCD'yi sil
* lcd_yaz("deneme"); seklinde yazı yazdır.
* veri_yolla('F'); seklinde tek ascii kodu yazdır.
* lcd_gotoxy(1,13); seklinde LCD'nin istenilen yerine git.
* www.FxDev.org
*/
#define rs RC0 //Pin tanımlamaları
#define rw RC1
#define e RC2
#define lcd_port PORTB
/* LCD'de kullanilan komutlarin tanimlamasi*/
#define Sil 1 // Ekrani temizler
#define BasaDon 2 // Imleci sol üst köseye getirir
#define SolaYaz 4 // Imlecin belirttigi adres azalarak gider
#define SagaYaz 6 // Imlecin belirttigi adres artarak gider
#define ImlecGizle 12 // Göstergeyi ac, kursor görünmesin
#define ImlecAltta 14 // Yanip sönen blok kursor
#define ImlecYanSon 15 // Yanip sönen blok kursor
#define ImlecGeri 16 // Kursoru bir karakter geri kaydır
#define KaydirSaga 24 // Göstergeyi bir karakter sağa kaydır
#define KaydirSola 28 // Göstergeyi bir karakter sola kaydır
#define EkraniKapat 8 // Göstergeyi kapat (veriler silinmez)
#define BirinciSatir 128 // LCD'nin ilk satir baslangıç adresi
// (DDRAM adres)
#define IkinciSatir 192 // Đkinci satirin baslangıç adresi
#define KarakUretAdres 64 // Karakter üreteci adresini belirle
// (CGRAM adres)
/* LCD'de Kullanilan Fonksiyon Seçimi */
#define CiftSatir8Bit 56 // 8 bit ara birim, 2 satir, 5*7 piksel
#define TekSatir8Bit 48 // 8 bit ara birim, 1 satir, 5*7 piksel
#define CiftSatir4Bit 40 // 4 bit ara birim, 2 satir, 5*7 piksel
#define TekSatir4Bit 32 // 4 bit ara birim, 1 satir, 5*7 piksel
extern void veri_yolla(unsigned char);
extern void lcd_clear(void);
extern void lcd_yaz(const char *s);
extern void lcd_gotoxy(unsigned char x, unsigned char y);
extern void lcd_init(void);
extern void lcd_komut(unsigned char c);







//////////////////////////////////////////////////////////////////////////////////


BUDA LCD.C DOSYASI



#include <pic.h>
#include "lcd.h" // lcd.h dosyası tanımlanıp, değerler alınıyor
#include "delay.h" // Gecikme fonksiyonu tanımlanıyor
void lcd_busy(void) // 500us bekleme
{
DelayUs(250);
DelayUs(250);
}
void lcd_komut(unsigned char c) // Komut gönderme fonksiyonu
{
rw=0; // LCD'ye yazma yapılacak
rs=0; // LCD'ye komut gönderilecek
e=1; // Düsen kenar tetikleme olduğu için E önce 1
lcd_port = ( c & 0xF0 ); // Yüksek değerlikli bitler gönderiliyor
e=0; // E, 0 yapılıyor
lcd_busy(); //Belirli süre bekleniyor
e=1; // E, 1 yapılıyor
lcd_port = ( (c & 0x0F)<<4 ); // Düsük değerlikli bitler
gönderiliyor
e=0; // E, 0 yapılıyor
lcd_busy(); // Belirli bir süre bekleniyor
}
void veri_yolla(unsigned char c)
{
rw=0;
rs=1; // Komut yolladan tek farkı, RS'nin 1 olması
e=1;
lcd_port = ( c & 0xF0 );
e=0;
lcd_busy();
e=1;
lcd_port = ( (c & 0x0F)<<4 );
e=0;
lcd_busy();
}
void lcd_clear(void) // LCD siliniyor
{
lcd_komut(0x1);
DelayMs(2);
}
void lcd_yaz(const char * s) // LCD'ye string ifade gönderiliyor
{
lcd_busy();
while(*s)
veri_yolla(*s++);
}
void lcd_gotoxy(unsigned char x,unsigned char y) //LCD'nin belli
//bölgesine gidiliyor
{
if(x==1)
lcd_komut(0x80+((y-1)%16));
else
lcd_komut(0xC0+((y-1)%16));
}
void lcd_init() // LCD ilk yükleme ayarları yapılıyor
{
rs = 0;
e = 0;
rw = 0;
DelayMs(15);
e=1;
lcd_komut(0x02);
DelayMs(2);
lcd_komut(CiftSatir4Bit);
lcd_komut(SagaYaz);
lcd_komut(ImlecGizle);
lcd_clear();
lcd_komut(BirinciSatir);
}

elektronikhobi

Nasıl bir hata alıyorsun acaba?

Bir de bunları dene.

https://github.com/erdemoncel/sicaklik/blob/master/lcd.c

https://github.com/erdemoncel/sicaklik/blob/master/lcd.h

Bunlar Hıtech'in içerisinde örneklerle gelen kaynak dosyalar.

elektronikhobi

Bir de bu konuda her ne kadar sıcaklık konusunu işlese de Prof Dr. Doğan İbrahim hocanın PIC C ile Sıcaklık Projeleri kitabında LCD'ye yazma konusunda örnekler var. Eğer önceden PIC programlama ile ilgili bilginiz varsa direkt bu kitabı alabilirsiniz.

Eğer daha önce C ve PIC programlama konusunda tecrübeniz yoksa gene aynı hocanın PIC C İle PIC Programlama kitabını tavsiye edebilirim. Ben bu kitabı okumadım. Ama okuduğum kitaba bakarak konusunu çok iyi özümlemiş, konusunda uzman çok iyi bir hoca olduğunu söyleyebilirim.

mikro

cevabınız için teşekkürler bu hocanın çok iyi anlattığını duymuştum ccsc serdar çiçeyin kitabını aldım sıfırdan yeni başlayan kişiler için pek anlaşılır bulmadım biraz orta seviyede c bilenler için geldi bana.. benim istediyim daha önce hiç proğramlama yapmamış c dilinin bile ne olduğunu bilmeyen hem sıfırdan c hemde pıc  anlatan vede kalın kafalıda olsa anlayacağı bir dille ANLATAN açıklamaları yaparak öğreten bir kitap bakıyorum tavsiye ettiğiniz kitaba bakacam teşekkürler fakat doğan ibrahim hocanın internette pıc c ile pıc proğramlama adlı iki kitap gördüm acaba sadece cilt resmimi deyişik bilginiz varmıdır