MPLAB XC8 LCD Kütüphanesi

Başlatan huseyink, 07 Haziran 2018, 17:05:30

huseyink

Merhaba arkadaşlar,
PIC18F4620 için bir siteden LCD kütüphanesi indirdim.

//LCD Functions Developed by electroSome
/*
#define RS RB2
#define EN RB3
#define D4 RB4
#define D5 RB5
#define D6 RB6
#define D7 RB7
*/

void Lcd_Port(char a)
{
 if(a & 1)
 D4 = 1;
 else
 D4 = 0;

 if(a & 2)
 D5 = 1;
 else
 D5 = 0;

 if(a & 4)
 D6 = 1;
 else
 D6 = 0;

 if(a & 8)
 D7 = 1;
 else
 D7 = 0;
}
void Lcd_Cmd(char a)
{
 RS = 0;            // => RS = 0
 Lcd_Port(a);
 EN  = 1;            // => E = 1
        __delay_ms(4);
        EN  = 0;            // => E = 0
}

Lcd_Clear()
{
 Lcd_Cmd(0);
 Lcd_Cmd(1);
}

void Lcd_Set_Cursor(char a, char b)
{
 char temp,z,y;
 if(a == 1)
 {
   temp = 0x80 + b - 1;
 z = temp>>4;
 y = temp & 0x0F;
 Lcd_Cmd(z);
 Lcd_Cmd(y);
 }
 else if(a == 2)
 {
 temp = 0xC0 + b - 1;
 z = temp>>4;
 y = temp & 0x0F;
 Lcd_Cmd(z);
 Lcd_Cmd(y);
 }
}

void Lcd_Init()
{
  Lcd_Port(0x00);
  __delay_ms(20);
  Lcd_Cmd(0x03);
 __delay_ms(5);
  Lcd_Cmd(0x03);
 __delay_ms(11);
  Lcd_Cmd(0x03);
  /////////////////////////////////////////////////////
  Lcd_Cmd(0x02);
  Lcd_Cmd(0x02);
  Lcd_Cmd(0x08);
  Lcd_Cmd(0x00);
  Lcd_Cmd(0x0C);
  Lcd_Cmd(0x00);
  Lcd_Cmd(0x06);
}

void Lcd_Write_Char(char a)
{
  char temp,y;
  temp = a&0x0F;
  y = a&0xF0;
  RS = 1;            // => RS = 1
  Lcd_Port(y>>4);            //Data transfer
  EN = 1;
  __delay_us(40);
  EN = 0;
  Lcd_Port(temp);
  EN = 1;
  __delay_us(40);
  EN = 0;
}

void Lcd_Write_String(char *a)
{
 int i;
 for(i=0;a[i]!='\0';i++)
   Lcd_Write_Char(a[i]);
}

void Lcd_Shift_Right()
{
 Lcd_Cmd(0x01);
 Lcd_Cmd(0x0C);
}

void Lcd_Shift_Left()
{
 Lcd_Cmd(0x01);
 Lcd_Cmd(0x08);
}

Kodda görüldüğü gibi LCD bağlantıları D portuna göre yapılmış. Bu kütüphane için LCD'yi D portuna bagladim.Burada sorun yok eyvallah. Fakat B portuna bağladım ve yukarıdaki bağlantılarda port değişikliği gereken yerleri değiştirdim fakat LCD'yi B portuna bağladığımda LCD de karakterleri göremiyorum. Acaba kod içerisindeki fonksiyonlara gönderilen adresler D portu için mi ayarlanmış parametreler o yüzden mi kütüphane doğru çalışmıyor bu konuda bilgilendirir misiniz? Ya da D portundan başka bir porta bağlamak istersem kütüphanede hangi değişikliği yapmam lazım?

Huzame

En üstdeki " define "ları istedigin pine ayarlayabilirsin. Bu kütüphaneyi uzun zaman önce denemiştim. Şu anda hatırladığım kadarıyla dediğim gibi bütün define'leri ayarlaman lazım. Kolay gelsin.

sigmoid

Alternatif bir kütüphane ararsan https://github.com/gencmucitler/XC8-Kutuphane/tree/master/Lcd kullanabilirsin. Video anlatımı mevcut https://youtu.be/06N3_u4BzAs

Portları değiştirmek için header dosyasındaki defineları yeniden tanımlamalısın. Bu arada I2c lcd kütüphanesinide inceleyebilirsin.