Fix hd44780 formatting and add modifications descriptions to files headers

This commit is contained in:
Silver Kits 2016-10-10 11:38:01 +03:00
parent 51951fcea1
commit 6dac14ab59
4 changed files with 951 additions and 907 deletions

1510
lib/hd44780_111/hd44780.c Executable file → Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,73 +1,75 @@
/***************************************************************************** /*****************************************************************************
Title : HD44780 Library Title : HD44780 Library
Author : SA Development Author : SA Development
Version: 1.11 Version: 1.11
*****************************************************************************/ Modifications for: Arduino Mega 2560
Itead Studio Arduino 1602 LED Keypad Shield
#ifndef HD44780_H Modified by: Silver Kits <silver.kits@eesti.ee> October 2016
#define HD44780_H *****************************************************************************/
#ifndef HD44780_H
#define HD44780_H
//LCD Commands for HD44780
#define LCD_CLR 0 // DB0: clear display
//LCD Commands for HD44780
#define LCD_HOME 1 // DB1: return to home position #define LCD_CLR 0 // DB0: clear display
#define LCD_ENTRY_MODE 2 // DB2: set entry mode #define LCD_HOME 1 // DB1: return to home position
#define LCD_ENTRY_INC 1 // DB1: 1=increment, 0=decrement
#define LCD_ENTRY_SHIFT 0 // DB0: 1=display shift on #define LCD_ENTRY_MODE 2 // DB2: set entry mode
#define LCD_ENTRY_INC 1 // DB1: 1=increment, 0=decrement
#define LCD_DISPLAYMODE 3 // DB3: turn lcd/cursor on #define LCD_ENTRY_SHIFT 0 // DB0: 1=display shift on
#define LCD_DISPLAYMODE_ON 2 // DB2: turn display on
#define LCD_DISPLAYMODE_CURSOR 1 // DB1: turn cursor on #define LCD_DISPLAYMODE 3 // DB3: turn lcd/cursor on
#define LCD_DISPLAYMODE_BLINK 0 // DB0: blinking cursor #define LCD_DISPLAYMODE_ON 2 // DB2: turn display on
#define LCD_DISPLAYMODE_CURSOR 1 // DB1: turn cursor on
#define LCD_MOVE 4 // DB4: move cursor/display #define LCD_DISPLAYMODE_BLINK 0 // DB0: blinking cursor
#define LCD_MOVE_DISP 3 // DB3: move display (0-> cursor)
#define LCD_MOVE_RIGHT 2 // DB2: move right (0-> left) #define LCD_MOVE 4 // DB4: move cursor/display
#define LCD_MOVE_DISP 3 // DB3: move display (0-> cursor)
#define LCD_FUNCTION 5 // DB5: function set #define LCD_MOVE_RIGHT 2 // DB2: move right (0-> left)
#define LCD_FUNCTION_8BIT 4 // DB4: set 8BIT mode (0->4BIT mode)
#define LCD_FUNCTION_2LINES 3 // DB3: two lines (0->one line) #define LCD_FUNCTION 5 // DB5: function set
#define LCD_FUNCTION_10DOTS 2 // DB2: 5x10 font (0->5x7 font) #define LCD_FUNCTION_8BIT 4 // DB4: set 8BIT mode (0->4BIT mode)
#define LCD_FUNCTION_2LINES 3 // DB3: two lines (0->one line)
#define LCD_CGRAM 6 // DB6: set CG RAM address #define LCD_FUNCTION_10DOTS 2 // DB2: 5x10 font (0->5x7 font)
#define LCD_DDRAM 7 // DB7: set DD RAM address
#define LCD_CGRAM 6 // DB6: set CG RAM address
#define LCD_BUSY 7 // DB7: LCD is busy #define LCD_DDRAM 7 // DB7: set DD RAM address
// LCD columns and rows definitions #define LCD_BUSY 7 // DB7: LCD is busy
#define LCD_ROW_1_START 0
#define LCD_ROW_2_START 64 // LCD columns and rows definitions
#define LCD_ROW_1_LAST_VISIBLE_COL 15 #define LCD_ROW_1_START 0
#define LCD_ROW_1_LAST_COL 39 #define LCD_ROW_2_START 64
#define LCD_ROW_2_LAST_VISIBLE_COL 79 #define LCD_ROW_1_LAST_VISIBLE_COL 15
#define LCD_ROW_1_LAST_COL 103 #define LCD_ROW_1_LAST_COL 39
#define LCD_COLS_MAX 103 #define LCD_ROW_2_LAST_VISIBLE_COL 79
#define LCD_VISIBLE_COLS 16 #define LCD_ROW_1_LAST_COL 103
#define LCD_COLS_MAX 103
// Maximum character what can be displayed with 1 byte #define LCD_VISIBLE_COLS 16
#define LCD_MAX_CARACTER 255
// Maximum character what can be displayed with 1 byte
#define LCD_MAX_CARACTER 255
void lcd_init();
void lcd_command(uint8_t cmd);
void lcd_init();
void lcd_clrscr(); void lcd_command(uint8_t cmd);
void lcd_clr(uint8_t pos, uint8_t len);
void lcd_home(); void lcd_clrscr();
void lcd_goto(uint8_t pos); void lcd_clr(uint8_t pos, uint8_t len);
void lcd_home();
#if RW_LINE_IMPLEMENTED==1 void lcd_goto(uint8_t pos);
uint8_t lcd_getc();
#endif #if RW_LINE_IMPLEMENTED==1
uint8_t lcd_getc();
void lcd_putc(char c); #endif
void lcd_puts(const char *s);
void lcd_puts_P(const char *progmem_s); void lcd_putc(char c);
#if (LCD_DISPLAYS>1) void lcd_puts(const char *s);
void lcd_use_display(int ADisplay); void lcd_puts_P(const char *progmem_s);
#endif #if (LCD_DISPLAYS>1)
void lcd_use_display(int ADisplay);
#endif #endif
#endif

