Меню

 

Форум

Список форумов :: ЖК-индикаторы :: Помогите решить проблему с 20S4A
root_x
29 марта 2005 16:38

Id сообщения: 269
Помогите решить проблему с 20S4A
Выполняю инициализацию модуля как написано в документации. Но ничего не происходят - как горели квадратики - так и горят: ни курсор не мигает, ни данные не выводятся.

Могли бы Вы написать несколько команд - может я не правильно сто-то делаю.

Заранее благодарен!
Петухов
29 марта 2005 18:38

Id сообщения: 273

Два вопроса: модуль подключен по 8-ми битной шине? Если да, то Вы уверены, что контрастность выставлена правильно? Может быть попробовать ее порегулировать (вдруг черные квадраты - это просто переконтраст)? Контрастность регулируется подачей внешнего напряжения на вывод Vo (пин 3) в пределах -2В..+2В относительно GND модуля. Можно также включить переменный резистор между питанием и землей модуля, а с движка подать напряжение на Vo (пин 3). В этом случае контрастность будет только уменьшаться.
А команды... В PDF все описано подробно, должно работать.
На почту выслал пример программы для похожего модуля, на ассемблере для MSC51, посмотрите, может поможет.
root_x
01 апреля 2005 12:24

Id сообщения: 278

Наблюдаю следующую ситуацию:

1.)Включаю ЖКИ - немного видны черные прямоугольники.
2.)Стартую микроконтроллер + инициализация ЖКИ.
3.)Квадратики уходят и становятся еле видны.

До сих пор на экране ничего нет!

Может проблемы с экраном или проблема с подключением. Программно делаю следующее:

//инициализация
lcd_write_command(0x38);
lcd_write_command(0x38);
lcd_write_command(0x38);
lcd_write_command(0x38);
lcd_write_command(0x08);
lcd_write_command(0x01);
lcd_write_command(0x06);

//включеник
lcd_write_command(0x0D);

//запись символа - 1 строка, 1 символ
lcd_write_command(0x80);
lcd_write_data(0x80);
root_x
01 апреля 2005 13:18

Id сообщения: 280

Нашел следующую проблему:

lcd_write_command(0x80);

И если не ждать интервал, а просто проверять DB7 на 1, то программа не выходит из цикла проверки, т.е. контроллер жки постоянно занет.

Проверяю:
R/W=1;
A0=0;
пока (DB7 == 1);
Петухов
01 апреля 2005 14:33

Id сообщения: 281

Вы уверены, что лог1 читается именно из индикатора, а не формируется на выводах контроллера? Попробуйте еще не просто ждать лог0, а подавать импульсы E при чтении байта состояния индикатора.
Мы специально проверяли время реакции индикатора на команды и время удержания BUSY=1 и оно никогда не превышало указанного у нас в PDF (всегда было даже меньше). За 2ч индикатор ни разу не превысил время - а это более 150млн обращений!! И это не первоапрельская шутка, все так и было!
root_x
01 апреля 2005 17:58

Id сообщения: 285

Я уже не знаю что делать. Уже и ждал с использованием цикла, и проверял занятость (виснет) - одновременно изменяя E.

ВСЕ делал!!! никакого результата. Только после инициализаии немного квадратики исчезают.
root_x
06 апреля 2005 19:01

Id сообщения: 311

Я не спец по электроники и поэтому у меня появился вопрос:

Несколько ответов назад я писал, что у меня след. проблема:

----------------------------
Нашел следующую проблему:

lcd_write_command(0x80);

И если не ждать интервал, а просто проверять DB7 на 1, то программа не выходит из цикла проверки, т.е. контроллер жки постоянно занет.

Проверяю:
R/W=1;
A0=0;
пока (DB7 == 1);
----------------------------
Но если я записал 80 - то у меня DB7 установился в 1 и соответсвенно я его проверяю на занятость и у меня поэтому зависает в цикле.

Подскажите, что именно я не правильно делаю, может и правда я читаю не из индикатора, а с выводов микроконтроллера!!! Может какие-то установки надо делать с регистром, отвечающим за данные пины (LCD)???

Я навечок в работе с микроконтроллерами и у меня закралось подозрение, что просто писать/читать в регистр нельзя и неправильно!
Петухов
07 апреля 2005 20:14

Id сообщения: 315

Извините, я не помню какой у Вас микроконтроллер, отвечу для MSC51 и Atmel AVR.
Для MSC51 ничего больше делать не надо - лог1, выведенная в порт, просто включает подтяжку к +Ucc (примерно 10кОм), которую ЖКИ легко перетянет обратно в лог0. Чтение производится всегда прямо с пинов.
Для Atmel AVR: надо переключить регистр DDRx (x-используемый порт) в лог0 все используемые пины для настройки пинов на ввод (иначе делать вообще нельзя - будет КЗ между микроконтроллером и ЖКИ по шине данных) и читать не из PORTx, а из PINx. При DDRx=0, биты в PORTx включают подтяжку пинов к +Ucc (20-50кОм). ЖКИ ее также легко перетянет.
Если Вы читали данные из PORTx, то Вы читали не состояние ножек, а предыдущее выведенное значение в порт (0x80), а оно никем не менялось - его можно изменить только из программы.
Если у Вас другой микроконтроллер - напишите какой или посмотрите сами в документации на него в разделе I/O ports (обычно).
Мне кажется, я с Вами общался по почте, но сейчас мы на выставке (EXPO-ELECTRONICA) и посмотреть рабочую почту раньше понедельника не могу.


Код подтверждения:
Для зарегистрированых:
Логин
Пароль
Забыл пароль Регистрация Поиск


Телефоны офиса компании МЭЛТ:
тел: (495) 662-4414
e-mail: sales@melt.com.ru
ICQ: 221-319-648
Skype имя: melt-mos

Фактический адрес: 111024, Москва, Андроновское шоссе, д.26

Adress: 111024, Moscow, Andronovskoe highway, 26.

Адрес для корреспонденции: 109145, г. Москва, а/я 37, ООО "МЭЛТ".

Address for mail:  109145, Moscow, post box 37, MELT Ltd..

Продукция | Печатные платы | Сборочно-монтажные услуги | Документация | Цены | Новости | Контакты | Купить | Форум
создание - prorock web-soft