Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Пт апр 16, 2021 11:27:29

Записи - то я для себя больше делал. Принцип адресации и организации дисплея был мне понятен.
Я описал именно физическое подключение и инициализацию.

Если у вас памяти мало - то вам просто нужно знать, что и где у вас на экране.
И выводить через минибуффер только туда, куда надо.
Если нужно погасить весь экран - то у вас же есть код вывода картинки....
Его переделать чуток и очистка экрана готова
Код:
 for(i=0;i<32;i++)              //
    {
      TransferData((0x80 + i),0); //SET   VERTICAL ADDRESS
      TransferData(0x80,0);       //SET   HORIZONTAL ADDRESS
      for(j=0;j<32;j++)
       {
         TransferData(0,1);
       }
    }


Если что то нужно стереть в области экнрана - ну заполните минибуфер нулями и плюньте в ту область.

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Пт апр 16, 2021 11:31:58

Ну я и гасил как вы написали :) Т.е. как правильно - сначала гашу весь экран, затем заполняю минибуфер и вывожу его на экран?

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Пт апр 16, 2021 11:46:30

Pretender, так это вы уже по своей задаче должны смотреть.
Сначала, на старте, да, надо погасить дисплей. Ибо на нём мусор.
А потом - если надо очистка, чистите.
Если вам нужно обновлять какие то небольшие области - то зачем всё чистить и заново выводить?

Кстати, с этим дисплеем интересная штука. Текстовый и графический режимы у него независимы. И память у каждого - своя.
Т.е. при включении нужно сначала дать команду очистки текстового дисплея, потом переключиться в графику и очистить видеопамять нулями.
Иначе можно увидеть интересные артефакты - символы из текстового режима будут складываться по XOR с картинкой из граф. режима :)

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Пт апр 16, 2021 20:55:52

lizard66, в последовательном тоже можно читать вроде бы. Во всяком случае, бит чтения-записи там есть.
Каждый байт команды/данных в последовательном режиме отправляется тремя байтами. И первый байт как раз и содержит биты-указатели, команда или данные идут и чтение или запись производится : 1 1 1 1 1 RW DC 0


Зачем в стартовом байте оставили RW великая загадка. Конечно, само по себе отсутствие MISO еще не говорит о том, что обмен односторонний, DS1302 со своим специфичным SPI обходится и без него. Однако сам производитель не оставляет сомнения …
Serial interface:
ST7920 is in serial interface mode when pulling down PSB pin. Two pins (SCLK and SID) are used to complete the data transfer. Only write data is available in the serial interface mode.



Но читать, а потом писать - это геморно. При том, что еще и дисплей тормозной, одну команду или байт данных пережевывает минимум 70 (а то и все 80-90) микросекунд. Если по последовательному протоколу слать, то тактовую выше 1.666 МГц вроде нельзя подавать.
Я тестировал - 1.75 МГц он еще проглотил, а на 2 МГц уже пошли артефакты.
Если в применении к АВРкам, то тут грустно. Аппаратный СПИ при тактовой 8 МГц - это или 1, или 2 МГц. Нам подходит только 1 МГц.
Либо ставить на АВР кварц 12 МГц. Тогда СПИ можно на 1.5 МГц раскочегарить.
В результате эти циклы чтения-записи будут отбирать на ожидания вагон времени. И для основной программы останется ресурсов всего ничего.


Был один смешной проектик на Мега8, я применил ЛЦД на KS0108. Экран тоже не слишком быстрый, буфер выделять было не из чего. Позже проект разростался, был портирован сперва на М32 потом на М644, но драйвер ЛЦД переделывать не стал. В какой-то момент прикрутил компас и вот как это выглядит на М32 16МГц, вполне себе живенько -

Тут уже выведенные данные считываются с индикатора, сливаются с новыми данными и обновленное отправляется в индикатор. Т.ч. «тормозной дисплей» это все относительно.

Когда руки дошли до ST7920, уже экспериментировал с STM. Тот же проект, только на F407 с ST7920 в режиме SPI…
Вложения
STN32-C5.jpg
(187.34 KiB) Скачиваний: 176

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Сб апр 17, 2021 00:37:03

lizard66, ну на самом деле один мой знакомый сказал, что в 2021 году делать изделия на контроллерах 15летней давности - моветон.
Ну в чем то я с ним согласен.
Но что поделать, если у меня в коробочке лежит порядка 70 штук Атмега8, десяток атмег 32, несколько 128х и пучок тинек?
Вот и приходится иногда страдать некрофилией.
С другой стороны - какую то приблуду на 2-3-4 кнопки, 5 светодиодов и два реле можно делать и на атмеге 8.
--
Но для монохромных дисплеев я не хочу полагаться на чтение из дисплея и т.д. Мне проще взять камушек, у которого больше килобайта ОЗУ, что б выделить 1024 байта под видеобуфер.
Это удобно. Графическая библиотека рисует все примитивы в этом буфере - ей пофиг, где рисовать.
А драйвер выгружает буфер в дисплей. Либо по таймеру, либо по событию.
с ОЛЕДками - мне проще буфер выплюнуть вручную, по вызову update. Тем более, я в драйвере предусмотрел возможность выгрузки только измененных областей.
А геморнутость и тормознутость 7920 (обработка одной команды - от 70 мкс) вынудили замутить таймерное обновление. На СТМ еще и ДМА заюзал, что б вручную не ждать отправки 3 или 6 байт по СПИ.
Делал БП себе (фото показывал) - там СТМка успевает и дисплей обслужить, и кнопки опросить, и 1000 раз в секунду прочитать значение тока и напряжения по и2ц, и буфер на 20 000 измерений обработать и картинку нарисовать.
Так что все же для монохромников - проще буфер и не извращаться.

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Сб апр 17, 2021 07:32:49

lizard66, ну на самом деле один мой знакомый сказал, что в 2021 году делать изделия на контроллерах 15летней давности - моветон.
Ну в чем то я с ним согласен.
Но что поделать, если у меня в коробочке лежит порядка 70 штук Атмега8, десяток атмег 32, несколько 128х и пучок тинек?
Вот и приходится иногда страдать некрофилией.
С другой стороны - какую то приблуду на 2-3-4 кнопки, 5 светодиодов и два реле можно делать и на атмеге 8.
--


Я такой же некро… (в лучшем смысле этого слова) ,как и Вы. Приходиться заниматься ремонтом строительных нивелиров, а там в основном STC или холтеки, сдуваю оригинальный проц, ставлю тиньку ( приходиться подрезать слегонца дорожки) и туда свою прошиву. Уже есть свой отлаженный шаблон, только правлю под конкретный случай и вперед.

Но для монохромных дисплеев я не хочу полагаться на чтение из дисплея и т.д. Мне проще взять камушек, у которого больше килобайта ОЗУ, что б выделить 1024 байта под видеобуфер....
....Так что все же для монохромников - проще буфер и не извращаться.


Не стал конкретизировать, но раз ST7920 работает по SPI, то естественно выделен буфер. И да, я тоже обновляю только ту часть экрана, которая подверглась изменению.

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Сб апр 17, 2021 11:08:50

Ну, обмен по SPI - это транспорт только. А так - юзать буфер или не юзать - это уже вопрос алгоритма. Может на дисплей надо инфографику в виде спрайтов 16*16 выводить и всё....
Тогда можно и без буфера.
Я "Часы на TFT" сделал без буфера и без чтения с экрана. Рассчитал области, что б они не перекрывались и рисовал в каждой прямо в дисплей.

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Сб апр 17, 2021 15:58:16

Ну, обмен по SPI - это транспорт только. А так - юзать буфер или не юзать - это уже вопрос алгоритма. Может на дисплей надо инфографику в виде спрайтов 16*16 выводить и всё....
Тогда можно и без буфера.
Я "Часы на TFT" сделал без буфера и без чтения с экрана. Рассчитал области, что б они не перекрывались и рисовал в каждой прямо в дисплей.


Согласен полностью, тот же принцип ;) - https://www.radiokot.ru/forum/viewtopic ... 7&t=171493

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Вт апр 27, 2021 22:15:23

не, без буфера это не жизнь...
Благодаря буферу безбуферный проект под KS0107 легко портируется на ST7920 с минимумом переделок.

Демонстрация "живости":



Добавлено after 2 hours 23 minutes 42 seconds:
GoldenAndy писал(а):С другой стороны - какую то приблуду на 2-3-4 кнопки, 5 светодиодов и два реле можно делать и на атмеге 8

на меге8 можно сделать и такое: http://primuss3.com/forum/index.php?topic=314.0
и такое:

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Ср апр 28, 2021 10:13:38

