Работа с ЖКИ на контроллере HD44780 и его аналогах
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
extern void lcd_init - что это такое? компилятор с ума сходит, ты не закончил одну подпрограмму как внутри начинаешь объявлять другую? Вот он и орет что ты дескать не закрыл прошлый блок...
Внимательней читай ошибки которые он тебе сообщает... он ведь прост как пробка!
Внимательней читай ошибки которые он тебе сообщает... он ведь прост как пробка!
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 929
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
самому очень хочется узнать, что такое 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 и его аналогах
Это может быть только объявление какой-то подпрограммы, но никак не вызов. Плохо, однако, начинать практиковаться не зная совершенно основных конструкций языка.
Вот и получается всякая фигня...
#define - это простая директива соответствия, там хоть черта лысого напиши, компилятор ругаться не будет. Но и толку тоже не будет.
То что ты написал ни больше ни меньше как декларация того что любое слово "RS" в тексте программы будет заменено на "RB3" до того как программа попадет в руки компилятору.
Вот и получается всякая фигня...
#define - это простая директива соответствия, там хоть черта лысого напиши, компилятор ругаться не будет. Но и толку тоже не будет.
То что ты написал ни больше ни меньше как декларация того что любое слово "RS" в тексте программы будет заменено на "RB3" до того как программа попадет в руки компилятору.
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 929
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Alexeyslav спасибо за ответ,
директиву препроцессора define я знаю. Но вдруг в HI-TECH библиотеке прописаны соответствия? Я ведь наугад беру куски с чужих исходников, внятного описания функций нет.
Да, написано, какая функция и чего делает. Но как назначить соответствие ног МК и ЖКИ?
Если C:\Program Files\HI-TECH Software\PICC\std\9.60\samples\LCDemo\lcd.h этого не умеет, то она мне и с доплатой не нужна.
Неужели так сложно просто дать рабочий исходник для этой библиотеки?
директиву препроцессора 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 и его аналогах
наезд на хайтек - незачет.
То, что стоит в сэмплах, достаточно хорошо работает.
Если хотите изменить ноги, этому никто не может помешать
Где L_D0 - D3 могут быть произвольными
Посмотрите мой пример тахометра на вертепе, там как раз хайтековская библиотека.Ну и Алекса таблица русификации.
http://vrtp.ru/index.php?showtopic=21445&hl=
То, что стоит в сэмплах, достаточно хорошо работает.
Если хотите изменить ноги, этому никто не может помешать
Код: Выделить всё
#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=
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 929
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
urry спасибо, но читая ваш исходник я почти ничего не понял.
#define LCD_DATA(x) - это что объявляется?
L_PORT,L_D3 - это к какому порту обращение?
Alex спасибо. Еще бы сие переделать для PICC 16...
Вместо __PICC18__ что писать?
В #define RS_PIN LATB0 LAT что делает?
#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 и его аналогах
Я правда не очень уже уважаю символьные дисплеи, пропал к ним интерес, больше графика нравиться, но если кому интересно моя библиотека для символьных дисплеев 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); – команда – дисплей включен/курсор включен/мигание курсора включено.
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 и его аналогах
L_PORT,L_D3 - это к какому порту обращение?
Очевидно что конкретный порт и бит указывается константами-определениями L_PORT и L_D3, которые должны быть определены где-то выше по тексту.
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 929
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Catcatcat
большое спасибо! А как назначить соответствие D7-D4 линиям порта?
Alexeyslav
спасибо, но там еще разбираться надо.
большое спасибо! А как назначить соответствие D7-D4 линиям порта?
Alexeyslav
спасибо, но там еще разбираться надо.
Кот гуляет сам по себе, но вблизи холодильника.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Пост №2.Ghost in shell писал(а):Alex спасибо. Еще бы сие переделать для PICC 16...
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Посмотри 6-ю сообщениями выше
вот для L_D0...D3 назначаешь произвольные пины и делов. Только кажется, это будет работать только в пределах ОДНОГО порта. перенести линию данных частично на два разных порта не получится.Где L_D0 - D3 могут быть произвольными
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 929
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Alex пост 2 этой ветки?
Кот гуляет сам по себе, но вблизи холодильника.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Это ссылка. Нажмите на неё 
- unalex
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Сб авг 25, 2007 22:02:05
- Откуда: Германия, Viernheim
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Catcatcat писал(а):(unsigned char stroka,unsigned char stolbec)
ИМХО обзывать аргументы(как и фунцкии) русскими словами - дурной тон
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 929
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Alex
эта ссылка сдохла: 404 Not Found
А зачем мне описание индикатора? Я свою библиотеку писать не собираюсь.
Тут только 4 вывода. А остальные? Лучше пример работающего кода.
эта ссылка сдохла: 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 и его аналогах
Эта ссылка не сдохла, она работает нормально. И это не описание индикатора, а готовая библиотека - бери и пользуйся.
- Ghost in shell
- Держит паяльник хвостом
- Сообщения: 929
- Зарегистрирован: Пн июн 15, 2009 06:01:38
- Откуда: USSR
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
эта ссылка из второго поста данной ветки?
http://www.compel.ru/pdf/WINSTAR/WH1602D-YGB-CP.pdf
http://www.compel.ru/pdf/WINSTAR/WH1602D-YGB-CP.pdf
Кот гуляет сам по себе, но вблизи холодильника.
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Вот ссылка
Не с данной ветки, а с той ветки на которую Алекс чуть выше ссылку выложил даже с пометкой пост #2
Не с данной ветки, а с той ветки на которую Алекс чуть выше ссылку выложил даже с пометкой пост #2