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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> не запускается индикатор, wh1602c-tmi-ct
Flasher
сообщение Oct 29 2009, 08:58
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 374
Регистрация: 6-09-05
Из: Тирасполь, Приднестровье
Пользователь №: 8 294



в устройствах стоял WH1602D-YGH-CTK. Вот в новой партии решил вые.... и поставил синенькие WH1602C-TMI-CT. Все девайсы перестали показывать. Пишут какую- то муйню, причем видно что вторая строка на нем даже не инициализируется. Параллельно подпаяный старый индикатор работает.подключение 4 -битное, через 74hc164.без бизи флага.Тайминги уже чуть-ли не часовые...
Перебробовал несколько инициализаций- но бестолку. По идее они отличаются только перевернутыми ногами питания. Что посоветуете? или может кинете инициализацией?
Go to the top of the page
 
+Quote Post
МП41
сообщение Oct 29 2009, 10:28
Сообщение #2


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



А не могут ли отличаться полярности управляющих сигналов? Я вроде в протеусе сталкивался с такими граблями.


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 29 2009, 12:15
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



МП41, контроллер у них один и тот же - KS0066, управление должно быть одинаковым.
Судя по описанию неполадки (с учётом правильности инициализации и таймингов), не проходит самое начало инициализации. Такое бывает если оборвана какая-то из линий в самом индикаторе.
По умолчанию он настроен на восьмибитный интерфейс. Можно попробовать в таком режиме вывести в него текст с целью проверки целостности линий.
Go to the top of the page
 
+Quote Post
МП41
сообщение Oct 29 2009, 13:00
Сообщение #4


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



В моем случае контроллер был один и тот же, а одна из линий - в инверсии. Чтобы не переделывать программу я вставлял просто инвертор в схему (ведь это моделирование, в реальности проще было бы подправить программу).

Эти ЖКИ (старый и новые) внешне хоть одинаковые по компоновке, распиновке и т.д.? - Ой, уже вижу, что буквы разные, C и D.

Сообщение отредактировал МП41 - Oct 29 2009, 13:01


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post
Flasher
сообщение Oct 29 2009, 13:48
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 374
Регистрация: 6-09-05
Из: Тирасполь, Приднестровье
Пользователь №: 8 294



Цитата(IgorKossak @ Oct 29 2009, 15:15) *
МП41, контроллер у них один и тот же - KS0066, управление должно быть одинаковым.
Судя по описанию неполадки (с учётом правильности инициализации и таймингов), не проходит самое начало инициализации. Такое бывает если оборвана какая-то из линий в самом индикаторе.
По умолчанию он настроен на восьмибитный интерфейс. Можно попробовать в таком режиме вывести в него текст с целью проверки целостности линий.


линии не могут быть оборваны, так как молчит весь десяток девайсов. DB0-DB3 уже пробовал сажать на землю. Сигналы управления 0, 3В и 5,1 В. Фронты крутые. R/W жестко на земле. распиновка у этих типов индикаторов одинаковая, только 1,2 нога-питание перевернуты. Играясь инициализациями как-то добился свечения 2 строк, но ничего не выводилось. Параллельно еще подцепил третьим-CCM1620- так эта зараза все инициализации проглатывает. Если пропустить процедуру инициализации- то на всех трех индикаторах - одинаковые кракозябры.Вывод- она по какой-то причине не проходит.
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Oct 29 2009, 19:24
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



А как Вы осуществляете инициализацию?
Вот что пишут для контроллера HD44780.
Цитата
If the power supply conditions for correctly operating the internal reset circuit are not met, initialization by instructions becomes necessary.

Т.е. если в индикаторе не реализована схема сброса, то применяются следующие шаги по инициализации.
И далее инструкция по запуску в 4х-битном режиме (HD44780U стр. 46 рисунок 24, ссылка ниже):

1. Ждать >15 мс после подъема питания до 4,5В (или >40 мс при 3,3В)
2. Подаем команду перехода в 8-битный режим (RS=0, D = 0011xxxx). Флаг BF не проверять
3. Ждем >4.1 мс
4. Команда перехода в 8-битный режим (RS=0, D[7:0] = 0011xxxx) Флаг BF не проверять
5. Ждем >100 мкс
6. Команда перехода в 8-битный режим (RS=0, D[7:0] = 0011xxxx) Флаг BF не проверять
7. Дождаться завершения предыдущей инструкции ( для Fosc = 270 кГц t > 37 мкс)
8. Команда перехода в 4-битный режим (RS=0, D[7:0] = 0010xxxx) После этой инструкции можно уже проверять BF.
9. Команда перехода в 4-битный режим+размер индикатора (RS=0, D[7:4] = 0010, D[7:4] = NF** )
10 Display off [0000]:[1000]
11 Display clear [0000]:[0001]
12 Entry mode set [0000]:[01,I/D,S]

Обратить внимание, что пункты 2,4,6,8 выполняются в 8-битном режиме. Т.е. по одному стробу сигнала Е на 1 байт(вернее, 4 бита) данных
Начиная с п. 9 (включительно) команды подавать в 4-битном режиме (2строба х 4бита).
При выполнении п. 8-12 придерживаться таймингов.
Да, и самое главное. Не забыть включить индикатор (Display On = [0000]:[11CB])
Прикрепленные файлы
Прикрепленный файл  hd44780u.pdf ( 316.48 килобайт ) Кол-во скачиваний: 69
 
Go to the top of the page
 
+Quote Post
XsanyaX
сообщение Oct 29 2009, 19:59
Сообщение #7


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

Группа: Свой
Сообщений: 75
Регистрация: 7-04-05
Из: Украина
Пользователь №: 3 948



Александр Куличок +1.

Когда я начинал работать с ЖКИ - написал код инициализации, но не особо внимательно читая даташит... Этот код работал на нескольких моделяж ЖКИ. Но на очередном ЖКИ случилась трабла. Дисплей ничего не показывал и вешал прогу. Jtag-гом определил зависание на первом же опросе BUSY флага. Сразу переделал инициализацию, как рекомендовано в даташите... Вот уже несколько лет этот код кочует по разным девайсам с ЖКИ (HD44780 или аналогом) от разных производителей - проблем пока нету.


--------------------
Метрология - наука о достаточной точности.
Go to the top of the page
 
+Quote Post
Flasher
сообщение Oct 29 2009, 21:14
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 374
Регистрация: 6-09-05
Из: Тирасполь, Приднестровье
Пользователь №: 8 294



delay_ms(255);
LCD_com(0x03); // 8 бит
delay_ms(10);
LCD_com(0x03); // 8 бит
delay_ms(10);
LCD_com(0x03); // 8 бит
delay_ms(10);
LCD_com(0x02); // переходим на 4 бита

LCD_com(0x02); // 4 бита, 2 строки, 5*8
LCD_com(0x08);



LCD_com(0x00); // дисплей выключить
LCD_com(0x08);


LCD_com(0x00); // очистка экрана
LCD_com(0x01);
delay_ms(10);

LCD_com(0x00); //Сдвиг вправо
LCD_com(0x06);
delay_ms(2);

LCD_com(0x00); // дисплей включить, курсор и мигание выключить
LCD_com(0x0C);
delay_ms(2);

Полностью совпадает hd44780u, но не работает. Другой дисплей, подпаянный параллельно но с буквой D все отображает. Дисплеи менял- есть несколько штук на разъемах. При таком варианте работают 2 строки. Но рисует кракозябли.
Go to the top of the page
 
+Quote Post
Flasher
сообщение Oct 29 2009, 22:26
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 374
Регистрация: 6-09-05
Из: Тирасполь, Приднестровье
Пользователь №: 8 294



Господа, спасибо за помощь. Вопрос решился. В процедуре вывода по интерфейсу я все время держу E=1 и роняю его в нолик только когда вся информация на DB4-DB7 выставлена. Просто добавил его импульсом после вывода информации на пару микросекунд- и все заплясало. Хотя явное отклонение от даташита. Что-то начинает закрадываться сомнение по поводу фиксации информации по перепаду E из 1 в 0. Может прав был товарищ МП41 ?
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 30 2009, 00:17
Сообщение #10


