Микроконтроллеры | Начинающим об управлении графическими индикаторами? |
|
---|---|---|
Штука хорошая и в хозяйстве полезная. Думаю, что многие радиолюбители применяют такие штуки. Прошу присоединиться тех, кого интересует эта тема. Поделимся идеями и наработками. |
|
|
Я обычно стараюсь вписаться вот в такую модель: - в ОЗУ микроконтроллера отвести память под образ экрана (например, для черно-белой графики 128х128 это будет 2 КБайта). Расход памяти, конечно, недетский, но зато очень упрощается работа. И наплевать, как там LCD выводит - по строкам, по столбцам, иди вообще сикось-накось "Джентльменский набор" операций, надерганный из программы: - void clearScreen(void) - очистка экрана. Для того, чтобы нарисовать вот такую картинку со всякими анимациями (см файл), достаточно ATMega16 |
|
|
А вот интересно, почему же память самого LCD использовать сложнее. Я делал так. |
|
|
Когда я был на семинаре MicroCHIP, то там упоминалось про специальную графическую библиотеку на Си, с которой "работа с графическим дисплеем становится очень простая". Также там упоминалось об альтернативной очень известной библиотеке (вроди написаной каким-то студентом), которая потребляет заметно меньше памяти (программ и ОЗУ; докладчики ее хвалили). К сожаленью названия я не запомнил, но понял, что такие библиотеки очень популярные. Возможно следует начать поиски с их сайта. |
|
|
chav1961 вот вы пишете, что лучше работать через буферное ОЗУ самого МК. С чем все-таки это связано? С тем, что адресация проще? Просто заводим большой массив, размером с экран и с ним работаем? С тем, что не надо после ввода каждой паршивой точки делать задержки, бесконечно опрашивать флаг "занято"? Или с чем-то еще? Сергей К, я сколько не рыскал по интернету, так и не нашел хороших вменяемых библиотек. Писал сам. Дело тут не в сложности кода. Код-то простой. Просто подчас не знаешь, как чего оптимальнее делать. |
|
|
Работа с ОЗУ проще по многим причинам: 1. Легко делаются сложные операции с экраном (например, инверсия экрана - команда XOR, прорисовка по маске - команды AND с инверсией маски и OR с изображением и т.д.). Попробуйте, ради интереса, представить, как нарисовать на экране LCD окружность, не пользуясь буфером - поседеете . И это притом, что практически у каждого LCD это способ отрисовки будет свой. 2. Более высокая скорость (например, пересылка байта в ОЗУ - три команды, в то же время пересылка байта в памяти LCD - две операции обмена, и в каждой,как минимум, пяток команд - стробы всякие, чтение/запись данных из порта, задержки). Бывает вариант, когда LCD в этой ситуации работает быстрее - если его контроллер "умеет" самостоятельно выполнять всякие групповые операции асинхронно, но такой "умный" контроллер стоит далеко не в каждом LCD, с ним надо еще освоиться, а при переходе на другой тип LCD все ранее освоенное окажется невостребованным. Есть, между прочим LCD, в которых контроллера просто нет - там буферное ОЗУ вообще без вариантов 3. Простота программы и малая зависимость от типа LCD (для того, чтобы "выкинуть" образ в LCD, нужно уметь делать всего одну операцию записи байтов в память LCD). Как следствие, собственно "рисовальная" часть от типа ЖКИ почти не зависит (разве что в плане цвета и размера). В качестве примера - на той картинке, что в предыдущем посте, использован WG12232, в котором байт отображается в столбец, а в программе я с образом работаю построчно. Наступит время, переедете с одного типа LCD на другой (с другим контроллером) - не нужно полностью переучиваться. Недостаток метода - очень большой расход ОЗУ и большие затраты на обработку со стороны микроконтроллера, если в LCD стоит "умный" контроллер, и его возможности не используются. Если можете такую цену заплатить - думаю, стоит платить, если нет - стоит осваивать именно данный LCD с данным контроллером, либо искать (пользоваться) готовую библиотеку. Я буферным ОЗУ даже для семисегментных индикаторов пользуюсь. Разумеется, все сказанное - IMHO |
|
|
Уговорили, буду пробовать, как вы советуете. Вот только с делами разгребусь... |
|
|
Zandy: Если где увидите, свистните мне. Без разницы, для пиков или для аврок. |
|
|
Zandy: Если где увидите, свистните мне |
|
|
Спасибочки за ссылку. Посмотрю обязательно. |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |