Форум РадиоКот https://radiokot.ru/forum/ |
|
Вывод текста ILI9341 https://radiokot.ru/forum/viewtopic.php?f=61&t=155476 |
Страница 1 из 1 |
Автор: | shiliaev [ Вс июн 10, 2018 18:41:56 ] |
Заголовок сообщения: | Вывод текста ILI9341 |
Помогите адаптировать функцию вывода текста. В поисках решения вывода текста на дисплей. В просторах интернета нашел проект "Шрифты с GLCD Font Creator на коленке" http://we.easyelectronics.ru/lcd_gfx/sh ... lenke.html extern const uint8_t Verdana12x12eng[]; extern const uint8_t Verdana12x12rus[]; const uint8_t* font12x12eng = &Verdana12x12eng[0]; const uint8_t* font12x12rus = &Verdana12x12rus[0]; void PutStringRus(uint8_t ix, uint8_t iy, char* iString, uint8_t iLength) { ///Входные параметры ix, iy -- координаты верхнего левого угла, от которого начинать печатать ///iString -- указатель на содержание строки ///iLength -- длина строки с учётом "терминального ноля" iLength--; uint8_t xpos = ix; for(int sym = 0; sym<iLength; ++sym) { uint8_t sm = iString[sym]; uint8_t snum = (sm<0xC0 ? sm-0x20 : sm-0xC0);///Так себе проверка const uint8_t* symbol = &(sm<0xC0?font12x12eng:font12x12rus)[(1+12*2)*(snum)]; for(uint8_t x = 0; x<symbol[0]; ++x) { for(uint8_t y = 0; y<12; ++y) { if(symbol[1+y/8+x*2] & (0x01<<(y%8))) PutPixel(xpos+x, iy+y); else ErasePixel(xpos+x, iy+y); } } xpos += symbol[0]; } } Но здесь автор массив сохраняет в RAM памяти. Пытаюсь переделать, чтоб массив сохранялся в FLASH памяти. const uint8_t Verdana12x12rus[] PROGMEM = {}; И потом считывать pgm_read_byte_near const uint8_t* symbol = pgm_read_byte_near(&((sm<0xC0?font12x12eng:font12x12rus)[(1+12*2)*(snum)])); С моими знаниями в этом деле у меня не-получается. Надеюсь на Вашу помощь |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |