Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
LCD.cpp@2:e3d3eaa27040, 2021-03-08 (annotated)
- 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?
User | Revision | Line number | New 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 |