Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вывод на LCD 76х16
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Shivers
Всем привет!
Подключаю Винстаровский дисплей LCD монохром 76х16 точек ( http://catalog.compel.ru/file/oled/WINSTAR...ABPP5N00000.pdf ). Задача - алфацифровой вывод без графики, в одну строку. Т.е. желаемый размер символов 16х16, или лучше 16х8, либо что то навроде, но не 8х8 (слишком мелко получится).
Вопрос в том, встречал ли кто готовые растровые (или еще какие, попроще) либы, или вообще готовые модули с генератором символов под ARM (у меня STM32F407)?

И второй вопрос - если писать самому, как лучше делать?
Пока мысли такие: можно задать символы в виде массивов констант, затем писать в память для формирования страницы, и потом уже вызывать дма для копирования на дисплей. Может, как то по другому это делается? Хочется сделать просто/компактно. И еще хочется готовую либу )
sevastianovd
насколько я понял, либа непосредственно для работы с контроллером LCD у вас есть.
когда-то развлекался с LCD бОльшего размера и задался тем-же вопросом: как увеличить шрифт.
у меня был набор шрифтов 5х7, в результате сделал функции масштабирования шрифта в целое число раз, т.е. 5х14, 10х14, 15х21 и так далее, смотрится естественно кривовато, если интересно проект скину.

для вашего LCD достаточно иметь набор шрифтов и никакой обработки не делать.
ps а зачем вы планируете dma, объем информации небольшой да на параллельный интерфейс?

еще встечал кучу готовых примеров с библиотеками для LCD вместе с операционкой uOSIII (micrium)
Shivers
Спасибо!
Ну, в качестве либы наверно стоит FSMC использовать, доступ к LCD как к SRAM. А можно и обычный i/o вывод, только строб записи придется дергать.
По поводу дма .. не знаю. Пожалуй, вы правы: экран маленький, не нужно здесь дма. Я хотел дма использовать для более быстрого обновления экрана, поскольку страничного режима у этого контроллера нету.

Масштабирование не очень интересно, потому что и правда будет кривовато.
Попробую сам шрифты склепать. Думаю, если в фотошопе сделать режим битовой маски с разрешением рисунка 16х16 точек, и написать текстом буквы, то можно константы прямо сходу хватать и вставлять в код. Придется потратить время, но зато свой алфавит будет
esaulenka
Shivers, если получится, расскажите, пожалуйста, технологию.
Вопрос рисования своих шрифтов довольно актуален.

Да, размер, наверное, что-нибудь типа 10x16. Дробных (не кратных 8) размеров не стоит боятся - там не очень много арифметики выходит. У меня вывод сотни строк в секунду (полный вывод, с кучей дополнительных расчётов, а не только растеризация) отнимает около 15% времени у LPC1768. В принципе, можно заметно сократить это время. Но пока всё работает :-))

И с отдельным буфером дисплея, возможно, не нужно заморачиваться. На ARM9 делал вывод на экран 640*480 - просто складывал байты в область видеопамяти, не думая о переключении страниц.
Работало довольно неплохо, но т.к. основная функция этой софтины была в отображении надписи "Loading WinCE", её не сильно оптимизировали :-)
Shivers
Технология пока на уровне идеи, т.е. и не технология вовсе )
Как это можно бы теоретически сделать в фотошопе, к примеру 16х16: делаем новый проект, соотношение сторон- квадрат, по цетру помещаем букву (выбираем масштаб, шрифт и прочее). А потом обьединяем слои, и пребразуем в черно белый bitmap 16х16 точек, с 1 битным цветом. После этого получается сетка, останется только записать битовые нули и единички, и оформить в виде массива 16х16. По крайней мере лучше, чем рисовать в школьной тетрадке, как мне померещилось сначала.
Я нашел в принципе растровый шрифт 16х16, но только латиницей. Так что, пока других идей всеравно нет, кроме как в фотошопе поработать. Может, кто то еще что подскажет)

За совет спасибо. Когда сделаю (дисплей только на след. неделе получу, плюс надо подключать/писать/пробовать) отпишусь
AHTOXA
Посмотрите здесь. Там есть пример вывода шрифта и ссылка на утилиту-конвертер.
VDLab
Цитата(Shivers @ Apr 2 2012, 16:03) *
Технология пока на уровне идеи, т.е. и не технология вовсе )
Как это можно бы теоретически сделать в фотошопе, к примеру 16х16: делаем новый проект, соотношение сторон- квадрат, по цетру помещаем букву (выбираем масштаб, шрифт и прочее). А потом обьединяем слои, и пребразуем в черно белый bitmap 16х16 точек, с 1 битным цветом. После этого получается сетка, останется только записать битовые нули и единички, и...


Рисовать растровый шрифт в фотошопе - все равно, что что везти ведро песка "КАМАЗом". Есть же куча специализированных бесплатных программ. Вот, навскидку эта.
Shivers
Спасибо! Шикарные программы, как раз то что мне нужно
anode
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
У Микрочипа в графической библиотеке есть отличная программа для конвертации шрифтов и битмапов. Шрифты можно брать как из файлов, так и использовать установленные в винде.
Генерируются на выбор bin, hex, c+h.
skyv
Я создавал себе шрифты в LCD Icon Editor 4.3.58.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.