Работа с ЖКИ на контроллере HD44780 и его аналогах

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Alexeyslav »

extern void lcd_init - что это такое? компилятор с ума сходит, ты не закончил одну подпрограмму как внутри начинаешь объявлять другую? Вот он и орет что ты дескать не закрыл прошлый блок...

Внимательней читай ошибки которые он тебе сообщает... он ведь прост как пробка!
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 929
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

самому очень хочется узнать, что такое extern void lcd_init и как его едят. Пытался преводить - программы перевода не могут сказать что-либо вразумительное. Как проинициaлизировать LCD и соотнести линии порта и выводы LCD?
задание соответствия какбудто так (компилятор не ругается)

Код: Выделить всё

#define RS RB3
#define EN RB6
#define WR RB0
#define D7 RB7
#define D6 RB2
#define D5 RB1
#define D4 RB4
Кот гуляет сам по себе, но вблизи холодильника.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Alexeyslav »

Это может быть только объявление какой-то подпрограммы, но никак не вызов. Плохо, однако, начинать практиковаться не зная совершенно основных конструкций языка.
Вот и получается всякая фигня...

#define - это простая директива соответствия, там хоть черта лысого напиши, компилятор ругаться не будет. Но и толку тоже не будет.
То что ты написал ни больше ни меньше как декларация того что любое слово "RS" в тексте программы будет заменено на "RB3" до того как программа попадет в руки компилятору.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 929
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

Alexeyslav спасибо за ответ,
директиву препроцессора define я знаю. Но вдруг в HI-TECH библиотеке прописаны соответствия? Я ведь наугад беру куски с чужих исходников, внятного описания функций нет.
Да, написано, какая функция и чего делает. Но как назначить соответствие ног МК и ЖКИ?
Если C:\Program Files\HI-TECH Software\PICC\std\9.60\samples\LCDemo\lcd.h этого не умеет, то она мне и с доплатой не нужна.
Неужели так сложно просто дать рабочий исходник для этой библиотеки?
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение urry »

наезд на хайтек - незачет.
То, что стоит в сэмплах, достаточно хорошо работает.
Если хотите изменить ноги, этому никто не может помешать

Код: Выделить всё

#define   LCD_DATA(x)   { if(x & 0x80){BITSET(L_PORT,L_D3);}else {BITCLR(L_PORT,L_D3);}\
   if(x & 0x40){BITSET(L_PORT,L_D2);}else {BITCLR(L_PORT,L_D2);}\
   if(x & 0x20){BITSET(L_PORT,L_D1);}else {BITCLR(L_PORT,L_D1);}\
   if(x & 0x10){BITSET(L_PORT,L_D0);}else {BITCLR(L_PORT,L_D0);}}

Где L_D0 - D3 могут быть произвольными
Посмотрите мой пример тахометра на вертепе, там как раз хайтековская библиотека.Ну и Алекса таблица русификации.
http://vrtp.ru/index.php?showtopic=21445&hl=
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 929
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

urry спасибо, но читая ваш исходник я почти ничего не понял.
#define LCD_DATA(x) - это что объявляется?
L_PORT,L_D3 - это к какому порту обращение?

Alex спасибо. Еще бы сие переделать для PICC 16...
Вместо __PICC18__ что писать?
В #define RS_PIN LATB0 LAT что делает?
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Catcatcat
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Пт янв 13, 2012 21:46:35
Откуда: Днепропетровск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Catcatcat »

Я правда не очень уже уважаю символьные дисплеи, пропал к ним интерес, больше графика нравиться, но если кому интересно моя библиотека для символьных дисплеев http://catcatcat.d-lan.dp.ua/skachat/biblioteki/biblioteka-dlya-rabotyi-s-lcd-indikatorami-na-drayvere-hd44780-ili-ks0066u/.

InitLCD () - функция начальной инициализации дисплея. Необходимо использовать один раз в начале программы.

ClearLCD () – очистка индикатора. Когда необходимо полностью очистить индикатор.

CursorLCD (unsigned char stroka,unsigned char stolbec), где stroka – номер строки 0-3, stolbec – 0-40. В функции нет проверки привязки к типу индикатора, по этому необходимо корректно вводить номер столбца и номер строки. Используем эту функцию, когда необходимо установить курсор для вывода сообщения с определенной позиции индикатора. Пример, CursorLCD(0,5); – вывод в самую верхнюю строку с 6 знакоместа.

StringLCD (const unsigned char *str); – вывод строки текста в положение курсора, длина текста не должна превышать 255 символов. Хотя для вывода на индикатор необходимо учитывать его длину. Необходимо понимать, что драйвер HD44780 представляет собой управления до 40 знакомест, а в зависимости от того как производитель подключил драйвер к ЖКИ матрице и сколько он таких драйверов использует в дисплее, то превышение длины строки может в одном варианте привести к потере информации, в другом, то что конец строки появиться на третей или четвертой строке дисплея.

Пример,StringLCD(“Привет мир ILLISSI!!”);

Изображение

SendLCDdata (unsigned char data, unsigned char rs); – загрузка в индикатор команды или данных для вывода на индикатор. Где data - код символа или команда, rs - 0 команда, 1 – данные. Предназначена когда необходимо вывести какой-то определенный (не печатный) символ из таблицы кодировки или команду. Пример, SendLCDdata (0xEF,1); – выводит на дисплей символ градус, SendLCDdata (0b00001111,0); – команда – дисплей включен/курсор включен/мигание курсора включено.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Alexeyslav »

L_PORT,L_D3 - это к какому порту обращение?

Очевидно что конкретный порт и бит указывается константами-определениями L_PORT и L_D3, которые должны быть определены где-то выше по тексту.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 929
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

Catcatcat
большое спасибо! А как назначить соответствие D7-D4 линиям порта?

Alexeyslav
спасибо, но там еще разбираться надо.
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Ghost in shell писал(а):Alex спасибо. Еще бы сие переделать для PICC 16...
Пост №2.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Alexeyslav »

Посмотри 6-ю сообщениями выше
Где L_D0 - D3 могут быть произвольными
вот для L_D0...D3 назначаешь произвольные пины и делов. Только кажется, это будет работать только в пределах ОДНОГО порта. перенести линию данных частично на два разных порта не получится.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 929
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

Alex пост 2 этой ветки?
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Это ссылка. Нажмите на неё :)
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение unalex »

Catcatcat писал(а):(unsigned char stroka,unsigned char stolbec)


ИМХО обзывать аргументы(как и фунцкии) русскими словами - дурной тон
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 929
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

Alex
эта ссылка сдохла: 404 Not Found
А зачем мне описание индикатора? Я свою библиотеку писать не собираюсь.

Код: Выделить всё

#define   LCD_DATA(x)   
{
   if(x & 0x80){BITSET(L_PORT,L_D3);}else {BITCLR(L_PORT,L_D3);}\
   if(x & 0x40){BITSET(L_PORT,L_D2);}else {BITCLR(L_PORT,L_D2);}\
   if(x & 0x20){BITSET(L_PORT,L_D1);}else {BITCLR(L_PORT,L_D1);}\
   if(x & 0x10){BITSET(L_PORT,L_D0);}else {BITCLR(L_PORT,L_D0);}
}

Тут только 4 вывода. А остальные? Лучше пример работающего кода.
Последний раз редактировалось Ghost in shell Вт июл 30, 2013 12:02:24, всего редактировалось 1 раз.
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Эта ссылка не сдохла, она работает нормально. И это не описание индикатора, а готовая библиотека - бери и пользуйся.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 929
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Ghost in shell »

эта ссылка из второго поста данной ветки?
http://www.compel.ru/pdf/WINSTAR/WH1602D-YGB-CP.pdf
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение vitalik_1984 »

Вот ссылка
Не с данной ветки, а с той ветки на которую Алекс чуть выше ссылку выложил даже с пометкой пост #2
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Аlex »

Ответить

Вернуться в «Периферия»