Загрузка .BMP в LCD 240*128(T6963C)

Модератор: boogyman

Ответить
Аватара пользователя
saft
Новичок
Сообщения: 2
Зарегистрирован: 09 фев 2013, 14:47

Загрузка .BMP в LCD 240*128(T6963C)

#1

Сообщение saft »

Доброго времени суток уважаемые знатоки. Окончательно и без поворотно решил я переходить на Си для МК. Скачал библиотеку под T6963C http://en.radzio.dxp.pl/t6963/. Принялся изучать. Среда "Atmel studio 6" тестирую пока в протеусе. Графика и текст выводится нормально, а вот битмап не корректно (см. вложение). Пробовал разные варианты инитов, но опыта в Си мало поэтому... ): Как я понимаю проблема в переменной bitmap, но что конкретно не понимаю. То ли объявлена не корректно то ли ещё что... И ещё, ведь эта переменная указывает не на само значение, а на адрес в памяти, может дело в этом?
И вообще, как правильно и в какой файл (.h или .c) добавлять массив картинки? В нетах примера внятного не нашел.
Не пинайте сильно если не вижу очевидного.
Заранее спасибо.
Процедура вывода:

Код: Выделить всё

void GLCD_Bitmap(unsigned char * bitmap, unsigned char x, unsigned char y, unsigned char width, unsigned char height)
{
unsigned char i, j;

for(j = 0; j < height; j++)
{
GLCD_GraphicGoTo(x, y + j);
for(i = 0; i < width/GLCD_FONT_WIDTH; i++)
  {
  GLCD_WriteDisplayData(pgm_read_byte(bitmap+i + (GLCD_GRAPHIC_AREA * j))); 	
  }
}
}
Процедура инициализации:

Код: Выделить всё

void GLCD_Initalize(void)
{
GLCD_InitalizeInterface();

GLCD_CTRL_PORT &= ~(1 << GLCD_RESET);
_delay_ms(1);
GLCD_CTRL_PORT |= (1 << GLCD_RESET);

#if (GLCD_FONT_WIDTH == 8)
GLCD_CTRL_PORT &= ~(1 << GLCD_FS);
#endif

GLCD_WriteData(GLCD_GRAPHIC_HOME & 0xFF);
GLCD_WriteData(GLCD_GRAPHIC_HOME >> 8);
GLCD_WriteCommand(T6963_SET_GRAPHIC_HOME_ADDRESS);

GLCD_WriteData(GLCD_GRAPHIC_AREA);
GLCD_WriteData(0x00);
GLCD_WriteCommand(T6963_SET_GRAPHIC_AREA);

GLCD_WriteData(GLCD_TEXT_HOME);
GLCD_WriteData(GLCD_TEXT_HOME >> 8);
GLCD_WriteCommand(T6963_SET_TEXT_HOME_ADDRESS);

GLCD_WriteData(GLCD_TEXT_AREA);
GLCD_WriteData(0x00);
GLCD_WriteCommand(T6963_SET_TEXT_AREA);

GLCD_WriteData(GLCD_OFFSET_REGISTER);
GLCD_WriteData(0x00);
GLCD_WriteCommand(T6963_SET_OFFSET_REGISTER);

GLCD_WriteCommand(T6963_DISPLAY_MODE  | T6963_GRAPHIC_DISPLAY_ON   | T6963_TEXT_DISPLAY_ON /*| T6963_CURSOR_DISPLAY_ON*/);

GLCD_WriteCommand(T6963_MODE_SET | 0);

}
Вложения
Lcd.PNG
Аватара пользователя
boogyman
Модератор
Сообщения: 183
Зарегистрирован: 25 дек 2011, 22:48
Откуда: Москва

Re: Загрузка .BMP в LCD 240*128(T6963C)

#2

Сообщение boogyman »

Вот сайт http://en.pudn.com/ с огромными запасами исходников, библиотеки для твоего дисплея там тоже есть, сравни для интереса
Аватара пользователя
saft
Новичок
Сообщения: 2
Зарегистрирован: 09 фев 2013, 14:47

Re: Загрузка .BMP в LCD 240*128(T6963C)

#3

Сообщение saft »

Вот сайт http://en.pudn.com/ с огромными запасами исходников, библиотеки для твоего дисплея там тоже есть, сравни для интереса
Спасибо за ответ. Покопавшись на этом сайте нашёл примеры кода под T6963C, сравнил, у меня вроде всё так как в примерах. Статус проверяю = 0х03. Как я уже говорил в стартпосте, всё работает, кроме вывода битмапа. Я подозреваю, что я не правильно объявляю массив битмапа или не правильно к нему обращаюсь. Из приведённой картинки (см. вложение в стартпосте) складывается впечатление, что чтение массива начинается не с его начала а раньше (мусор в верхней части LCD).
Подскажите пожалуйста в чём может быть дело.
Ответить