Графический LCD

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

Теория

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

Graafilise Рисунок образованый из пикселей графического LCD

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

Практика

В комплекте Домашней Лаборатории имеется монохромный графический LCD дисплей размерами 84 x 48 пикселей. Это такой же дисплей, которой используется в мобильных телефонах Nokia 3310. У дисплея имеется контроллер Philipsi PCD8544, с помощью которого можно общаться через последовательный интерфейс похожий на SPI. Отдельно управляется ещё и подсветка модуля дисплея. Общение с дисплеем не такое уж сложное, но из-за большого количества функций здесь это не объясняется. В библиотеке Домашней Лаборатории имеются функции для его использования.

Функции библиотеки графического LCD аналогичны буквенно-цифровому LCD. Для начала нужно сбросить дисплей функцией lcd_gfx_init. После запуска желательно дисплей, а правильнее будет сказать память контроллера, очистить функцией lcd_gfx_clear. В библиотеке вписана карта букв со всем латинским алфавитом, цифрами и знаками общего пользования. Высота буквы 7 и ширина 5 пикселей. Растояние между каждой буквой по горизонтали 6 и по вертикали 8 пикселей, т.е на дисплей вмещается 6 рядов и 14 столбов букв. Для отображения буквы или текста нужно заранее обозначить её местоположение функцией lcd_gfx_goto_char_xy. Для отображения буквы функцию lcd_gfx_write_char и для отображения текста - lcd_gfx_write_string.

Далее приведен пример счетчика времени. Программа считает секунды (приблизительно), минуты и часы. Для перевода времени в текст используется функция sprintf.

 

//
// Пример использования графического LCD Домашней Лаборатории.
// На LCD отображается время программы начиная с начала.
//
#include <stdio.h>
#include <homelab/module/lcd_gfx.h>
#include <homelab/delay.h>
 
//
// Основная программа
//
int main(void)
{
	int seconds = 0;
	char text[16];
 
	// Сброс LCD дисплея
	lcd_gfx_init();
 
	// Очистка дисплея
	lcd_gfx_clear();
 
	// Включение подсветки
	lcd_gfx_backlight(true);	
 
	// Отображение названия программы 
	lcd_gfx_goto_char_xy(1, 1);
	lcd_gfx_write_string("Счетчик времени");
 
	// Бесконечный цикл	
	while (true)
	{
		// Перевод секунд в форму времени
		// чч:мм:сс
		sprintf(text, "%02d:%02d:%02d",
			(seconds / 3600) % 24,
			(seconds / 60) % 60,
			 seconds % 60);
 
		// Отображение текста времени
		lcd_gfx_goto_char_xy(3, 3);
		lcd_gfx_write_string(text);
 
		// Увеличение секунды на 1
		seconds++;
 
		// Аппаратная задержка в 1000 миллисекунд
		hw_delay_ms(1000);
	}
}
ru/examples/display/lcd_graphic.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