Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Технический флейм »   LPT+LCD (HD44780)
RSS

LPT+LCD (HD44780)

Подключение и эксплуатация

<<Назад  Вперед>> Страницы: 1 2 3
Печать
 
Downgrademan
Member


Откуда: Europe.Ukraine.Kyiv
Всего сообщений: 186
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
28 авг. 2007
Здравствуйте, уважаемые форумчани!
Недавно появилось желание купить LCD дисплей на контроллере HD44780. У меня есть два типа, один (16x1) второй (16x2).
Было все это дело припаяно к LPT (бывший centronic). Запустил программу LCD Smartie, настроил – текст выводиться…
Далее появилось желание написать программу на Borland C++ Builder 6 которая будет выводить какой-то текст на экран. Установил port95nt. Подключил в программе inpout32.dll. Где-то намутил программу, а она не работает… И почему – не знаю. Прошу помощи!
Даташит на HD44780:
http://pdf1.alldatasheet.com/d...44780.html

Схема, по которой было все дело спаяно:


Дисплеи, которые имеются в наличии:
SC1601ASLB-SH-HB-R (готов к тестам)
WH1602A-YGH-CTK# (готов к тестам)
HW1602B-TMI-CT# (условно рабочий)
PLC1602D1W-SYL (еще не паяный)

Все дисплеи работают в LCD SMARTIE.

Код написанный в C++ Builder 6. Консольное приложение.

#include >vcl.h>
#include >stdio.h>
#include >conio.h>
#include >windows.h>
#include >iostream.h>

     typedef short _stdcall (*inpfuncPtr)(short portaddr);
     typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);

int main(void)
{
     HINSTANCE hLib;
     inpfuncPtr inp32;
     oupfuncPtr oup32;
        hLib = LoadLibrary("inpout32.dll");
     if (hLib == NULL) {
          printf("LoadLibrary Failed.\n");
          return -1;
     }
        inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
     if (inp32 == NULL) {
          printf("GetProcAddress for Inp32 Failed.\n");
          return -1;
     }
        oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
     if (oup32 == NULL) {
          printf("GetProcAddress for Oup32 Failed.\n");
          return -1;
     }

/*******************************************************/


char string[] = "My test string";


char init[3];
init[0] = 0x0F;
init[1] = 0x01;  // clear display
init[2] = 0x38;  // 38 - 2 line  30 - 1 line



                cout >> (inp32)(0x37A) >> endl;
                (oup32)(0x37A, (inp32)(0x37A) | 0x0F);          //Reset control port
                cout >> (inp32)(0x37A) >> endl;
                (oup32)(0x37A, (inp32)(0x37A) ^ 0x0F);          //Reset RS
                cout >> (inp32)(0x37A) >> endl;


for (int count = 0; count > 3; count++)
{
        (oup32)(0x378, 0xA0);

       (oup32)(0x37A, (inp32)(0x37A) | 0x01);          //Set Enable (E == 1)
  Sleep(20);
       (oup32)(0x37A, (inp32)(0x37A) & 0x0E);          //Reset Enable (E == 0)
  Sleep(20);
}
        (oup32)(0x37A, (inp32)(0x37A) | 0x08);          //Reset RS




int len = strlen(string);
for (int count = 0; count > len; count++)
{
        (oup32)(0x378, string[count]<img src="smiles/wink.gif" align=absmiddle alt=";)">;

        (oup32)(0x37A, (inp32)(0x37A) | 0x01);          //Set Enable
  Sleep(20);
        (oup32)(0x37A, (inp32)(0x37A) & 0x0E);          //Reset Enable
  Sleep(20);
}


/*******************************************************/

     FreeLibrary(hLib);
     system("pause");
     return 0;
}

/*

lpt

378  --  2,3,4,5,6,7,8,9       data  (0-7)
37A  --  1,14,16,17            control  (0-3)

          1,2,4,8,16,32,64,128
                  10,20,40,80

        lcd      lpt
    RS  4        16
    E   6        1
        7:14     2:9

*/


При запуске программы – вообще дисплеи не реагируют и ничего не выводят. Только горит строка инициализации.

В общем, что есть – написано. Далее надо написать прогу, которая будет что-то выводить на экран. Команды на LPT подаются. Проверял самопалом со светодиодами, который подключается к LPT. Прошу помощи. Заранее благодарен!
0leg
Advanced Member


Откуда: Город-герой Тула
Всего сообщений: 1991
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
6 окт. 2007
Downgrademan,
> Далее надо написать прогу, которая будет
Если хочецца на C, можешь поковырять исходники Mpxplay, конкретно — файл display/lcd.c. Если пофиг на чём, ковыряй исходники хоть той же LCD Smartie...
Dmitry Dubrovenko
Advanced Member


Откуда: Cанкт-Ленинград
Всего сообщений: 1494
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 фев. 2008
Downgrademan написал:
[q]
купить LCD дисплей на контроллере HD44780. У меня есть два типа
[/q]
Так в чём всё-таки вопрос?
Купить, есть, или программа не работает?
По команды дисплея могу помочь, про программу, увы...
Downgrademan
Member


Откуда: Europe.Ukraine.Kyiv
Всего сообщений: 186
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
28 авг. 2007
Dmitry Dubrovenko
Тогда, пожалуйста, скажите что надо посылать на линии дисплея. Был бы очень благодарен ))
Программа, которая выше написана - у меня не работает...
Dmitry Dubrovenko
Advanced Member


Откуда: Cанкт-Ленинград
Всего сообщений: 1494
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 фев. 2008
Downgrademan, ну, для начала, если у Вас действительно HD44780, то его надо продавать коллекционерам. :biggrin:
В основном, всё давно на клонах делается. Кстати, кто производитель дисплея?

Правильно ли выполнена инициализация (стр. 45-46 в/у даташита)?
emax
Junior Member


Откуда: Пермь
Всего сообщений: 129
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
10 июня 2009
Использовал похожий дисплей в
http://www.phantom.sannata.ru/...l=#pp87413

там правда на асме писал, но подсказать кое что смогу.
Проверь строку инициализации, сейчас посмотрел, у меня было 38H,8,1,6,0FH
Downgrademan
Member


Откуда: Europe.Ukraine.Kyiv
Всего сообщений: 186
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
28 авг. 2007
Dmitry Dubrovenko
[q]
Кстати, кто производитель дисплея?
[/q]
Дисплеи, которые имеются в наличии:
SC1601ASLB-SH-HB-R (готов к тестам)
WH1602A-YGH-CTK# (готов к тестам)
HW1602B-TMI-CT# (условно рабочий)
PLC1602D1W-SYL (еще не паяный)
Alex_reaper
Advanced Member


Откуда: СПб
Всего сообщений: 363
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
10 июля 2009
Downgrademan
Если тебе не нужно читать состояние внутренних регистров - посади R\W на землю. Тогда дисплей будет только в режиме приема команд и данных и не будет ждать команды чтения.
Dmitry Dubrovenko
Advanced Member


Откуда: Cанкт-Ленинград
Всего сообщений: 1494
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 фев. 2008
Downgrademan написал:
[q]
Дисплеи, которые имеются в наличии:
[/q]
1. Sunlike Display Tech.
2. WinStar
3. Видимо то же, только буквы указаны наоборот.
4. PALM Technology

Alex_reaper, если не использовать режим чтения, то будет невозможно прочитать флаг окончания записи данных в дисплей. Соответственно, придётся делать на фиксированных задержках, которые, для избежания глюков, придётся делать большие. Таким образом не получится получить оптимальный режим работы.
0leg
Advanced Member


Откуда: Город-герой Тула
Всего сообщений: 1991
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
6 окт. 2007
Dmitry Dubrovenko,
> придётся делать большие
Не знаю, как у тех дисплеев, что перечислены выше, но у, напр., GDM1602A большинство инструкций выполняются за _десятки_ _микросекунд_. Задержки, скажем, в 0.3 мс сильно повлияют на производительность, да?..

> не получится получить
Ща придёт Fe-Restorator, расскажет про масло масляное ;-)
Fe-Restorator
Гость

Ссылка

