/* ---------------------------------------------------------------------------* AVR_MLIB - HD 44780 LCD Display Driver* www.mlab.cz miho 2008* ---------------------------------------------------------------------------* LCD display driver for standard Hitachi 1/2/4 line character LCD modules* for AVR processors. It uses 4 or 8 bit interface without readback.* In the Examples section there is a demo application for this library.* ---------------------------------------------------------------------------* 00.00 2008/03/28 First Version* ---------------------------------------------------------------------------*/// What should be set and done before here// ---------------------------------------//// #include <stdio.h> // If you want to use printf, ...//// #define LCD_DATA B // 4 or 8 bits field (lsb bit of the port)// #define LCD_DATA_BIT 4//// #define LCD_RS D // Register Select (port and bit)// #define LCD_RS_BIT 4//// #define LCD_E D // Enable (port and bit)// #define LCD_E_BIT 3////// // LCD Display Parameters// #define LCD_INTERFACE_BITS 4 // 4 or 8 bit interface// #define LCD_LINES 1 // 1 or 2 or 4 lines// #define LCD_CHARS 20 // usualy 16 or 20, important for 4 line display only//// #include "lcd_hd44780.h" // Use LCD Library////// How to use the library// ----------------------//// void lcd_init(void) // Init LCD Display//// void lcd_home() // Goto Home//// void lcd_clear() // Clear Display//// void lcd_clear_home() // Clear Display and Goto Home with no Cursor//// void lcd_cursor_on() // Switch Cursor On//// void lcd_cursor_off() // Switch Cursor Off//// void lcd_cursor_left() // Move Cursor Left//// void lcd_cursor_right() // Move Cursor Right//// void lcd_gotoxy(uint8_t x, uint8_t y) // Move to Position (1,1 is the first position)//// int lcd_putc(char c) // LCD Char Output//// int lcd_putc_stream(char c, FILE *unused) // LCD Char Output (for Stream Library)////// How to use printf// -----------------//// 1) Define FILE structure//// static FILE lcd_stream = FDEV_SETUP_STREAM(lcd_putc_stream, NULL, _FDEV_SETUP_WRITE);//// 2) Connect it with standard output//// stdout = &lcd_stream; // Connect stdout to LCD Stream//// 3) Use printf//// printf("\fHello World!\n------------");//// 4) Use special chars//// \f - clear display and goto home// \n - goto the beginning of the next line// \r - goto to the beginning of curent line// \b - backspace// \v - start and end definition of user defined char////// How to use User Defined symbols// -------------------------------//// That is easy. Just print the definition to lcd. Look at the example//// printf("\v" "\x10" LCD_CHAR_BAT50 "\v"); // definition (redefines CGRAM content of the LCD)// printf("Battery Status \x10"); // usage//// \v starts the definition// \x10 first (of eight) user defined char// LCD_CHAR_BAT50 half battery symbol, you can define more symbols here (up to 8)// \v end of definition//#include "global.h"#include <avr/io.h> // Device Specific Defines#include <stdio.h>#include <util/delay.h> // Delay Routines// IO Pins MACROS#define GLUE(a,b) a##b#define PORT(a) GLUE(PORT,a)#define PIN(a) GLUE(PIN,a)#define DDR(a) GLUE(DDR,a)// LCD Port Settings#define LCD_DATA A // 4 or 8 bits field (lsb port)#define LCD_DATA_BIT 4#define LCD_RS C // Register Select#define LCD_RS_BIT 2#define LCD_E C // Enable#define LCD_E_BIT 4// LCD Display Parameters#define LCD_INTERFACE_BITS 4 // 4 or 8 bit interface#define LCD_LINES 2 // 1 or 2 or 4 lines#define LCD_CHARS 18 // usualy 16 or 20, important for 4 line display only// Goto Homevoid lcd_home(void);// Clear Displayvoid lcd_clear(void);// Switch Cursor Onvoid lcd_cursor_on(void);// Switch Cursor Offvoid lcd_cursor_off(void);// Clear Display and Goto Home with no Cursorvoid lcd_clear_home(void);// Move to Position (1,1 is the first position)void lcd_gotoxy(uint8_t x, uint8_t y);// Increment Positionvoid lcd_inc_pos(void);// Decrement Positionvoid lcd_dec_pos(void);// Move Cursor Leftvoid lcd_cursor_left(void);// Move Cursor Rightvoid lcd_cursor_right(void);// Init LCD Displayvoid lcd_init(void);// LCD Char Outputint lcd_putc(char c);