Ініціалізація живлення РК-модуля HD44780


10

Я використовую РК-модуль HD44780 з клонією KS0066U. На модулі все працює нормально, за винятком випадків, коли я швидко перемикаю живлення на пристрій (увімкнено> вимкнено). Чомусь дуже коротке переривання живлення змушує модуль дисплея неправильно ініціалізуватися як 1-рядковий РКД замість 2-рядкового РК-дисплея. Що спричинило б таку поведінку? Чи є спосіб запобігти це в програмному забезпеченні?

EDIT: Я використовую контролер дисплея в 4-бітному режимі, а не 8-бітному режимі.


Здається, ніхто не вважав, що ваше запитання стоїть під голосуванням, досить дивним.
Кортук

Таблиці даних для деяких клонів HD44780 написані досить погано. Моя мета полягала в тому, щоб вести розмову про те, який правильний спосіб їх ініціалізації. Можливо, я єдиний, хто мав проблеми використовувати їх у 4-бітному режимі.
mjh2007

Ні, я переживаю ту саму проблему зараз, працюючи в 4-бітному режимі. Минуло близько 15 років, як я востаннє запрограмував простий ЖК-персонаж, і я пам’ятаю, що це була справжня біль налагодження назад, коли я був у школі. Хоча я не так далеко, як у вас - я навіть не можу правильно ініціалізувати, тому що не можу відобразити жодного символу. :)
Дейв

Відповіді:


4

Я змінив свій код ініціалізації, щоб він двічі надсилав верхній 4-розрядний нібіл команди набору функцій. Після цього я обурюю верхній 4-розрядний нібіл, а потім нижній 4-розрядний прикол. Це не відповідає таблиці даних, яка, схоже, вказує на те, що ви можете надіслати верхній 4-розрядний nibble, а потім надіслати команду набору функцій верхній 4-розрядний, а потім нижній 4-розрядний.

// Іноді працює
порт псевдокоду = 0x20;
е = 1; e = 0;
порт = 0х20;
е = 1; e = 0;
порт = 0xC0;
е = 1; e = 0;

// Працює весь час псевдокодового
порту = 0x20;
е = 1; e = 0;
е = 1; e = 0;
порт = 0х20;
е = 1; e = 0;
порт = 0xC0;
е = 1; e = 0;


2

Моя здогадка, що вам не вистачає необхідної затримки в послідовності ініціалізації. Якщо дисплей зайнятий при спробі надіслати команду, ця команда буде проігнорована. Якщо ви запускаєте процедуру, дисплей перебуває в чотирьох бітовому режимі і щойно ввімкнено "0000", як перша половина команди, тоді, коли ви переходите в режим "0011", на дисплеї буде показана вся команда як "00000011" , через що дисплей буде зайнятий до 1,6 мс.

Між іншим, добре, якщо можливо, провід проводів даних низького порядку від дисплея таким чином, що коли команда "0011" надсилається на дисплей, всі 8 біт, які бачать на дисплеї, утворюють команду встановлення режиму що відповідає правильному типу дисплея. Це допоможе уникнути будь-яких збоїв на дисплеї під час скидання дисплея, який уже використовується (періодичне скидання дисплея є хорошою ідеєю, якщо це можна зробити безглуздо, оскільки це забезпечить, що якщо дисплей якось перейде в поганий режим, він виправиться себе).


1

Я знайшов рішення проблеми:

Я додав 1000млісекундну затримку при запуску, перед ініціалізацією / налаштуванням РК-контролера. Це спрацювало досить добре для мене.

Менша затримка (100, 200 мс) не спрацювала так добре Лише зауваження: це сталося лише в 4-бітних базах даних.

Удачі!


0

Якщо встановити затримку в коді, то при включенні він дає РК-дисплею достатньо довгий час, щоб ініціалізувати його при запуску. Максимум кілька сотень мілісекунд.

Ви також можете спробувати підключити живлення РК до мікроконтролера та вимкнути РК на секунду після запуску.


Вже є затримка 100 мс при запуску
mjh2007

Спробуйте тоді іншу мою пропозицію. Ви могли навіть керувати живленням РК безпосередньо від штифта; він не повинен малювати більше кількох ма.
Томас О

чи дійсно є максимально допустима затримка? Я подумав, що головне з цими РК-дисплеями - ви чекаєте мінімальної суми, але якщо ви не можете встановити правильний час, ви можете відіграти його в безпеці і просто почекати довше.
Дейв

@Dave, ви, можливо, неправильно трактували "максимальну затримку", я б просто рекомендував розумну затримку. Наприклад, чекати кілька годин було б трохи екстремально ...
Thomas O

ЛОЛ! Добре, я зрозумів, що це ви маєте на увазі, але я хотів переконатися, що я чогось не пропускаю, оскільки мені ще потрібно ініціалізувати свій РК. Мені цікаво, чи варто мені піти і схопити горщик, щоб переконатися, що мене тут не накручує контраст. :)
Дейв

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.