Перейти к содержанию

Инициализация дисплея L2F50126


Гость StyleWarrior

Рекомендуемые сообщения

Помогите разживать подключение дисплея L2F50126, что куда подключать (интересуют DAT, CLK, Reset, RS, CS)

- Микроконтроллер ATmega64

- 1.8 и 2.9 Вольт, собраны на ams1117 - 2.9В

- кварц на 16Mhz

 

У всех получается все нормально пишут тест, хелоу ворлд, а у меня только свечение подсветки и больше ничего :smile:

Интересует кодик под CVAVR, только не пинайте по поиску уже все искал инфы особой нету именно для L2F50126, включая немца - ничего не работает :smile:

Вот ссылка _https://forum.datagor.ru/index.php?s=&showtopic=158&view=findpost&p=11373 по ней тоже ничего не работает, сначала думал спалил дисплей, но потом на форуме нашел прошивку правда для меги32 залил ее к себе и прошла инициализация, но ничего не вывелось, я так думаю потому что не для того контроллера прошивка, исходников там не нету

_https://www.elektroda.pl/rtvforum/topic1717404.html#8540199

Инициализация проходит на данной прошивке мерцанием полосок сверху вниз дисплея, примерно 0.3-0.5 секунд, а потом ничего не выводится.

 

Помогите разобраться с даным дисплеем.

Изменено пользователем StyleWarrior
Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...
Инициализация проходит на данной прошивке мерцанием полосок сверху вниз дисплея, примерно 0.3-0.5 секунд, а потом ничего не выводится.

 

Помогите разобраться с даным дисплеем.

 

Подключил через делитель к LPT порту. Подавал команды, "дергая" битами. Получился очень медленный SPI. Однако после прогонки кодов инициализации L2F50126 включился, но дальше ничего. Только "мусор" на экране. Подавал сигнал RESET, выключается. Снова команды, включается. Но! Я заметил, т.к. SPI очень медленно эмулируется (PENTIUM 733 Мгц, 640 Mb SDRAM), что экран включается не дождавшись окончания передачи команд. Начал проверять все коды по очереди. Оказалось, что достаточно передать байт $AF (175), и ОНО включается.

Откопал в сети документ L2F50052Т01. Он "говорит", что код $AF - это DISON. А код $AE - это DISOFF.

Пробую подать байт $AF - вижу мусор, потом подаю $AE - ничего не вижу. Значит команды другие.

Вот итог моих исследований согласно документа L2F50052Т01:

$AF - включить дисплей,

$AE - выключить дисплей,

$A6 - нормальный дисплей,

$A7 - инверсный дисплей,

$95 - спать,

$94 - проснуться,

$5C - сказать дисплею, что сейчас начнется передача данных в его память.

---передавать данные(отличаются уровнем сигнала на "ноге" RS) в порядке байт R, байт G, байт B для каждого пиксела. Это я проделал 132х176=23232 раза. Итого 69696 байт занял весь экран.

---заканчивается передача командой $25 (NOP), или другой управляющей последовательностью. Следующая передача данных начнется опять в координатах 0x0, если прервать передачу данных командой.

Для установки области заполнения тоже есть команды, но я еще не разобрался.

 

Итого я смог загрузить картинку в дисплей (10 сек - 12 сек). Программу писал в среде Delphy.

Увидел такой прикол - загрузил картинку, выключил дисплей(отключил питание, он потух), подключил через 5-7 сек, подал команду включить, картинка осталась. Мусор появлялся только после пропадания питания на 1-1.5 мин.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Немножко подробней о том, что у меня вышло:

 

Подключение L2F50126 производил согласно этой схеме:

post-13155-1342690801_thumb.jpg

Сигналы RS,RESET,DATA,CS,CLK брал с LPT порта (там, правда лог.1 не 5, а 3.6 вольта и после делителя получилось порядка 1.6-1.8 Вольт, но экран работает).

LPT портом управляет программа, либо Proteus (с компонентом LPT):

post-13155-1342691215_thumb.jpg

Делал следующее:

--подал RESET(низкий уровень), выждал время, перевел на высокий уровень.

--подал CS(низкий уровень)

--установил режим команды (RS низкий уровень)

--передал байт $AF (биты 7-6-5-4-3-2-1-0)

Экран выдал:

post-13155-1342691879_thumb.jpg

--установил режим команды (RS низкий уровень)

--передал байт $5С (биты 7-6-5-4-3-2-1-0)

--установил режим данные (RS высокий уровень)

--передаю байты B(биты BBBBBB00),G(биты GGGGGG00),R(биты RRRRRR00) для каждого пиксела

Экран в это время мерцает, и продолжается это пока не сменить сигнал CS на высокий, или не изменить режим на команду (RS низкий уровень) и передать какую-либо команду.

 

Добавлено после раздумий:

Вот примеры ужатого до 132х176 изображения и переданного в экран:

post-13155-1342692764_thumb.jpg

post-13155-1342692791_thumb.jpg

Можете оценить результат.(Есть мнение, что я напутал с кодировкой интенсивности каждого из оттенков RGB)

