MPLAB XC8 LCD Kütüphanesi

Başlatan huseyink, 07 Haziran 2018, 20: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(
1)
 
D4 1;
 else
 
D4 0;

 if(
2)
 
D5 1;
 else
 
D5 0;

 if(
4)
 
D6 1;
 else
 
D6 0;

 if(
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 achar b)
{
 
char temp,z,y;
 if(
== 1)
 {
   
temp 0x80 1;
 
temp>>4;
 
temp 0x0F;
 
Lcd_Cmd(z);
 
Lcd_Cmd(y);
 }
 else if(
== 2)
 {
 
temp 0xC0 1;
 
temp>>4;
 
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;
  
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.