Например TDA7294

Форум РадиоКот • Просмотр темы - Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт июл 25, 2025 23:31:56

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 240 ]    , , 3, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Сб июл 26, 2014 20:16:09 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 545
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Друзья, добрый день.
Нужна ваша помощь. Пытаюсь собрать осцилограф на Atmega32: http://bezkz.su/publ/shemy/oscillografy/700212-oscillograf-na-mikrokontrollere-atmega32a.html
Устройство вроде бы не сложное, но проблема в том что в оригрнальной схеме используется дисплей WG12864A а у меня есть только 12864ZW с процессором ST7920. У нас во всем городе вообще нет графических дисплеев, а на покупку подходящего к схеме дисплея просто нет средств... семейный бюджет...
Вопрос чем: можете помочь подправить прошивку под дисплей 12864ZW?
Файл с исходниками прилагаю.
Я только начинаю изучать микроконтроллеры. И Си для меня неизвестный язык, я начал изучать ассемблер, и два языка одновременно не потяну...
Очень надеюсь на вашу помощь!


Вложения:
Комментарий к файлу: осцилограф на Atmega32
osciloskop_atmega32_v3.rar [502.48 KiB]
Скачиваний: 556

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Сб июл 26, 2014 23:58:00 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4884
Откуда: Минск
Рейтинг сообщения: 0
У этих контроллеров коренным образом различается организация видеопамяти, так что вряд ли кто-то возьмётся за адаптацию прошивки, тем более, написанной, похоже, на ассемблере.

Кстати, на на том же алиэкспрессенужный дисплей можно купить в Китае долларов за 8. Вряд ли это сильно скажется на семейном бюджете


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Вс июл 27, 2014 16:36:09 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 106
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
WiseLord писал(а):
Кстати, на на том же алиэкспрессенужный дисплей можно купить в Китае долларов за 8. Вряд ли это сильно скажется на семейном бюджете
А лучше не заморачиваться, и заказать что-то типа такого http://ru.aliexpress.com/item/ARM-DSO20 ... 02838.html
По моему 2 тр сейчас - не деньги...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Вс авг 03, 2014 21:12:53 
Первый раз сказал Мяу!

Зарегистрирован: Вт апр 23, 2013 16:46:07
Сообщений: 33
Рейтинг сообщения: 0
Добрый день всем.
Подскажите как мне ввести свои символы в CGRAM
RS,RW,(0,1,AC5,AC4,AC3,AC2,AC1,AC0) - Переход в CGRAM, где RS и RW =0, ACn = адрес в CGRAM

Как этот адрес делится по вертикали? и по горизонтали? как туда пихать данные?
А потом по какому адресу в DDRAM считать их?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Пн авг 04, 2014 03:02:04 
Грызет канифоль

Карма: 1
Рейтинг сообщений: 21
Зарегистрирован: Пн май 16, 2011 10:54:32
Сообщений: 299
Откуда: Красноярск
Рейтинг сообщения: 0
Если я тебя правильно понял, то тебе нужно вывести свой символ в виде картинки. В самом начале темы есть http://avrprog.blogspot.ru/2013/12/lcd- ... 920-8.html статья . В ней подробно расписано, как обращаться к дисплею в граф. режиме. Сразу скажу, что если тебе нужно вывести 1 символ в "место" не кратное 16 пикселям (да-да, когда адресуешь, то там по оси Х можно выбирать положение только со смещением в 16 пикселей), то нужно будет дописать в код еще и "пробелы", (то есть вывести предыдущий символ + новый), т.к. старый будет затераться. Это было к символам меньше 16 пикселей по горизонтале. А вообще просто прочти в последней, выложенной мной, проект. Там в файле LCD12864.h есть эта функция (правда только со шрифтами 8x8)., но поучиться сойдет. Там подробное описание каждой функции, а в одноименном ".c" файле сама функция. Просто внимательно прочти. Если будет что-то не понятно - пиши.
P.S по оси X все не однозначно, ты можешь перемещаться по 16 пикселей, как было сказано ранее. С 0-го по 7-е смещение ты находишься в верхней части экрана, а с 8-е по 15-е в нижней. По оси Y можно перемещаться с 0 до 31. Почему так - описано в статье. Нужно этот факт помнить, много крови попил, когда писал низкоуровневые модули. И еще. Передать только X или Y не получится. Нужно сначала X, потом Y, а только потом уже коды пикселей...

