Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
19.12.2010, 12:50
|
|
Прописка
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Сообщение от vlad145
|
Уважаемые профессионалы, нужна ваша помощь. Я только ещё пытаюсь писать для микроконтроллеров, и естественно не без граблей. Пишу в CodeVision (мне в ней понятнее), есть несколько вопросов по работе с дисплеем от Nokia 3310(1100). Я вроде где то натыкался, но найти не смог, как использовать (реализовать) на одном дисплее шрифты нескольких размеров. Это пишется знакогенератор с набором разных шрифтов, или код какой есть для программного увеличения символов (типа 2х и т.д.). И ещё, как вывести например одну строку в инверсии? Надеюсь на понимание.
|
Допустим, строчку с инверсией вывести достаточно просто. Перед выводом даётся XOR Data, 0xFF (а регистре), или NEG Data (регистр с байтом).
Опять же, это для горизонтально-вертикального вывода информации - вывода по 8 точек вертикально и сдвиг на 1 столбец в сторону. Такое в дисплее Nokia 1110(i). Полноценного вертикального вывода не добился.
Шрифты, действительно можно переключать из 2 источников, а можно и увеличивать, что сложнее. Например, циклическим сдвигом начального байта знака из знакогенератора, проверки бита (обычно первого, последнего, или переноса в зависимости от логики сдвига) и добавления к новому байту уже 2 бит в начало, или конец и его сдвиг.
Так же, прийдётся отправлять его дважды, иначе будет только вертикальное увеличение.
Именно с кодом пока не могу помочь, так как не делал подобного, но реализовать не слишком сложно. Должно понадобиться 100-200 команд.
|
|
|
|
19.12.2010, 13:32
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
У каждого способа есть свои недостатки, если увеличивать шрифты программно, то они выглядят коряво, но не занимают места во флэше, а если загружать крупные шрифты, то они отнимают место во флэше, зато смотрятся прилично.
|
|
|
|
19.12.2010, 15:27
|
|
Прописка
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Так в том-то и вся суть. Вопрос только в желании сэкономить ресурсы - либо получить нечто корявое, либо красивое, но потратить бесценное место для программы. В случае с контроллерами класса ATMega8 - 2-16 кб, а знакогенератор низкого разрешения займёт 5х8 бит: 5х256 (для полного алфавита) = 1280 байт. В принципе, не слишком много. А вот для большего разрешения будет уже 4х1280 = 6120 байт, что занимает достаточно большой объём памяти.
Конечно, можно выбрать только нужные символы. Но где тогда вероятность, что не появятся новые?
Кстати, в EEPROM знакогенератор уже не помещается (512 байт в моём случае - ATMega8535). А если увеличить его?.. Либо писать более умную процедуру, которая будет проводить пересчёт пикселов с учётом соседних - сглаживать углы.
|
|
|
|
19.12.2010, 17:23
|
|
Прописка
Регистрация: 06.05.2008
Адрес: Курган
Сообщений: 161
Сказал спасибо: 31
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Немного поясню. Есть конкретный проект на ATMega16, реобас с тремя термодатчиками DS18B20, тремя каналами управления кулерами (шим). В случае нехватки flash памяти есть возможность переписать проект на ATMega32. Крупный шрифт нужен не полностью, только цифры. Возможно может понадобиться стандартный шрифт только "жирный".
|
|
|
|
19.12.2010, 18:23
|
|
Прописка
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Советую использовать знакогенератор в конце основной памяти, тогда точно хватит и её. Так же, если нужно использовать только цифры, то получится так:
Две процедуры - вывод обычных символов, (возможно с жирностью - реализовать повторами некоторых байтов), и вывод больших цифр.
Опять же, нужно знать как работает дисплей, как удобнее выводить символы.
Некоторые могут поддерживать вертикальную+горизонтальную адресацию попиксельно (цветные), некоторые - вертикальную попиксельно, а горизонтальную - построчно.
Хотя, в общем случае нужно будет иметь:
Знакогенератор обычных символов (с цифрами?)
Знакогенератор цифр (больших).
Второй разбивается на половины и выводится сначала одна часть, затем другая.
В зависимости от способа адресации, нужно будет и заполнять массивы.
В принципе, ничего очень сложного. Только придётся решить проблему позиционирования...
Чтобы не получилось такого:
[HTML]Температура: _ | | o
| |[/HTML]
(Температура: -11°)
Пример сложный для рисования в половинках
Думаю, Вы справитесь
|
|
|
|
19.12.2010, 18:52
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Сообщение от vlad145
|
Крупный шрифт нужен не полностью, только цифры. Возможно может понадобиться стандартный шрифт только "жирный".
|
И что мешает? Возьмите из чужого готового шрифта то что вам нужно, как правило в коментах обозначено какому символу какая строчка/строчки соответствует, или составьте сами. Только вам нужно сначала определиться с размерами шрифта, а за вас это уже никто сделать не сможет, или просто пробовать разные и найти оптимальный.
|
|
|
|
19.12.2010, 19:32
|
|
Прописка
Регистрация: 09.11.2009
Сообщений: 193
Сказал спасибо: 47
Сказали Спасибо 58 раз(а) в 26 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
vlad145,
У меня есть термометр в нем я использовал шрифт 10 x 16 (сами цифры занимают размер 8 x 14 остальное забито нулями). Устройство на ATMega16 в железе пока не проверялось, в протеусе работает нормально. Надеюсь оно будет тебе полезено.
lcd - nokia 3310
Последний раз редактировалось sersne; 19.12.2010 в 19:35.
|
|
|
Эти 3 пользователя(ей) сказали Спасибо sersne за это сообщение:
|
|
|
19.12.2010, 19:46
|
|
Вид на жительство
Регистрация: 07.03.2005
Сообщений: 300
Сказал спасибо: 13
Сказали Спасибо 117 раз(а) в 62 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
Проекты с разными размерами шрифтов. Проект "02_3310boldV2" реально работает на макетке. Шрифт выглядит очень прилично. Но корифеи объясните на "пальцах" как работает кусок кода увеличения шрифтов программно. Нашел все в инете, переделывал для себя, но эта часть кода без единого комментария. Задавал этот вопрос месяца три назад. Сказали читай даташит.
|
|
|
Сказали "Спасибо" mironov
|
|
|
19.12.2010, 20:19
|
|
Прописка
Регистрация: 09.11.2009
Сообщений: 193
Сказал спасибо: 47
Сказали Спасибо 58 раз(а) в 26 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
mironov, у тебя ни один проект не компилируется, пишет:
"Linker error: global RAM variables size: 973 bytes is too large".
Нужен другой контроллер с большей рам или менять исходники.
На сколько я понял увеличение шрифта происходит элементарным умножением,
пример:
символ "!" будет записываться в бинарном коде как:
0b00000000,0b00000000,0b10111111,0b00000000,0b0000 0000
умножая биты на число 3, получаем символ так:
0x00,0x00,0x00
0x00,0x00,0x00
0b111000 0b111111111 0b111111111
0x00,0x00,0x00
0x00,0x00,0x00
Последний раз редактировалось sersne; 19.12.2010 в 20:55.
|
|
|
|
19.12.2010, 20:53
|
|
Прописка
Регистрация: 09.11.2009
Сообщений: 193
Сказал спасибо: 47
Сказали Спасибо 58 раз(а) в 26 сообщении(ях)
|
Re: Дисплеи от сотовых (схемы подключения, код, datasheet)
В прилогаемом рисунке описано понятнее.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:07.
|
|