LCD 3WİRE 74HC595 CCS

Başlatan omereliusuk, 13 Mart 2011, 21:50:17

omereliusuk

///////////////////////////////////////////////////////////////////////////
//omer eliusuk deneme 3 wire lcd 74hc595
///////////////////////////////////////////////////////////////////////////

#IFNDEF EN_PIN_3WIRE
#define EN_PIN_3WIRE      PIN_B0
#define RS_PIN_3WIRE      PIN_B1
#define DO_PIN_3WIRE      PIN_B2
#ENDIF
output_low(RS_PIN_3WIRE);
for(i=0;i<8;++i) {  // Clock out bits from the eo array
OUTPUT_low(RS_PIN_3WIRE);
OUTPUT_BIT(DO_PIN_3WIRE,BIT_TEST(ware,7));
WaRE=WaRE<<1;
//DELAY_mS(10);
OUTPUT_high(RS_PIN_3WIRE);
}
OUTPUT_low(RS_PIN_3WIRE);
OUTPUT_low(EN_PIN_3WIRE);//
OUTPUT_high(EN_PIN_3WIRE);//low to high latch pini çalışır.
DELAY_US(30);}

void lcd_komut(byte komut)
{

BYTE WIRE;
WIRE=komut;
WIRE=(wire>>4)<<4;
bit_clear(wire,2);
bit_set(wire,3);//set
aktar(wire);

bit_clear(wire,2);
bit_clear(wire,3);//
aktar(wire);

//birinci hareket; 4567 bitler gönderildi

// AKTARILDI

WIRE=komut;
WIRE=wire<<4;

bit_clear(wire,2);
bit_set(wire,3);
aktar(wire);

bit_clear(wire,2);
bit_clear(wire,3);
aktar(wire);

//ikinci hareket; düşük 0123 bitler gönderildi 
//AKTARILDI
}


VOID lcd_PUTC(byte VERI)
{

BYTE WIRE;
WIRE=veri;
WIRE=(wire>>4)<<4;

bit_set(wire,2);
bit_set(wire,3);
aktar(wire);

bit_set(wire,2);
bit_clear(wire,3);
aktar(wire);

//4567 bit  AKTARILDI

WIRE=veri;
WIRE=wire<<4;

bit_set(wire,2);
bit_set(wire,3);
aktar(wire);

bit_set(wire,2);
bit_clear(wire,3);
aktar(wire);
}//düşük 0123 bit aktarıldı

void imlec_3WIRE(byte satir, byte sutun)
{
 if (satir==1)      // Eğer satır değişkeni "1" ise
            lcd_komut(0x80|(sutun-1));

      if (satir==2)      // Eğer satır değişkeni "2" ise
            lcd_komut(0xc0+(sutun-1));
   if (satir==3)      // Eğer satır değişkeni "3" ise
            lcd_komut(0x94+(sutun-1));
   if (satir==4)      // Eğer satır değişkeni "2" ise
            lcd_komut(0xd4+(sutun-1));
}

void lcd_hazirla()
{
byte i;
lcd_komuT(0X00);
DELAY_MS(30);
for(i=0;i<=3;i++)    // LCD'ye 3 kez 0x03 komutu gönderiliyor
   {
      lcd_komut(0x03);
      delay_ms(5);      // 5msn gecikme veriliyor
   }
   lcd_komut(0x02); // LCD'ye 4 bit iletişim komutu gönderiliyor
   lcd_komut(0x28); // 4 bit iletişim, 2 satır, 5x8 dot matris seçildi
   lcd_komut(0x08); // Display Kapalı
   lcd_komut(0x0C); // Display açık,imleç alt çizgi ve yanıp sönme yok
   lcd_komut(0x06); // Her veri yazıldığında imleç bir sağa gitsin
   lcd_komut(0x01); // Display sil. İmleç 1.satır 1.sütunda   
}


örnek kodlama, normal lcdyi nasıl kullanıyorsanız bunu da öyle kullanacaksınız...
void main()
{
set_tris_b(0x00);
LCD_HAZIRLA();

FOR(;;){
IMLEC_3WIRE(1,1);
printf(LCD_PUTC,"OMER ELiUSUK");
IMLEC_3WIRE(2,1);
printf(LCD_PUTC,"3 wire lcd");
delay_ms(900);
lcd_komut(0x01); // Display sil. İmleç 1.satır 1.sütunda
}}


74hc595'in 2. pininde LCD RS PİN
74hc595'in 3. pininde LCD EN PİN
4,5,6 VE 7. Pinlerinde sırasıyla lcd d4,d5,d6 ve d7 pinleri bağlıdır. bir sorun varsa veya sizin dikkatinizi çeken daha kısa bir kodlama yöntemi varsa şimdiden teşekkürler bilgilendirdiğiniz için...