Далее выложу результат работы Proteus`а.

 

Добавлено после раздумий:

Написал процедуру запуска для Atmega16 (не полностью мой код), и вот график работы, но без временных отрезков:

post-13155-1342693590_thumb.jpg

Хочу посмотреть, как все это заработает на реальной микросхеме.

Вот начальный результат работы с пояснениями для координат дисплея:

post-13155-1342693689_thumb.jpg

А это, то что программа рисует сейчас. Есть небольшой глюк - когда компьютер проработал еще несколько минут, происходит запись в порт LPT и дисплей вырубается. Если перезапустить программу, то видно, что фон очистился только до момента сигнала RESET, а остальное все написано. Видимо дисплей правильно распознает все команды и без инициализации и начинает отображать, то что в него загрузили после команды $AF

post-13155-1342693866_thumb.jpg

Изменено пользователем KIvAlex
Ссылка на комментарий
Поделиться на другие сайты

Что бы засветить точку с координатами 85,15 синим цветом проделываю.

Дисплей уже что-то отображает.

Обращаюсь к нему (CS низкий), передаю команду(RS низкий) 0х15, данные (RS высокий) 0х55(85 DEC),0х00,0х55,0х00.

Теперь я граничил область заполнения справа налево от 85 до 85. Если сейчас начать писать в память, то будет прорисовываться вертикальная черта на расстоянии 85 точек от правого края.

Далее передаю команду(RS низкий) 0х75, данные (RS высокий) 0х0F(15 DEC),0х0F.

Обратите внимание, что предыдущая команда требовала передать дополнительный байт после каждого значащего байта. Экран использует из него только младший бит, это говорит о том, что максимально первая команда может ограничиться от 0-й до 0х01FF (511-й) точки, а увидим мы только как заполняются точки от 0 до 131, а следующая строчка начнет заполняться только после передачи 512 пикселов первой строчки.

Итак, теперь ограничена область 85,85,15,15, и, если начать запись в память то будет изменяться только точка 85,15.

Передадим синий цвет: передаю команду(RS низкий) 0х5С(экран мерцает), данные (RS высокий) B=0хFC,G=0х00,R=0х00(экран еще мерцает).Завершаю работу с дисплеем(CS высокий). Экран показывает синюю точку в 85,15.post-13155-1342704997_thumb.jpg

Теперь опишу то, что я выяснил путем проб и еще раз проб :smile: .

Есть команда 0xBC, она задает режимы записи в память дисплея и требует байт данных, в котором описан режим работы контроллера заполнения ячеек памяти(Это моя догадка, т.к. контроллер отображения начинает мерцать при записи в память, видимо конфликтует с ним и попадает всегда на ячейку с одним и тем же номером).

Вот фрагмент кода:

ldi r16,0xBC

call SCRCMDTransmit //передаю команду, далее описание битов байта режима работы.

 

//M - 1 зеркало по вертикали(заполняется снизу вверх) / 0 заполнение сверху вниз

//W - 1 игнорировать запись в память экрана, команды выполняются/ 0 нормальный режим работы

//С - 1 режим 565 / 0 режимì 666

//Z - 1 передача цвета в порядке R G B / 0 передача цвета в порядке B G R

// X00CZXWM

 

ldi r16,0b00000000

call SCRDATATransmit //передаю байт

 

 

Фотографий режима 565 я не сделал, но выглядит это не очень...

При работе в этом режиме контроллер в пиксел отправляет только два байта вместо трех. Они содержат биты трех цветов (BBBBBGGG, GGGRRRRR). После принятия пиксела, контроллер сдвигается через точку по ширине и снова принимает два байта. Это приводит к тому, что при заливке квадрата одним цветом, при установленной ширине (например 10) требуется вдвое меньше число передач цвета для пикселей (всего 5). Это увеличивает скорость, но изображение выглядит полосатым(черные линии между строчками) и изображение двоится синекрасным(а-ля PAL сигнал при ближайшем рассмотрении).

 

Всего этого мне пока хватает. Есть мысль разобраться с прокруткой, но занят сопряжением с блоком ЭБУ, а на эмуляторе этого не сделать.

 

Интересно, а сможет ли USART в Atmega работать на скорости 10400 ?

post-13155-1342707354_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

"Зашил" программу в ATMega32, заработали кнопки и световая индикация. Программа выполняется нормально, как и в Proteus, но дисплей молчит. Сравнил напряжение на выводах микросхемы (4,7В) и порта LPT (3,6В), может в этом причина. И еще я оставил в работе внутренний 1МГц генератор, программа медленно выполнялась(намного медленнее, чем в ProteusЕ). Снаружи поставил резонатор 12МГц, но не разобрался как включить его. Это мой первый опыт в прошивке микросхем. Прошивал PonyProg-ом, английской версией программы, т.к. в русскоязычной версии контроллер никак не хотел прошиваться (там кроме ATMega323 не было ничего).

Ссылка на комментарий
Поделиться на другие сайты

Этот дисплей от телефона Siemens S65. Сам телефон может работать с дисплеями трех типов(может распознать какой именно дисплей в него установили, где-то читал, что по комбинациям резисторов, установленных между выводов). У меня оказался L2F50126, а с ним мало кто работал.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Ура!!! Все заработало на реальной микросхеме, как с внутренним генератором, так и с внешним 12 МГц. Скорость заполнения хочется побольше. Придется придумать другой алгоритм заполнения, на 16 МГц ATMega32 может отказаться работать.

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

Напишу код для тестового запуска этого экрана для "Меги" и выложу.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Здрасьте!

как успехи с l2f50?

тоже мучаюсь не могу запустить очистку экрана.ищу модельку для протеуса.

если у вас есть какие наработки поделитесь пожалуйста.

Заранее благодарен.

Изменено пользователем trey3499
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...