Работа с ЖКИ на контроллере HD44780 и его аналогах
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
для нормального управления дисплеем надо ставить регистр с защелкой. А вот как тогда эта библиотека может в этом случае помочь... я не совсем понимаю. 
Станислав
- Реклама
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Ну так-то да. Просто с той же PCF8574 - это именно расширитель шины I2C, и можно использовать аппаратные возможности МК. Записал данные в регистр - и не паришься о задержках, управлении регистром и прочим.Alexeyslav писал(а):А чем регистр не расширитель портов работающий только на выход?
PCF8574 и иже с ними удобны именно двунаправленностью. Хотя в случае "полноценного", с чтением статуса, управления дисплеем в 4бит режиме их использовать не получится, т.к. при чтении нужно разное направление для RS/RW/E и входов данных. Придётся, как минимум, выносить эти 3 управляющие линии отдельно, а уже расширителем управлять только линией данных - и тогда уж лучше в 8-бит режиме.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
В случае с регистром, аппаратные возможности тоже можно использовать. SPI-интерфейс, к примеру. По прерыванию окончания передачи - дергать защелку. Записал в регистр передачи SPI и не паришься - все произойдет без дальнейшего вмешательства.
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Хоу Хоу, добил таки, вроде зачет. Подскажите ещё один момент, как переназначить кодовую таблицу символов?
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
че это? А как там подсветка сделана? А что за дисплей такой? 
А что имееется ввиду по "Переназначить" кодовую таблицу? И какую кодовую? Которая прошита в ЖКИ?
А что имееется ввиду по "Переназначить" кодовую таблицу? И какую кодовую? Которая прошита в ЖКИ?
Станислав
- Реклама
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
это дисплей из ограниченной партии бытовой техники, которые ко мне попадают в некотором количестве, грех не использоватьСКАЗОЧНИК писал(а):че это? А как там подсветка сделана? А что за дисплей такой?
А что имееется ввиду по "Переназначить" кодовую таблицу? И какую кодовую? Которая прошита в ЖКИ?
В дисплее зашита таблица символов, отличная от стандартной таблицы (так захотел разработчик).
К примеру символ "_" в обычной таблице имеет код 0xF6, но в этом дисплее под кодом 0xF6 находится символ " " ".
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
В случае hd44780 таблица символов зашивается на производстве в ПЗУ маской (грубо говоря, транзистор в ячейке памяти либо физически есть, либо физически его нет) и не могут быть изменены в принципе. Потому у существуют разные кодировки дисплеев - с иероглифами, русскими буквами, расширенной латиницей и т.д.
Как сделано там в этом дисплее - это нужно смотреть даташит.
P.S. Похоже, так же.
Как сделано там в этом дисплее - это нужно смотреть даташит.
P.S. Похоже, так же.
Character Generator ROM (CGROM)
The character generator ROM generates 5 x 8 dot character patterns from 8-bit character codes. It can generate
240/250/248/256 5 x 8 dot character patterns(select by OPR1/2 ITO pin). User-defined character patterns are
also available by mask-programmed ROM.
Character Generator RAM (CGRAM)
In the character generator RAM, the user can rewrite character patterns by program. For 5 x 8 dots, eight
character patterns can be written.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Уточню. В обычной таблице символ _ имеет код 0x5Flevaclaus писал(а):К примеру символ "_" в обычной таблице имеет код 0xF6, но в этом дисплее под кодом 0xF6 находится символ " " ".
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Подтверждаю. У меня на дисплее именно так 0х5Fakl писал(а):Уточню.
Станислав
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
я плохо выразил мысль, конечно таблицу изменить нельзя. Но.WiseLord писал(а):В случае hd44780 таблица символов зашивается на производстве в ПЗУ маской (грубо говоря, транзистор в ячейке памяти либо физически есть, либо физически его нет) и не могут быть изменены в принципе. Потому у существуют разные кодировки дисплеев - с иероглифами, русскими буквами, расширенной латиницей и т.д.
Как сделано там в этом дисплее - это нужно смотреть даташит.
write_string("_ST7036_display_1x20");
так я вывожу сообщение в первую строку.
на дисплей выводится строка "ST7036"display"1x20
Очевидно, что прописывать каждый раз код символа вместо символа мягко говоря напряжно. Задача - возможна ли подмена символов при выводе на жк? Ну типа в строке к выводу написал символ _, а на экран вывелся другой код. Так вроде русские буквы выводят, немогу статью найти
(коды взял произвольные, главное смысл)
Можно ли сделать так,
#define "_" 0x33;
#define ";" 0x34;
или так
flash byte symbols[2]={
0x1C, //код _
0x14 //код ;
};
#define ";" symbols[1];
#define "_" symbols[2];
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Это сгодится для вывода отдельных символов, но не строк. А чтобы строки правильно переводились - надо перехватывать вывод индивидуального символа и преобразовывать код по таблице, либо составлять заранее инклуд чисто с константами-строками в уже нужной кодировке и "компилировать" его каким-либо скриптом или внешней программой из исходных строк когда там что-либо меняется.
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Продолжу я и свои вопросы понемногу. )
Вот я хочу прочитать флаг БФ (занятости дисплея) и читаю его. Обязательно ли читать по 4 битной шине обе тетрады? Он же мне первым выдает старший байт, и мне достаточно, чтобы узнать стоит флаг или нет прочитать только ОДИН бит в этой тетраде. А остальные проигнорировать...
Если я пропущу младшую тетраду и строб на нее не подам он на меня сильно обидится?
Вот я хочу прочитать флаг БФ (занятости дисплея) и читаю его. Обязательно ли читать по 4 битной шине обе тетрады? Он же мне первым выдает старший байт, и мне достаточно, чтобы узнать стоит флаг или нет прочитать только ОДИН бит в этой тетраде. А остальные проигнорировать...
Если я пропущу младшую тетраду и строб на нее не подам он на меня сильно обидится?
Последний раз редактировалось СКАЗОЧНИК Вс янв 11, 2015 11:38:04, всего редактировалось 1 раз.
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Обидится... А может и послать
После чтения первых 4-ёх бит (с BS) дайте ещё один строб не воспринимая данные.
После чтения первых 4-ёх бит (с BS) дайте ещё один строб не воспринимая данные.
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Понятно... Хотелось код ужать просто. )))
Вот до чего я додумался в плане оптимизации как по скорости (хотя для дисплея не особо важно), так и по памяти. Сэкономил 16 Байт.
Было так:
Стало так:
Вот до чего я додумался в плане оптимизации как по скорости (хотя для дисплея не особо важно), так и по памяти. Сэкономил 16 Байт.
Было так:
Спойлер
Код: Выделить всё
DB_LINE:
lsr R17 ; Сдвигаем вправо, крайний вывалится в С
brcc Pusto1 ; Если С=0, то переходим по метке
sbi DB4port, DB4pin ; Иначе, выставляем бит в 1
rjmp Next1 ; Идем проверять следующий
Pusto1: cbi DB4port, DB4pin ; Выставляем бит в 0
Next1: lsr R17 ; Сдвигаем вправо, крайний вывалится в С
brcc Pusto2 ; Если С=0, то переходим по метке
sbi DB5port, DB5pin ; Иначе, выставляем бит в 1
rjmp Next2 ; Идем проверять следующий
Pusto2: cbi DB5port, DB5pin ; Выставляем бит в 0
Next2: lsr R17 ; Сдвигаем вправо, крайний вывалится в С
brcc Pusto3 ; Если С=0, то переходим по метке
sbi DB6port, DB6pin ; Иначе, выставляем бит в 1
rjmp Next3 ; Идем проверять следующий
Pusto3: cbi DB6port, DB6pin ; Выставляем бит в 0
Next3: lsr R17 ; Сдвигаем вправо, крайний вывалится в С
brcc Pusto4 ; Если С=0, то переходим по метке
sbi DB7port, DB7pin ; Иначе, выставляем бит в 1
ret ;
Pusto4: cbi DB7port, DB7pin ; Выставляем бит в 0
retСпойлер
Код: Выделить всё
DB_LINE: sbi DB4port, DB4pin
sbi DB5port, DB5pin
sbi DB6port, DB6pin
sbi DB7port, DB7pin
sbrs R17, 0 ; Пропустить слудующую, еслли бит установлен
cbi DB4port, DB4pin
sbrs R17, 1 ; Пропустить слудующую, еслли бит установлен
cbi DB5port, DB5pin
sbrs R17, 2 ; Пропустить слудующую, еслли бит установлен
cbi DB6port, DB6pin
sbrs R17, 3 ; Пропустить слудующую, еслли бит установлен
cbi DB7port, DB7pin
ret
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Если цель ужать код - вместо макросов используйте подпрограммы.
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Чего это?
Они же вроде, если макросы не использовать и память не жрут? А так, вроде одно и тоже...
Они же вроде, если макросы не использовать и память не жрут? А так, вроде одно и тоже...
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Текст написаный в макросах, при трансляции программы, вставляется в текст программы везде, где в программе есть название макроса.
Посмотрите Disassembly Listing (у вас он может по-другому называться).
Посмотрите Disassembly Listing (у вас он может по-другому называться).
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Все. Понял. Но с ними удобно. ))) Просто пишу АДРЕС Х, У и у меня курсор уже в нужном месте...
Короче, смысл в макросах только для удобства и лучше, если он применяется в программе один раз...
Короче, смысл в макросах только для удобства и лучше, если он применяется в программе один раз...
Станислав
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Просто, в конце текста макроса вместо .ENDM поставьте RET, уберите .MACRO и там, где ссылки на макросы подпишите rcall.
Работы на несколько минут, а код ужмётся существенно.
P.S.
А если макрос используется один раз, тогда какой в нём смысл?
Работы на несколько минут, а код ужмётся существенно.
P.S.
А если макрос используется один раз, тогда какой в нём смысл?
С Уважением, Альберт (Albert_V).
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Подключил библиотеку, написал в основной программе ИНИТЛЦД, где нужно и все. ))) Вот и сработал макрос. БОльше его и не надо.
А по поводу rcall, как же я тогда параметры в подпрограмму буду передавать? Макрос же с параметрами..
А по поводу rcall, как же я тогда параметры в подпрограмму буду передавать? Макрос же с параметрами..
Последний раз редактировалось СКАЗОЧНИК Вс янв 11, 2015 12:46:24, всего редактировалось 1 раз.
Станислав


