This is an old revision of the document!


Table of Contents

Alphanumeric LCD

Necessary knowledge: [HW] lcd, [LIB] Alphanumeric LCD, [LIB] Delay, [PRT] Periodic interrupt

Teooria

Alphanumeric LCD is liquid crystal display, with the purpose of displaying letters and numbers. In basic LCD liquid crystal placed between transparent electrodes is used, which changes the polarization of the passing light in electrical field. The electrodes are covered by polarization filters, which assure that only one way polarized light can pass the screen. If the liquid crystal changes its polarity due to the electrical field, the light can not pass the screen or part (segment) of it and it looks dark.

Main characteristic of alphanumerical LCD is the placing of its segments. The screen is divided into many indicators. Each indicator has either enough segments for displaying letters and numbers or it is formed from matrix of little square segments (pixels). For example, a matrix of 5×7 pixels is enough to display all numbers, and letters of Latin alphabet. There are usually 1 – 4 rows of indicators and 8 – 32 columns. Each indicator has a small difference like the letters in text have

The text formed of alphanumerical LCD pixels' matixes.

Alphanumerical LCD has besides screen, also controller which controls the segments of the screen according to the commands from the communication interface. There is a preprogrammed card of letters in the controller, where each letter, number or symbol has its own index. Displaying the text on the screen is basically done by sending the indexes to the controller. In reality there must be more control orders sent to the controller before anything can be displayed. For using LCD-s one has to introduce their data-sheets, because there are very different LCD-s.

Alphanumerical LCD-s are usually with passive matrix, where renewal of the electrical field of the segments is tone in turns. That is why the screens with passive matrix are slower and have not so good contrast as the active matrix screens where the charge of each segment is controlled by separate transistor. There are LCD-s with reflective back and with backlight sometimes even with several different backlights. But segment colors have alphanumerical LCD-s usually still one – black usually, but there is also screens with white and colorful writings.

Practice

To the digital module of the Home Lab connects a 2×16 symbol alphanumerical LCD WC 1602A. For controlling the screen, there is a 4-bit data-bus and 3 control pins, but its communication protocol is too capacious, to be explained here. For simplicity, there are corresponding functions in the library of the Home Lab for using the display.

First thing that needs to be done to use the display is to adjust it. For that is the lcd_alpha_init function, with which can set a blinking cursor to the screen. There is all the time an active position of the cursor on the screen, where next letter is entered, regardless whether it can be seen or not. So before entering the text, the cursor must be taken to the desired place. For changing the position of the cursor is the lcd_alpha_goto_xy and for displaying it lcd_alpha_write_string functions. All the functions of the alphanumerical LCD are explained in its library.

The following program code demonstrates the usage of alphanumerical LCD as a clock. The Time begins at 00:00:00 and grows approximately in every second. Since the counting of the time is done with the delay function, it is not very precise. The inaccuracy is explained in the exercise of the periodic interruption. The program counts the seconds and converts them into the minutes and seconds. To use clock time there is a standard function in the C-language: sprintf.

//
// The example of using the alphanumerical LCD of the Home Lab.
// The clock time starting at the beginning of the program is displayed on the LCD.
//
#include <stdio.h>
#include <homelab/module/lcd_alpha.h>
#include <homelab/delay.h>
 
//
// Main program.
//
int main(void)
{
	int seconds = 0;
	char text[16];
 
	// Set-up of the LCD.
	lcd_alpha_init(LCD_ALPHA_DISP_ON);
 
	// Cleaning of the LCD.
	lcd_alpha_clear();
 
	// Name of the program.
	lcd_alpha_write_string("The Time Counter");
 
	// Endless loop	
	while (true)
	{
		// Converting the seconds to the clock form:
		// hh:mm:ss
		sprintf(text, "%02d:%02d:%02d",
			(seconds / 3600) % 24,
			(seconds / 60) % 60,
			 seconds % 60);
 
		// Displaying the clock text in the beginning of the second row of the LCD.
		lcd_alpha_goto_xy(0, 1);
		lcd_alpha_write_string(text);
 
		// Growing seconds by 1.
		seconds++;
 
		// Hardware delay 1000 ms.
		hw_delay_ms(1000);
	}
}
en/examples/display/lcd_alphanumeric.1268157643.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
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