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
Revision 0:ef052de2d7d0, committed 2018-01-05
- Comitter:
- liam_grazier
- Date:
- Fri Jan 05 14:13:07 2018 +0000
- Child:
- 1:9020af47a312
- Commit message:
- mylcd driver for nucleof429ZI
Changed in this revision
| lglcd.cpp | Show annotated file Show diff for this revision Revisions of this file |
| lglcd.h | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lglcd.cpp Fri Jan 05 14:13:07 2018 +0000
@@ -0,0 +1,70 @@
+#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)
+{
+ cline=1; //set the current line to the top line
+ cpos=0; //sets the current position to the left most CHARACTER
+ _lcde=1; //clear enable
+ _lcdrs=0; // command
+ l = 0;
+ writedata(_lcde,CMD);
+ wait(0.000004); //delay for LCD to initialise.
+ writedata(0x28,CMD); //set to 4 bit interface, 2 line and 5*8 font
+ wait(0.000004);
+ writedata(0x0C,CMD); //cursor on, cursor position blink
+ wait(0.000004);
+ writedata(0x10,CMD);
+ wait(0.000004);
+ LCD_CLR; //clear display
+ wait(0.000004);
+ writedata(0x06,CMD); //move cursor right after write
+ wait(0.000004);
+ LCD_HOME; //return home
+
+}
+/*---------------------------------------------------------------------*/
+void lglcd::clear(void)//set a function to clear the lcd since just calling LCD_CLR can throw error if called to quickly
+{
+ LCD_CLR;
+ wait(0.002); //2ms delay to stop timing error
+}
+
+/*---------------------------------------------------------------------*/
+void lglcd::writedata(unsigned char info, unsigned char type)
+{
+ if(type == CMD) {
+ _lcdrs=0; //COMMAND MODE
+ } else {
+ _lcdrs=1; //CHARACTER/DATA MODE
+ }
+
+ _lcdinfo = info >> 4;
+ wait(0.000040f); // most instructions take 40us
+ _lcde = 0;
+ wait(0.000040f);
+ _lcde = 1;
+ _lcdinfo = info >> 0;
+ wait(0.000040f);
+ _lcde = 0;
+ wait(0.000040f); // most instructions take 40us
+ _lcde = 1;
+}
+
+void lglcd::write(char charq[])
+{
+ for (int i = 0; i < strlen(charq); i++)
+ {
+ wait(0.003);
+ int count = 0;
+ count++;
+ writedata(charq[i], TXT);
+ if (i == 15) {
+ writedata(LINE2 | 0, CMD);
+ }
+ if (i == 32) {
+ clear();
+ writedata(LINE1, CMD);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lglcd.h Fri Jan 05 14:13:07 2018 +0000
@@ -0,0 +1,36 @@
+#ifndef __LGLCD_H
+#define __LGLCD_H
+
+#define CMD 0
+#define TXT 1
+#define CLEAR 1
+#define HOME 2
+#define READ 1
+#define WRITE 0
+#define LEFT 0
+#define RIGHT 1
+
+#define LINE1 0x80 // Start address of first line
+#define LINE2 0xC0 // Start address of second line
+
+#define LCD_CLR (writedata(CLEAR,CMD))
+#define LCD_HOME (writedata(HOME,CMD))
+#define LCD_BUSYBIT 0x8000 //correct value for the lcd BUSYBIT
+
+
+class lglcd
+{
+public:
+lglcd(PinName rs, PinName e, PinName d4, PinName d5,PinName d6, PinName d7);
+void clear(void);
+void writedata(unsigned char info, unsigned char type);
+void write(char charq[]);
+int l;
+protected:
+BusOut _lcdinfo;
+DigitalOut _lcdrs;
+DigitalOut _lcde;
+int cline;
+int cpos;
+};
+#endif
\ No newline at end of file
