#include <avr/io.h> 
#include <util/delay.h> 





void LCD_Dt_Write(int cData)
{
PORTB&=~(1<<PB2);
PORTB|=(1<<PB1);

SPDR = cData;

while(!(SPSR & (1<<SPIF)));

PORTB|=(1<<PB2);
}





void LCD_Cm_Write(int cData)
{
PORTB&=~(1<<PB2);
PORTB&=~(1<<PB1);

SPDR = cData;

while(!(SPSR & (1<<SPIF)));

PORTB|=(1<<PB2);
}

void Init()   
{   
  
   

        _delay_ms(30);                
               
        LCD_Cm_Write(0xe2);       // Software Reset    
        _delay_ms(30);    
                              
        LCD_Cm_Write(0x2f);       // POWER control SET   (A0,A1,A2 high)   
        _delay_ms(20);     
                                   
        LCD_Cm_Write(0xae);       // display OFF   
   
        LCD_Cm_Write(0xa2);       // Bias Set   1/6   
           
        LCD_Cm_Write(0xa0);       // ADC SELECT (0 NORMAL  or  1 REVERSE)    
   
        LCD_Cm_Write(0xc8);       // OUTPUT STATUS SELECT REGISTER ( REVERSE : COM33 -> COM0)    
   
        LCD_Cm_Write(0xa4);       // ENTIRE DISPLAY ON ( NORMAL )      
   
        LCD_Cm_Write(0xa6);       // NORMAL / REVERSE DISPLAY (NORMAL DISPLAY)   
           
 
     
       LCD_Cm_Write(0xac);         // Static Icon off   
        LCD_Cm_Write(0x00);       // Indicator display off   
    
        LCD_Cm_Write(0x20);       // V0 Voltage Set ( 20---small,27---large )£¨Rb/Ra=2-2.5--5.4)   
   
        LCD_Cm_Write(0x81);       //  ELECTRONIC VOLUME REGISTER SET   
        LCD_Cm_Write(0x19);       //  1D-4.98V  ŒÁ £¨ 01--small ,3f--large £Š 15--4.67V  19--4.82V   
        
        LCD_Cm_Write(0xe6);       // DC/DC CLOCK FREQUENCY (fOSC)    
        LCD_Cm_Write(0x00);     
   
        LCD_Cm_Write(0x40);       // DISPLAY START LINE SET ( 40h----7fh)            
        LCD_Cm_Write(0xb0);       // PAGE ADDRESS SET  (b0------b8)           
        LCD_Cm_Write(0x10);       // COLUMN ADDRESTT SET (high nibble)   
        LCD_Cm_Write(0x00);       // COLUMN ADDRESTT SET (low nibble)   
   
    
           
        LCD_Cm_Write(0xaf);       // Display On   
}   


int main(void) {
  
DDRB=0xFF;	

SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);

void Init();



return(0);
}
