Страница 64 из 123

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

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

Внимательней читай ошибки которые он тебе сообщает... он ведь прост как пробка!

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

Добавлено: Сб июл 20, 2013 12:03:44
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

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

Добавлено: Сб июл 20, 2013 16:16:54
Alexeyslav
Это может быть только объявление какой-то подпрограммы, но никак не вызов. Плохо, однако, начинать практиковаться не зная совершенно основных конструкций языка.
Вот и получается всякая фигня...

#define - это простая директива соответствия, там хоть черта лысого напиши, компилятор ругаться не будет. Но и толку тоже не будет.
То что ты написал ни больше ни меньше как декларация того что любое слово "RS" в тексте программы будет заменено на "RB3" до того как программа попадет в руки компилятору.

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

Добавлено: Вт июл 23, 2013 06:43:03
Ghost in shell
Alexeyslav спасибо за ответ,
директиву препроцессора define я знаю. Но вдруг в HI-TECH библиотеке прописаны соответствия? Я ведь наугад беру куски с чужих исходников, внятного описания функций нет.
Да, написано, какая функция и чего делает. Но как назначить соответствие ног МК и ЖКИ?
Если C:\Program Files\HI-TECH Software\PICC\std\9.60\samples\LCDemo\lcd.h этого не умеет, то она мне и с доплатой не нужна.
Неужели так сложно просто дать рабочий исходник для этой библиотеки?

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

Добавлено: Вт июл 23, 2013 09:31:55
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=

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

Добавлено: Ср июл 24, 2013 10:41:57
Аlex

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

Добавлено: Пт июл 26, 2013 18:22:54
Ghost in shell
urry спасибо, но читая ваш исходник я почти ничего не понял.
#define LCD_DATA(x) - это что объявляется?
L_PORT,L_D3 - это к какому порту обращение?

Alex спасибо. Еще бы сие переделать для PICC 16...
Вместо __PICC18__ что писать?
В #define RS_PIN LATB0 LAT что делает?

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

Добавлено: Пт июл 26, 2013 18:31:16
Catcatcat
Я правда не очень уже уважаю символьные дисплеи, пропал к ним интерес, больше графика нравиться, но если кому интересно моя библиотека для символьных дисплеев http://catcatcat.d-lan.dp.ua/skachat/bi ... i-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); – команда – дисплей включен/курсор включен/мигание курсора включено.

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

Добавлено: Пт июл 26, 2013 19:33:47
Alexeyslav
L_PORT,L_D3 - это к какому порту обращение?
Очевидно что конкретный порт и бит указывается константами-определениями L_PORT и L_D3, которые должны быть определены где-то выше по тексту.

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

Добавлено: Сб июл 27, 2013 11:05:54
Ghost in shell
Catcatcat
большое спасибо! А как назначить соответствие D7-D4 линиям порта?

Alexeyslav
спасибо, но там еще разбираться надо.

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

Добавлено: Сб июл 27, 2013 11:50:27
Аlex
Ghost in shell писал(а):Alex спасибо. Еще бы сие переделать для PICC 16...
Пост №2.

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

Добавлено: Сб июл 27, 2013 12:00:12
Alexeyslav
Посмотри 6-ю сообщениями выше
Где L_D0 - D3 могут быть произвольными
вот для L_D0...D3 назначаешь произвольные пины и делов. Только кажется, это будет работать только в пределах ОДНОГО порта. перенести линию данных частично на два разных порта не получится.

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

Добавлено: Сб июл 27, 2013 12:27:34
Ghost in shell
Alex пост 2 этой ветки?

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

Добавлено: Сб июл 27, 2013 12:39:48
Аlex
Это ссылка. Нажмите на неё :)

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

Добавлено: Сб июл 27, 2013 16:27:19
unalex
Catcatcat писал(а):(unsigned char stroka,unsigned char stolbec)
ИМХО обзывать аргументы(как и фунцкии) русскими словами - дурной тон

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

Добавлено: Вт июл 30, 2013 11:27:24
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 вывода. А остальные? Лучше пример работающего кода.

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

Добавлено: Вт июл 30, 2013 11:37:58
Аlex
Эта ссылка не сдохла, она работает нормально. И это не описание индикатора, а готовая библиотека - бери и пользуйся.

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

Добавлено: Вт июл 30, 2013 12:28:04
Ghost in shell
эта ссылка из второго поста данной ветки?
http://www.compel.ru/pdf/WINSTAR/WH1602D-YGB-CP.pdf

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

Добавлено: Вт июл 30, 2013 13:25:20
vitalik_1984
Вот ссылка
Не с данной ветки, а с той ветки на которую Алекс чуть выше ссылку выложил даже с пометкой пост #2

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

Добавлено: Вт июл 30, 2013 13:57:18
Аlex