_________________
Все можно сделать, было бы желание!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Пн авг 04, 2014 07:32:03 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4884
Откуда: Минск
Рейтинг сообщения: 0
Вадиматоричик писал(а):
Нужно сначала X, потом Y, а только потом уже коды пикселей...
Вроде наоборот - сначала Y, потом X.

А вообще да, дисплей странноватый по управлению. Но китайцам для выводов иероглифов, наверное, удобно. Там же внутри их дофигища прошито, и даже некитайские символы (кириллица, латиница) уродливого вида 16x16 там есть... можно, если хочется странного, даже и их выводить в режиме 4 строк по 8 символов.

Всё-таки для такого дисплея идеально использовать кадровый буфер на 1кБ (128*64/8). Но нужен контроллер с хотя бы 2кБ ОЗУ.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Пн авг 04, 2014 08:34:07 
Первый раз сказал Мяу!

Зарегистрирован: Вт апр 23, 2013 16:46:07
Сообщений: 33
Рейтинг сообщения: 0
Все спасибо ща почитаю... А насчет CGROM т.е вывод символов которые прошиты в ПЗУ дисплея, я понял как их выводить... а вот не понял как пихать в CGRAM данные... а потом по какому адресу выводить... ща почитаю...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Пн авг 04, 2014 10:16:03 
Первый раз сказал Мяу!

Зарегистрирован: Вт апр 23, 2013 16:46:07
Сообщений: 33
Рейтинг сообщения: 0
Вадиматоричик писал(а):
Если я тебя правильно понял, то тебе нужно вывести свой символ в виде картинки. В самом начале темы есть http://avrprog.blogspot.ru/2013/12/lcd- ... 920-8.html статья . В ней подробно расписано, как обращаться к дисплею в граф. режиме. Сразу скажу, что если тебе нужно вывести 1 символ в "место" не кратное 16 пикселям (да-да, когда адресуешь, то там по оси Х можно выбирать положение только со смещением в 16 пикселей), то нужно будет дописать в код еще и "пробелы", (то есть вывести предыдущий символ + новый), т.к. старый будет затераться. Это было к символам меньше 16 пикселей по горизонтале. А вообще просто прочти в последней, выложенной мной, проект. Там в файле LCD12864.h есть эта функция (правда только со шрифтами 8x8)., но поучиться сойдет. Там подробное описание каждой функции, а в одноименном ".c" файле сама функция. Просто внимательно прочти. Если будет что-то не понятно - пиши.
P.S по оси X все не однозначно, ты можешь перемещаться по 16 пикселей, как было сказано ранее. С 0-го по 7-е смещение ты находишься в верхней части экрана, а с 8-е по 15-е в нижней. По оси Y можно перемещаться с 0 до 31. Почему так - описано в статье. Нужно этот факт помнить, много крови попил, когда писал низкоуровневые модули. И еще. Передать только X или Y не получится. Нужно сначала X, потом Y, а только потом уже коды пикселей...



Так, вы мне по ссылке дали помойму, где описан графический режим.
А я про текстовый режим. Здесь - http://habrahabr.ru/post/213459/, описывается инициализация.

1) После инциализации, мы указываем на позицию в DDRAM т.е. адрес на дисплее где будет выводиться, символ, делается это специальной командой установки адреса курсора: 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0
С помощью этой команды можно поставить курсор в нужное место вписав за место AC0-AC6 адрес от 0 до 31.

