4-Line LCD Text Display. This is a simple library that can be used to print a formatted string on a 2 or 4 line Hitachi parallel display. By calling a single Method.
LCD.cpp
- Committer:
- mr63
- Date:
- 2013-10-08
- Revision:
- 0:0e97b0a48eb8
File content as of revision 0:0e97b0a48eb8:
#include "LCD.h" //LCD Class Constructor for polling A2D using int ADC0848::Poll_A2D(unsigned char Channel) LCD::LCD(PinName pin1, PinName pin2, PinName pin3, PinName pin4, PinName pin5, PinName pin6, PinName pin7, PinName pin8, PinName pin9, PinName pin10) :_DataBus(pin1,pin2,pin3,pin4,pin5,pin6,pin7,pin8), _RS(pin9), _Enable(pin10) { Initialize(); } void LCD::Initialize() { wait(.01); _RS = 0; _Enable = 0; //EN and RS = 0 wait(.001); WriteLCDCmd(0x38); //Required for initialization wait(.001); WriteLCDCmd(0x38); //Required for initialization wait(.001); WriteLCDCmd(0x38); //Required for initialization wait(.001); WriteLCDCmd(0x38); //2 rows x 16 cols 5x7 dot char wait(.001); WriteLCDCmd(0x0C); //Display on, cursor off wait(.001); WriteLCDCmd(0x01); //Cursor home wait(.001); WriteLCDCmd(0x06); //incr cursor and shift on wait(.001); wait(.1); return; } void LCD::WriteLCDData(char c, char Pos) { WriteLCDCmd(Pos); _DataBus.output(); wait(.001); _DataBus = c; //Data to LCD Data _RS = 1; _Enable = 1;//RS = EN = 1 wait(.001); _Enable = 0; //EN = 0 return; } void LCD::WriteLCDCmd(char c) { _DataBus.output(); _DataBus = c; //Data to LCD data _RS = 0; //RS = 0 _Enable = 1; //En = 1 wait(.010); _Enable = 0; //En = 0 return; } void LCD::ClearDisplay() { WriteLCDCmd(0x01); // clear display } void LCD::Print_String(char* Pbuffer,char line_num, char offset) { unsigned int i=0; char pos = 0; switch (line_num) { case(1): pos = 0x80+offset; break; case(2): pos = 0xC0+offset; break; case(3): pos = 0x94+offset; break; case(4): pos = 0xD4+offset; break; default: break; } while (Pbuffer[i] != 0) { WriteLCDData(Pbuffer[i], pos+i); i++; } }