18F4550 için 2x16 LCD Kütüphane Dosyası

Başlatan taxeds, 20 Mart 2013, 23:01:42

taxeds

Selam arkadaşlar, 18F4550 ile 2x16 lcd kullanmak istiyorum. Fakat elimdeki deneme kartında lcdye giden pinler lcd.c dosyasındaki gibi değil. Pinler aşağıdaki şekilde bağlanmış. Bunun için 18F4550 için gerekli kütüphaneyi nereden bulabilirim? 16F877 için bir kütüphane oluşturmuştum fakat 18F4550de çalışmadı. Daha önce 18F4550 ile 2x16 lcd kullanan var mı acaba ?

D4        PIN_B0
D5        PIN_B1
D6        PIN_B2
D7        PIN_B3
RS        PIN_B4
E          PIN_B5
R/W     GND

2x16 lcd modeli: PCM1602K-FL

NBR07

kendi lcd dosyanı oluştur 18f serisiyle çalışıyosan..biraz yorucu olcak ama her işinde kolaylık sağlar

sadogan

16f877 de portb nin adresi 18f4550 porb adresinden farklı bu nedenle
çalışmamış olabilir.
Flex lcd kullan
#define LCD_DB4   PIN_D0 // istedigin pinlere bağla
#define LCD_DB5   PIN_D2 // istedigin pinlere bağla
#define LCD_DB6   PIN_C2 // istedigin pinlere bağla
#define LCD_DB7   PIN_A0 // istedigin pinlere bağla

#define e   pin_E0 // istedigin pinlere bağla
#define rs  pin_E1 // istedigin pinlere bağla
//////////////////////////////
 #define lcd_type 2          // 0=5x7, 1=5x10, 2=2 lines
#define lcd_line_two 0x40    // LCD RAM address for the second line
BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};

void lcd_send_nibble( BYTE n )
 {
      output_bit(LCD_DB4, (n &  1)); 
      output_bit(LCD_DB5, (n &  2));  
      output_bit(LCD_DB6, (n &  4));    
      output_bit(LCD_DB7, (n &  8)); 
      delay_cycles(50);      
      output_high(e);      
      delay_cycles(40);      
      output_low(e);
      delay_cycles(20);
}
void lcd_send_byte( BYTE address, BYTE n )
{
    //  delay_cycles(40);
      output_bit(rs,address);
      delay_cycles(20);     
      lcd_send_nibble( n>>4);
      delay_cycles(20);
      lcd_send_nibble( n );
      output_low(rs);
      delay_cycles(20);
     
 }

void lcd_gotoxy( BYTE x, BYTE y) {
   BYTE address;

   if(y!=1)
     address=lcd_line_two;
   else
     address=0;
   address+=x-1;
   lcd_send_byte(0,0x80|address);
}
void lcd_putc( char c) {
   switch (c) {
     case '\f'   : lcd_send_byte(0,1);
                   delay_ms(2);
                                           break;
     case '\n'   : lcd_gotoxy(1,2);        break;
     case '\b'   : lcd_send_byte(0,0x10);  break;
     default     : lcd_send_byte(1,c);     break;
   }
  
}
void lcd_init() {
    BYTE i;
    output_low(rs);
    delay_us(20);
    output_low(e);
    delay_ms(15);
    for(i=1;i<=3;++i) {
       lcd_send_nibble(3);
       delay_ms(10);
    }
    lcd_send_nibble(2);
    delay_us(40);
    for(i=0;i<=3;++i){
    lcd_send_byte(0,LCD_INIT_STRING[i]);delay_us(50);}

istedigin pinlere bağla