2) Далее мы передаем данные в DDRAM, тем самым указывает адрес символа, в CGROM, делается это специальной командой Write RAM (см. Даташит ST7920, стр. 16/49): B7 B6 B5 B4 B3 B2 B1 B0.
B7-B4 - адрес по вертикали, B3-B0 - адрес по горизонтали.

3) Проделав эти операции, ориентируясь в таблице CGROM, т.е. из таблицы вшитых символов, я выводил символы.

4) В Даташите написано что есть CGRAM, эта область куда мы можем сами вписывать свои символы или другими словами рисовать. Размер этих символов 16x16x4 т.е. размер одного символа будет 16х16 пикселов, и всего таких символов будет 4.
Есть специальная команда для перехода на CGRAM (см. Даташит ST7920, стр. 16/49), Set CGRAM Address 0 1 AC5 AC4 AC3 AC2 AC1 AC0 - где AC5-AC0 адреса в CGRAM.

5) Вопрос:
а) Как адрес этого CGRAM делится по вертикали и по горизонтали?
б) Как "Впихивать" биты? алгоритм? если, можно словесно, по строчно, как в ссылке выше.
в) Впихав данные, я переключусь на DDRAM (Пункт 1), т.е. укажу поцию на дисплее откуда начать вывод символов, далее нужно будет указать адрес своих "впиханных" символов, по каким адресам будут находиться эти символы? Соответственно я буду делать это используя специальную команду (Пункт 2).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Чт авг 07, 2014 18:08:08 
Грызет канифоль

Карма: 1
Рейтинг сообщений: 21
Зарегистрирован: Пн май 16, 2011 10:54:32
Сообщений: 299
Откуда: Красноярск
Рейтинг сообщения: 0
Вы меня заинтересовали. Честно сказать 4 символа 16*16 пикселей - это ни о чем. Не советую их использовать. Сам никогда этим не занимался, т.к. не практично, потому что после вывода каждой русской буквы (за исключением тех, которые совпадают с английской раскладкой) вам придется загружать новую букву. Алгоритм будет тогда такой.
1. В "пустую" CGRAM (память, в которой хранятся коды 4-х специальных символов) грузится новое значение, например буква "Ю" с самым первым адресом (у каждого "спец символа" есть свой адрес, например 0x00 или 0x23. Посмотрю даташит позже). Об алгоритме загрузки пока ничего сказать не могу, не пользовался, но подозреваю, что там все так же, как и с загрузкой граф. изображения, только в меньшем объеме.
2. Переключаешься на режим "стандартных шрифтов" и "пишешь" код своего "спецсимвола" (в данном случае "Ю"). И получаешь его на экране. В данном случае навигация по экрану такая же, как и в представленной вами статье. Работаете со своим символом как с обычным.
3. Если вам нужна еще буква, которой нет в стандартном шрифте, то возвращаетесь к 1-му пункту и с начала.
Уточнения:
1. Если вам нужно всего 4 своих символа, то можно сразу их загрузить в память и потом вызывать без постоянной перезаписи. В случае, если больше, то советую чаще всего используемые оставлять, а перезаписывать только редкие на редкие.
Пример: "Мама мыла раму долго!". М, р, у, а, о, ! - совпадают с английским шрифтом, а вот: ы, м, л, д, г - нет. Здесь буква м часто повторяется, так что ее логичнее оставит, а вот остальные встречаются по 1 разу, тут не важно, как часто будете перезаписывать. Все равно после загрузки первых 4-х символов 2-м не хватит места. И их придется переписывать.
Таким образом код 2-го символа (1-й у нас "м") может быть как ы, так и л, д, или г. Не забываем так же и о порядке следования букв в тексте.
2. Стертые из CGRAM (памяти "картинки" необычного символа), но уже написанные на экране символы не пропадают, т.к. их изображения (расположение на экране) находится в памяти "картинок".
Все сводится к такому: грузим в CGRAM (память граф. изображения необычного символа) -> в текст режиме "пишем" код необычного символа -> он сам попадает в область памяти, которая непрерывно выдается на экран в виде картинки размером 128*64.
Насчет всех ваших вопросов. Пока нет возможности, скоро, специально для вас, напишу подробный алгоритм работы в данном режиме + выложу рабочий код.

_________________
Все можно сделать, было бы желание!


Последний раз редактировалось Вадиматоричик Пт авг 08, 2014 12:01:44, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Чт авг 07, 2014 18:38:38 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 106
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
Вадиматоричик писал(а):
не практично, потому что после вывода каждой русской буквы (за исключением тех, которые совпадают с английской раскладкой) вам придется загружать новую букву.
Интересно, но я именно этот алгоритм применил когда сделал либу печати кириллицей на нерусских 1602 дисплеях...
http://asis-kbr.ru/forum/viewtopic.php?f=13&t=139

Кстати во всю применяю... нерусские индикаторы с алиэкспресса дешевенькие, ок 65 р\шт, пихать можно всюду, а библиотечка при этом выручает :).....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Чт авг 07, 2014 18:53:21 
Грызет канифоль

Карма: 1
Рейтинг сообщений: 21
Зарегистрирован: Пн май 16, 2011 10:54:32
Сообщений: 299
Откуда: Красноярск
Рейтинг сообщения: 0
Метод не мой, наткнулся на него в интернете, с тех пор применяю. У нас цены упали аш до 90 руб за HD477... Но без русского. Там можно обойтись данным методом :))

_________________
Все можно сделать, было бы желание!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Чт авг 07, 2014 22:30:42 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4884
Откуда: Минск
Рейтинг сообщения: 0
cas2010 писал(а):
2. Стертые из CGRAM (памяти "картинки" необычного символа), но уже написанные на экране символы не пропадают, т.к. их изображения (расположение на экране) находится в памяти "картинок".
Вы в этом уверены? Если так, то хорошо..

Просто в том же контроллере HD44780 (KS0066) это немного не так. Правда, там 8 пользовательских символов, а не 4 (хотя в ST7920 они, по идее "двойные"). И если какой-то из них вывести на экран, в том числе, несколько раз в разных позициях, а потом начать менять код символа в CGRAM, то то, что на экране - не остаётся, а начинает синхронно меняться. Т.е. какого-то "экранного" буфера нет, и любое изменение "наполнения" символа в CGRAM тут же отражается на экране, везде где этот символ выведен.

Правда, этот дисплей как бы графический, и, возможно, тут другая ситуация, и символьный режим является всего лишь своего рода упрощённым "прокси" для графического. И то, что на экран попало, уже не зависит от изменений в CGRAM. Правда, я в этом не уверен.

Но если это всё же так, то тогда, наверное, алгоритмически проще не использовать все 4 пользовательских символа, а всего лишь один. Т.е. генерировать любой нестандартный символ "на лету", тут же выводить его на экран, и забывать про него, используя эту же ячейку для следующего нестандартного.


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


P.S. Кстати, кто-нибудь обращал внимание, что в текстовом режиме протокол ST7920 подозрительно похож на KS0066?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Пт авг 08, 2014 01:29:36 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 106
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
WiseLord писал(а):
Кстати, кто-нибудь обращал внимание, что в текстовом режиме протокол ST7920 подозрительно похож на KS0066?

Лично меня, текстовый режим вообще не интересует... если использовать этот дисплей, то только в графическом режиме... именно так как вы упомянули с 1кб буфером...
Я именно об этом тут как то пытался объяснять http://forum.cxem.net/index.php?showtop ... try1787897


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Пн авг 11, 2014 12:23:49 
Грызет канифоль

Карма: 1
Рейтинг сообщений: 21
Зарегистрирован: Пн май 16, 2011 10:54:32
Сообщений: 299
Откуда: Красноярск
Рейтинг сообщения: 2
Вопрос немножко не по теме, но все же. Есть мысль сделать отладочную плату-борд на нашем диспейчике, но не могу определиться с МК. Были вот такие рассуждения:
1. STM32F4... Но без контроллера LCD-TFT (LTDC), т.к. он тут не нужен, но пихать такой камень как-то не очень хочется. Слишком много это 180 мгц, да и с этим дисплеем вполне и 8-ми битки справятся.
2. STM32F103... Сейчас заказал себе модуль на этом мк, по виду, как Arduino Nano, думал сделать плату с местом под эту платку. Или же сразу впаять свой мк со своей обвязкой.
3. Atmega328p. В принципе в ней есть все, что необходимо для нашего дисплея и общения с PC по USART, + дополнительные пины. Его мощности (20 мгц + аппаратный SPI) вполне хватит для работы с дисплеям, + много свободного процессорного времени он будет просто спать. ОЗУ, конечно мало, но зато цена в 120 руб вполне приемлема. На Atmega8 точно делать не буду, т.к. в ней нет отладки, а я рассматриваю варианты именно с отладкой. + нельзя будет держать буфер экрана. Но на этот счет я просто добавлю в библиотеку несколько функций, которые будут работать напрямую, без участия ОЗУ.
Так же включу в борд и всю необходимую обвязку для приятной работы (выходы под программирование и отладку, питание, стабилизаторы, держатель экрана, переменный резистор и т.д.).
Пока неизвестно, куда смогу засунуть этот агрегат, но хочется сделать. Т.к. периодически появляется желание попробовать подключить экран к чему-то, и каждый раз провода - надоели. Прошу дать обоснованный совет. Просто хочется сделать "игрушку" с возможностью потом реального применения. И еще. Если время позволит, все же хотелось бы написать свою API для работы с этим экраном + программу-конструктор интерфейса для компьютера.

_________________
Все можно сделать, было бы желание!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Пн авг 11, 2014 22:26:40 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 106
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
Вадиматоричик писал(а):
Есть мысль сделать отладочную плату-борд на нашем диспейчике
У меня тоже давно веет... правда не отладочную плату, а законченый универсальный модуль, который можно использовать как например панель управления.

Вадиматоричик писал(а):
не могу определиться с МК.
Давно определился... хочу использовать с STM32F100C8T6B, уже год лежат 10 штучек, вот только нужен какой то "толчек" :)...
Брал тут http://ru.aliexpress.com/item/Free-ship ... nVersion=1
Штучка по 50р... вроде самэ то, флэша 64кб, оперативки 8кб... Как раз и буфер дисплея прекрасно будет себя чувствовать...

Вадиматоричик писал(а):
Были вот такие рассуждения:
1. STM32F4... .... Слишком много это 180 мгц, да и с этим дисплеем вполне и 8-ми битки справятся.
Именно, слишком жирно...

Вадиматоричик писал(а):
2. STM32F103...
Тоже жирновато...

Вадиматоричик писал(а):
3. Atmega328p.
В принципе можно... если бы не это -
Вадиматоричик писал(а):
ОЗУ, конечно мало
и не это
Вадиматоричик писал(а):
цена в 120 руб


Вадиматоричик писал(а):
На Atmega8 точно делать не буду
Она только для обычного символьного 1602 - самэ то...
Для нашего дисплея - утопия... Графики совсем не поместится...

Вадиматоричик писал(а):
Пока неизвестно, куда смогу засунуть этот агрегат, но хочется сделать.
Ну мне проще... у меня есть конкретная цель...
Для начала это будет панель управления умным двором... потом, панель управления бензиновым электрогенератором... ну и на потом есть еще несколько прикидок...
Для всего этого должен использоваться один универсальный модуль с дисплеем ST7920...
У него будет:
6 кнопок управления (esc, left, right, up, down, enter)
Цифровая шина S-Line (моя разработка, типа K-Line, только со своим протоколом, кодирование MANCHESTER на скорости 1кб\с - 16кб\с) можно подключать до 128 сканирующих\коммутирующих устройств.
Шина RS-485 (для связи с компом).
Линия 1wire (для термодатчиков, хотя их можно включать и в модули на линии S-Line)
Шилды расширений и портов.
Ну вроде как то так... если чего не забыл.....

