Проблема с выводом изображения LPH8731-3C

ardo
Offline
Зарегистрирован: 23.11.2016

С фигурами и строками всё нормально.



проблема с выводом изображения, при размере картинки 20*20px, изображение рассыпается, при размере 30x20 px оно растянутое и выводится полосами.

Пример оригинала 6813531.gif 

s6171925.jpg
 


void Send_Image (char x, char y, char width, char height, char *img, int rot)  
{  
char x1, y1;
switch (rot)
{
  case 0: case 180:  
  for(y1=y; y1<(y+height); y1++)
  {
   SetArea( x, x1+(width-1), y1,y1);   
   for(x1=x; x1<x+width;x1++)
   {   
    #ifdef _8_BIT_COLOR    //(8-ми битовая цветовая палитра (256 цветов))
    Send_to_lcd( DAT,pgm_read_byte(&(*img++))); //Данные SPI - задаём цвет пикселя 
    #else   //(16-ти битовая цветовая палитра (65536 цветов))
    Send_to_lcd( DAT, pgm_read_byte(&(*img++))); //отправляем данные по SPI
    Send_to_lcd( DAT, pgm_read_byte(&(*img++)));    
    #endif
   }
  }
  break;
}; 
} 
[b]Массив изображения[/b]
const char fan_img[] PROGMEM ={
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x35, 0x97, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
[b]Функция задания оласти [/b]
void SetArea(char x1, char x2, char y1, char y2)
{
Send_to_lcd( CMD, 0x2A );  //задаем область по X
Send_to_lcd( DAT, x1 );    //начальная
Send_to_lcd( DAT, x2 );    //конечная

Send_to_lcd( CMD, 0x2B );  //задаем область по Y
Send_to_lcd( DAT, y1+1 );  //начальная (у этого контроллера Y отсчитывается от 1, а не от 0)
Send_to_lcd( DAT, y2+1 );  //конечная

Send_to_lcd( CMD, 0x2C );  //отправляем команду на начало записи в память и начинаем посылать данные
}

В чём может быть косяк в формате данных или алгоритме вывода изображения?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

А ты как хотел? Что не так то, если размер картинки не соответствует размеру области вывода.  Это не векторный рисунок, недостающие пиксели ему из аппроксимации высосать неоткуда.