цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Как отображать произвольные символы на дисплее 16x2 с помощью микроконтроллера PIC и среды microC

Как отображать произвольные символы на дисплее 16x2 с помощью микроконтроллера PIC и среды microC

Автор: Mike(admin) от 14-12-2016, 18:15

Помимо стандартных символов (буквы, цифры, знаки пунктуации) на обычные ЖК-дисплеи можно выводить любые произвольные символы, например, сердечки, стрелки, смайлики и т.д. Для каждого такого символа выделяется область размером 5x8 пикселей. Эти фигуры сначала сохраняются в специальной памяти модуля дисплея, а затем отображаются на экране.


Как отображать произвольные символы на дисплее 16x2

В создании таких символов нет ничего сложного, и в данном материале будет продемонстрирован этот процесс с использованием микроконтроллера PIC18F4550 и среды разработки mikroC.


Все дело в том, что mikroC представляет собой настолько удобный инструмент разработки, что даже имеет в своем составе модуль создания произвольных символов для вывода на LCD-дисплей. Чтобы воспользоваться им, необходимо перейти в Tools - LCD Custom Character.


Как отображать произвольные символы на дисплее 16x2

Далее в секции Font следует выбрать опцию 5x7 + cursor line. После этого в зеленом окошке слева можно с помощью мыши рисовать желаемый символ.


Как отображать произвольные символы на дисплее 16x2

После создания символа нужно нажать на кнопку GENERATE. В итоге появится текст с кодом данного символа. Значения этого кода можно использовать в основном коде программы.


Как отображать произвольные символы на дисплее 16x2

Как отображать произвольные символы на дисплее 16x2

Как было упомянуто выше, модуль ЖК-дисплея хранит специальные символы в особой области памяти, называемой CGRAM. В этой памяти одновременно может храниться до восьми символов. В коде программы обязательно нужно указывать место в CGRAM, куда нужно сохранять символ. Ниже приведены схема подключения микроконтроллера PIC18F4550 к LCD-дисплею и код программы для отображения спецсимволов.


Как отображать произвольные символы на дисплее 16x2


// линии управления дисплеем
#define rs LATA.F0
#define rw LATA.F1
#define en LATA.F2

// линии данных дисплея
#define lcdport LATB

void lcd_ini();
void lcdcmd(unsigned char);
void lcddata(unsigned char);
void special_char(unsigned char, unsigned char, unsigned char *);
unsigned char data1[]={10,21,17,17,17,10,4,0};         // Код символа сердечко
unsigned char data2[]={12,18,1,2,4,8,0,8};
unsigned char data3[]={1,3,5,9,9,11,27,24};
unsigned int i=0;

void main(void)
{
	TRISA=0;			// Настраиваем порт A на выход
	LATA=0;
	TRISB=0;			// Настраиваем порт B на выход
	LATB=0;
	lcd_ini();			// Инициализация модуля ЖК-дисплея
	special_char(64,0x82,data1);		// Вызов функции для сохранения спецсимвола в 64-ой ячейки памяти 
						// и печать в локации 0x82 дисплея
	Delay_ms(1000);
	special_char(72,0x84,data2);
	Delay_ms(1000);
	special_char(80,0x86,data3);
}

void special_char(unsigned char cgram_loc, unsigned char lcd_loc, unsigned char *data)
{
	unsigned int j=0;
	lcdcmd(cgram_loc);			// Отправляем локацию CGRAM
	while(j<8)
	{
		lcddata(data[j]);		// Отправляем значения спецсимвола
		j++;
	}
	lcdcmd(lcd_loc);			// Отправляем локацию дисплея, по которой будет отображаться спецсимвол
	lcddata((cgram_loc-64)/8);		// ASCII-значение соответствующего базового адреса
}

void lcd_ini()
{
	lcdcmd(0x38);		// Настройка дисплея на 8-битный режим, 2 линии и шрифт 5x7
	lcdcmd(0x0C);		// Дисплей включен, курсор выключен
	lcdcmd(0x01);		// Очистка экрана
	lcdcmd(0x06);		// Инкрементирование курсора
	lcdcmd(0x80);		// Курсор в позицию 1 строки 1 столбца
}

void lcdcmd(unsigned char cmdout)
{
	lcdport=cmdout;		// Отправка команды в lcdport=PORTB
	rs=0;						
	rw=0;
	en=1;
	Delay_ms(10);
	en=0;
}

void lcddata(unsigned char dataout)
{
	lcdport=dataout;	// Отправка данных в lcdport=PORTB
	rs=1;
	rw=0;
	en=1;
	Delay_ms(10);
	en=0;
}



© digitrode.ru


Теги: PIC18F4550, mikroC, дисплеи



Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий