Difference between revisions of "Unit HD44780"
Line 272: | Line 272: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 284: | Line 284: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 299: | Line 299: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use ConsoleDeviceOpen instead | + | | Not intended to be called directly by applications, use ConsoleDeviceOpen instead. |
|- | |- | ||
|} | |} | ||
Line 311: | Line 311: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use ConsoleDeviceClose instead | + | | Not intended to be called directly by applications, use ConsoleDeviceClose instead. |
|- | |- | ||
|} | |} | ||
Line 323: | Line 323: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use ConsoleDeviceClear instead | + | | Not intended to be called directly by applications, use ConsoleDeviceClear instead. |
|- | |- | ||
|} | |} | ||
Line 335: | Line 335: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use ConsoleDeviceScroll instead | + | | Not intended to be called directly by applications, use ConsoleDeviceScroll instead. |
|- | |- | ||
|} | |} | ||
Line 347: | Line 347: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use ConsoleDeviceDrawChar instead | + | | Not intended to be called directly by applications, use ConsoleDeviceDrawChar instead. |
|- | |- | ||
|} | |} | ||
Line 359: | Line 359: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use ConsoleDeviceDrawText instead | + | | Not intended to be called directly by applications, use ConsoleDeviceDrawText instead. |
|- | |- | ||
|} | |} | ||
Line 371: | Line 371: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use ConsoleDeviceDrawBlock instead | + | | Not intended to be called directly by applications, use ConsoleDeviceDrawBlock instead. |
|- | |- | ||
|} | |} | ||
Line 383: | Line 383: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Caller must hold the Window lock | | Caller must hold the Window lock | ||
− | Not intended to be called directly by applications, use ConsoleDeviceDrawWindow instead | + | Not intended to be called directly by applications, use ConsoleDeviceDrawWindow instead. |
|- | |- | ||
|} | |} | ||
Line 396: | Line 396: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use ConsoleDevicePutText instead | + | | Not intended to be called directly by applications, use ConsoleDevicePutText instead. |
|- | |- | ||
|} | |} | ||
Line 408: | Line 408: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Not intended to be called directly by applications, use ConsoleDeviceGetPosition instead | + | | Not intended to be called directly by applications, use ConsoleDeviceGetPosition instead. |
|- | |- | ||
|} | |} | ||
Line 423: | Line 423: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Caller must hold the Console lock | | Caller must hold the Console lock | ||
|- | |- | ||
Line 435: | Line 435: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Caller must hold the Console lock | | Caller must hold the Console lock | ||
|- | |- | ||
Line 447: | Line 447: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Caller must hold the Console lock | | Caller must hold the Console lock | ||
|- | |- | ||
Line 459: | Line 459: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Caller must hold the Console lock | | Caller must hold the Console lock | ||
|- | |- | ||
Line 471: | Line 471: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Caller must hold the Console lock | | Caller must hold the Console lock | ||
|- | |- | ||
Line 483: | Line 483: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Caller must hold the Console lock | | Caller must hold the Console lock | ||
|- | |- | ||
Line 495: | Line 495: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Caller must hold the Console lock | | Caller must hold the Console lock | ||
|- | |- | ||
Line 507: | Line 507: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Caller must hold the Console lock | | Caller must hold the Console lock | ||
|- | |- | ||
Line 519: | Line 519: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Caller must hold the Console lock | | Caller must hold the Console lock | ||
|- | |- |
Revision as of 04:19, 24 April 2018
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
PHD44780Character = ^THD44780Character;
THD44780Character = array[0..7] of Byte;
HD44780 console
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; Flags:LongWord):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