Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

lcd hata veriyor

Başlatan seçili, 27 Ekim 2014, 19:58:05

seçili

LCD H. KÜTÜPHANESİ

#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 baĢlangıç adresi
// (DDRAM adres)
#define IkinciSatir 192 // Ġkinci satirin baĢlangıç 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);



LCD C KÜTÜPHANESİ

#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)
{
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üĢen 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üĢü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);
}




MAİN C KODLARI
#include <htc.h>
#include <delay.h> // Gecikme kütüphanesi
#include "lcd.h" // LCD kütüphanesi tanımlanıyor
void main(void) // Ana fonksiyon alanı
{
TRISB=0x00; // LCD'ye bağlı portlar çıkıĢ yapılıyor
TRISC=0x00;
PORTB=0x00;
PORTC=0x00;
lcd_init(); // LCD ilk ayarları yapılıyor
lcd_yaz(" FIRAT DEVECI"); // Ġlk satıra isim yazılıyor
lcd_gotoxy(2,1); // Ġkinci satıra geçiliyor
lcd_yaz(" 1234567890"); // Rakamlar yazılıyor
for(;;); // Sonsuz döngüye giriliyor
}



İNCLUDE DELAY H HATA VERİYOR SEBENİ NEDİR ÇÖZEMEDİM

GreeN

Delay.h ve delay.c yok mu?
Terörü Lanetliyoruz.

seçili

#2
HTCH C CPROĞRAMININ İÇİNDEKİ KENDİ GECİKME KÜTÜPHANESİNİ KULLANIYORUM


DELAY C DOSYASI
/*
*   Delay functions
*   See delay.h for details
*
*   Make sure this code is compiled with full optimization!!!
*/

#include   "delay.h"

void
DelayMs(unsigned char cnt)
{
#if   XTAL_FREQ <= 2MHZ
   do {
      DelayUs(996);
   } while(--cnt);
#endif

#if    XTAL_FREQ > 2MHZ   
   unsigned char   i;
   do {
      i = 4;
      do {
         DelayUs(250);
      } while(--i);
   } while(--cnt);
#endif
}



DELAY H DOSYASI


/*
*   Delay functions for HI-TECH C on the PIC
*
*   Functions available:
*      DelayUs(x)   Delay specified number of microseconds
*      DelayMs(x)   Delay specified number of milliseconds
*
*   Note that there are range limits: x must not exceed 255 - for xtal
*   frequencies > 12MHz the range for DelayUs is even smaller.
*   To use DelayUs it is only necessary to include this file; to use
*   DelayMs you must include delay.c in your project.
*
*/

/*   Set the crystal frequency in the CPP predefined symbols list in
   HPDPIC, or on the PICC commmand line, e.g.
   picc -DXTAL_FREQ=4MHZ
   
   or
   picc -DXTAL_FREQ=100KHZ
   
   Note that this is the crystal frequency, the CPU clock is
   divided by 4.

*   MAKE SURE this code is compiled with full optimization!!!
   
*/

#ifndef   XTAL_FREQ
#define   XTAL_FREQ   4MHZ      /* Crystal frequency in MHz */
#endif

#define   MHZ   *1000L         /* number of kHz in a MHz */
#define   KHZ   *1         /* number of kHz in a kHz */

#if   XTAL_FREQ >= 12MHZ

#define   DelayUs(x)   { unsigned char _dcnt; \
           _dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \
           while(--_dcnt != 0) \
              continue; }
#else

#define   DelayUs(x)   { unsigned char _dcnt; \
           _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
           while(--_dcnt != 0) \
              continue; }
#endif

extern void DelayMs(unsigned char);

KİTAP RIFAT DEVECİNİN KODLARIN AYNISINI YAZIYORUM HATA VERİYOR


Kabil ATICI

bu programı bilmediğimi varsay ve
kristal frekansını nerede? Delay.h senden kristal frekansını istemesi lazım diye biliyorum.
ambar7

seçili

#4




mesaj birleştirme:: 28 Ekim 2014, 22:34:00

#include <delay.h> // Gecikme kütüphanesi yazan yeri sildim kodlar hata vermedi ama bu sefer hex dosyası oluşturma hatası verdi resmin aşasındaki proplem hataları uyarı veriyor ne olur yardım edin çıldıracam

seçili

#5
arkadaşlar led yakıp söndürmede sorun uok hex dosyasını sorunsuz oluşturuyor ama LCD kütüphanesinde veya main c de yazılım sorunu var