Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.10.2015, 17:55
|
|
Частый гость
Регистрация: 06.10.2015
Сообщений: 15
Сказал спасибо: 14
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Работа с WG12232A
Здрасте. Такая тема вобщем.
Пробую на этот дисплей вывести чето. Получилось кароч нарисовать точки и полосочки. А че вот как дальше. Ну там текст написать рамочки нарисовать. Как то шрифты надо сделать.
На PIC16F628 покачто зацепил.
Еще Proteus как-то непонятно делает с диспллем этим. Реальный дисплей по дугому как то показывает. Не пойму как правильно.
|
|
|
|
06.10.2015, 18:04
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,676
Сказал спасибо: 74
Сказали Спасибо 1,806 раз(а) в 654 сообщении(ях)
|
Re: Работа с WG12232A
Сообщение от MoonLate
|
А че вот как дальше. Ну там текст написать рамочки нарисовать. Как то шрифты надо сделать.
|
А в чём сложность? Рамочки и шрифты - это те же точки-полосочки, только сгруппированные нужным образом. Шрифты, например, можно готовые взять. Или даже самому в "Паинте" нарисовать, какие Вам надо, если интересно...
|
|
|
|
06.10.2015, 18:15
|
|
Частый гость
Регистрация: 06.10.2015
Сообщений: 15
Сказал спасибо: 14
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: Работа с WG12232A
Сложность в том, что не понимаю как это все организовать. А тут ещё в реальном дисплее отличается от того что Proteus дисплей показывает
|
|
|
|
06.10.2015, 18:34
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Работа с WG12232A
Да, в протеусе эта моделька косячная - было дело, пробовал. Вроде и контроллер дисплея правильный, SED1520, вроде все делаешь как документация на контроллер говорит, а показывает в протеусе неправильно. Во-первых, перепутано направление развертки - ставишь на инккремент, а он начинает наоборот считать. И в документации указано, что после последнего адреса нет инкремента, а в протеусе - продолжается на следующей странице. Да и порядок страниц перепутан. Ну и не воспринимает команду указания номера колонки. Хотя в железе - всё отлично работает, без проблем. Я потыкался и плюнул - просто в железе стал пробовать.
Шрифты - это побайтный набор точек. Учитывая, что этот дисплей выводит горизонтально, то стандартный шрифт 7х5 точек будет занимать 5 байт для одного символа. Байт расположен вертикально, младший бит вверху. Ну и горизонтально 5 байт последовательно - вот и будет буква или цифра. Минимальный комплект символов - около 128. Например по аналогии с WH1602, убрав из него лишние. Итого, 128 символов х5 байт = 640 байт. Вот их и храним в памяти программ МК в виде таблицы. И когда нужно вывести букву, вызываем последовательно 5 байт символа и отправляем в дисплей. Предварительно выставляем координату X начала текста, ну и номер страницы, в данном случае он будет номером строчки. Между буквами вставляем один пустой байт промежутка.
Правда, на таком дисплее текст 7х5 будет выглядеть мелким.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
06.10.2015, 18:53
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,676
Сказал спасибо: 74
Сказали Спасибо 1,806 раз(а) в 654 сообщении(ях)
|
Re: Работа с WG12232A
Сообщение от MoonLate
|
Сложность в том, что не понимаю как это все организовать.
|
Для 628-го "пика" единственный, пожалуй, способ - это хранить шрифт в массиве из последовательных команд табличной адресации "retlw XX". Когда нужно вывести символ - вычисляете смещение этого символа в таблице, умножив код символа на 5. Далее, зная смещение, 5 раз обращаетесь к таблице и извлекаете из нее байты, хранящие изображение символа и выводите их на дисплей. Шестым байтом выводите значение 0 - промежуток между символами в 1 пиксель. Таким примерно образом...
|
|
|
|
06.10.2015, 19:03
|
|
Частый гость
Регистрация: 06.10.2015
Сообщений: 15
Сказал спасибо: 14
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: Работа с WG12232A
Спасибо за оперативные ответы!
628 пик я взял для простых тестов, чтобы ничего в нем не мешалось.
Теперь ясно почему в Протеусе все наоборот. А я думал что я неправильно делаю.
Буду пробовать с retlw.
|
|
|
|
07.10.2015, 09:32
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Работа с WG12232A
Лучше уж взять сразу МК помощнее, а то с этим 628-м очень быстро наступит затык - тупо не хватит памяти.
|
|
|
|
08.10.2015, 21:48
|
|
Частый гость
Регистрация: 06.10.2015
Сообщений: 15
Сказал спасибо: 14
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: Работа с WG12232A
Вот какие дела заметил. Запускаю дисплей а на нем после включения горят почти все точки. Сброс не помогает ни командой ни ножкой. Как бы ни сбрасывал все равно почти все пиксели светятся.
Со шрифтами получилось. Выводятся. Но в дисплее 2 чипа и их надо переключать.
|
|
|
|
08.10.2015, 22:23
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Работа с WG12232A
Так команды сброса в этом дисплее не очищают видеопамять то, как у алфавитно-цифровых. Аппаратный сброс используется для переключения типа интерфейса (8080 или 6800). Программный сброс только выставляет начальные значения, но тоже не очищает видеопамять. Пиксели светятся потому, что видеопамять не очищена.
В протеусе этого не наблюдается, а в железе - да.
Поэтому, сразу после включения дисплея и программного сброса, нужно начать процедуру программной очистки видеопамяти - то есть простая запись 00 побайтно во все адреса видеопамяти. Для ускорения процедуры можно обращаться сразу к двум чипам одновременно.
Вначале выставляем в обеих чипах начальную колонку и начальную страницу. колонка 0, страница 0, инкремент адресов.
Далее, заносим 0х00 последовательно колонки с 0 по 60 (всего 61 колонка). Затем переключаем страницу на следующую, снова выставляем колонку 0 и повторяем до 60 колонки. Одновременно в двух чипах.
И так до конца дисплея, то есть, до страницы 3, колонки 60.
По поводу переключения чипов. Нужно написать подпрограмму вывода, которая будет преобразовывать координату X в номер чипа и номер колонки. То есть, если координата X‹61, то работа с первым чипом, а если X›=61, то работа со вторым чипом, и вдобавок, вычитание X-61, чтобы номер колонки был правильный.
Это для случая, когда установлена инкрементальная развертка слева направо.
Координата Y отсчитывается сверху вниз. Верх у дисплея там, где контакты.
Поскольку вертикально дисплей разбит на 4 страницы по 8 пикселей, то и страницы тоже нужно переключать командой установки страницы. Страницы идут так же сверху вниз.
Координата Y должна преобразовываться в номер страницы и смещение от начала страницы. Делается это простым делением на 8 с остатком.
В чисто текстовом режиме со шрифтом 7х5 точек в дисплей помещается 4 строчки по 20 символов.
Если высота шрифта более 8 пикселей, то строчка шрифта будет захватывать две страницы и отрисовывать придется постоянно переключая страницы.
Ну и если строчка текста идет между страниц, так же придется отрисовывать в двух страницах.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Напряжённая работа
|
Roshens |
Отвлекитесь, эмбеддеры! |
8 |
01.09.2010 23:08 |
Часовой пояс GMT +4, время: 00:52.
|
|