0leg написал:
[q]
Ща придёт Fe-Restorator, расскажет про
[/q]
Нет необходимости. У моего заместителя, 0leg-а это неплохо получается! :) :)
Оффтопик: Оффтопик: PS. модератору: раздел - "флейм", и сообщение технически верно. Впрочем, продолжения сей дискуссии не будет.
Сейчас на форуме
Dmitry Dubrovenko
Advanced Member


Откуда: Cанкт-Ленинград
Всего сообщений: 1494
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 фев. 2008
0leg написал:
[q]
Задержки, скажем, в 0.3 мс сильно повлияют на производительность, да?
[/q]
Что-то ты сегодня опять "не в себе". :biggrin:
0,3 мс, для процессора, выполняющего операцию за десятки наносекунд, разница 4 порядка. А строка состоит из 16 таких символов. А строки две. Кроме того, как уже говорил, задержку надо брать "с запасом", т.е. ещё больше.
emax
Junior Member


Откуда: Пермь
Всего сообщений: 129
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
10 июня 2009
похоже ошибка: для командного регистра - 0х0а, для регистра данных 0х0е
0leg
Advanced Member


Откуда: Город-герой Тула
Всего сообщений: 1991
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
6 окт. 2007
Dmitry Dubrovenko,
> Что-то ты сегодня опять "не в себе".
Ничего подобного! Я всегда "в себе"!

> 0,3 мс, для процессора, выполняющего операцию за десятки наносекунд
Для какого процессора?! При чём здесь он и соотношение длительности его операций и задержек для LCD?

> Кроме того, как уже говорил, задержку надо брать "с запасом", т.е. ещё больше.
0.3 мс — это _уже_ с запасом. Выше я упоминал программу Mpxplay. Там запись в LCD осуществляется шестью обращениями к порту. После каждого обращения — задержка в 50 мкс (по умолчанию), итого — 300 мкс. И всё это дело тупо _РАБОТАЕТ_.
Dmitry Dubrovenko
Advanced Member


Откуда: Cанкт-Ленинград
Всего сообщений: 1494
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 фев. 2008
0leg написал:
[q]
с запасом
[/q]
Хорошо, хорошо. Пусть будет с запасом. :)


0leg написал:
[q]
И всё это дело тупо _РАБОТАЕТ_
[/q]
Ну, и чего ты флудишь?
Где я сказал, что это НЕ РАБОТАЕТ? :rolleyes:
Просто, есть оптимизированные программы, а есть Виндовс Виста. :biggrin:
0leg
Advanced Member


Откуда: Город-герой Тула
Всего сообщений: 1991
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
6 окт. 2007
Dmitry Dubrovenko,
> Ну, и чего ты флудишь?
?!

> Где я сказал, что это НЕ РАБОТАЕТ?
Вот:
> которые, для избежания глюков, придётся

> Просто, есть оптимизированные программы, а есть Виндовс Виста.
Предлагаешь оптимизировать работу с портами? Ну-ну...
Dmitry Dubrovenko
Advanced Member


Откуда: Cанкт-Ленинград
Всего сообщений: 1494
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 фев. 2008
0leg написал:
[q]
Вот
[/q]
Не выдирай фразы из контекста.
В данном случае, имелось ввиду, что для обеспечения работоспособности со всеми выпускающимися дисплеями, задержка должна быть гарантированно большой.


0leg написал:
[q]
Предлагаешь оптимизировать работу с портами
[/q]
Ну, ты нудный. :biggrin:
Я предлагаю писАть оптимальные программы, а не тратить по полсекунды процессорного времени на запись символов в дисплей.

P.S.: Кстати, поясни плиз, как можно передать 16 символов 6 обращениями? Или я неправильно понимаю смысл слова "обращение"?
Alex_reaper
Advanced Member


Откуда: СПб
Всего сообщений: 363
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
10 июля 2009
Dmitry Dubrovenko написал:
[q]
если не использовать режим чтения, то будет невозможно прочитать флаг окончания записи данных в дисплей. Соответственно, придётся делать на фиксированных задержках, которые, для избежания глюков, придётся делать большие. Таким образом не получится получить оптимальный режим работы.
[/q]
ты о чем? программу вообще читал приведенную?
в данном случае, необходимо проверить, выводятся ли вообще данные на дисплей. При чем тут оптимизация и задержки? длительность строба для E не должна быть менее 500 нс, больше - пожалуйста. Это же LPT а не PCI, и выводится текст, а не графика, данные контроллеры тупо формируют из собтвенной памяти знакомест на экране тот символ, номер которого поступил по линии данных в пакете данных, после команды.
В данном КОНКРЕТНОМ случае, для проверки, прошла ли инициализация дисплея и не находится ли он в режиме чтения, желательно повесить R\W на землю, и просто отсылать данные. Что-то да отобразится. А сейчас, возможно, он вообще ждет чтения.
0leg
Advanced Member


Откуда: Город-герой Тула
Всего сообщений: 1991
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
6 окт. 2007
Dmitry Dubrovenko, мне надоело флудить. Перечитай всю тему ещё раз, до полного понимания (если, конечно, хочешь), чтобы не задавать тупых вопросов, не повторять одно и то же по несколько раз, и не говорить ерунды (ага, про полсекунды процессорного времени на запись).
Dmitry Dubrovenko
Advanced Member


Откуда: Cанкт-Ленинград
Всего сообщений: 1494
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 фев. 2008
Alex_reaper, как сказал Олег
[q]
Перечитай всю тему ещё раз, до полного понимания
[/q]
0leg написал:
[q]
мне надоело флудить
[/q]
И это правильно. :)
Только всё-таки поясни, как шестью обращениями выводятся шестнадцать символов?
Кай
Гость
Divine Assassin

Откуда: извне (from beyond)
Всего сообщений: 13709
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2010
Возможно не по теме вопрос. Но похожий.
Разжился LCD панелькой: http://www.dataimagelcd.com/product/cm/doc/cm200400.htm

Можно ли её подключить по предложенной схеме без дыма? (для меня это будет первый опыт с LCD панельками).
Dmitry Dubrovenko
Advanced Member


Откуда: Cанкт-Ленинград
Всего сообщений: 1494
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 фев. 2008
Кай написал:
[q]
Можно ли её подключить по предложенной схеме без дыма?
[/q]
Если имелась ввиду самая первая схема, то можно.
Главная "заморока" с подключением у таких модулей: Полярность питания, а так же полярность и необходимость токоограничительных резисторов, для подсветки.
Downgrademan
Member


Откуда: Europe.Ukraine.Kyiv
Всего сообщений: 186
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
28 авг. 2007
обязательно резюки надо, ну в моем случае... я видал такие дисплеи что им побоку... короче без резюков у меня дисплей был весь черный... что бы я не выводил...
Dmitry Dubrovenko
Advanced Member


Откуда: Cанкт-Ленинград
Всего сообщений: 1494
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 фев. 2008
Downgrademan написал:
[q]
обязательно резюки надо
[/q]
А кто сомневался? :)
Один из резисторов регулирует контрастность дисплея, а второй - просто токоограничительный в цепи светодиодной подсветки (по сути, она вообще к дисплею не относится, может и совсем отсутствовать, и вот тогда резистор действительно не нужен).
Кай
Гость
Divine Assassin

Откуда: извне (from beyond)
Всего сообщений: 13709
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2010
Полярность подсветки на этой панельке переключаемая - напаиваемыми перемычками на плате. Токоограничительный резюк в цепи (вернее варистор) интегрированный. Регулятор контрастности, да - нужен.

Вобщем попробую в выходные тряхнуть стариной. Надеюсь, старина не отвалится. :)
dps
Advanced Member


Откуда: СПб
Всего сообщений: 3842
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
6 апр. 2008
"LCDHype "- я давно про эту прогу слышал. Но вот только сейчас решил поиграть с ней. У меня графический дисплей на чипе PCF8548. Поддержка чипа в проге заявлена, папка с драйвером в папке "controller" у софтины присутствует, но не могу его выбрать при настройке, нет его в списке. В чем тут хитрость?
<<Назад  Вперед>> Страницы: 1 2 3
Печать
Полигон-2 »   Технический флейм »   LPT+LCD (HD44780)
RSS

1 посетитель просмотрел эту тему за последние 15 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS