LCD'yi yeni kitte kullanamıyorum.

Başlatan Mr.Java, 26 Ocak 2014, 18:43:20

Mr.Java

Arkadaşlar merhaba.

Yeni kit elimize geçti lcd kullanalım dedik fakat 40 takla açtım kullanamadım.MikroC'de 8bit 4 bit denedim yapamadım.Kitteki lcd bağlantısı ise şöyle;


LukeSkywalker

4 bit calistirin ve d3 d2 d1 ve d0 pinlerini şaseye çekin (yazilimda).

Mr.Java

Tamam hallettim.Çalışan kodlarımı paylaşıyorum..

//---------------------------------------
//
#define E   RB3            
#define RW  RB4            
#define RS  RB5            
//---------------------------------------


void Delay1602(unsigned int t)
{ 
     unsigned int k;      
     for(k=0;k<t;k++);     
} 


void LCD1602_busy(void)
{ 
     TRISD7=1;            
     RS=0;                
     RW=1;                
     E=1;                 
     while(RD7==1);       
     E=0;                 
     TRISD7=0;            
} 


void LCD1602_Write_com(unsigned char combuf)
{ 
     RS=0;                
     RW=0;                
     PORTD=combuf;        
     E=1;                 
     asm("NOP");          
     E=0;                 
} 


void LCD1602_Write_com_busy(unsigned char combuf)
{ 
     LCD1602_busy();            
     LCD1602_Write_com(combuf); 
} 


void LCD1602_Write_data_busy(unsigned char databuf)
{ 
     LCD1602_busy();      
     RS=1;                
     RW=0;                
     PORTD=databuf;        
     E=1;                 
     asm("NOP");          
     E=0;                 
} 


void LCD1602_Write_address(unsigned char x,unsigned char y)
{ 
     x&=0x0f;             
     y&=0x01;             
     if(y==0)             
         LCD1602_Write_com_busy(x|0x80);        
     else                
         LCD1602_Write_com_busy((x+0x40)|0x80); 
} 



void LCD1602_init(void)
{ 
     Delay1602(1500);          
     LCD1602_Write_com(0x38);  
     Delay1602(500);           
     LCD1602_Write_com(0x38);  
     Delay1602(500);           
     LCD1602_Write_com(0x38);  
     LCD1602_Write_com_busy(0x38);  
     LCD1602_Write_com_busy(0x08);  
     LCD1602_Write_com_busy(0x01);  
     LCD1602_Write_com_busy(0x06);  
     LCD1602_Write_com_busy(0x0C);
}