Перейти к содержанию
    

Непонятки с LCD ili9320

ДРузья, есть у меня китайская платка с STM32F103 и дисплеем ili9320

 

Есть примеры вывода картинок из флеша контроллера.

Вот функция:

void LCD_WriteBMP(uint8_t Xpos, uint16_t Ypos, uint8_t Height, uint16_t Width, uint16_t *bitmap)
{
      uint32_t index;
      uint32_t size = Height * Width;
      uint16_t *bitmap_ptr = (uint16_t *)bitmap;

      LCD_SetDisplayWindow(Xpos, Ypos, Width-1, Height-1);

      //LCD_WriteReg(0x03, 0x1038);    //Из№ыРиТЄєбПтПФКѕНјЖ¬Ј¬Ѕ«ґЛИҐµфЖБ±О Ј¬Н¬К±Ѕ«WidthєНHightµч»»Т»ПВѕНїЙТФ

      LCD_WriteRAM_Prepare();

      for(index = 0; index < size; index++)
      {
        Write_Dat(*bitmap_ptr++);
      }
    //»Цёґґ°МеґуРЎ     
    LCD_WriteReg(R80, 0x0000); //Л®ЖЅ·ЅПтGRAMЖрКјµШЦ·
    LCD_WriteReg(R81, 0x00EF); //Л®ЖЅ·ЅПтGRAMЅбКшµШЦ·
    LCD_WriteReg(R82, 0x0000); //ґ№Ц±·ЅПтGRAMЖрКјµШЦ·
    LCD_WriteReg(R83, 0x013F); //ґ№Ц±·ЅПтGRAMЅбКшµШЦ·
}

 

Однако, когда я ввожу в качестве картинки массив вида 0xF800, 0xF800, 0xF800, 0xF800, (красные точки), вместо этого диспле рисует одну красную, 2 черных, далее снова одну красную.

 

В чем может быть дело?

 

Ну и вот инициализация:

