6 сообщений в этой теме

filter91    0

Добрый день, Уважаемые.

Прошу Вас помочь разобраться в ситуации, а именно:

Подключил китайский LCD 1602 (HD44780) к Atmega16. Дисплей всё исправно отображает, но после нескольких часов работы он начинает отображать, простите меня, кракозябры, иероглифы и т.д. Проблема решается перезагрузкой устройства. До вчерашнего дня думал, что это дисплей неисправный.

Собрал совершенно другое устройство на Atmega8 с таким же дисплеем. Всё работает, но опять появилась ситуация как в случае выше - некорректное отображение информации через некоторый период времени. Решается так же перезагрузкой. Хочу добавить, что оба устройства продолжают выполнять свои функции, но корректное отображение пропадает. В проектах использовал библиотеку во вложении. Может быть в неё проблема.

В итоге я сделал вывод, что что-то делаю неправильно, раз уже второе устройство с разными МК  ведёт себя одинаково. В чём может быть моя ошибка? Заранее спасибо Вам за помощь. 

lcd_lib.c

lcd_lib.h

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Dr. West    3 119

Сталкивался с подобным. Дисплей ловит посторонние помехи, если шлейф длинный. Устранение - подключать  проводами минимальной длины, и(или) желательно чередовать информационные проводники в шлейфе  земляными.
И ещё проверить, сколько жрёт подсветка. Китайцы любят сделать поярче, аж кристаллы начинают чернеть (обратимо) от перегрева.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    261

Тоже сталкивался с подобным и согласен с @Dr. West. Решением было обмотать шлейф фольгой (заизолировав ее, разумеется).

Но более правильное решение - время от времени обновлять содержимое экрана.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

demiurg1978    22

Это проблема всех дисплеев на этом контроллере. Причина в помехах. Защититься от этого никак. Решения проблемы: создание буфера в ОЗУ, в который мы выводим информацию. И через определенные промежутки времени посимвольно выводить информацию на дисплей из буфера.

Алгоритм модуля дисплея: инициализация дисплея, переменных. Настройка программного таймера. Скажем на 1 мс. Как только время вышло, если новая строка отправка адреса строки. Затем вывод строки. Все это каждые 1 мс. Полное обновление дисплея происходит за (16 * 2) + 2 адреса строк = 34 мс.

Вариант второй. Каждые от 100 мс до 1 секунды выводить нужную информацию на дисплей. Но это тормозит МК на все время вывода информации.

Поэтому решение выбирается из требований к проекту. Реакции системы на события.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Prozac    34
В Monday, October 02, 2017 в 06:00, Dr. West сказал:

И ещё проверить, сколько жрёт подсветка. Китайцы любят сделать поярче, аж кристаллы начинают чернеть (обратимо) от перегрева.

...и если проблема в подсветке, то питать ее не нпрямую от шины питания, а организовать для нее ШИМ - заодно, в устройстве появится функция регулировки яркости подсветки.

 

Ну, а определить, в подсветке ли дело - несложно: нужно погонять устройство без нее, и если глюки прекратятся, то дело в ней.

Поделиться сообщением


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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас