diff options
Diffstat (limited to '3rd-party/LCDHD44780.h')
| -rw-r--r-- | 3rd-party/LCDHD44780.h | 195 |
1 files changed, 0 insertions, 195 deletions
diff --git a/3rd-party/LCDHD44780.h b/3rd-party/LCDHD44780.h deleted file mode 100644 index 8e2e953..0000000 --- a/3rd-party/LCDHD44780.h +++ /dev/null @@ -1,195 +0,0 @@ -/*##############################################################*/ -/* Author: Marcus Nasarek */ -/* File: LCDH44780.h */ -/* License: */ -/* */ -/* This program is free software; you can redistribute it */ -/* and/or modify it under the terms of the GNU General */ -/* Public License as published by the Free Software */ -/* Foundation; either version 3 of the License, or */ -/* (at your option) any later version. */ -/* */ -/* This program is distributed in the hope that it will */ -/* be useful, but WITHOUT ANY WARRANTY; without even the */ -/* implied warranty of MERCHANTABILITY or */ -/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ -/* Public License for more details. */ -/* */ -/* You should have received a copy of the GNU General */ -/* Public License along with this program; if not, */ -/* see <http://www.gnu.org/licenses/>. */ -/* */ -/*##############################################################*/ - -// Thanks to Matt Hawkins (http://www.raspberrypi-spy.co.uk) -// The wiring for the LCD is as follows: -// 1 : GND -// 2 : 5V -// 3 : Contrast (0-5V)* -// 4 : RS (Register Select) -// 5 : R/W (Read Write) - GROUND THIS PIN -// 6 : Enable or Strobe -// 7 : Data Bit 0 - NOT USED -// 8 : Data Bit 1 - NOT USED -// 9 : Data Bit 2 - NOT USED -// 10: Data Bit 3 - NOT USED -// 11: Data Bit 4 -// 12: Data Bit 5 -// 13: Data Bit 6 -// 14: Data Bit 7 -// 15: LCD Backlight +5V** -// 16: LCD Backlight GND - -#ifndef _LCDHD44780_H_ -#define _LCDHD44780_H_ - -#include <stdlib.h> -#include <stdbool.h> -#include <stdio.h> -#include <string.h> -#include <stdbool.h> -#include <bcm2835.h> - -// Define GPIO pin to LCD pin mapping -#define LCD_RS 21 -#define LCD_E 20 -#define LCD_D4 26 -#define LCD_D5 19 -#define LCD_D6 13 -#define LCD_D7 6 - -// Define some device constants -// Maximum characters per line -#define LCD_WIDTH 16 -#define LCD_DATA HIGH -#define LCD_CMD LOW - -// Function set - -// Sets interface data length -// (DL), number of display lines -// (N), and character font (F). -// RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 -// 0 0 0 0 1 DL N F - - -// DL = 0 --> 4 bit data length (1 = 8 bit) -// N = 1 --> 2 line display (0 = 1 line) -// F = 0 --> 5x8 dot character font -// F = 1 --> 5x10 dot character font -// 0x28 = -// 0 0 0 0 1 0 1 0 0 0 -#define LCD_FUNCTION_SET 0x20 -#define DATA_LENGTH 0x10 -#define TWO_LINES 0x08 -#define BIG_FONT_SET 0x04 - - - -// Display control flags -// Sets entire display (D) on/off, -// cursor on/off (C), and -// blinking of cursor position -// character (B). -// RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 -// 0 0 0 0 0 0 1 D C B -// D = 1 --> display on -// C = 0 --> cursor off -// B = 0 --> blinking off -#define LCD_CONTROL 0x08 // display control -#define DISPLAY_ON 0x04 -#define DISPLAY_OFF 0x00 -#define CURSOR_ON 0x02 -#define BLINKING_ON 0x01 - -// Entry mode set - -// Sets cursor move direction -// and specifies display shift. -// These operations are -// performed during data write -// and read. -// Execution time 37us -// RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 -// 0 0 0 0 0 0 0 1 I/D S -// I/D = increment/decrement address pointer -// I/D = 1 --> increment -// S = 0 --> no shift -#define LCD_ENTRY_MODE 0x04 -#define ADDR_INCREMENT 0x02 -#define LINE_SHIFT 0x01 - -// Cursor or display shift - -// Moves the cursor and shifts -// display without chaning -// DDRAM contents. -// Execution time 37us -// RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 -// 0 0 0 0 0 1 S/C R/L - - -// S/C = cursor/display shift -// S/C = 0 --> cursor shift -// R/L = shift direction -// R/L = 1 --> shift to right -#define CURSOR_DISPLAY_SHIFT 0x10 -#define CURSOR_SHIFT 0x00 -#define DISPLAY_SHIFT 0x08 -#define SHIFT_RIGHT 0x04 -#define SHIFT_LEFT 0x00 - - -// LCD DDRAM address for the 1st line -// bits DB0..DB6 --> 0x00..0x4F -// DB7 = 1 --> offset = 0x80 -// RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 -// 0 0 1 ADD ADD ADD ADD ADD ADD ADD -// 0x80 = -// 0 0 1 0 0 0 0 0 0 0 -#define LCD_LINE_1 0x80 -// LCD DDRAM address for the 2nd line -// 2 lines with equal # of addresses -// DB7 = 1 --> offset = 0x80 + (0x00..0x4F)/2 = 0xC0 -#define LCD_LINE_2 0xC0 - -// Timing constants in us -#define E_DELAY 1 // us -#define E_CMD_PULSE 5000 // us -#define E_DATA_PULSE 5000 // us -#define C_DELAY 1 // us -#define R_EXEC_TIME 50 // us -#define GPIO_RISING 10 // ms - -#define MAX_WAIT 100 - -void init_gpio(void); - -void init_lcd(void); - -void lcd_function_set(uint8_t control_flags); - -void lcd_control(uint8_t control_flags); - -void lcd_entry_mode(uint8_t control_flags); - -void lcd_shift_control(uint8_t control_flags); - -void clear_lcd(void); - -void set_cursor(uint8_t addr); - -void display_off(void); - -void show_cursor(bool on); - -void cursor_blinking(bool on); - -void shift_cursor(uint8_t direction); - -void shift_display(uint8_t direction); - -void return_home(void); - -void write_to_lcd(uint8_t byte, uint8_t mode); - -void write_string(char *str); - -uint8_t read_from_lcd(uint8_t mode); - -void gpio_reset(void); - -#endif |