View File

@ -1,30 +1,38 @@
#ifndef HD44780_SETTINGS_H /*****************************************************************************
#define HD44780_SETTINGS_H Title : HD44780 Library
Author : SA Development
#define USE_ADELAY_LIBRARY 0 Version: 1.11
#define LCD_BITS 4 Modifications for: Arduino Mega 2560
#define RW_LINE_IMPLEMENTED 0 Itead Studio Arduino 1602 LED Keypad Shield
#define WAIT_MODE 0 Modified by: Silver Kits <silver.kits@eesti.ee> October 2016
#define DELAY_RESET 15 *****************************************************************************/
#ifndef HD44780_SETTINGS_H
// Pin and port definitions for Arduino Mega 2560 #define HD44780_SETTINGS_H
#define LCD_DB4_PORT PORTG
#define LCD_DB4_PIN 5 #define USE_ADELAY_LIBRARY 0
#define LCD_DB5_PORT PORTE #define LCD_BITS 4
#define LCD_DB5_PIN 3 #define RW_LINE_IMPLEMENTED 0
#define LCD_DB6_PORT PORTH #define WAIT_MODE 0
#define LCD_DB6_PIN 3 #define DELAY_RESET 15
#define LCD_DB7_PORT PORTH
#define LCD_DB7_PIN 4 // Pin and port definitions for Arduino Mega 2560
#define LCD_DB4_PORT PORTG
#define LCD_RS_PORT PORTH #define LCD_DB4_PIN 5
#define LCD_RS_PIN 5 #define LCD_DB5_PORT PORTE
#define LCD_DB5_PIN 3
#define LCD_DISPLAYS 1 #define LCD_DB6_PORT PORTH
#define LCD_DB6_PIN 3
#define LCD_DISPLAY_LINES 2 #define LCD_DB7_PORT PORTH
#define LCD_DB7_PIN 4
#define LCD_E_PORT PORTH
#define LCD_E_PIN 6 #define LCD_RS_PORT PORTH
#define LCD_RS_PIN 5
#endif /* HD44780_SETTINGS_H */
#define LCD_DISPLAYS 1
#define LCD_DISPLAY_LINES 2
#define LCD_E_PORT PORTH
#define LCD_E_PIN 6
#endif /* HD44780_SETTINGS_H */

View File

