Minh Nguyen / LCD
Committer:
khaiminhvn
Date:
Sun Feb 28 03:26:28 2021 +0000
Revision:
0:4fbfa76a5bdb
Child:
1:707fccd6c949
Variable size input (<16);

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 0:4fbfa76a5bdb 6 LCD::LCD() : i2c(PIN_SCL, PIN_SDA){
khaiminhvn 0:4fbfa76a5bdb 7 LCD_init();
khaiminhvn 0:4fbfa76a5bdb 8 }
khaiminhvn 0:4fbfa76a5bdb 9
khaiminhvn 0:4fbfa76a5bdb 10 void LCD::LCD_init(void) {
khaiminhvn 0:4fbfa76a5bdb 11
khaiminhvn 0:4fbfa76a5bdb 12 //LCD Initiations---------------------------------------
khaiminhvn 0:4fbfa76a5bdb 13
khaiminhvn 0:4fbfa76a5bdb 14 i2c.frequency(LCD_FREQ); //Corresponds to 50KHz
khaiminhvn 0:4fbfa76a5bdb 15
khaiminhvn 0:4fbfa76a5bdb 16 char cmd[3];
khaiminhvn 0:4fbfa76a5bdb 17
khaiminhvn 0:4fbfa76a5bdb 18 cmd[0] = 0xFE; //For all cases
khaiminhvn 0:4fbfa76a5bdb 19
khaiminhvn 0:4fbfa76a5bdb 20 cmd[1] = 0x52;
khaiminhvn 0:4fbfa76a5bdb 21 cmd[2] = 40; //contrast 1 - 50
khaiminhvn 0:4fbfa76a5bdb 22 i2c.write(addr, cmd, 3);
khaiminhvn 0:4fbfa76a5bdb 23
khaiminhvn 0:4fbfa76a5bdb 24 cmd[1] = 0x53;
khaiminhvn 0:4fbfa76a5bdb 25 cmd[2] = 8; //Backlight 1-8
khaiminhvn 0:4fbfa76a5bdb 26 i2c.write(addr, cmd, 3);
khaiminhvn 0:4fbfa76a5bdb 27
khaiminhvn 0:4fbfa76a5bdb 28 cmd[1] = 0x48;
khaiminhvn 0:4fbfa76a5bdb 29 i2c.write(addr, cmd, 2); //Underline cursor off
khaiminhvn 0:4fbfa76a5bdb 30
khaiminhvn 0:4fbfa76a5bdb 31 cmd[1] = 0x46;
khaiminhvn 0:4fbfa76a5bdb 32 i2c.write(addr, cmd, 2); //Cursor Home
khaiminhvn 0:4fbfa76a5bdb 33
khaiminhvn 0:4fbfa76a5bdb 34 } //END LCD_init
khaiminhvn 0:4fbfa76a5bdb 35
khaiminhvn 0:4fbfa76a5bdb 36
khaiminhvn 0:4fbfa76a5bdb 37 void LCD::clearLCD(void) {
khaiminhvn 0:4fbfa76a5bdb 38
khaiminhvn 0:4fbfa76a5bdb 39 char cmd[3];
khaiminhvn 0:4fbfa76a5bdb 40 cmd[0] = 0xFE;
khaiminhvn 0:4fbfa76a5bdb 41 wait_us(100);
khaiminhvn 0:4fbfa76a5bdb 42
khaiminhvn 0:4fbfa76a5bdb 43 cmd[1] = 0x51;
khaiminhvn 0:4fbfa76a5bdb 44 i2c.write(addr, cmd, 2); //clear current display
khaiminhvn 0:4fbfa76a5bdb 45
khaiminhvn 0:4fbfa76a5bdb 46 cmd[1] = 0x46;
khaiminhvn 0:4fbfa76a5bdb 47 i2c.write(addr, cmd, 2); //Cursor Home
khaiminhvn 0:4fbfa76a5bdb 48
khaiminhvn 0:4fbfa76a5bdb 49 } //END clearLCD
khaiminhvn 0:4fbfa76a5bdb 50
khaiminhvn 0:4fbfa76a5bdb 51
khaiminhvn 0:4fbfa76a5bdb 52 void LCD::LCD_display(string topLine, string bottomLine) {
khaiminhvn 0:4fbfa76a5bdb 53
khaiminhvn 0:4fbfa76a5bdb 54 char cmd[] = " "; //Long enough to send a complete line of text
khaiminhvn 0:4fbfa76a5bdb 55
khaiminhvn 0:4fbfa76a5bdb 56
khaiminhvn 0:4fbfa76a5bdb 57 clearLCD(); //Clear before display
khaiminhvn 0:4fbfa76a5bdb 58
khaiminhvn 0:4fbfa76a5bdb 59 wait_us(LCD_DELAY); //Short Delay
khaiminhvn 0:4fbfa76a5bdb 60
khaiminhvn 0:4fbfa76a5bdb 61 int i;
khaiminhvn 0:4fbfa76a5bdb 62
khaiminhvn 0:4fbfa76a5bdb 63 for(i=0;(i<16 && i < topLine.length());i++) { //Display top line
khaiminhvn 0:4fbfa76a5bdb 64 cmd[i]=topLine[i];
khaiminhvn 0:4fbfa76a5bdb 65 }
khaiminhvn 0:4fbfa76a5bdb 66 i2c.write(addr,cmd,16);
khaiminhvn 0:4fbfa76a5bdb 67
khaiminhvn 0:4fbfa76a5bdb 68 cmd[0] = 0xFE; //Since it was overwritten above
khaiminhvn 0:4fbfa76a5bdb 69 cmd[1] = 0x45;
khaiminhvn 0:4fbfa76a5bdb 70 cmd[2] = 0x40; //LCD Cursor to next line
khaiminhvn 0:4fbfa76a5bdb 71 i2c.write(addr, cmd, 3);
khaiminhvn 0:4fbfa76a5bdb 72
khaiminhvn 0:4fbfa76a5bdb 73 wait_us(LCD_DELAY); //Delay between writing lines
khaiminhvn 0:4fbfa76a5bdb 74
khaiminhvn 0:4fbfa76a5bdb 75 for(i=0;(i<16 && i < topLine.length());i++) { //Display bottom line
khaiminhvn 0:4fbfa76a5bdb 76 cmd[i]=bottomLine[i];
khaiminhvn 0:4fbfa76a5bdb 77 }
khaiminhvn 0:4fbfa76a5bdb 78 i2c.write(addr,cmd,16);
khaiminhvn 0:4fbfa76a5bdb 79 cmd[0] = 0xFE; //Since it was overwritten above
khaiminhvn 0:4fbfa76a5bdb 80
khaiminhvn 0:4fbfa76a5bdb 81 } //END LCD_display
khaiminhvn 0:4fbfa76a5bdb 82
khaiminhvn 0:4fbfa76a5bdb 83
khaiminhvn 0:4fbfa76a5bdb 84
khaiminhvn 0:4fbfa76a5bdb 85
khaiminhvn 0:4fbfa76a5bdb 86
khaiminhvn 0:4fbfa76a5bdb 87