Загрузка .BMP в LCD 240*128(T6963C)
Добавлено: 09 фев 2013, 19:18
Доброго времени суток уважаемые знатоки. Окончательно и без поворотно решил я переходить на Си для МК. Скачал библиотеку под T6963C http://en.radzio.dxp.pl/t6963/. Принялся изучать. Среда "Atmel studio 6" тестирую пока в протеусе. Графика и текст выводится нормально, а вот битмап не корректно (см. вложение). Пробовал разные варианты инитов, но опыта в Си мало поэтому... ): Как я понимаю проблема в переменной bitmap, но что конкретно не понимаю. То ли объявлена не корректно то ли ещё что... И ещё, ведь эта переменная указывает не на само значение, а на адрес в памяти, может дело в этом?
И вообще, как правильно и в какой файл (.h или .c) добавлять массив картинки? В нетах примера внятного не нашел.
Не пинайте сильно если не вижу очевидного.
Заранее спасибо.
Процедура вывода:
Процедура инициализации:
И вообще, как правильно и в какой файл (.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);
}