Minh Nguyen / LCD
Committer:
khaiminhvn
Date:
Mon Mar 08 14:33:47 2021 +0000
Revision:
2:e3d3eaa27040
Parent:
1:707fccd6c949
Child:
3:a65abeda9231
Adjusted the display function;

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