Посмотри, где у тебя происходит растеризация при печати символа. На стороне мк или стороне моника? Есть вариант, хоть и маловероятный, что ты шрифт вгружаешь в рам моника до начала печати, а потом уже дергаешь посимвольно из рамы моника.

Комментарии: 15

  1. W1ruus

    Сек... Вот часть файла font.h __FONT_H __FONT_H const unsigned char asc2_1206[95][12]={ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/ {0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x04,0x00,0x00},/*"!",1*/ {0x00,0x14,0x0A,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/ {0x00,0x00,0x14,0x14,0x3F,0x14,0x0A,0x3F,0x0A,0x0A,0x00,0x00},/*"#",3*/ {0x00,0x04,0x1E,0x15,0x05,0x06,0x0C,0x14,0x15,0x0F,0x04,0x00},/*"$",4*/ Вставляя сюда код с других "шрифтов" я максимум что добился это утолщения букв шрифта, но в большинстве случаев отображались кракозябры... Естественно размер шрифта я соблюдал... В gui.h есть строчки - void lcd_showstring(uint16_t x, uint16_t y, uint8_t size, uint8_t *p, uint8_t mode); void gui_drawfont16(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s, uint8_t mode); void gui_drawfont24(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s, uint8_t mode); void gui_drawfont32(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s, uint8_t mode); Они отвечают я так понимаю за отрисовку шрифта, ссылаясь на gui.c /***************************************************************************** * void lcd_showchar(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t num, uint8_t size, uint8_t mode) * отображает один символ латинского/английского языка * "x"/"y" - начальная координата положения отображение символа по горизонтали/вертикали * "fc"/"bc" - цвет символа/цвет фона * "num" - ascii код отображаемого символа (0~94) * "size" - размер отображаемого символа * "mode" - 0/1 - без перекрытия/с перекрытием ******************************************************************************/ void lcd_showchar(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t num, uint8_t size, uint8_t mode) { uint8_t temp; uint8_t pos,t; uint16_t colortemp = POINT_COLOR; num = num - ' '; lcd_setwindows(x, y, x + size / 2 - 1, y + size - 1); if(!mode) { for(pos = 0; pos < size; pos++) { if(size == 12)temp = asc2_1206[num][pos]; else temp = asc2_1608[num][pos]; for(t = 0; t < size / 2; t++) { if(temp & 0x01)lcd_writedata_16bit(fc); else lcd_writedata_16bit(bc); temp >>= 1; } } } else { for(pos = 0; pos < size; pos++) { if(size == 12)temp = asc2_1206[num][pos]; else temp = asc2_1608[num][pos]; for(t = 0; t < size / 2; t++) { POINT_COLOR = fc; if(temp & 0x01)lcd_drawpoint(x + t, y + pos); temp >>= 1; } } } POINT_COLOR = colortemp; lcd_setwindows(0, 0, lcddev.width - 1, lcddev.height - 1); } То есть, добавив сторонний шрифт в файл fonts.h, внеся в гуи информацию можно отобразить любой шрифт... Так ?

    • Anonim

      Про пастебин человек видимо не слышал... Бывает

    • Serge

      Нет. Посмотри в инициализации экрана, похоже, там таблицу шрифтов перед началом работы отправляют в рам монитора. Я правильно понимаю, что управление по spi?

      • W1ruus

        Не, ФСМС 16бит Ага, то есть при инициализации дисплея отправляется таблица символов, а потом при команде идёт отрисовка ? В общем, если интересна данная тема и готов помочь с разъяснениями, я готов оплатить твоё время, если конечно в цене договоримся )))

        • Serge

          Похоже на то. Что у тебя в LCD_writedata и как это соотносится с главой 6 даташита?

Не нашли ответ?

Вам также может быть интересно

Владельцы 808 тбк ещё существуют? Достал старичка, решил проверить, при проверке как обычно замки закрылись, процедура закончилась... Читать далее