XII - Wyświetlacz LCD

Celem ćwiczenia jest zapoznanie się z wyświetlaczem LCD, jego sterowaniem oraz sposobem działania.

Część I

Wyświetlacz LCD dostępny na płytce Altery jest układem opartym o kontroler HD44780. W odróżnieniu od wyświetlaczy 7-segmentowych sterowanie odbywa się na zasadzie wysyłania odpowiednich komend oraz zapisu danych do wewnętrznej pamięci wyświetlacza. Dokładny opis komend wysyłanych do sterownika dostępny jest tutaj.

Poniżej przedstawiono prosty kod VHDL, który podłącza bezpośrednio wszystkie wejścia sterownika do przełączników SW. Wgraj niniejszy kod na płytke, a następnie używając przełączników SW wyświetl na wyświetlaczu napis "Hello world".
 
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY lcd IS
	PORT ( 	SW : IN STD_LOGIC_VECTOR(17 DOWNTO 0);
			LEDR : OUT STD_LOGIC_VECTOR(17 DOWNTO 0);
			LEDG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
			LCD_RW: OUT STD_LOGIC;
			LCD_EN: OUT STD_LOGIC;
			LCD_RS: OUT STD_LOGIC;
			LCD_ON: OUT STD_LOGIC;
			LCD_BLON: OUT STD_LOGIC;
			LCD_DATA: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
		);
END lcd;
 
ARCHITECTURE Behavior OF lcd IS
signal S_RW,S_EN,S_RS,S_ON,S_BLON: STD_LOGIC;
signal S_DATA: STD_LOGIC_VECTOR(7 downto 0);
BEGIN
	LCD_RW <= S_RW;
	LCD_EN <= S_EN;
	LCD_RS <= S_RS;
	LCD_ON <= S_ON;
	LCD_BLON <= S_BLON;
	LCD_DATA <= S_DATA;
 
	LEDR(0) <= S_RW;
	LEDR(1) <= S_EN;
	LEDR(2) <= S_RS;
	LEDR(3) <= S_ON;
	LEDR(4) <= S_BLON;
	LEDG <= S_DATA;
 
	S_RW <= SW(0);
	S_EN <= SW(1);
	S_RS <= SW(2);
	S_ON <= SW(3);
	S_BLON <= SW(4);
 
	S_DATA <= SW(12 downto 5);
END Behavior;
 

Część II

Zmodyfikuj kod z części pierwszej tak by napis "Hello world" pojawił się na wyświetlaczu automatycznie po wgraniu programu na płytkę.

Część III

Zmodyfikuj kod z poprzedniego ćwiczenia tak, aby na wyświetlaczu pojawił się sygnał z licznika zliczającego sekundy modulo 60.

Część IV

Zmodyfikuj kod z części II, tak by na wyświetlaczu pojawił się napis "Witaj świecie", z polskimi znakami diakrytycznymi.