Portable and maintable HD44780 driver files.
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
// 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);
|
||||
|
||||
// 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);
|
||||
|
||||
// position the cursor
|
||||
// dispID - display to send data to (0 = all displays)
|
||||
// DDaddr - display data address (see sect 2.5.2 of the LCD module FAQ)
|
||||
void (*position)(int dispID, int DDaddr);
|
||||
|
||||
// toggle vertical autoscroll on all displays
|
||||
// on - non-zero turns autoscroll on, zero value turns it off
|
||||
void (*autoscroll)(int on);
|
||||
} 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
|
||||
|
||||
|
||||
// Parallel port pin definitions
|
||||
// Output lines
|
||||
#define nSTRB 0x01 /* negative logic */
|
||||
#define STRB 0x01
|
||||
#define nLF 0x02
|
||||
#define LF 0x02
|
||||
#define INIT 0x04 /* the only positive logic output line */
|
||||
#define nSEL 0x08
|
||||
#define SEL 0x08
|
||||
|
||||
#define OUTMASK 0x0B
|
||||
|
||||
// Input lines
|
||||
#define nFAULT 0x08
|
||||
#define FAULT 0x08
|
||||
#define SELIN 0x10
|
||||
#define PAPEREND 0x20
|
||||
#define nACK 0x40
|
||||
#define ACK 0x40
|
||||
#define BUSY 0x80
|
||||
|
||||
#define INMASK 0x48
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user