Minh Nguyen / LCD
Committer:
khaiminhvn
Date:
Thu Mar 11 23:19:50 2021 +0000
Revision:
3:a65abeda9231
Parent:
2:e3d3eaa27040
Changed input to I2C to the class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
khaiminhvn 0:4fbfa76a5bdb 1 #include "mbed.h"
khaiminhvn 0:4fbfa76a5bdb 2 #include "LCD.h"
khaiminhvn 0:4fbfa76a5bdb 3 #include <string>
khaiminhvn 0:4fbfa76a5bdb 4
khaiminhvn 0:4fbfa76a5bdb 5 //Code for Newhaven NHD‐0216K3Z‐FL‐GBW LCD interfaced to FRDM-K64F via I2C
khaiminhvn 3:a65abeda9231 6 LCD::LCD(I2C* i2cIn){
khaiminhvn 3:a65abeda9231 7 i2c = i2cIn;
khaiminhvn 0:4fbfa76a5bdb 8 LCD_init();
khaiminhvn 2:e3d3eaa27040 9 clearLCD();
khaiminhvn 2:e3d3eaa27040 10 wait_us(LCD_DELAY); //wait for stabilization
khaiminhvn 0:4fbfa76a5bdb 11 }
khaiminhvn 0:4fbfa76a5bdb 12
khaiminhvn 0:4fbfa76a5bdb 13 void LCD::LCD_init(void) {
khaiminhvn 0:4fbfa76a5bdb 14
khaiminhvn 0:4fbfa76a5bdb 15 //LCD Initiations---------------------------------------
khaiminhvn 0:4fbfa76a5bdb 16 char cmd[3];
khaiminhvn 0:4fbfa76a5bdb 17
khaiminhvn 0:4fbfa76a5bdb 18 cmd[0] = 0xFE; //For all cases
khaiminhvn 1:707fccd6c949 19 cmd[1] = 0x52;
khaiminhvn 1:707fccd6c949 20 cmd[2] = 40; //contrast 1 - 50
khaiminhvn 3:a65abeda9231 21 i2c->write(addr, cmd, 3);
khaiminhvn 1:707fccd6c949 22
khaiminhvn 1:707fccd6c949 23 cmd[1] = 0x53;
khaiminhvn 1:707fccd6c949 24 cmd[2] = 8; //Backlight 1-8
khaiminhvn 3:a65abeda9231 25 i2c->write(addr, cmd, 3);
khaiminhvn 1:707fccd6c949 26
khaiminhvn 1:707fccd6c949 27 cmd[1] = 0x48;
khaiminhvn 3:a65abeda9231 28 i2c->write(addr, cmd, 2); //Underline cursor off
khaiminhvn 1:707fccd6c949 29
khaiminhvn 1:707fccd6c949 30 cmd[1] = 0x46;
khaiminhvn 3:a65abeda9231 31 i2c->write(addr, cmd, 2); //Cursor Home
khaiminhvn 0:4fbfa76a5bdb 32
khaiminhvn 0:4fbfa76a5bdb 33 } //END LCD_init
khaiminhvn 0:4fbfa76a5bdb 34
khaiminhvn 0:4fbfa76a5bdb 35
khaiminhvn 0:4fbfa76a5bdb 36 void LCD::clearLCD(void) {
khaiminhvn 0:4fbfa76a5bdb 37
khaiminhvn 0:4fbfa76a5bdb 38 char cmd[3];
khaiminhvn 0:4fbfa76a5bdb 39 cmd[0] = 0xFE;
khaiminhvn 0:4fbfa76a5bdb 40 wait_us(100);
khaiminhvn 0:4fbfa76a5bdb 41
khaiminhvn 0:4fbfa76a5bdb 42 cmd[1] = 0x51;
khaiminhvn 3:a65abeda9231 43 i2c->write(addr, cmd, 2); //clear current display
khaiminhvn 0:4fbfa76a5bdb 44
khaiminhvn 0:4fbfa76a5bdb 45 cmd[1] = 0x46;
khaiminhvn 3:a65abeda9231 46 i2c->write(addr, cmd, 2); //Cursor Home
khaiminhvn 0:4fbfa76a5bdb 47
khaiminhvn 0:4fbfa76a5bdb 48 } //END clearLCD
khaiminhvn 0:4fbfa76a5bdb 49
khaiminhvn 0:4fbfa76a5bdb 50
khaiminhvn 0:4fbfa76a5bdb 51 void LCD::LCD_display(string topLine, string bottomLine) {
khaiminhvn 0:4fbfa76a5bdb 52
khaiminhvn 2:e3d3eaa27040 53 int i;
khaiminhvn 2:e3d3eaa27040 54
khaiminhvn 2:e3d3eaa27040 55 char cmd[16]; //Long enough to send a complete line of text
khaiminhvn 2:e3d3eaa27040 56 for(i = 0; i < 16; i++)
khaiminhvn 2:e3d3eaa27040 57 cmd[i] = ' ';
khaiminhvn 0:4fbfa76a5bdb 58
khaiminhvn 0:4fbfa76a5bdb 59
khaiminhvn 0:4fbfa76a5bdb 60 clearLCD(); //Clear before display
khaiminhvn 0:4fbfa76a5bdb 61
khaiminhvn 0:4fbfa76a5bdb 62 wait_us(LCD_DELAY); //Short Delay
khaiminhvn 0:4fbfa76a5bdb 63
khaiminhvn 2:e3d3eaa27040 64 for(i=0;i < topLine.length();i++) { //Display top line
khaiminhvn 0:4fbfa76a5bdb 65 cmd[i]=topLine[i];
khaiminhvn 0:4fbfa76a5bdb 66 }
khaiminhvn 3:a65abeda9231 67 i2c->write(addr,cmd,16);
khaiminhvn 0:4fbfa76a5bdb 68
khaiminhvn 0:4fbfa76a5bdb 69 cmd[0] = 0xFE; //Since it was overwritten above
khaiminhvn 0:4fbfa76a5bdb 70 cmd[1] = 0x45;
khaiminhvn 0:4fbfa76a5bdb 71 cmd[2] = 0x40; //LCD Cursor to next line
khaiminhvn 3:a65abeda9231 72 i2c->write(addr, cmd, 3);
khaiminhvn 0:4fbfa76a5bdb 73
khaiminhvn 0:4fbfa76a5bdb 74 wait_us(LCD_DELAY); //Delay between writing lines
khaiminhvn 2:e3d3eaa27040 75
khaiminhvn 2:e3d3eaa27040 76 for(i = 0; i < 16; i++)
khaiminhvn 2:e3d3eaa27040 77 cmd[i] = ' ';
khaiminhvn 2:e3d3eaa27040 78 for(i=0;i < bottomLine.length();i++) { //Display bottom line
khaiminhvn 0:4fbfa76a5bdb 79 cmd[i]=bottomLine[i];
khaiminhvn 0:4fbfa76a5bdb 80 }
khaiminhvn 3:a65abeda9231 81 i2c->write(addr,cmd,16);
khaiminhvn 0:4fbfa76a5bdb 82 cmd[0] = 0xFE; //Since it was overwritten above
khaiminhvn 0:4fbfa76a5bdb 83
khaiminhvn 0:4fbfa76a5bdb 84 } //END LCD_display
khaiminhvn 0:4fbfa76a5bdb 85
khaiminhvn 0:4fbfa76a5bdb 86
khaiminhvn 0:4fbfa76a5bdb 87
khaiminhvn 0:4fbfa76a5bdb 88
khaiminhvn 0:4fbfa76a5bdb 89
khaiminhvn 0:4fbfa76a5bdb 90