void LCD_Init(void)
{
static uint16_t DeviceCode;
LCD_Configuration();
LCD_WriteReg(0x0000,0x0001);
LCD_Delay(5); // LCD_Delay 50 ms 
DeviceCode = LCD_ReadReg(0x0000);   
printf(" ID=0x%x\n",DeviceCode); 
if(DeviceCode==0x9325||DeviceCode==0x9328)//ILI9325
{
		LCD_WriteReg(0x00e5,0x78F0);	  
//		LCD_WriteReg(0x0000,0x0001);
	LCD_WriteReg(0x0001,0x0100);	 
	LCD_WriteReg(0x0002,0x0700);				   
	LCD_WriteReg(0x0003,0x1030);	
	LCD_WriteReg(0x0004,0x0000);								   
	LCD_WriteReg(0x0008,0x0202);			   
	LCD_WriteReg(0x0009,0x0000);		 
	LCD_WriteReg(0x000a,0x0000);		 
	LCD_WriteReg(0x000c,0x0001);		 
	LCD_WriteReg(0x000d,0x0000);		  
	LCD_WriteReg(0x000f,0x0000);
//Power On sequence //
	LCD_WriteReg(0x0010,0x0000);   
	LCD_WriteReg(0x0011,0x0007);
	LCD_WriteReg(0x0012,0x0000);																 
	LCD_WriteReg(0x0013,0x0000);
	LCD_WriteReg(0x0007,0x0001);		  
	LCD_Delay(5); 
	LCD_WriteReg(0x0010,0x1690);   
	LCD_WriteReg(0x0011,0x0227);
	LCD_Delay(5); 
	LCD_WriteReg(0x0012,0x009d);				   
	LCD_Delay(5); 
	LCD_WriteReg(0x0013,0x1900);   
	LCD_WriteReg(0x0029,0x0025);
	LCD_WriteReg(0x002b,0x000d);
	LCD_Delay(5); 
	LCD_WriteReg(0x0020,0x0000);															
	LCD_WriteReg(0x0021,0x0000);		   
	LCD_Delay(5); 
	//Щ¤ВнРЈХэ
	LCD_WriteReg(0x0030,0x0007); 
	LCD_WriteReg(0x0031,0x0303);   
	LCD_WriteReg(0x0032,0x0003);
	LCD_WriteReg(0x0035,0x0206);
	LCD_WriteReg(0x0036,0x0008); 
	LCD_WriteReg(0x0037,0x0406);
	LCD_WriteReg(0x0038,0x0304);		
	LCD_WriteReg(0x0039,0x0007);	 
	LCD_WriteReg(0x003c,0x0602);
	LCD_WriteReg(0x003d,0x0008);
	LCD_Delay(5); 
	LCD_WriteReg(0x0050,0x0000);
	LCD_WriteReg(0x0051,0x00ef);				   
	LCD_WriteReg(0x0052,0x0000);				   
	LCD_WriteReg(0x0053,0x013f); 

	LCD_WriteReg(0x0060,0xa700);		
	LCD_WriteReg(0x0061,0x0001); 
	LCD_WriteReg(0x006a,0x0000);
	LCD_WriteReg(0x0080,0x0000);
	LCD_WriteReg(0x0081,0x0000);
	LCD_WriteReg(0x0082,0x0000);
	LCD_WriteReg(0x0083,0x0000);
	LCD_WriteReg(0x0084,0x0000);
	LCD_WriteReg(0x0085,0x0000);

	LCD_WriteReg(0x0090,0x0010);	 
	LCD_WriteReg(0x0092,0x0600);  

	LCD_WriteReg(0x0007,0x0133);
}
else if(DeviceCode==0x9320||DeviceCode==0x9300)
{
	LCD_WriteReg(0x00,0x0000);
	LCD_WriteReg(0x01,0x0100);	//Driver Output Contral.
	LCD_WriteReg(0x02,0x0700);	//LCD Driver Waveform Contral.
	LCD_WriteReg(0x03,0x1030);//Entry Mode Set.
	//LCD_WriteReg(0x03,0x1018);	//Entry Mode Set.

	LCD_WriteReg(0x04,0x0000);	//Scalling Contral.
	LCD_WriteReg(0x08,0x0202);	//Display Contral 2.(0x0207)
	LCD_WriteReg(0x09,0x0000);	//Display Contral 3.(0x0000)
	LCD_WriteReg(0x0a,0x0000);	//Frame Cycle Contal.(0x0000)
	LCD_WriteReg(0x0c,(1<<0));	//Extern Display Interface Contral 1.(0x0000)
	LCD_WriteReg(0x0d,0x0000);	//Frame Maker Position.
	LCD_WriteReg(0x0f,0x0000);	//Extern Display Interface Contral 2.		
	LCD_Delay(10); 
	LCD_WriteReg(0x07,0x0101);	//Display Contral.
	LCD_Delay(10); 								  
	LCD_WriteReg(0x10,(1<<12)|(0<<8)|(1<<7)|(1<<6)|(0<<4));	//Power Control 1.(0x16b0)
	LCD_WriteReg(0x11,0x0007);								//Power Control 2.(0x0001)
	LCD_WriteReg(0x12,(1<<8)|(1<<4)|(0<<0));				//Power Control 3.(0x0138)
	LCD_WriteReg(0x13,0x0b00);								//Power Control 4.
	LCD_WriteReg(0x29,0x0000);								//Power Control 7.

	LCD_WriteReg(0x2b,(1<<14)|(1<<4));		
	LCD_WriteReg(0x50,0);	//Set X Star
	//Л®ЖЅGRAMЦХЦ№О»ЦГSet X End.
	LCD_WriteReg(0x51,239);	//Set Y Star
	LCD_WriteReg(0x52,0);	//Set Y End.t.
	LCD_WriteReg(0x53,319);	//

	LCD_WriteReg(0x60,0x2700);	//Driver Output Control.
	LCD_WriteReg(0x61,0x0001);	//Driver Output Control.
	LCD_WriteReg(0x6a,0x0000);	//Vertical Srcoll Control.

	LCD_WriteReg(0x80,0x0000);	//Display Position? Partial Display 1.
	LCD_WriteReg(0x81,0x0000);	//RAM Address Start? Partial Display 1.
	LCD_WriteReg(0x82,0x0000);	//RAM Address End-Partial Display 1.
	LCD_WriteReg(0x83,0x0000);	//Displsy Position? Partial Display 2.
	LCD_WriteReg(0x84,0x0000);	//RAM Address Start? Partial Display 2.
	LCD_WriteReg(0x85,0x0000);	//RAM Address End? Partial Display 2.

	LCD_WriteReg(0x90,(0<<7)|(16<<0));	//Frame Cycle Contral.(0x0013)
	LCD_WriteReg(0x92,0x0000);	//Panel Interface Contral 2.(0x0000)
	LCD_WriteReg(0x93,0x0001);	//Panel Interface Contral 3.
	LCD_WriteReg(0x95,0x0110);	//Frame Cycle Contral.(0x0110)
	LCD_WriteReg(0x97,(0<<8));	//
	LCD_WriteReg(0x98,0x0000);	//Frame Cycle Contral.	   
	LCD_WriteReg(0x07,0x0173);	//(0x0173)
	LCD_Delay(10);
}
LCD_Clear(BACK_COLOR);	
}

Изменено пользователем murmur

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...