Гуру
******

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



Цитата(Flasher @ Oct 30 2009, 03:26) *
Просто добавил его импульсом после вывода информации на пару микросекунд- и все заплясало.
А времянки в даташите, для чего приведены? См. Figure 6 . Write Mode Timing Diagram и таблицу перед ним. До кучи даташит еще одной разновидности клона HD44780U.
Go to the top of the page
 
+Quote Post
Flasher
сообщение Oct 30 2009, 08:24
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 374
Регистрация: 6-09-05
Из: Тирасполь, Приднестровье
Пользователь №: 8 294



при чем здесь времянки? Я же написал, что передний фронт у меня до выставления данных, а задний фронт, когда нужно защелкивать. Всё по даташиту. Причем по всем даташитам, которые я перечитал. Я всего лишь передний фронт переместил после процедуры установки данных, из чего можно предположить, что защелкивается по переднему фронту.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 30 2009, 08:43
Сообщение #12


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Flasher, опубликуйте функцию LCD_com(), оба варианта.
Go to the top of the page
 
+Quote Post
Flasher
сообщение Oct 30 2009, 08:53
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 374
Регистрация: 6-09-05
Из: Тирасполь, Приднестровье
Пользователь №: 8 294



Работающий вариант (74HC164)
void LCD_com(unsigned char byte)
{
LCD_tetrada(byte&0x0F); // R/S=0
delay_us(50);
}

void LCD_tetrada(unsigned char tetrada)
{
unsigned char temp;
tetrada=tetrada<<3;
for(temp=5;temp>0;temp--)
{
CLK=0;
#asm ("nop");
#asm ("nop");
#asm ("nop");
#asm ("nop");
if(tetrada&0x80)DATA=1; else DATA=0;
#asm ("nop");
#asm ("nop");
#asm ("nop");
#asm ("nop");
tetrada=tetrada<<1;
CLK=1;
#asm ("nop");
#asm ("nop");
#asm ("nop");
#asm ("nop");
}
LOAD=1;
#asm ("nop");
#asm ("nop");
#asm ("nop");
#asm ("nop");
LOAD=0; // Задний фронт, по которому должна идти загрузка
#asm ("nop");
#asm ("nop");
#asm ("nop");
#asm ("nop");
DATA=1;
}

Не работающий вариант:
void LCD_tetrada(unsigned char tetrada)
{
unsigned char temp;
LOAD=1;
#asm ("nop");
#asm ("nop");
#asm ("nop");
#asm ("nop");
tetrada=tetrada<<3;
for(temp=5;temp>0;temp--)
{
CLK=0;
#asm ("nop");
#asm ("nop");
#asm ("nop");
#asm ("nop");
if(tetrada&0x80)DATA=1; else DATA=0;
#asm ("nop");
#asm ("nop");
#asm ("nop");
#asm ("nop");
tetrada=tetrada<<1;
CLK=1;
#asm ("nop");
#asm ("nop");
#asm ("nop");
#asm ("nop");
}
LOAD=0;
#asm ("nop");
#asm ("nop");
#asm ("nop");
#asm ("nop");
DATA=1;
}
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Oct 30 2009, 09:41
Сообщение #14


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Flasher @ Oct 30 2009, 11:24) *
при чем здесь времянки? Я же написал, что передний фронт у меня до выставления данных, а задний фронт, когда нужно защелкивать. Всё по даташиту.

А не в том ли дело, что сигнал R/S защелкивается по _переднему_ фронту ?
Go to the top of the page
 
+Quote Post
Flasher
сообщение Oct 30 2009, 10:45
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 374
Регистрация: 6-09-05
Из: Тирасполь, Приднестровье
Пользователь №: 8 294



только что проверил про RS- 6 типов дисплеев - им все равно. Этот на защелкивание RS по переднему фронту не реагирует.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:01
Рейтинг@Mail.ru


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