|
0 / -1 / 0
Регистрация: 03.04.2017
Сообщений: 63
|
|
LCD 1602 инициализация только после Reset11.04.2017, 15:54. Показов 20342. Ответов 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
|
|
47 / 45 / 2
Регистрация: 23.01.2019
Сообщений: 360
|
|||
| 27.05.2025, 19:10 | |||
|
я использую в
В даташите 8-ми и 4-х битный указаны. Дисплею всё равно, напрямую с контроллера идёт или через айтуси прокладку ![]() В принципе мой ответ под заголовок темы..
0
|
|||
|
1494 / 512 / 75
Регистрация: 22.09.2023
Сообщений: 1,608
|
||
| 27.05.2025, 20:15 | ||
Сообщение было отмечено ValeryS как решение
Решение- 8-битный, готов к приему команды целиком - 4-битный, готов к приему старшей тетрады команды - 4-битный, старшую тетраду команды принял, ждет младшую тетраду. Для перевода его в 4-битный режим нужно 3 раза подать команду 3x и 1 раз 2x. Обозначим эти команды как a, b, c, d Допустим, дисплей был в 8-битном режиме. Тогда: команда a - не влияет на работу, он и так в 8-битном режиме команда b - то же самое команда c - то же самое команда d - воспринимается как 8-битная команда и переводит в 4-битный режим. Допустим, дисплей был в 4-битном режиме и ждал команду. Тогда: команда a - воспринимается как старшая тетрада команды перевода в 8-битный режим команда b - воспринимается как младшая тетрада команды перевода в 8-битный режим, дисплей переходит в 8-битный режим команда c - не влияет на работу, он и так в 8-битном режиме команда d - воспринимается как 8-битная команда и переводит в 4-битный режим. Теперь допустим, дисплей был в 4-битном режиме и уже получил первую тетраду команды когда проц сбросили. Тогда: команда a - воспринимается как младшая тетрада предыдущей команды. Да и фиг с ней, все равно инитим дисплей. команда b - воспринимается как старшая тетрада команды перевода в 8-битный режим команда c - воспринимается как младшая тетрада команды перевода в 8-битный режим, дисплей переходит в 8-битный режим команда d - воспринимается как 8-битная команда и переводит в 4-битный режим. Эта последовательность работает 100% с любым 44780-совместимым дисплеем. Добавлено через 9 минут Добавлено: кстати да, эта последовательность описана в некоторых даташитах на контроллер, но нигде не дается ее объяснение, до него я доходил сам.
2
|
||
|
4 / 4 / 0
Регистрация: 22.08.2023
Сообщений: 30
|
|
| 29.05.2025, 16:14 | |
|
извиняюсь но вот ваш ответ не объясняет как после перевода в 4 бит режим давать следующие команды уже по 4 шинам , да и ни черта у меня не работало по этой стандартной , везде упомянутой схеме. Может китайцы намудрили но у меня заработало совсем по другому.
0
|
|
|
1494 / 512 / 75
Регистрация: 22.09.2023
Сообщений: 1,608
|
||
| 29.05.2025, 20:14 | ||
|
0
|
||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
|
|||
| 29.05.2025, 20:30 | |||
![]() всю жизнь использовал
0
|
|||
|
4 / 4 / 0
Регистрация: 22.08.2023
Сообщений: 30
|
|
| 30.05.2025, 10:58 | |
|
Dushevny а вот и неправильно , вы так много начинающих введёте в заблуждение . в 4 битном режиме надо посылать уже 4 байта на одну команду или символ только вот прикол как я уже раньше и говорил что для перевода в 4 битный режим нужно всего 2 байта послать а уже настройки по 4 байта посылать вот об этом нюансе я говорю.
0
|
|
|
1494 / 512 / 75
Регистрация: 22.09.2023
Сообщений: 1,608
|
||
| 30.05.2025, 11:34 | ||
|
0
|
||
|
4 / 4 / 0
Регистрация: 22.08.2023
Сообщений: 30
|
||
| 30.05.2025, 11:44 | ||
|
0
|
||
|
1494 / 512 / 75
Регистрация: 22.09.2023
Сообщений: 1,608
|
||
| 30.05.2025, 11:53 | ||
|
0
|
||
|
4 / 4 / 0
Регистрация: 22.08.2023
Сообщений: 30
|
||
| 30.05.2025, 11:57 | ||
|
0
|
||
|
1494 / 512 / 75
Регистрация: 22.09.2023
Сообщений: 1,608
|
|
| 30.05.2025, 11:59 | |
|
Хотя... Есть у меня одно предположение: я писал о посылках, которые надо подать на контроллер дисплея. Каждая посылка дисплею состоит из перевода входа E контролера в 1 и потом перевода его в 0. Разумеется, каждое это действие требует отдельной посылки на расширитель I2C, через который у вас подключен контроллер дисплея.
0
|
|
|
4 / 4 / 0
Регистрация: 22.08.2023
Сообщений: 30
|
|
| 30.05.2025, 12:01 | |
|
дополнительные 2 байта нужны для сброса строба Е в 0
0
|
|
|
1494 / 512 / 75
Регистрация: 22.09.2023
Сообщений: 1,608
|
|
| 30.05.2025, 12:02 | |
|
Ну вот и разобрались.
0
|
|
|
4 / 4 / 0
Регистрация: 22.08.2023
Сообщений: 30
|
|
| 31.05.2025, 17:40 | |
|
да разобрались и НЮАНЬСИК есть.
0
|
|
|
1494 / 512 / 75
Регистрация: 22.09.2023
Сообщений: 1,608
|
||
| 31.05.2025, 19:57 | ||
|
0
|
||
|
4 / 4 / 0
Регистрация: 22.08.2023
Сообщений: 30
|
|||
| 01.06.2025, 12:02 | |||
|
все такие специалисты, даже Вы мне писали что в 4 битном режиме нужно 2 посылки делать .
Вот в этом даташите почти правильно написано на 11 странице и то надо домысливать.
1
|
|||
|
47 / 45 / 2
Регистрация: 23.01.2019
Сообщений: 360
|
|
| 01.06.2025, 12:10 | |
|
За документ спасибо..
![]() Но я повторюсь: разницы нет, управлять дисплеем напрямую с контроллера или через i2c контроллер. Потому как дисплей не понимает кто им управляет, он понимает только управляющие последовательности
1
|
|
|
1494 / 512 / 75
Регистрация: 22.09.2023
Сообщений: 1,608
|
||
| 01.06.2025, 13:30 | ||
|
1
|
||
|
4 / 4 / 0
Регистрация: 22.08.2023
Сообщений: 30
|
|||
| 01.06.2025, 17:17 | |||
|
Добавлено через 5 минут всегда пожалуйста
0
|
|||
|
47 / 45 / 2
Регистрация: 23.01.2019
Сообщений: 360
|
|||
| 01.06.2025, 17:37 | |||
![]() Я вообще-то говорил что: Допустим вы дёргаете строб, на Atmeg-е за 1 такт.. Берёте другой МК - у вас на дёрнуть стробом уйдёт 7 тактов.. Какая дисплею разница как это реализовано ![]() Или под каждую ситуацию отдельный ДШ писать? ![]() Вам нужно соблюсти на выходе промежуточного преобразователя интерфейса необходимую последовательность, и всё. Каким образом вы это реализуете- всем на это пофиг, и разработчикам и дисплею.
0
|
|||
| 01.06.2025, 17:37 | |
|
Помогаю со студенческими работами здесь
60
как подружить stm32f4discovery + 16x2 (1602) lcd Вывод слова на LCD 1602 в МК PIC16F628 с помощью C++ Подключение LCD 1602 через I2C к STM32F4 без библиотеки Hal LCD 1602 не работает - подсвечиваются только ячейки первой строки Не находит адрес lcd 1602 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности
Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано.
. . .
|
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
|
|
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива
Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
|
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так?
Да, всё верно. Я — искусственный интеллект.
Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
|
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает.
В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше.
Перед запуском проверяем. . .
|
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов.
В Main создаём четыре события. . . .
|