Вадиматоричик писал(а):
хотелось бы написать свою API для работы с этим экраном
Я хочу вообще исключить работу с текстовым режимом дисплея. Будет буфер дисплея в RAM контроллера 1кб, вся печать, и текст и графика, будут непосредственно туда (если будет много шрифтов, или графических картинок, можно ARM на 128кб воткнуть).
В фоне, с помощью DMA этот буфер будет рефрешить дисплей, например с частотой 10гц, или чаще.

Таким способом, можно построить очень гибкую библиотеку:
Функции печати разными шрифтами без привязки к знакоместам
Функции вывода диалоговых окон в рамках
Функции вывода упакованных картинок с печатью текстом поверх картинки
В обЧем... аж слюни текут.....

Кстати... графику как таковую (линии, круги и прочие фигурки) думаю не буду реализовывать... все что мне надо - оконный интерфейс и упакованные картинки...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Вт авг 12, 2014 05:11:38 
Грызет канифоль

Карма: 1
Рейтинг сообщений: 21
Зарегистрирован: Пн май 16, 2011 10:54:32
Сообщений: 299
Откуда: Красноярск
Рейтинг сообщения: 2
1. Попробую реализовать вашу идею от нечего делать, может что и получиться.
2. Под API я и имел ввиду оконный интерфейс. Например написал Button(0, 0, standart, scan) и МК сам рисует кнопку в определенном окне и опрашивает сенсор, а когда будет нажатие, на экране делает ее графическую инверсию (чтобы было понятно, что кнопка нажата) и вызывает нужную функцию.
3. Как я понял, вам нужно USART/UART для связи с компьютером (планирую развести как этот интерфейс в чистом виде, так вставить FT232 c USB выходом) + расширитель портов + развести выводы под различные интерфейсы с удобными держателями. Это и мне самому нужно.
4. Я все же ещё добавлю помимо кнопок сенсорный экран. Так что 4 пина придется потратить. Заказал в 48-ногом корпусе.
5. Насчёт DMA. Забудьте про это! Я это уже прошёл. Весь мозг себе взорвал. 4 дня пытался. Не получилось.
* Во-первых. Вам придётся потратить 4 КБ. ОЗУ. Да-да! Чтобы выводить через дма нужно не менее 4-х КБ. + вам нужно будет в каждой функции библиотеки учитывать организацию памяти, а она будет такая, что и врагу не пожелаешь. Инициализации дисплея мы пока пропускаем, а передача будет таковой: (формулировка: передать 1 байт данных/команды = 1 байт управления + байт со старшей половиной + байт с младшей половиной. И того 1 байт будет занимать 3 в ОЗУ, чтобы передача велась без участия процессора.) передаем команду с адресом x/y (2 цельных байта, в ОЗУ - 6), 16 байт строки (или сразу 32, чтобы сэкономить на указании адреса в каждой строк, но тогда адресация будет убийственная), и так далее до конца передачи всех строк.
* Здесь есть один фокус с задержками. Команды выполняются не мгновенно. А это значит, что после передачи команды нужно обязательно ждать, что уже делает передачу по DMA бесполезной. Был такой вариант "Передаем команду х/у, ждём, передаем из ОЗУ уже переведенные в формат дисплея данные по DMA, переинициализируем DMA на новый адрес ОЗУ. И так каждый раз. Вообщем получилось так что по прерываниями с эти дисплеем работать в 100 раз проще чем с dma. Да и количество потребляемых ресурсов сокращается в разы (в 5!!!). А если потом использовать какую-нибудь ОС, то SPI лучший вариант. Т.к. пока он передает - можем поспать.
P.S. Начал делать борд. Но не нашел форм-фактора данного МК (LQFP48) для Sprint-Layout. Пришлось делать самому:
Вложение:
STM32F100xx value line LQFP48 pinout.rar [95.59 KiB]
Скачиваний: 346

