Буквенно-цифровой LCD

Необходимые знания: [HW] LCD moodul, [LIB] Alfabeetiline LCD, [LIB] Viide,
[PRT] Perioodiline katkestus

Теория

Буквенно-цифровой LCD это жидкокристаллический экран (на английском языке liquid crystal display), который предназначен для отображения букв и цифр. На английском языке он называется alphanumeric LCD. В простейших жидкокристаллических экранах используются жидкие кристаллы, установленные между просвечивающимися электродами, что меняет поляризацию света, проходящего через электрическое поле. Электроды покрыты так же поляризационными фильтрами, которые гарантируют, что только в одну сторону поляризированный свет может пройти через весь экран. Если жидкий кристалл меняет поляризацию под воздействием электрического поля, тогда свет не может пройти через экран или его часть (сегмент) и он выглядит темным.

Основная характеризующая буквенно-цифрового LCD это расположение его сегментов. Экран разделен на множество индикаторов. У каждого индикатора имеется достаточно много сегментов для отображения букв и цифр или он образуется из матрицы, состоящей из маленьких сегментов (пикселей) квадратной формы. К примеру, 5×7 пиксельной матрицы достаточно для отображения всех цифр, латинского алфавита и умляутов. Обычно существует 1-4 ряда и 8-32 столбика индикаторов. У каждого индикатора есть маленький промежуток, точно также как и у букв в тексте.

Текст, составленный из пиксельной матрицы буквенно-цифрового LCD

Экран буквенно-цифрового LCD состоит помимо самого экрана еще из контроллера, который управляет сегментами экрана с помощью приказов, приходящих из сетевого интерфейса. В контроллере заранее запрограммирована карта букв, где у каждой буквы, цифры или знака свой порядковый номер или индекс. Отображение текста на экране происходит в основном при передаче индексов букв на LCD контроллер. В действительности, перед тем как что-либо будет отображаться, следует послать множество управляющих приказов LCD контроллеру. Перед использованием каждого конкретного LCD экрана следует ознакомиться с его спецификацией, так как LCD экраны очень разные и управление ими происходит по разному.

Буквенно-цифровые LCD экраны обычно с пассивной матрицей, где обновление сегментов электрического поля происходит поочередно. Из этого следует, что экраны с пассивной матрицей медленнее и обладают худшей контрастностью, чем экраны с активной матрицей, где загрузкой каждого сегмента управляет отдельный транзистор. LCD экраны существуют как с зеркальной задней поверхностью, так и с задней подсветкой, иногда даже состоящей из нескольких цветов. Цветов сегментов у буквенно-цифровых LCD экранов в большинстве случаев один – как правило черный, но есть так же экраны с белыми и разноцветными надписями.

Практика

Дигитальный модуль Домашней Лаборатории соединяется с 2×16 знаковым буквенно-цифровом LCD WC1602A. Для управления экраном имеется 4-битная шина данных и 3 управляющих вывода, но его протокол общения слишком объемный, чтобы его здесь объяснять. Для упрощения использования экрана в библиотеке Домашней Лаборатории имеются соответствующие функции, исходный код которых находится на интернет-странице Домашней Лаборатории.

Перед использованием экрана первым делом следует восстановить его исходные параметры. Для данной цели существует функция lcd_alpha_init, с помощью которой можно добавить на экран мигающий курсор. На экране, не зависимо от того видно это или нет, одна позиция курсора постоянно активна - туда вводится следующая буква. Следовательно, перед вводом текста, требуется навести курсор в нужное место. Для изменения местоположения курсора существует функция lcd_alpha_goto_xy и для отображения текста функция lcd_alpha_write_string. Все функции буквенно-цифрового LCD объяснены в данной библиотеке.

Следующий программный код демонстрирует использование буквенно-цифрового LCD в качестве часов. Время начинается с „00:00:00“ и увеличивается, примерно, с каждой секундой. Так как счет времени происходит с помощью функции задержки, то это происходит не совсем точно. Неточность объясняет упражнение переодического прерывания. Программа считает секунды и переводит их с помощью вычисления в минуты и секунды. Для отображения текста часов используется стандартная функция на языке Си - sprintf.

//
// Пример использования буквенно-цифрового LCD Домашней Лаборатории.
// На LCD отображается время начиная с начала программы.
//
#include <stdio.h>
#include <homelab/module/lcd_alpha.h>
#include <homelab/delay.h>
 
//
// Основная программа
//
int main(void)
{
	int seconds = 0;
	char text[16];
 
	// Настройка LCD экрана
	lcd_alpha_init(LCD_ALPHA_DISP_ON);
 
	// Очистка LCD экрана
	lcd_alpha_clear();
 
	// Название программы
	lcd_alpha_write_string("Счетчик времени");
 
	// Бесконечный цикл	
	while (true)
	{
		// Перевод секунд в форму часов
		// чч:мм:сс
		sprintf(text, "%02d:%02d:%02d",
			(seconds / 3600) % 24,
			(seconds / 60) % 60,
			 seconds % 60);
 
		// Отображение текста часов в началe второго ряда LCD
		lcd_alpha_goto_xy(0, 1);
		lcd_alpha_write_string(text);
 
		// Увеличение секунд на 1
		seconds++;
 
		// Аппаратная пауза в 1000 миллисекунд
		hw_delay_ms(1000);
	}
}
ru/examples/display/lcd_alphanumeric.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0