Liam Grazier
/
Final351CWfolderonly
Fork of Final351CW_FINAL by
Diff: LGLCD/lglcd.cpp
- Revision:
- 11:ce2a977dcab0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LGLCD/lglcd.cpp Tue Jan 09 11:59:10 2018 +0000 @@ -0,0 +1,81 @@ +/* ELEC351 COURSEWORK 2018 +DESIGNED USING MBED ONLINE COMPILER IMPORTED TO KEIL +LIAM GRAZIER // DOUG TILLEY // ALEX BARON + */ +#include "mbed.h" +#include "lglcd.h" +lglcd::lglcd(PinName RS, PinName E, PinName D4, PinName D5,PinName D6, PinName D7) : _lcdrs(RS),_lcde(E), _lcdinfo(D4, D5, D6, D7) +{ + _lcde=1; //clear enable + _lcdrs=0; // command + writedata(_lcde,CMD); + wait(0.000004); + writedata(0x28,CMD); + wait(0.000004); + writedata(0x0C,CMD); //turnoncursor and blink + wait(0.000004); + writedata(0x10,CMD); + wait(0.000004); + LCD_CLR; //clearlcd + wait(0.000004); + writedata(0x06,CMD); //movecursor right + wait(0.000004); + LCD_HOME; //Return to the 0,0 +} +void lglcd::clear(void)//lcd clear command with a tiny wait to ensure commadn finishes +{ + LCD_CLR; //clearcommandwitha small wait + wait(0.002); +} +void lglcd::setline(int row,int column) //set lu=ine and column function +{ + if(row == 1) + { + writedata(LINE1|column,CMD); //line1 included + wait(0.005); + } + if(row == 2) + { + writedata(LINE2|column,CMD); + wait(0.005); + } +} +void lglcd::writedata(unsigned char data, unsigned char type) //manual write data wherever the pointer is , requires the line to be set first . +{ + if(type == CMD) + { + _lcdrs=0; //COMMAND MODE + } + else + { + _lcdrs=1; //CHARACTER/DATA MODE + } + _lcdinfo = data >> 4; + wait(0.000050f); + _lcde = 0; + wait(0.000050f); + _lcde = 1; + _lcdinfo = data >> 0; + wait(0.000050f); + _lcde = 0; + wait(0.000050f); + _lcde = 1; +} +void lglcd::write(char charq[]) //write character, not used, used writedata mainly, this works well if need to write along string to 2 lines (FOR LOOP FOR CHANING LINE AUTO) +{ + for (int n = 0; n < strlen(charq); n++) + { + int count = 0; + count++; + writedata(charq[n], TXT); + if (n == 15) + { + writedata(LINE2 | 0, CMD); + } + if (n == 32) + { + clear(); + writedata(LINE1, CMD); + } + } +}