void lcdinit(void){
  unsigned char ct1[6]={0x07,0x02,0x04,0x0C,0x0D,0x0E};
  unsigned char cd1[12]={0x00,0x00, 0x04,0x00, 0x00,0x00, 0x00,0x01, 0x06,0x16, 0x10,0x10};
  unsigned char ct2[2]={0x03,0x0E};
  unsigned char cd2[4]={0x00,0x0C, 0x2D,0x1F};
  unsigned char ct3[1]={0x0D};
  unsigned char cd3[2]={0x06,0x16};
  unsigned char ct4[21]={0x01,0x0F,0x0B,0x11,0x06,0x05,0x14,0x15,0x16,0x17,0x20,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x3A,0x3B};
  unsigned char cd4[42]={0x02,0x15, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x30, 0xAF,0x00, 0x00,0x00, 0x83,0x00, 0xAF,0x00,
  0x00,0x00, 0x00,0x00, 0x04,0x00, 0x02,0x07, 0x07,0x00, 0x00,0x05, 0x07,0x03, 0x07,0x07, 0x00, 0x07, 0x12,0x00, 0x00,0x09};
 unsigned char i,j;  
PORTF.OUTCLR=RESET; /*низкий лог уровень на ноге 3(ресет дисплэя)*/
PORTF.OUTSET=RC;    /*высокий лог уровень на ноге 4(дисплей не активный)*/
delay_ms(1);
PORTF.OUTSET=RESET;  
delay_ms(10);
PORTF.OUTCLR=RC; /*низкий лог уровень активирует SPI дисплй, начало передачи данных*/
// starts at 58.8ms
  lcd_type(0x00);
  lcd_dat(0x00,0x01);
// starts at 125ms
  j=0;
  for (i=0; i<6; i++)
  {
    lcd_type(ct1[i]);
    lcd_dat(cd1[j],cd1[j+1]);
    j+=2;
  }
// start at 240ms
  j=0;
  for (i=0; i<2; i++)
  {
    lcd_type(ct2[i]);
    lcd_dat(cd2[j],cd2[j+1]);
    j+=2;
  }
// start at 355ms
  j=0;
  for (i=0; i<1; i++)
  {
    lcd_type(ct3[i]);
    lcd_dat(cd3[j],cd3[j+1]);
    j+=2;
  }
// start at 458ms
  j=0;
  for (i=0; i<21; i++)
  {
    lcd_type(ct4[i]);
    lcd_dat(cd4[j],cd4[j+1]);
    j+=2;
  }
  lcd_type(0x07);
  lcd_dat(0x00, 0x05);
  lcd_type(0x07);
  lcd_dat(0x00, 0x25);
  lcd_type(0x07);
  lcd_dat(0x00, 0x27);
  lcd_type(0x07);
  lcd_dat(0x00, 0x37);
// ready for first screen
PORTF.OUTSET=RC;  // deselect display 
}







void lcd_write (unsigned char dat){
SPIF.DATA=dat;
while (!(SPIF.STATUS & 0x80));
}


void RCpuls(void){
PORTF.OUTSET=RC; //neoktivniy displey
#asm("nop")
PORTF.OUTCLR=RC; //oktivniy display
}


void lcd_type(unsigned char dat1){
  lcd_write(0x74);  // команда записи инструкцыи  
  lcd_write(0x00);
  lcd_write(dat1);   
  RCpuls();
}

void lcd_dat(unsigned char dat1,unsigned char dat2){
  lcd_write(0x76);  // команда записи данных
  lcd_write(dat1);
  lcd_write(dat2); 
  RCpuls();
}


void lcdpoint(int X1,int Y1,int X2,int Y2){     // X1, Y1, X2, Y2
PORTF.OUTCLR=RC;  // select display 
  lcd_type(0x16);
  lcd_dat(x1, x1); // X2 X1
  lcd_type(0x17);
  lcd_dat(y1, y1); // Y2 Y1
  lcd_type(0x21);
  lcd_dat(y1,x1 ); // Y1 X1 
  lcd_type(0x22);
  lcd_write(0x76); 
  lcd_write(0xFF); //16bit цвет пикселя  
  lcd_write(0xFF);
PORTF.OUTSET=RC;  // deselect display        
}
