85 lines
2.2 KiB
C
85 lines
2.2 KiB
C
// This header contains low level code to export from hd44780.c to "lower" HW
|
|
// implementation dependent files.
|
|
|
|
#ifndef HD_LOW_H
|
|
#define HD_LOW_H
|
|
|
|
enum ifWidth { IF_4bit, IF_8bit };
|
|
|
|
//void common_init (enum ifWidth ifwidth);
|
|
void common_init ();
|
|
|
|
// Structures holding pointers to HD44780 specific functions
|
|
typedef struct hwDependentFns {
|
|
// microsec pauses
|
|
void (*uPause) (int microSecondsTenths);
|
|
|
|
// Senddata to the LCD
|
|
// dispID - display to send data to (0 = all displays)
|
|
// flags - data or instruction command (RS_DATA | RS_INSTR)
|
|
// ch - character to display or instruction value
|
|
void (*senddata) (unsigned char dispID, unsigned char flags, unsigned char ch);
|
|
|
|
// Switch the backlight on or off
|
|
// state - to be or not to be on
|
|
void (*backlight) (unsigned char state);
|
|
|
|
// Read the keypad
|
|
// Ydata - the up to 11 bits that should be put on the Y side of the matrix
|
|
// return - the up to 5 bits that are read out on the X side of the matrix
|
|
unsigned char (*readkeypad) (unsigned int Ydata);
|
|
|
|
// Scan the keypad and return a scancode.
|
|
// The code is the Yvalue in the high nibble and the Xvalue in the low nibble.
|
|
// A subdriver should do only one of two things:
|
|
// - set readkeypad; or
|
|
// - override scankeypad.
|
|
unsigned char (*scankeypad) ();
|
|
|
|
|
|
} HD44780_functions; /* for want of a better name :-) */
|
|
|
|
extern HD44780_functions *hd44780_functions;
|
|
|
|
// commands for senddata
|
|
#define RS_DATA 0x00
|
|
#define RS_INSTR 0x01
|
|
|
|
#define CLEAR 0x01
|
|
|
|
#define HOMECURSOR 0x02
|
|
|
|
#define ENTRYMODE 0x04
|
|
#define E_MOVERIGHT 0x02
|
|
#define E_MOVELEFT 0x00
|
|
#define EDGESCROLL 0x01
|
|
#define NOSCROLL 0x00
|
|
|
|
#define ONOFFCTRL 0x08
|
|
#define DISPON 0x04
|
|
#define DISPOFF 0x00
|
|
#define CURSORON 0x02
|
|
#define CURSOROFF 0x00
|
|
#define CURSORBLINK 0x01
|
|
#define CURSORNOBLINK 0x00
|
|
|
|
#define CURSORSHIFT 0x10
|
|
#define SCROLLDISP 0x08
|
|
#define MOVECURSOR 0x00
|
|
#define MOVERIGHT 0x04
|
|
#define MOVELEFT 0x00
|
|
|
|
#define FUNCSET 0x20
|
|
#define IF_8BIT 0x10
|
|
#define IF_4BIT 0x00
|
|
#define TWOLINE 0x08
|
|
#define ONELINE 0x00
|
|
#define LARGECHAR 0x04 /* 5x11 characters */
|
|
#define SMALLCHAR 0x00 /* 5x8 characters */
|
|
|
|
#define SETCHAR 0x40
|
|
|
|
#define POSITION 0x80
|
|
|
|
#endif
|