ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
1 мая
653679 Топик полностью
MBedder, терминатор (18.02.2016 00:28 - 00:39, просмотров: 124) ответил General на Дайте совет. Хочу чб заставку (несколько кадров подряд) на маленьком ЖКИ 68x64. Предложите столбовой путь преобразования GIF или BMP картинки в код программы.
В ассемблере GCC есть замечательная директива .incbin, позволяющая поместить бинарный файл прямо в секцию кода. Вот как я с ее помощью вывожу 4-х битный серый BMP 256х64 на OLED-дисплей 256х64 (3 строчки на АСМ, остальное на С): logo.h: #ifndef LOGO_H #define LOGO_H #include "global.h" #include "ssd1322.h" #include "Graphics/Primitive.h" #include "Graphics/DisplayDriver.h" #define LOGO_COLOR GRAY008 __attribute__((section(".romdata"), space(prog) )) extern FLASH_BYTE img_logo[]; extern void PutLogo4BPP(FLASH_BYTE *); #endif // LOGO_H logo.c: #include "logo.h" asm ( ".global _img_logo \n" "_img_logo: \n" ".incbin \"logo4BPP.bmp\"" ); void PutLogo4BPP(FLASH_BYTE *image) { FLASH_BYTE *flashAddress = image + image[10]; // Move pointer to a bitmap 1st byte SetColumn(0,(256 >> 2)-1); // Display controller Set_Column_Address command SetRow(0,0 + 64); // Display controller Set_Row_Address command SetWriteRAM(); // Display controller RAM_Write_Enable command s16 x, y; for(y=63; y>=0; --y) { flashAddress = image + image[10] + 256/2*y; for(x=0; x<256/2; x++) { DeviceWrite(*flashAddress); // Write a byte from Flash to display controller's RAM flashAddress++; } } }