serdar hocanın kitabındaki lcd dosyasını bilmiyorum. ama muhtemelen ; pinleri kaydırdığın için lcd ye anlayacağı bir bilgi gönderemiyoprsundur. mesela lcd ye "1100" bilgisi yerine pinleri değiştirirsen; "1001" "0011" .... bilgilerini gönderirsin. data uçlarından bahsediyorum. diğer uçları hesap bile etmeye bile gerek yok.
kullanacağın lcd 2x16 ise 4 data pinini kullanacaksan eger aşağıdaki lcd dosyasını kullan istediğin pini "" #define d4 pin_xx "" yazan tanımlamalarda belirt.
kolay gelsin.
////////////////////////////////////////////////////////////////////////////////
// TR_LCD.c /////
// /////
// Bu LCD sürücü dosyası 2x16 HD44780 uyumlu LCD’ler /////
// içindir. LCD’ye sadece yazma yapılacağı için R/W Logic0 /////
// konumunda durması için şaseye bağlanmalıdır. /////
// lcd_ayarla(); bu komut LCD'nin başlangıç ayarlarını yapmak içindir. /////
////////////////////////////////////////////////////////////////////////////////
// lcd_sil(); bu komut Lcd'yi silmek için kullanılır. /////
////////////////////////////////////////////////////////////////////////////////
// adres(x,y); komutuyla imleç istenilen adrese getirilebilir. /////
// Bu komutta y satır bilgisini, x sütun bilgisini ifade eder. /////
////////////////////////////////////////////////////////////////////////////////
// lcd_yaz(" "); komutuyla iki tırnak arasına sadece yazısal ifadeler /////
// kullanılabilir.Örneğin bu komutla %sabitleri kullanılamaz. /////
////////////////////////////////////////////////////////////////////////////////
// printf(lcd_yaz," "); komutuyla yazılar hemde değişkenler /////
// gösterilebilir. %sabitleri kullanılabilir.Ancak \sabitleri kullanılamaz /////
////////////////////////////////////////////////////////////////////////////////
// İstenilen pinler aşağıdaki define tanımlamalarından ayarlannabilir. /////
// LCD..pin..bağlanılacak pin /////
////////////////////////////////////////////////////////////////////////////////
#define d4 pin_xx
#define d5 pin_xx
#define d6 pin_xx
#define d7 pin_xx
#define e pin_xx
#define rs pin_xx
void data_tara(byte dsg)
{
output_bit(d4,bit_test(dsg,0));
output_bit(d5,bit_test(dsg,1));
output_bit(d6,bit_test(dsg,2));
output_bit(d7,bit_test(dsg,3));
}
////////////////////////////////////////////////////////////////////////////////
void lcd_command(byte m)
{
data_tara(m>>4);
output_bit(rs,0);
delay_cycles(1);
output_bit(e,1);
delay_cycles(1);
output_bit(e,0);
delay_ms(2);
data_tara(m&0x0F);
output_bit(rs,0);
delay_cycles(1);
output_bit(e,1);
delay_cycles(1);
output_bit(e,0);
delay_ms(2);
}
////////////////////////////////////////////////////////////////////////////////
void lcd_yaz(byte k)
{
data_tara(k>>4);
output_bit(rs,1);
delay_cycles(1);
output_bit(e,1);
delay_cycles(1);
output_bit(e,0);
delay_ms(2);
data_tara(k&0x0F);
output_bit(rs,1);
delay_cycles(1);
output_bit(e,1);
delay_cycles(1);
output_bit(e,0);
delay_ms(2);
}
////////////////////////////////////////////////////////////////////////////////
void adres(byte x, byte y)
{
if (y==1)
lcd_command(0x80|(x-1));
if (y==2)
lcd_command(0x80|(0x40+(x-1)));
}
////////////////////////////////////////////////////////////////////////////////
void lcd_ayarla()
{
int j=0;
output_bit(rs,0);
output_bit(e,0);
delay_ms(30);
for(j=0;j<=3;j++)
{
lcd_command(0x03);
delay_ms(5);
}
lcd_command(0x02);
lcd_command(0x28);
lcd_command(0x08);
lcd_command(0x0C);
lcd_command(0x06);
lcd_command(0x01);
}
////////////////////////////////////////////////////////////////////////////////
void lcd_sil()
{
lcd_command(0x01);
}
////////////////////////////////////////////////////////////////////////////////