Unit HD44780
Return to Unit Reference
Description
Hitachi HD44780 LCD controller Driver unit
The Hitachi HD44780 is a dot matrix liquid crystal display controller. It supports 5x8 or 5x10 characters and includes a 240 character font in ROM, 80 bytes of character RAM and 64 bytes of character generator RAM for custom characters.
The device support 4 bit or 8 bit modes, and has a range of standard functions for display clear, display on/off, cursor on/off, character blink, cursor shift etc.
This unit creates a Console device to represent the LCD and provides the standard console device functions (where appropriate) to draw text, clear the screen, scroll text and manage the cursor.
Currently only 4 bit mode is supported but extension to include 8 bit mode is possible with some additional setup and support functions.
Constants
HD44780_CONSOLE_*
HD44780_CONSOLE_DESCRIPTION = 'Hitachi HD44780 LCD Controller';
|
Description of HD44780 device |
HD44780_*
HD44780_CLEARDISPLAY = $01;
|
|
HD44780_RETURNHOME = $02;
|
|
HD44780_ENTRYMODESET = $04;
|
|
HD44780_DISPLAYCONTROL = $08;
|
|
HD44780_CURSORSHIFT = $10;
|
|
HD44780_FUNCTIONSET = $20;
|
|
HD44780_SETCGRAMADDR = $40;
|
|
HD44780_SETDDRAMADDR = $80;
|
HD44780_ENTRYMODESET_*
HD44780_ENTRYMODESET_RIGHT = $00;
|
|
HD44780_ENTRYMODESET_LEFT = $02;
|
|
HD44780_ENTRYMODESET_SHIFTINC = $01;
|
|
HD44780_ENTRYMODESET_SHIFTDEC = $00;
|
HD44780_DISPLAYCONTROL_*
HD44780_DISPLAYCONTROL_DISPLAYON = $04;
|
|
HD44780_DISPLAYCONTROL_DISPLAYOFF = $00;
|
|
HD44780_DISPLAYCONTROL_CURSORON = $02;
|
|
HD44780_DISPLAYCONTROL_CURSOROFF = $00;
|
|
HD44780_DISPLAYCONTROL_BLINKON = $01;
|
|
HD44780_DISPLAYCONTROL_BLINKOFF = $00;
|
HD44780_CURSORSHIFT_*
HD44780_CURSORSHIFT_DISPLAY = $08;
|
|
HD44780_CURSORSHIFT_CURSOR = $00;
|
|
HD44780_CURSORSHIFT_RIGHT = $04;
|
|
HD44780_CURSORSHIFT_LEFT = $00;
|
HD44780_FUNCTIONSET_*
HD44780_FUNCTIONSET_8BITMODE = $10;
|
|
HD44780_FUNCTIONSET_4BITMODE = $00;
|
|
HD44780_FUNCTIONSET_2LINE = $08;
|
|
HD44780_FUNCTIONSET_1LINE = $00;
|
|
HD44780_FUNCTIONSET_5X10DOTS = $04;
|
|
HD44780_FUNCTIONSET_5X8DOTS = $00;
|
HD44780_ROW_OFFSETS*
4 rows | |
HD44780_ROW_OFFSETS:array[0..3] of Byte = ($00,$40,$14,$54);
|
Type definitions
HD44780 character types
PHD44780Character = ^THD44780Character;
THD44780Character = array[0..7] of Byte;
HD44780 console types
PHD44780Console = ^THD44780Console;
THD44780Console = record
Console Properties | |
Console:TConsoleDevice;
|
|
HD44780 Properties | |
GPIO:PGPIODevice;
|
The GPIO device this Console is connected to |
RS:LongWord;
|
The GPIO pin for the RS line |
RW:LongWord;
|
The GPIO pin for the RW line |
EN:LongWord;
|
The GPIO pin for the EN line |
D4:LongWord;
|
The GPIO pin for the D4 line |
D5:LongWord;
|
The GPIO pin for the D5 line |
D6:LongWord;
|
The GPIO pin for the D6 line |
D7:LongWord;
|
The GPIO pin for the D7 line |
EntryMode:Byte;
|
Current value of the Entry Mode settings |
FunctionSet:Byte;
|
Current value of the Function Set settings |
DisplayControl:Byte;
|
Current value of the Display Control settings |
Cursor Properties | |
CursorX:Byte;
|
|
CursorY:Byte;
|
|
Buffer Properties | |
Size:LongWord;
|
|
Buffer:PByte;
|
Public variables
None defined
Function declarations
HD44780 functions
function HD44780ConsoleCreate(GPIO:PGPIODevice; const Name:String; Width,Height,RS,RW,EN,D4,D5,D6,D7:LongWord):PConsoleDevice;
Note | None documented |
---|
function HD44780ConsoleDestroy(Console:PConsoleDevice):LongWord;
Note | None documented |
---|
HD44780 console functions
function HD44780ConsoleOpen(Console:PConsoleDevice):LongWord;
Note | Not intended to be called directly by applications, use ConsoleDeviceOpen instead |
---|
function HD44780ConsoleClose(Console:PConsoleDevice):LongWord;
Note | Not intended to be called directly by applications, use ConsoleDeviceClose instead |
---|
function HD44780ConsoleClear(Console:PConsoleDevice; Color:LongWord):LongWord;
Note | Not intended to be called directly by applications, use ConsoleDeviceClear instead |
---|
function HD44780ConsoleScroll(Console:PConsoleDevice; X1,Y1,X2,Y2,Count,Direction:LongWord):LongWord;
Note | Not intended to be called directly by applications, use ConsoleDeviceScroll instead |
---|
function HD44780ConsoleDrawChar(Console:PConsoleDevice; Handle:TFontHandle; Ch:Char; X,Y,Forecolor,Backcolor:LongWord):LongWord;
Note | Not intended to be called directly by applications, use ConsoleDeviceDrawChar instead |
---|
function HD44780ConsoleDrawText(Console:PConsoleDevice; Handle:TFontHandle; const Text:String; X,Y,Forecolor,Backcolor,Len:LongWord):LongWord;
Note | Not intended to be called directly by applications, use ConsoleDeviceDrawText instead |
---|
function HD44780ConsoleDrawBlock(Console:PConsoleDevice; X1,Y1,X2,Y2,Color:LongWord):LongWord;
Note | Not intended to be called directly by applications, use ConsoleDeviceDrawBlock instead |
---|
function HD44780ConsoleDrawWindow(Console:PConsoleDevice; Handle:TWindowHandle):LongWord;
Note | Caller must hold the Window lock
Not intended to be called directly by applications, use ConsoleDeviceDrawWindow instead |
---|
function HD44780ConsolePutText(Console:PConsoleDevice; Handle:TFontHandle; const Source,Dest:TConsolePoint; Buffer:PConsoleChar; Width,Height,Skip:LongWord):LongWord;
Note | Not intended to be called directly by applications, use ConsoleDevicePutText instead |
---|
function HD44780ConsoleGetPosition(Console:PConsoleDevice; Position:LongWord; var X1,Y1,X2,Y2:LongWord):LongWord;
Note | Not intended to be called directly by applications, use ConsoleDeviceGetPosition instead |
---|
HD44780 helper functions
function HD44780WriteChar(Console:PHD44780Console; Ch:Char):LongWord;
Note | Caller must hold the Console lock |
---|
function HD44780WriteData(Console:PHD44780Console; Value:Byte):LongWord;
Note | Caller must hold the Console lock |
---|
function HD44780PulseEnable(Console:PHD44780Console):LongWord;
Note | Caller must hold the Console lock |
---|
function HD44780CursorHome(Console:PHD44780Console):LongWord;
Note | Caller must hold the Console lock |
---|
function HD44780CursorBlink(Console:PHD44780Console; Blink:Boolean):LongWord;
Note | Caller must hold the Console lock |
---|
function HD44780CursorVisible(Console:PHD44780Console; Visible:Boolean):LongWord;
Note | Caller must hold the Console lock |
---|
function HD44780CursorPosition(Console:PHD44780Console; Row,Col:Byte):LongWord;
Note | Caller must hold the Console lock |
---|
function HD44780DisplayEnabled(Console:PHD44780Console; Enabled:Boolean):LongWord;
Note | Caller must hold the Console lock |
---|
function HD44780AddCharacter(Console:PHD44780Console; Location:Byte; Character:THD44780Character):LongWord;
Note | Caller must hold the Console lock |
---|
Return to Unit Reference