@ -1,66 +1,66 @@
#ifndef HD44780_SETTINGS_H #ifndef HD44780_SETTINGS_H
#define HD44780_SETTINGS_H #define HD44780_SETTINGS_H
#define F_CPU 8000000 // Set Clock Frequency #define F_CPU 8000000 // Set Clock Frequency
#define USE_ADELAY_LIBRARY 0 // Set to 1 to use my ADELAY library, 0 to use internal delay functions #define USE_ADELAY_LIBRARY 0 // Set to 1 to use my ADELAY library, 0 to use internal delay functions
#define LCD_BITS 4 // 4 for 4 Bit I/O Mode, 8 for 8 Bit I/O Mode #define LCD_BITS 4 // 4 for 4 Bit I/O Mode, 8 for 8 Bit I/O Mode
#define RW_LINE_IMPLEMENTED 0 // 0 for no RW line (RW on LCD tied to ground), 1 for RW line present #define RW_LINE_IMPLEMENTED 0 // 0 for no RW line (RW on LCD tied to ground), 1 for RW line present
#define WAIT_MODE 0 // 0=Use Delay Method (Faster if running <10Mhz) #define WAIT_MODE 0 // 0=Use Delay Method (Faster if running <10Mhz)
// 1=Use Check Busy Flag (Faster if running >10Mhz) ***Requires RW Line*** // 1=Use Check Busy Flag (Faster if running >10Mhz) ***Requires RW Line***
#define DELAY_RESET 15 // in mS #define DELAY_RESET 15 // in mS
#if (LCD_BITS==8) // If using 8 bit mode, you must configure DB0-DB7 #if (LCD_BITS==8) // If using 8 bit mode, you must configure DB0-DB7
#define LCD_DB0_PORT PORTC #define LCD_DB0_PORT PORTC
#define LCD_DB0_PIN 0 #define LCD_DB0_PIN 0
#define LCD_DB1_PORT PORTC #define LCD_DB1_PORT PORTC
#define LCD_DB1_PIN 1 #define LCD_DB1_PIN 1
#define LCD_DB2_PORT PORTC #define LCD_DB2_PORT PORTC
#define LCD_DB2_PIN 2 #define LCD_DB2_PIN 2
#define LCD_DB3_PORT PORTC #define LCD_DB3_PORT PORTC
#define LCD_DB3_PIN 3 #define LCD_DB3_PIN 3
#endif #endif
#define LCD_DB4_PORT PORTC // If using 4 bit omde, yo umust configure DB4-DB7 #define LCD_DB4_PORT PORTC // If using 4 bit omde, yo umust configure DB4-DB7
#define LCD_DB4_PIN 4 #define LCD_DB4_PIN 4
#define LCD_DB5_PORT PORTC #define LCD_DB5_PORT PORTC
#define LCD_DB5_PIN 5 #define LCD_DB5_PIN 5
#define LCD_DB6_PORT PORTC #define LCD_DB6_PORT PORTC
#define LCD_DB6_PIN 6 #define LCD_DB6_PIN 6
#define LCD_DB7_PORT PORTC #define LCD_DB7_PORT PORTC
#define LCD_DB7_PIN 7 #define LCD_DB7_PIN 7
#define LCD_RS_PORT PORTC // Port for RS line #define LCD_RS_PORT PORTC // Port for RS line
#define LCD_RS_PIN 4 // Pin for RS line #define LCD_RS_PIN 4 // Pin for RS line
#define LCD_RW_PORT PORTC // Port for RW line (ONLY used if RW_LINE_IMPLEMENTED=1) #define LCD_RW_PORT PORTC // Port for RW line (ONLY used if RW_LINE_IMPLEMENTED=1)
#define LCD_RW_PIN 6 // Pin for RW line (ONLY used if RW_LINE_IMPLEMENTED=1) #define LCD_RW_PIN 6 // Pin for RW line (ONLY used if RW_LINE_IMPLEMENTED=1)
#define LCD_DISPLAYS 1 // Up to 4 LCD displays can be used at one time #define LCD_DISPLAYS 1 // Up to 4 LCD displays can be used at one time
// All pins are shared between displays except for the E // All pins are shared between displays except for the E
// pin which each display will have its own // pin which each display will have its own
// Display 1 Settings - if you only have 1 display, YOU MUST SET THESE // Display 1 Settings - if you only have 1 display, YOU MUST SET THESE
#define LCD_DISPLAY_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command #define LCD_DISPLAY_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command
#define LCD_E_PORT PORTC // Port for E line #define LCD_E_PORT PORTC // Port for E line
#define LCD_E_PIN 5 // Pin for E line #define LCD_E_PIN 5 // Pin for E line
#if (LCD_DISPLAYS>=2) // If you have 2 displays, set these and change LCD_DISPLAYS=2 #if (LCD_DISPLAYS>=2) // If you have 2 displays, set these and change LCD_DISPLAYS=2
#define LCD_DISPLAY2_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command #define LCD_DISPLAY2_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command
#define LCD_E2_PORT PORTC // Port for E line #define LCD_E2_PORT PORTC // Port for E line
#define LCD_E2_PIN 5 // Pin for E line #define LCD_E2_PIN 5 // Pin for E line
#endif #endif
#if (LCD_DISPLAYS>=3) // If you have 3 displays, set these and change LCD_DISPLAYS=3 #if (LCD_DISPLAYS>=3) // If you have 3 displays, set these and change LCD_DISPLAYS=3
#define LCD_DISPLAY3_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command #define LCD_DISPLAY3_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command
#define LCD_E3_PORT PORTC // Port for E line #define LCD_E3_PORT PORTC // Port for E line
#define LCD_E3_PIN 5 // Pin for E line #define LCD_E3_PIN 5 // Pin for E line
#endif #endif
#if (LCD_DISPLAYS>=4) // If you have 4 displays, set these and change LCD_DISPLAYS=4 #if (LCD_DISPLAYS>=4) // If you have 4 displays, set these and change LCD_DISPLAYS=4
#define LCD_DISPLAY4_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command #define LCD_DISPLAY4_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command
#define LCD_E4_PORT PORTC // Port for E line #define LCD_E4_PORT PORTC // Port for E line
#define LCD_E4_PIN 5 // Pin for E line #define LCD_E4_PIN 5 // Pin for E line
#endif #endif
#endif #endif