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.
Fork of LGLCD by
lglcd.cpp
00001 #include "mbed.h" 00002 #include "lglcd.h" 00003 00004 lglcd::lglcd(PinName rs, PinName e, PinName d4, PinName d5,PinName d6, PinName d7) : _lcdrs(rs),_lcde(e), _lcdinfo(d4, d5, d6, d7) 00005 { 00006 cline=1; //set the current line to the top line 00007 cpos=0; //sets the current position to the left most CHARACTER 00008 _lcde=1; //clear enable 00009 _lcdrs=0; // command 00010 l = 0; 00011 writedata(_lcde,CMD); 00012 wait(0.000004); //delay for LCD to initialise. 00013 writedata(0x28,CMD); //set to 4 bit interface, 2 line and 5*8 font 00014 wait(0.000004); 00015 writedata(0x0C,CMD); //cursor on, cursor position blink 00016 wait(0.000004); 00017 writedata(0x10,CMD); 00018 wait(0.000004); 00019 LCD_CLR; //clear display 00020 wait(0.000004); 00021 writedata(0x06,CMD); //move cursor right after write 00022 wait(0.000004); 00023 LCD_HOME; //return home 00024 00025 } 00026 /*---------------------------------------------------------------------*/ 00027 void lglcd::clear(void)//set a function to clear the lcd since just calling LCD_CLR can throw error if called to quickly 00028 { 00029 LCD_CLR; 00030 wait(0.002); //2ms delay to stop timing error 00031 } 00032 void lglcd::setline(int row,int column) 00033 { 00034 if(row == 1) { // switch statement for placing the cursor 00035 writedata(LINE1|column,CMD); //set lcd to line one and correct position 00036 wait(0.005); //2ms delay to stop empty screen timing error 00037 } 00038 if(row == 2){ 00039 writedata(LINE2|column,CMD); //set lcd to line two and correct position 00040 wait(0.005); //2ms delay to stop empty screen timing error 00041 } 00042 } 00043 00044 /*---------------------------------------------------------------------*/ 00045 void lglcd::writedata(unsigned char info, unsigned char type) 00046 { 00047 if(type == CMD) 00048 { 00049 _lcdrs=0; //COMMAND MODE 00050 } 00051 else 00052 { 00053 _lcdrs=1; //CHARACTER/DATA MODE 00054 } 00055 00056 _lcdinfo = info >> 4; 00057 wait(0.000040f); // most instructions take 40us 00058 _lcde = 0; 00059 wait(0.000040f); 00060 _lcde = 1; 00061 _lcdinfo = info >> 0; 00062 wait(0.000040f); 00063 _lcde = 0; 00064 wait(0.000040f); // most instructions take 40us 00065 _lcde = 1; 00066 } 00067 00068 void lglcd::write(char charq[]) 00069 { 00070 for (int i = 0; i < strlen(charq); i++) 00071 { 00072 wait(0.003); 00073 int count = 0; 00074 count++; 00075 writedata(charq[i], TXT); 00076 if (i == 15) { 00077 writedata(LINE2 | 0, CMD); 00078 } 00079 if (i == 32) { 00080 clear(); 00081 writedata(LINE1, CMD); 00082 } 00083 } 00084 }
Generated on Mon Jul 18 2022 01:24:48 by
1.7.2