Прошу указывать на ошибки, если они есть. А то был опыт со 100 ногим STM32. Там на долю миллиметра ошибся и ножки поплыли.
Делал по этому материалу, а подписи брал из даташита.
Вложение:
modelLQFP48.rar [142.31 KiB]
Скачиваний: 327

P.S.S. Нашего LCD так же не нашел, а в даташите нет нормального чертежа. Делал по этой картинке:
Вложение:
dimension.jpg [54.3 KiB]
Скачиваний: 619

Вот в .lay для все того же Sprint-Layout-а.
Вложение:
LCD12864.rar [4.44 KiB]
Скачиваний: 403

Вопрос:
1. Стоит ли в модуль добавлять высоковольтное реле? Если да, то сколько штук? (Само собой реле через мосфет транзистор).

_________________
Все можно сделать, было бы желание!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Вт авг 12, 2014 10:34:20 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 106
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
Вадиматоричик писал(а):
Я все же ещё добавлю помимо кнопок сенсорный экран.
Это конечно заманчиво... Но мне пока как то это кажется усложнением, хотя подумаю тоже.
А что есть подходящее для этого дисплея и по чем?

Вадиматоричик писал(а):
Насчёт DMA. Забудьте про это! Я это уже прошёл. Весь мозг себе взорвал. 4 дня пытался. Не получилось.
Ну в начале можно конечно и без DMA, но потом думаю все таки лучше разобраться...

Вадиматоричик писал(а):
придётся потратить 4 КБ. ОЗУ. Да-да! Чтобы выводить через дма нужно не менее 4-х КБ.
Это что, даже если мне надо отправить 10 байт, придется выделять 4кб ?????

Вадиматоричик писал(а):
вам нужно будет в каждой функции библиотеки учитывать организацию памяти, а она будет такая, что и врагу не пожелаешь.
Это вы говорите про расположение переменных в RAM? Так это только на асме должна голова об этом болеть... а на Си - это не актуально... там компилятор все сам учитывает и располагает...
Если же все таки имеете ввиду организацию видеопамяти внутри дисплея то об этом ниже...

Вадиматоричик писал(а):
передача будет таковой: (формулировка: передать 1 байт данных/команды = 1 байт управления + байт со старшей половиной + байт с младшей половиной. И того 1 байт будет занимать 3 в ОЗУ, чтобы передача велась без участия процессора.) передаем команду с адресом x/y (2 цельных байта, в ОЗУ - 6), 16 байт строки (или сразу 32, чтобы сэкономить на указании адреса в каждой строк, но тогда адресация будет убийственная), и так далее до конца передачи всех строк.
Сложно вы все представляете...
Я думаю можно передавать в дисплей, весь массив от начала до конца... и в буфере озу сохранить ту же структуру что и внутри дисплея... ничего страшного в такой организации буфера не вижу... вы вспомните как устроен буфер экрана в спектруме, и ничего, все бегало, прыгало :).....
Так что если DMA использовать, то контроллер только в начале по прерыванию задаст параметры передаваемого буфера и все, дальше участия не принимает, буфер сливается аппаратно...

Вадиматоричик писал(а):
есть один фокус с задержками. Команды выполняются не мгновенно. А это значит, что после передачи команды нужно обязательно ждать, что уже делает передачу по DMA бесполезной. Был такой вариант "Передаем команду х/у, ждём, передаем из ОЗУ уже переведенные в формат дисплея данные по DMA, переинициализируем DMA на новый адрес ОЗУ. И так каждый раз. Вообщем получилось так что по прерываниями с эти дисплеем работать в 100 раз проще чем с dma. Да и количество потребляемых ресурсов сокращается в разы (в 5!!!).
Это не актуально, если буфер передавать целиком и оставить его структуру как в дисплее...

