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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

для нормального управления дисплеем надо ставить регистр с защелкой. А вот как тогда эта библиотека может в этом случае помочь... я не совсем понимаю. :dont_know:
Станислав
Реклама
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

Alexeyslav писал(а):А чем регистр не расширитель портов работающий только на выход?
Ну так-то да. Просто с той же PCF8574 - это именно расширитель шины I2C, и можно использовать аппаратные возможности МК. Записал данные в регистр - и не паришься о задержках, управлении регистром и прочим.

PCF8574 и иже с ними удобны именно двунаправленностью. Хотя в случае "полноценного", с чтением статуса, управления дисплеем в 4бит режиме их использовать не получится, т.к. при чтении нужно разное направление для RS/RW/E и входов данных. Придётся, как минимум, выносить эти 3 управляющие линии отдельно, а уже расширителем управлять только линией данных - и тогда уж лучше в 8-бит режиме.
Реклама
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

В случае с регистром, аппаратные возможности тоже можно использовать. SPI-интерфейс, к примеру. По прерыванию окончания передачи - дергать защелку. Записал в регистр передачи SPI и не паришься - все произойдет без дальнейшего вмешательства.
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

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

Сообщение levaclaus »

Хоу Хоу, добил таки, вроде зачет. Подскажите ещё один момент, как переназначить кодовую таблицу символов?
20150110224016.jpg
(191.53 КБ) 775 скачиваний
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

че это? А как там подсветка сделана? А что за дисплей такой? :shock:
А что имееется ввиду по "Переназначить" кодовую таблицу? И какую кодовую? Которая прошита в ЖКИ?
Станислав
Реклама
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

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

Сообщение levaclaus »

СКАЗОЧНИК писал(а):че это? А как там подсветка сделана? А что за дисплей такой? :shock:
А что имееется ввиду по "Переназначить" кодовую таблицу? И какую кодовую? Которая прошита в ЖКИ?
это дисплей из ограниченной партии бытовой техники, которые ко мне попадают в некотором количестве, грех не использовать :kill:

В дисплее зашита таблица символов, отличная от стандартной таблицы (так захотел разработчик).
К примеру символ "_" в обычной таблице имеет код 0xF6, но в этом дисплее под кодом 0xF6 находится символ " " ".
Реклама
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение 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.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

levaclaus писал(а):К примеру символ "_" в обычной таблице имеет код 0xF6, но в этом дисплее под кодом 0xF6 находится символ " " ".
Уточню. В обычной таблице символ _ имеет код 0x5F
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

akl писал(а):Уточню.
Подтверждаю. У меня на дисплее именно так 0х5F
Станислав
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

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

Сообщение 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];
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Это сгодится для вывода отдельных символов, но не строк. А чтобы строки правильно переводились - надо перехватывать вывод индивидуального символа и преобразовывать код по таблице, либо составлять заранее инклуд чисто с константами-строками в уже нужной кодировке и "компилировать" его каким-либо скриптом или внешней программой из исходных строк когда там что-либо меняется.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Продолжу я и свои вопросы понемногу. )
Вот я хочу прочитать флаг БФ (занятости дисплея) и читаю его. Обязательно ли читать по 4 битной шине обе тетрады? Он же мне первым выдает старший байт, и мне достаточно, чтобы узнать стоит флаг или нет прочитать только ОДИН бит в этой тетраде. А остальные проигнорировать...
Если я пропущу младшую тетраду и строб на нее не подам он на меня сильно обидится?
Последний раз редактировалось СКАЗОЧНИК Вс янв 11, 2015 11:38:04, всего редактировалось 1 раз.
Станислав
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Обидится... А может и послать :)))
После чтения первых 4-ёх бит (с BS) дайте ещё один строб не воспринимая данные.
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Понятно... Хотелось код ужать просто. )))
Вот до чего я додумался в плане оптимизации как по скорости (хотя для дисплея не особо важно), так и по памяти. Сэкономил 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 »

Если цель ужать код - вместо макросов используйте подпрограммы.
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Чего это? :roll:
Они же вроде, если макросы не использовать и память не жрут? А так, вроде одно и тоже...
Станислав
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Текст написаный в макросах, при трансляции программы, вставляется в текст программы везде, где в программе есть название макроса.
Посмотрите Disassembly Listing (у вас он может по-другому называться).
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Все. Понял. Но с ними удобно. ))) Просто пишу АДРЕС Х, У и у меня курсор уже в нужном месте...
Короче, смысл в макросах только для удобства и лучше, если он применяется в программе один раз...
Станислав
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

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

Сообщение Albert_V »

Просто, в конце текста макроса вместо .ENDM поставьте RET, уберите .MACRO и там, где ссылки на макросы подпишите rcall.
Работы на несколько минут, а код ужмётся существенно.
P.S.
А если макрос используется один раз, тогда какой в нём смысл?
С Уважением, Альберт (Albert_V).
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Подключил библиотеку, написал в основной программе ИНИТЛЦД, где нужно и все. ))) Вот и сработал макрос. БОльше его и не надо.

А по поводу rcall, как же я тогда параметры в подпрограмму буду передавать? Макрос же с параметрами..
Последний раз редактировалось СКАЗОЧНИК Вс янв 11, 2015 12:46:24, всего редактировалось 1 раз.
Станислав
Ответить

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