slav0n, проблематика использования дисплеев на мелких МК в том, что если не используется процедурная графика, то требуется вагон памяти под графические ресурсы.
Тот же шрифт 5*8 - долой килобайт памяти. И т.д.
Вон у меня сейчас проблема. Есть задача сделать некий контроллер на ТФТ-дисплее 240*240 пикселей.
если б не такой дисплей - контроллер уместился бы, наверное, в мегу-16. А так - придется взять стм32 с 256 кб флеша. Ибо полноцветный дисплей требует и цветные картинки (2 байта на пиксель). А они весят много. Да и шрифт тоже покрупнее нужен. Я экспериментировал - 12*20 с трудом.
Вложения
160160.jpg
(60.27 KiB) Скачиваний: 210

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Ср апр 28, 2021 13:21:20

вот, чел тоже экспериментировал:

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Пт сен 10, 2021 15:36:19

Коллеги, я попытался крутануть потенциометр нв своем QC12864B - там под 3-й "кляксой" рядок резисторов R1-R7, а слева и чуть выше - крохотка-потенциометр VR, вот, его я и крутнул. И, похоже, свернул. Что там стоит, и чем бы его заменить?

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Пт сен 10, 2021 17:51:27

afz, У меня тестер говорит 4.88 кОм
Т.е. ищите 4.7- 5кОм

Добавлено after 1 hour 18 minutes 15 seconds:
afz, вот только я на своих дисплеях так и не увидел влияния этого потенциометра. Контраст регулировался через вывод VD.

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Пт сен 10, 2021 18:47:47

GoldenAndy писал(а):так и не увидел влияния этого потенциометра. Контраст регулировался через вывод VD
а R6 там не соединяет движок с V0?

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Ср сен 29, 2021 06:58:11

GoldenAndy писал(а):вот только я на своих дисплеях так и не увидел влияния этого потенциометра. Контраст регулировался через вывод VD.
Купил, наконец, батарейку в свой мультиметр, вооружился хорошей лупой и таки разобрался. На моём дисплее потенциометр напрямую подключен подковой к VDD и VSS, а движок - к V0. То есть, этот дисплей строго 5-вольтовый, при питании от 3 В контрастности не добьешься. И контрастность регулируется именно этим потенциометром. Он у меня, кстати, 2.2 кОм. Еще на этом дисплее в подтяжке PSB к +5В стоял R9=0 (перемычка), для переключения на SPI пришлось выпаять эту перемычку.

Осталось найти в кладовке китайскую пробную платку с 8-й Мегой и собрать тестовый стенд.

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Ср сен 29, 2021 08:40:05

где картинки
картинки где
писанина вообще не показательна

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Ср сен 29, 2021 10:09:26

Какие картинки? С фото возиться не хочу, дорожки там, частично, идут по второй стороне. И что неясного в том, что концы подковы потенциометра коротко звонятся на VDD и VSS, а лвижок, не менее коротко, на V0?

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Ср сен 29, 2021 10:29:27

afz, попробуйте снять резистор. тогда, возможно, получится запитать логику дисплея от 3 вольт, а на контраст подать более высокое.... (если мне память не изменяет - там надо порядка 4.5 вольт для черного-на-зеленом и 4 вольт для белого-на-синем...)
Без резистора, возможно ,там будет мелкий ток и повышенное можно получить будет какой то повышайкой.... Накачкой на дросселе или умножителем....

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Ср сен 29, 2021 11:07:49

GoldenAndy писал(а):Без резистора, возможно ,там будет мелкий ток
Это у меня будет вторым этапом. Сначала, по-простому, подам 5В и подключу к АВР-ке. 8-ю Мегу не нашел, зато нашел аардуинку-нано, на 328-й Меге. Попробую на ней, а там вдно будет

GoldenAndy писал(а):и повышенное можно получить будет какой то повышайкой.... Накачкой на дросселе или умножителем....
Вот здесь, в таблице с распиновкой, утверждают, что на выводе VOUT та самая 7920 генерит удвоенное напряжение VDD. Еще не проверял, соберу стенд - обязательно проверю.

Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920

Ср сен 29, 2021 11:43:48

afz, чего-то я проморгал про VOut в свое время.
Просто все устройства на этом дисплее у меня с не-батарейным питанием. И процы там - бибо СТМ, тоглда дисплей 3.3 вольта жрёт, либо атмелы.
На СТМках я ШИМил контраст от 5 вольт, на мегах - напрямую от МК.
--
Кстати, если "в лоб", с промежуточным видеобуффером в памяти МК - то на Меге8 не заведется. Видеобуфер - 128*64/8 = 1024 байта. А в Меге 8 - всего 1 кб ОЗУ.
Так что абдуринка - ваше всё. Там уже 2 кб памяти.
Ответить