Вадиматоричик писал(а):
Вопрос: Стоит ли в модуль добавлять высоковольтное реле? Если да, то сколько штук? (Само собой реле через мосфет транзистор).
Я не буду добавлять никакие силовые цепи, у меня будет чисто мозг с общением с внешним миром по цифровой линии или по RS485...
Например в варианте с электрогенератором - будет отдельно панель управления (вся моя плата с дисплеем и кнопками управления), и отдельно силовой шкаф с пускателями и силовой схемой (и кстати с еще одним контроллером)... так что панель можно будет прикрепить куда угодно, хоть на дверцу шкафа, хоть на стену...
Но в вашем случае, если это будет больше стенд, чем конечное устройство, то может и можно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Вт авг 12, 2014 12:24:40 
Грызет канифоль

Карма: 1
Рейтинг сообщений: 21
Зарегистрирован: Пн май 16, 2011 10:54:32
Сообщений: 299
Откуда: Красноярск
Рейтинг сообщения: 0
1. Сенсор купил самый дешевый от LG GT540 за 80 руб (новый). Но немного прогадал с размером. Он практически 1 в 1 с видимой областью экрана, а по-этому часть пикселей не видно. Но ничего страшного в этом нет. Для домашних опытов сойдет. Но в будущем, если будете искать себе - берите с запасом. Все равно результаты ADC придется переводить в свой формат (эта функция есть в последней выложенной мною библиотеке).
2. По-поводу DMA. Сложно говорить о таких вещах без картинок. По-этому сейчас все поясню наглядно:
http://img.radiokot.ru/files/37453/f149e8bpt.jpg
Надеюсь, что так будет понятнее. С точки зрения DMA, мы просто указываем ему начало буфера и его конец (начало + 3456 байт). И он спокойно выдает все на экран. Такой способ работал у меня, но приходилось понижать скорость SPI, чтобы после передачи 6 байт (2 разложенных) указателя на строку LCD успел перевести указатель.

_________________
Все можно сделать, было бы желание!


Последний раз редактировалось Вадиматоричик Вт авг 12, 2014 13:05:36, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Вт авг 12, 2014 13:05:06 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 106
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
Вадиматоричик писал(а):
По-поводу DMA. Сложно говорить о таких вещах без картинок. По-этому сейчас все поясню наглядно:
http://img.radiokot.ru/files/37453/f149e8bpt.jpg
Я все равно особо не въехал... ну да ладно, я тоже скоро попробую реализовать первые опыты, там уже легче обсуждение пойдет :)...
И кстати, я хочу подключить дисплей по 8 бит шине, а не по SPI... По крайней мере в моем случае нет смысла экономить на ногах контроллера...


Последний раз редактировалось shads Вт авг 12, 2014 13:07:49, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Графический дисплей LCD 12864 (128x64 пикселя) на ST7920
СообщениеДобавлено: Вт авг 12, 2014 13:07:10 
Грызет канифоль

Карма: 1
Рейтинг сообщений: 21
Зарегистрирован: Пн май 16, 2011 10:54:32
Сообщений: 299
Откуда: Красноярск
Рейтинг сообщения: 0
shads писал(а):
Вадиматоричик писал(а):
По-поводу DMA. Сложно говорить о таких вещах без картинок. По-этому сейчас все поясню наглядно:
http://img.radiokot.ru/files/37453/f149e8bpt.jpg
Я все равно особо не въехал... ну да ладно, я тоже скоро попробую реализовать первые опыты, там уже легче обсуждение пойдет :)...
И кстати, я хочу подключить дисплей по 8 бит шине, а не по SPI... По крайней мере в моем случае нет смысла экономить на ногах контроллера...

Тогда с DMA все будет элементарно!!! Вам не нужно будет делать преобразование под SPI формат, а так же соблюдать расположение байт. Достаточно будет указать откуда (начало озу), сколько (1024), и куда (адрес порта). НО. Со стробом-то как быть? Как вариант - настроить таймер и шим, пустив вместе с DMA.

_________________
Все можно сделать, было бы желание!


Последний раз редактировалось Вадиматоричик Вт авг 12, 2014 13:09:36, всего редактировалось 2 раз(а).

Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 240 ]    , , 3, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y