0 / -1 / 0
Регистрация: 03.04.2017
Сообщений: 63
|
|
LCD 1602 инициализация только после Reset11.04.2017, 15:54. Показов 17313. Ответов 77
Метки нет Все метки)
(
Доброго времени суток.
Чрезвычайно удивляет ситуация, которая сложилась у меня с моим девайсом. Требуется совет. Имею в девайсе экранчик LCD типа 1602 (какой то китайский друг), подключается по 4х битной шине. Последовательность инициализации коротко: Настраиваем порт; Ждем 20 мс; Разрядность шины = 8 бит ($3); NOP ($0 - это для случая, если экран был инициализирован под 4-х битную разрядность: переводим обратно в 8-битный режим); Ждем 4.1 мс; Разрядность шины = 8 бит ($3); Ждем 100 мкс; Разрядность шины = 4 Бит ($2); Ждем; Разрядность шины = 4 Бит ($2); + размер символа ($8) Очистка; Ждем 5 мс; Проблема в следующем. При включении питания экран не инициализируется. Первая строка залита черными квадратами. Если микроконтроллер сбросить, инициализация и вывод на экран проходит в штатном режиме. Пробовал увеличивать время первоначального ожидания (фактически делал остановку, пока не будет нажата кнопка, выжидал секунды). Пробовал садить RESET контроллера на ноль, после этого подавать питание, немного погодя отпускать RESET - та же история. Пробовал увеличивать все задержки по максимуму (1,5 мс - строб = 1 - 1,5 мс - строб = 0 - 1,5 мс), не помогает. То, что дисплей после сброса работает четко, наталкивает на мысль, что выдержки я выбрал правильно. Не понятно, почему заводится только после ресета... P.S. В протеусе всё ОК.
0
|
11.04.2017, 15:54 | |
Ответы с готовыми решениями:
77
I2C и LCD 1602 STM32F030F4 + 74HC595 + 1602 LCD
|
![]() ![]() |
||
11.04.2017, 16:01 | ||
Попробуйте:
0
|
![]() ![]() |
|
11.04.2017, 16:04 | |
Видимо да. Если у вас 0x08 это выключить, а 0x08 | 0x04 это включить.
0
|
![]() ![]() |
|
11.04.2017, 16:08 | |
0
|
![]() ![]() |
|
11.04.2017, 16:13 | |
Попробуйте сначала в 4 битный, потом выключить, настроить и включить.
0
|
0 / -1 / 0
Регистрация: 03.04.2017
Сообщений: 63
|
|
11.04.2017, 16:18 [ТС] | |
Так вся настройка и заключается в том, чтобы перевести в 4-х битный режим :-)
Сделал по-другому, убрал всё лишнее. Теперь только перевод в 4-х битный режим. Ждем 20 мс; Разрядность шины = 4 бит ($2); Разрядность шины = 4 Бит ($2); + размер символа ($8) Включение $0c Очистка; Ждем 5 мс; Добавлено через 13 секунд Ничего не изменилось
0
|
![]() ![]() |
||||||
11.04.2017, 16:18 | ||||||
Вот такое когда-то писал. Работало стабильно.
0
|
0 / -1 / 0
Регистрация: 03.04.2017
Сообщений: 63
|
|
11.04.2017, 16:25 [ТС] | |
Rius, увы, пишу на ассемблере, не использую флаг Busy (RW вобще не использую), ваш синтаксис не понимаю, что где происходит, какие команды отправляются... вот если бы вы накинули задержки и команды в HEX-е, было бы замечательно
Добавлено через 1 минуту Склоняюсь, всё-таки, к аппаратной проблеме, ибо испробовал различные последовательности инициализации, плюс те что нашел на форумах, плюс друг своей библиотекой поделился, плюс сам ранее писал для этого дисплея, не было проблем ![]() Но всё же не пойму, где искать? Задержка после подачи питания никак не спасает. Добавлено через 1 минуту Смириться тоже не могу, ресет контроллера не выведен, оперирую проводочком и нулевой дорожкой...
0
|
![]() ![]() |
||||||
11.04.2017, 16:33 | ||||||
А нет, была у меня именно 4 битная шина.
Задержек не использовал. Команд в HEX нет в чистом виде, их много и 3 уровня абстракции) Ожидание в инициализации и в остальных командах выполнял так:
0
|
0 / -1 / 0
Регистрация: 03.04.2017
Сообщений: 63
|
|
11.04.2017, 17:08 [ТС] | |
Rius, Вы прислали кусок кода чтения флага Busy и адреса в CGRAM, немного не то, чего бы мне хотелось :-) команды в HEX-е я имел ввиду те, которые Вы засылаете в LCD (должны же они быть, если Вы сами писали библиотеку).
Я в своем девайсе не могу читать флаг Busy, потому что ногу R/W LCD посадил на ноль. Ибо никогда ей не пользуюсь.
0
|
![]() ![]() |
|||||||||||||||||||||||||||||||||
11.04.2017, 17:17 | |||||||||||||||||||||||||||||||||
А этот синтаксис вы говорите, что не понимаете: Кликните здесь для просмотра всего текста
0
|
![]() ![]() |
||
11.04.2017, 17:39 | ||
0
|
![]() ![]() |
||
11.04.2017, 18:01 | ||
И тут советы посмотрите ещё: Графический и текстовый режим дисплеев Winstar.
0
|
Модератор
![]() 8963 / 6729 / 921
Регистрация: 14.02.2011
Сообщений: 23,760
|
||
11.04.2017, 18:08 | ||
я делал по вот такой схеме http://cxem.net/mc/mc134.php на разных процессорах и с разными дисплеями никогда проблем не было Добавлено через 3 минуты и еще 8битный режим(3) выставляем три раза
0
|
0 / -1 / 0
Регистрация: 03.04.2017
Сообщений: 63
|
|||
11.04.2017, 18:11 [ТС] | |||
0
|
11.04.2017, 18:11 | |
Помогаю со студенческими работами здесь
20
как подружить stm32f4discovery + 16x2 (1602) lcd Вывод слова на LCD 1602 в МК PIC16F628 с помощью C++ Подключение LCD 1602 через I2C к STM32F4 без библиотеки Hal LCD 1602 не работает - подсвечиваются только ячейки первой строки Не находит адрес lcd 1602 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
![]() |
||||
с++ Что нового?
russiannick 06.06.2025
Продолжаю обзор dev-cpp5. 11. Посмотрев на проекты, предоставленные нам для обучения, становится видно, что они разные по содержащимся файлам
где:
. dev обязательно присутствует
. cpp/ . c один из них. . .
|
WebAssembly в Kubernetes
Mr. Docker 06.06.2025
WebAssembly изначально разрабатывался как бинарный формат инструкций для виртуальной машины, обеспечивающий высокую производительность в браузерах. Но потенциал технологии оказался гораздо шире - она. . .
|
Как создать первый микросервис на C# с ASP.NET Core, step by step
stackOverflow 06.06.2025
Если говорить простыми словами, микросервисная архитектура — это подход к разработке, при котором приложение строится как набор небольших, слабо связанных сервисов, каждый из которых отвечает за. . .
|
Рисование коллайдеров Box2D v2 на Three.js с помощью порта @box2d/core
8Observer8 06.06.2025
Используется порт Box2D v2 под названием @box2d/ core - пакет NPM. Загрузил документацию Box2D v2 на Netlify: https:/ / box2d-v2-docs. netlify. app/ Документацию Box2D v2 можно скачать с официального. . .
|
Как создать стек в Python
AI_Generated 05.06.2025
Как архитектор с более чем десятилетним опытом работы с Python, я неоднократно убеждался, что знание низкоуровневых механизмов работы стеков дает конкурентное преимущество при решении сложных задач. . . .
|
Server-Sent Events (SSE) в Node.js
run.dev 05.06.2025
Потоковая передача данных с сервера прямо в браузер стала повседневной потребностью - от биржевых графиков и спортивных трансляций до чатов и умных дашбордов. Много лет разработчики полагались на. . .
|
Создаем RESTful API на Golang с Fiber
golander 04.06.2025
Я перепробовал десятки фреймворков для создания RESTful API за последние годы, и когда впервые столкнулся с Fiber, понял, что это совсем другой уровень. Нет, я не собираюсь рассказывать сказки о. . .
|
Как работать с куки в ASP.NET Core
UnmanagedCoder 04.06.2025
Когда я впервые начал работать с куки в ASP. NET Core, меня поразило, насколько отличается работа с ними от классического ASP. NET. В Core все стало более декомпозированным - больше нет удобного. . .
|
Рисование коллайдеров физического движка Box2D-WASM v3 на Three.js
8Observer8 04.06.2025
Erin Catto (автор Box2D) переписал с нуля Box2D v2 с С++ на Си и появилась версия Box2D v3. Birch-san собрал Box2D v3 в WebAssembly (WASM), чтобы можно было использовать Box2D v3 на JavaScript.
В. . .
|
Worker Threads и многопоточность в Node.js
Reangularity 03.06.2025
Если вы когда-нибудь посещали собеседования на позицию Node. js разработчика, почти наверняка слышали заезженную фразу: "Node. js - однопоточная платформа". Звучит как неоспоримый факт, который. . .
|