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.

Committer:
mr63
Date:
Tue Oct 08 15:41:55 2013 +0000
Revision:
0:0e97b0a48eb8
LCD 4-Line Text Display.  This is a simple library that can be used to print a formatted string on up to a 4 line display.  By calling a single Method.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mr63 0:0e97b0a48eb8 1 #include "LCD.h"
mr63 0:0e97b0a48eb8 2
mr63 0:0e97b0a48eb8 3 //LCD Class Constructor for polling A2D using int ADC0848::Poll_A2D(unsigned char Channel)
mr63 0:0e97b0a48eb8 4 LCD::LCD(PinName pin1, PinName pin2, PinName pin3, PinName pin4, PinName pin5, PinName pin6, PinName pin7, PinName pin8, PinName pin9, PinName pin10)
mr63 0:0e97b0a48eb8 5 :_DataBus(pin1,pin2,pin3,pin4,pin5,pin6,pin7,pin8), _RS(pin9), _Enable(pin10)
mr63 0:0e97b0a48eb8 6 {
mr63 0:0e97b0a48eb8 7 Initialize();
mr63 0:0e97b0a48eb8 8 }
mr63 0:0e97b0a48eb8 9
mr63 0:0e97b0a48eb8 10 void LCD::Initialize()
mr63 0:0e97b0a48eb8 11 {
mr63 0:0e97b0a48eb8 12 wait(.01);
mr63 0:0e97b0a48eb8 13 _RS = 0;
mr63 0:0e97b0a48eb8 14 _Enable = 0; //EN and RS = 0
mr63 0:0e97b0a48eb8 15 wait(.001);
mr63 0:0e97b0a48eb8 16 WriteLCDCmd(0x38); //Required for initialization
mr63 0:0e97b0a48eb8 17 wait(.001);
mr63 0:0e97b0a48eb8 18 WriteLCDCmd(0x38); //Required for initialization
mr63 0:0e97b0a48eb8 19 wait(.001);
mr63 0:0e97b0a48eb8 20 WriteLCDCmd(0x38); //Required for initialization
mr63 0:0e97b0a48eb8 21 wait(.001);
mr63 0:0e97b0a48eb8 22 WriteLCDCmd(0x38); //2 rows x 16 cols 5x7 dot char
mr63 0:0e97b0a48eb8 23 wait(.001);
mr63 0:0e97b0a48eb8 24 WriteLCDCmd(0x0C); //Display on, cursor off
mr63 0:0e97b0a48eb8 25 wait(.001);
mr63 0:0e97b0a48eb8 26 WriteLCDCmd(0x01); //Cursor home
mr63 0:0e97b0a48eb8 27 wait(.001);
mr63 0:0e97b0a48eb8 28 WriteLCDCmd(0x06); //incr cursor and shift on
mr63 0:0e97b0a48eb8 29 wait(.001);
mr63 0:0e97b0a48eb8 30 wait(.1);
mr63 0:0e97b0a48eb8 31 return;
mr63 0:0e97b0a48eb8 32 }
mr63 0:0e97b0a48eb8 33
mr63 0:0e97b0a48eb8 34 void LCD::WriteLCDData(char c, char Pos)
mr63 0:0e97b0a48eb8 35 {
mr63 0:0e97b0a48eb8 36 WriteLCDCmd(Pos);
mr63 0:0e97b0a48eb8 37 _DataBus.output();
mr63 0:0e97b0a48eb8 38 wait(.001);
mr63 0:0e97b0a48eb8 39 _DataBus = c; //Data to LCD Data
mr63 0:0e97b0a48eb8 40 _RS = 1;
mr63 0:0e97b0a48eb8 41 _Enable = 1;//RS = EN = 1
mr63 0:0e97b0a48eb8 42 wait(.001);
mr63 0:0e97b0a48eb8 43 _Enable = 0; //EN = 0
mr63 0:0e97b0a48eb8 44 return;
mr63 0:0e97b0a48eb8 45 }
mr63 0:0e97b0a48eb8 46
mr63 0:0e97b0a48eb8 47 void LCD::WriteLCDCmd(char c)
mr63 0:0e97b0a48eb8 48 {
mr63 0:0e97b0a48eb8 49 _DataBus.output();
mr63 0:0e97b0a48eb8 50 _DataBus = c; //Data to LCD data
mr63 0:0e97b0a48eb8 51 _RS = 0; //RS = 0
mr63 0:0e97b0a48eb8 52 _Enable = 1; //En = 1
mr63 0:0e97b0a48eb8 53 wait(.010);
mr63 0:0e97b0a48eb8 54 _Enable = 0; //En = 0
mr63 0:0e97b0a48eb8 55 return;
mr63 0:0e97b0a48eb8 56 }
mr63 0:0e97b0a48eb8 57
mr63 0:0e97b0a48eb8 58 void LCD::ClearDisplay()
mr63 0:0e97b0a48eb8 59 {
mr63 0:0e97b0a48eb8 60 WriteLCDCmd(0x01); // clear display
mr63 0:0e97b0a48eb8 61 }
mr63 0:0e97b0a48eb8 62
mr63 0:0e97b0a48eb8 63
mr63 0:0e97b0a48eb8 64 void LCD::Print_String(char* Pbuffer,char line_num, char offset)
mr63 0:0e97b0a48eb8 65 {
mr63 0:0e97b0a48eb8 66 unsigned int i=0;
mr63 0:0e97b0a48eb8 67 char pos = 0;
mr63 0:0e97b0a48eb8 68 switch (line_num)
mr63 0:0e97b0a48eb8 69 {
mr63 0:0e97b0a48eb8 70 case(1):
mr63 0:0e97b0a48eb8 71 pos = 0x80+offset;
mr63 0:0e97b0a48eb8 72 break;
mr63 0:0e97b0a48eb8 73 case(2):
mr63 0:0e97b0a48eb8 74 pos = 0xC0+offset;
mr63 0:0e97b0a48eb8 75 break;
mr63 0:0e97b0a48eb8 76 case(3):
mr63 0:0e97b0a48eb8 77 pos = 0x94+offset;
mr63 0:0e97b0a48eb8 78 break;
mr63 0:0e97b0a48eb8 79 case(4):
mr63 0:0e97b0a48eb8 80 pos = 0xD4+offset;
mr63 0:0e97b0a48eb8 81 break;
mr63 0:0e97b0a48eb8 82 default:
mr63 0:0e97b0a48eb8 83 break;
mr63 0:0e97b0a48eb8 84 }
mr63 0:0e97b0a48eb8 85 while (Pbuffer[i] != 0)
mr63 0:0e97b0a48eb8 86 {
mr63 0:0e97b0a48eb8 87 WriteLCDData(Pbuffer[i], pos+i);
mr63 0:0e97b0a48eb8 88 i++;
mr63 0:0e97b0a48eb8 89 }
mr63 0:0e97b0a48eb8 90 }
mr63 0:0e97b0a48eb8 91