Полная версия этой страницы:
Вывод на LCD 76х16
Shivers
Apr 2 2012, 07:37
Всем привет!
Подключаю Винстаровский дисплей LCD монохром 76х16 точек (
http://catalog.compel.ru/file/oled/WINSTAR...ABPP5N00000.pdf ). Задача - алфацифровой вывод без графики, в одну строку. Т.е. желаемый размер символов 16х16, или лучше 16х8, либо что то навроде, но не 8х8 (слишком мелко получится).
Вопрос в том, встречал ли кто готовые растровые (или еще какие, попроще) либы, или вообще готовые модули с генератором символов под ARM (у меня STM32F407)?
И второй вопрос - если писать самому, как лучше делать?
Пока мысли такие: можно задать символы в виде массивов констант, затем писать в память для формирования страницы, и потом уже вызывать дма для копирования на дисплей. Может, как то по другому это делается? Хочется сделать просто/компактно. И еще хочется готовую либу )
sevastianovd
Apr 2 2012, 09:08
насколько я понял, либа непосредственно для работы с контроллером LCD у вас есть.
когда-то развлекался с LCD бОльшего размера и задался тем-же вопросом: как увеличить шрифт.
у меня был набор шрифтов 5х7, в результате сделал функции масштабирования шрифта в целое число раз, т.е. 5х14, 10х14, 15х21 и так далее, смотрится естественно кривовато, если интересно проект скину.
для вашего LCD достаточно иметь набор шрифтов и никакой обработки не делать.
ps а зачем вы планируете dma, объем информации небольшой да на параллельный интерфейс?
еще встечал кучу готовых примеров с библиотеками для LCD вместе с операционкой uOSIII (micrium)
Shivers
Apr 2 2012, 09:51
Спасибо!
Ну, в качестве либы наверно стоит FSMC использовать, доступ к LCD как к SRAM. А можно и обычный i/o вывод, только строб записи придется дергать.
По поводу дма .. не знаю. Пожалуй, вы правы: экран маленький, не нужно здесь дма. Я хотел дма использовать для более быстрого обновления экрана, поскольку страничного режима у этого контроллера нету.
Масштабирование не очень интересно, потому что и правда будет кривовато.
Попробую сам шрифты склепать. Думаю, если в фотошопе сделать режим битовой маски с разрешением рисунка 16х16 точек, и написать текстом буквы, то можно константы прямо сходу хватать и вставлять в код. Придется потратить время, но зато свой алфавит будет
esaulenka
Apr 2 2012, 12:30
Shivers, если получится, расскажите, пожалуйста, технологию.
Вопрос рисования своих шрифтов довольно актуален.
Да, размер, наверное, что-нибудь типа 10x16. Дробных (не кратных 8) размеров не стоит боятся - там не очень много арифметики выходит. У меня вывод сотни строк в секунду (полный вывод, с кучей дополнительных расчётов, а не только растеризация) отнимает около 15% времени у LPC1768. В принципе, можно заметно сократить это время. Но пока всё работает :-))
И с отдельным буфером дисплея, возможно, не нужно заморачиваться. На ARM9 делал вывод на экран 640*480 - просто складывал байты в область видеопамяти, не думая о переключении страниц.
Работало довольно неплохо, но т.к. основная функция этой софтины была в отображении надписи "Loading WinCE", её не сильно оптимизировали :-)
Shivers
Apr 2 2012, 13:03
Технология пока на уровне идеи, т.е. и не технология вовсе )
Как это можно бы теоретически сделать в фотошопе, к примеру 16х16: делаем новый проект, соотношение сторон- квадрат, по цетру помещаем букву (выбираем масштаб, шрифт и прочее). А потом обьединяем слои, и пребразуем в черно белый bitmap 16х16 точек, с 1 битным цветом. После этого получается сетка, останется только записать битовые нули и единички, и оформить в виде массива 16х16. По крайней мере лучше, чем рисовать в школьной тетрадке, как мне померещилось сначала.
Я нашел в принципе растровый шрифт 16х16, но только латиницей. Так что, пока других идей всеравно нет, кроме как в фотошопе поработать. Может, кто то еще что подскажет)
За совет спасибо. Когда сделаю (дисплей только на след. неделе получу, плюс надо подключать/писать/пробовать) отпишусь
Посмотрите
здесь. Там есть пример вывода шрифта и ссылка на утилиту-конвертер.
Цитата(Shivers @ Apr 2 2012, 16:03)

Технология пока на уровне идеи, т.е. и не технология вовсе )
Как это можно бы теоретически сделать в фотошопе, к примеру 16х16: делаем новый проект, соотношение сторон- квадрат, по цетру помещаем букву (выбираем масштаб, шрифт и прочее). А потом обьединяем слои, и пребразуем в черно белый bitmap 16х16 точек, с 1 битным цветом. После этого получается сетка, останется только записать битовые нули и единички, и...
Рисовать растровый шрифт в фотошопе - все равно, что что везти ведро песка "КАМАЗом". Есть же куча специализированных бесплатных программ. Вот, навскидку
эта.
Shivers
Apr 2 2012, 19:47
Спасибо! Шикарные программы, как раз то что мне нужно
Shivers, вы можете выдрать готовые шрифты, к сожалению ср437, из ядра линукса в каталоге /версия_ядра/drivers/video/console там их с десяток. Например описание латинской "А" из файла font_8x16.c:
Код
/* 65 0x41 'A' */
0x00, /* 00000000 */
0x00, /* 00000000 */
0x10, /* 00010000 */
0x38, /* 00111000 */
0x6c, /* 01101100 */
0xc6, /* 11000110 */
0xc6, /* 11000110 */
0xfe, /* 11111110 */
0xc6, /* 11000110 */
0xc6, /* 11000110 */
0xc6, /* 11000110 */
0xc6, /* 11000110 */
0x00, /* 00000000 */
0x00, /* 00000000 */
0x00, /* 00000000 */
0x00, /* 00000000 */
По крайней мере вам надо будет разработать не так много наших букв, к. не похожи на латинские.
Нажмите для просмотра прикрепленного файла
Allregia
Apr 6 2012, 06:28
У Микрочипа в графической библиотеке есть отличная программа для конвертации шрифтов и битмапов. Шрифты можно брать как из файлов, так и использовать установленные в винде.
Генерируются на выбор bin, hex, c+h.
Я создавал себе шрифты в LCD Icon Editor 4.3.58.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.