Страница 86 из 123
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 20:39:14
СКАЗОЧНИК
для нормального управления дисплеем надо ставить регистр с защелкой. А вот как тогда эта библиотека может в этом случае помочь... я не совсем понимаю.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 21:09:54
WiseLord
Alexeyslav писал(а):А чем регистр не расширитель портов работающий только на выход?
Ну так-то да. Просто с той же PCF8574 - это именно расширитель шины I2C, и можно использовать аппаратные возможности МК. Записал данные в регистр - и не паришься о задержках, управлении регистром и прочим.
PCF8574 и иже с ними удобны именно двунаправленностью. Хотя в случае "полноценного", с чтением статуса, управления дисплеем в 4бит режиме их использовать не получится, т.к. при чтении нужно разное направление для RS/RW/E и входов данных. Придётся, как минимум, выносить эти 3 управляющие линии отдельно, а уже расширителем управлять только линией данных - и тогда уж лучше в 8-бит режиме.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 21:20:41
Alexeyslav
В случае с регистром, аппаратные возможности тоже можно использовать. SPI-интерфейс, к примеру. По прерыванию окончания передачи - дергать защелку. Записал в регистр передачи SPI и не паришься - все произойдет без дальнейшего вмешательства.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 21:46:10
levaclaus
Хоу Хоу, добил таки, вроде зачет. Подскажите ещё один момент, как переназначить кодовую таблицу символов?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 21:50:01
СКАЗОЧНИК
че это? А как там подсветка сделана? А что за дисплей такой?

А что имееется ввиду по "Переназначить" кодовую таблицу? И какую кодовую? Которая прошита в ЖКИ?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 10, 2015 22:11:02
levaclaus
СКАЗОЧНИК писал(а):че это? А как там подсветка сделана? А что за дисплей такой?

А что имееется ввиду по "Переназначить" кодовую таблицу? И какую кодовую? Которая прошита в ЖКИ?
это дисплей из ограниченной партии бытовой техники, которые ко мне попадают в некотором количестве, грех не использовать
В дисплее зашита таблица символов, отличная от стандартной таблицы (так захотел разработчик).
К примеру символ "_" в обычной таблице имеет код 0xF6, но в этом дисплее под кодом 0xF6 находится символ " " ".
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 07:09:10
WiseLord
В случае hd44780 таблица символов зашивается на производстве в ПЗУ маской (грубо говоря, транзистор в ячейке памяти либо физически есть, либо физически его нет) и не могут быть изменены в принципе. Потому у существуют разные кодировки дисплеев - с иероглифами, русскими буквами, расширенной латиницей и т.д.
Как сделано там в этом дисплее - это нужно смотреть даташит.
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 и его аналогах
Добавлено: Вс янв 11, 2015 09:24:31
akl
levaclaus писал(а):К примеру символ "_" в обычной таблице имеет код 0xF6, но в этом дисплее под кодом 0xF6 находится символ " " ".
Уточню. В обычной таблице символ _ имеет код 0x5F
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 10:03:45
СКАЗОЧНИК
akl писал(а):Уточню.
Подтверждаю. У меня на дисплее именно так 0х5F
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 10:37:28
levaclaus
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];
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 10:47:27
Alexeyslav
Это сгодится для вывода отдельных символов, но не строк. А чтобы строки правильно переводились - надо перехватывать вывод индивидуального символа и преобразовывать код по таблице, либо составлять заранее инклуд чисто с константами-строками в уже нужной кодировке и "компилировать" его каким-либо скриптом или внешней программой из исходных строк когда там что-либо меняется.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 11:13:09
СКАЗОЧНИК
Продолжу я и свои вопросы понемногу. )
Вот я хочу прочитать флаг БФ (занятости дисплея) и читаю его. Обязательно ли читать по 4 битной шине обе тетрады? Он же мне первым выдает старший байт, и мне достаточно, чтобы узнать стоит флаг или нет прочитать только ОДИН бит в этой тетраде. А остальные проигнорировать...
Если я пропущу младшую тетраду и строб на нее не подам он на меня сильно обидится?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 11:33:26
Albert_V
Обидится... А может и послать
После чтения первых 4-ёх бит (с BS) дайте ещё один строб не воспринимая данные.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 12:05:45
СКАЗОЧНИК
Понятно... Хотелось код ужать просто. )))
Вот до чего я додумался в плане оптимизации как по скорости (хотя для дисплея не особо важно), так и по памяти. Сэкономил 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
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 12:10:10
Albert_V
Если цель ужать код - вместо макросов используйте подпрограммы.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 12:11:22
СКАЗОЧНИК
Чего это?
Они же вроде, если макросы не использовать и память не жрут? А так, вроде одно и тоже...
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 12:15:09
Albert_V
Текст написаный в макросах, при трансляции программы, вставляется в текст программы везде, где в программе есть название макроса.
Посмотрите Disassembly Listing (у вас он может по-другому называться).
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 12:16:44
СКАЗОЧНИК
Все. Понял. Но с ними удобно. ))) Просто пишу АДРЕС Х, У и у меня курсор уже в нужном месте...
Короче, смысл в макросах только для удобства и лучше, если он применяется в программе один раз...
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 12:22:41
Albert_V
Просто, в конце текста макроса вместо .ENDM поставьте RET, уберите .MACRO и там, где ссылки на макросы подпишите rcall.
Работы на несколько минут, а код ужмётся существенно.
P.S.
А если макрос используется один раз, тогда какой в нём смысл?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 11, 2015 12:37:48
СКАЗОЧНИК
Подключил библиотеку, написал в основной программе ИНИТЛЦД, где нужно и все. ))) Вот и сработал макрос. БОльше его и не надо.
А по поводу rcall, как же я тогда параметры в подпрограмму буду передавать? Макрос же с параметрами..