реклама на сайте
подробности

 
 
> Инициализация LCD, Возможно ли повторно инициализировать LCD в работающей программе?
IF_P
сообщение Feb 12 2008, 20:08
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Контроллер на 51 процессоре. Использую LCD Bolymin BC-2004 или аналог МТС-S20400. Иногда происходит сбой LCD ("абракодабра").Восстановление информации только после Reset CPU. Пробовал в программе ввести повторную инициализацию LCD. Получил две черных строчки на экране. Если при старте программы два раза подряд вызвать программу Lcdinit получается аналогичная ситуация. Кто что может посоветовать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Baser
сообщение Feb 12 2008, 22:32
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата
Возможно ли повторно инициализировать LCD в работающей программе?

Не только возможно, но и ИМХО, необходимо делать это периодически. Правда при этом наблюдается легкое подмигивание, если применяется 4-х разрядная шина, но это можно объявить фичей smile.gif

У различных контроллеров ЖКИ эта процедура может слегка отличаться, в основном по временнЫм параметрам. Я на такое нарывался, когда при смене типа или производителя ЖКИ переставала нормально работать программная инициализация. Приходилось искать "улучшенный" алгоритм.
А то, что у ЖКИ модулей могут слетать настройки - так это общеизвестно.
Единственный контр.сигнал - BUSY может нормально выдаваться, а отображения на ЖКИ может не быть!
Считать настройки из модуля для проверки нельзя, поэтому приходится периодически его переинициализировать на ходу. Я это обычно делаю каждые 5-10 секунд.
Можно делать и реже, но за 5 минут, как показывает практика, ближайшие customers уже успевают добежать до телефона и позвонить со словами: "ВАШ ПРИБОР СЛОМАЛСЯ!!!"

to rezident: "защелкивания" LCD ни разу не наблюдал, так что в необходимости ключа на питание сильно сомневаюсь. Насчет того, что бывают случаи, когда модуль нельзя вывести из зависа программно - сомнительно, хотя отрицать такую возможность не буду. Но мне такие ЖКИ не попадались.

Отладку процедур инициализации я обычно провожу так - выдираю и вставляю кабель ЖКИ (или сам модуль) прямо под питанием, на ходу. Восстановление работоспособности модуля должно происходить через 5-10 сек, при вызове прогр. переинициализации. А иначе грош цена такой программе!
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 12 2008, 23:17
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Baser @ Feb 13 2008, 03:32) *
to rezident: "защелкивания" LCD ни разу не наблюдал, так что в необходимости ключа на питание сильно сомневаюсь. Насчет того, что бывают случаи, когда модуль нельзя вывести из зависа программно - сомнительно, хотя отрицать такую возможность не буду. Но мне такие ЖКИ не попадались.
Статическое электричество это довольно занимательная штука. Особенно, когда по ТУ корпус прибора, имеющий внешние металлические элементы (переднюю панель, например), нельзя соединять с общим проводом самого устройства и LCD в частности.

Цитата(IF_P @ Feb 13 2008, 04:05) *
Но получается, что lcdinit() нормально работает только один раз (вначале), а при повторном вызове сбивает настройки LCD. Что это? Плохо написана программа инициализации?
Не видя исходный текст этой "программы инициализации", можно делать абсолютно любые умозаключения. Только помогут ли они?
Go to the top of the page
 
+Quote Post
IF_P
сообщение Feb 13 2008, 07:54
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Цитата(rezident @ Feb 13 2008, 01:17) *
Не видя исходный текст этой "программы инициализации", можно делать абсолютно любые умозаключения. Только помогут ли они?


Вот исходный текст программы. Режим LCD - 4 разрядный.

Цитата(IF_P @ Feb 13 2008, 09:06) *
Вот исходный текст программы. Режим LCD - 4 разрядный.


Уточнение по управляющим сигналам.
Прикрепленные файлы
Прикрепленный файл  lcdinit.txt ( 1.05 килобайт ) Кол-во скачиваний: 130
Прикрепленный файл  lcdinit.txt ( 1.13 килобайт ) Кол-во скачиваний: 111
 
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 13 2008, 08:04
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(IF_P @ Feb 13 2008, 09:54) *
Вот исходный текст программы. Режим LCD - 4 разрядный.
Вы спросили совета. Во втором и третьем ответах вам дали разжеванный как для ребенка ответ, что именно и в какой последовательности нужно делать в процессе инициализации. В десятом(!) сообщении вы выкладываете исходник, в котором эти рекомендации нифига не выполнены и спрашиваете "почему не работает?". Да вот потому и не работает, что инициализация у вас сделана неправильно! Помогать дальше не буду - разбирайтесь сами, информации в этой ветке вам дали достаточно.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
IF_P
сообщение Feb 13 2008, 09:31
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Цитата(Сергей Борщ @ Feb 13 2008, 10:04) *
Вы спросили совета. Во втором и третьем ответах вам дали разжеванный как для ребенка ответ, что именно и в какой последовательности нужно делать в процессе инициализации. В десятом(!) сообщении вы выкладываете исходник, в котором эти рекомендации нифига не выполнены и спрашиваете "почему не работает?". Да вот потому и не работает, что инициализация у вас сделана неправильно! Помогать дальше не буду - разбирайтесь сами, информации в этой ветке вам дали достаточно.


Прошу извинить, что, возможно, задал лишние вопросы. Но железо на работе, а я писал с домашнего компа. Сегодня буду разбираться.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.0143 секунд с 7
ELECTRONIX ©2004-2016