Manejo de pantallas de texto con varias interfaces de comunicación

Dependencies:   mbed TextLCD

Committer:
lscordovar
Date:
Wed Feb 12 21:51:46 2020 +0000
Revision:
6:8b78e3cddd78
Parent:
5:2e4e5085d597
Ejemplos de uso de la libreria LCD pro I2C

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wim 0:a75049de1a82 1 #include "mbed.h"
wim 0:a75049de1a82 2 #include "TextLCD.h"
lscordovar 5:2e4e5085d597 3
lscordovar 5:2e4e5085d597 4 Serial pc(PA_2,PA_3); // tx, rx
lscordovar 6:8b78e3cddd78 5 I2C i2c_lcd(PB_9, PB_8); // SDA, SCL
lscordovar 6:8b78e3cddd78 6 TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD20x4);
lscordovar 5:2e4e5085d597 7
lscordovar 6:8b78e3cddd78 8 /*
lscordovar 6:8b78e3cddd78 9 Para usar su LCD con el PCF8574 o el PCF8574A deben cambiar en la linea 73 del
lscordovar 6:8b78e3cddd78 10 archivo TextLCD_Config.h que esta en la libreria adjunta esto:
lscordovar 6:8b78e3cddd78 11 #define DFROBOT 0
lscordovar 6:8b78e3cddd78 12 Por esto:
lscordovar 6:8b78e3cddd78 13 #define DFROBOT 1
lscordovar 6:8b78e3cddd78 14
lscordovar 6:8b78e3cddd78 15 Pueden probar tambien estas otras opciones, me funciona bien casi para todas
lscordovar 6:8b78e3cddd78 16 excepto las que tienen un comentario con un //no
lscordovar 5:2e4e5085d597 17
lscordovar 6:8b78e3cddd78 18 #define DEFAULT 0//no
lscordovar 6:8b78e3cddd78 19 #define ADAFRUIT 0//no
lscordovar 6:8b78e3cddd78 20 #define DFROBOT 0
lscordovar 6:8b78e3cddd78 21 #define LCM1602 0
lscordovar 6:8b78e3cddd78 22 #define YWROBOT 0
lscordovar 6:8b78e3cddd78 23 #define GYLCD 0//no
lscordovar 6:8b78e3cddd78 24 #define MJKDZ 0//no
lscordovar 6:8b78e3cddd78 25 #define SYDZ 1
lscordovar 6:8b78e3cddd78 26 #define WIDEHK 0//no
lscordovar 6:8b78e3cddd78 27 #define LCDPLUG 0//no
lscordovar 6:8b78e3cddd78 28 */
wim 0:a75049de1a82 29
lscordovar 6:8b78e3cddd78 30 //Para el ejemplo presente use #define SYDZ 1
lscordovar 6:8b78e3cddd78 31 //esto debe ir solo en el archivo mencionado
lscordovar 6:8b78e3cddd78 32
lscordovar 5:2e4e5085d597 33
lscordovar 5:2e4e5085d597 34 int main()
lscordovar 5:2e4e5085d597 35 {
lscordovar 5:2e4e5085d597 36 Timer t;
lscordovar 5:2e4e5085d597 37
lscordovar 5:2e4e5085d597 38 pc.printf("TextLCD Enhanced Test. Columns=%d, Rows=%d\n\r", lcd.columns(), lcd.rows());
lscordovar 5:2e4e5085d597 39
lscordovar 5:2e4e5085d597 40 for (int row=0; row<lcd.rows(); row++) {
lscordovar 5:2e4e5085d597 41 int col=0;
wim 0:a75049de1a82 42
lscordovar 5:2e4e5085d597 43 pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row));
wim 4:a3e4bb2053cb 44 // lcd.putc('-');
lscordovar 5:2e4e5085d597 45 lcd.putc('0' + row);
lscordovar 5:2e4e5085d597 46
lscordovar 5:2e4e5085d597 47 for (col=1; col<lcd.columns()-1; col++) {
lscordovar 5:2e4e5085d597 48 lcd.putc('*');
lscordovar 5:2e4e5085d597 49 }
lscordovar 5:2e4e5085d597 50
lscordovar 5:2e4e5085d597 51 pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row));
lscordovar 5:2e4e5085d597 52 lcd.putc('+');
wim 4:a3e4bb2053cb 53 }
lscordovar 5:2e4e5085d597 54 wait(1);
lscordovar 5:2e4e5085d597 55 // Fill screen again and time it
lscordovar 5:2e4e5085d597 56 t.start();
wim 0:a75049de1a82 57
lscordovar 5:2e4e5085d597 58 for (int row=0; row<lcd.rows(); row++) {
lscordovar 5:2e4e5085d597 59 int col=0;
lscordovar 5:2e4e5085d597 60
lscordovar 5:2e4e5085d597 61 lcd.putc('0' + row);
wim 3:f238b4f7874f 62
lscordovar 5:2e4e5085d597 63 for (col=1; col<lcd.columns()-1; col++) {
lscordovar 5:2e4e5085d597 64 lcd.putc('*');
lscordovar 5:2e4e5085d597 65 }
lscordovar 5:2e4e5085d597 66
lscordovar 5:2e4e5085d597 67 lcd.putc('+');
wim 4:a3e4bb2053cb 68 }
lscordovar 5:2e4e5085d597 69 t.stop();
lscordovar 5:2e4e5085d597 70 pc.printf("All my hard work took %f sec\r\n", t.read());
lscordovar 5:2e4e5085d597 71 wait(1);
lscordovar 5:2e4e5085d597 72
wim 1:ef419b21167d 73
wim 4:a3e4bb2053cb 74 // Show cursor as blinking character
lscordovar 5:2e4e5085d597 75 lcd.setCursor(TextLCD::CurOff_BlkOn);
lscordovar 5:2e4e5085d597 76
wim 4:a3e4bb2053cb 77 // Set and show user defined characters. A maximum of 8 UDCs are supported by the HD44780.
lscordovar 5:2e4e5085d597 78 // They are defined by a 5x7 bitpattern.
lscordovar 5:2e4e5085d597 79 lcd.setUDC(0, (char *) udc_0); // Show |>
lscordovar 5:2e4e5085d597 80 lcd.putc(0);
lscordovar 5:2e4e5085d597 81 lcd.setUDC(1, (char *) udc_1); // Show <|
lscordovar 5:2e4e5085d597 82 lcd.putc(1);
lscordovar 5:2e4e5085d597 83
lscordovar 6:8b78e3cddd78 84 pc.printf("Bye now in original example \r\n");
lscordovar 5:2e4e5085d597 85
lscordovar 5:2e4e5085d597 86 wait(1);
lscordovar 5:2e4e5085d597 87
lscordovar 6:8b78e3cddd78 88
lscordovar 6:8b78e3cddd78 89 /*****************************************************************************/
lscordovar 6:8b78e3cddd78 90 pc.printf("From here is a new example for Master classes in UPS Guayaquil \r\n");
lscordovar 6:8b78e3cddd78 91
lscordovar 5:2e4e5085d597 92 // Clear the screen and locate to 0,0
lscordovar 5:2e4e5085d597 93 lcd.cls();
lscordovar 5:2e4e5085d597 94
lscordovar 5:2e4e5085d597 95 // LCD Backlight control
lscordovar 5:2e4e5085d597 96 lcd.setBacklight(TextLCD::LightOn);
lscordovar 5:2e4e5085d597 97
lscordovar 5:2e4e5085d597 98 // LCD Orientation control, supported for some Controllers
lscordovar 5:2e4e5085d597 99 //lcd.setOrient(TextLCD::Bottom);
lscordovar 5:2e4e5085d597 100
lscordovar 5:2e4e5085d597 101 // LCD BigFont control, supported for some Controllers
lscordovar 5:2e4e5085d597 102 //lcd.LCDBigFont(TextLCD::TopBottomLine);
lscordovar 5:2e4e5085d597 103
lscordovar 5:2e4e5085d597 104 // Locate cursor to a screen column and row
lscordovar 5:2e4e5085d597 105 int col = 0;
lscordovar 5:2e4e5085d597 106 int row = 0;
lscordovar 5:2e4e5085d597 107 lcd.locate(col,row);
lscordovar 6:8b78e3cddd78 108 lcd.printf("Iniciando...");
lscordovar 5:2e4e5085d597 109 wait(1);
lscordovar 5:2e4e5085d597 110
lscordovar 6:8b78e3cddd78 111 //No Show cursor as blinking character
lscordovar 6:8b78e3cddd78 112 lcd.setCursor(TextLCD::CurOff_BlkOff);
lscordovar 6:8b78e3cddd78 113
lscordovar 5:2e4e5085d597 114 // Write a character to the LCD "ARROW"
lscordovar 5:2e4e5085d597 115 int c = 1;
lscordovar 6:8b78e3cddd78 116 lcd.cls();
lscordovar 6:8b78e3cddd78 117 lcd.locate(0,0);
lscordovar 6:8b78e3cddd78 118 for (int row=0; row<4; row++) {
lscordovar 6:8b78e3cddd78 119 lcd.putc(c);
lscordovar 6:8b78e3cddd78 120 wait(0.01);
lscordovar 5:2e4e5085d597 121
lscordovar 6:8b78e3cddd78 122 for (col=0; col<19; col++) {
lscordovar 6:8b78e3cddd78 123 lcd.putc(c);
lscordovar 6:8b78e3cddd78 124 wait(0.01);
lscordovar 5:2e4e5085d597 125 }
lscordovar 5:2e4e5085d597 126 }
lscordovar 5:2e4e5085d597 127 wait(2);
lscordovar 5:2e4e5085d597 128
lscordovar 5:2e4e5085d597 129 // Write a raw string to the LCD
lscordovar 6:8b78e3cddd78 130 const char* text = "Hola a todos!!";
lscordovar 5:2e4e5085d597 131 lcd.cls();
lscordovar 6:8b78e3cddd78 132 lcd.locate(3,0);
lscordovar 5:2e4e5085d597 133 lcd.printf(text);
lscordovar 5:2e4e5085d597 134 wait(1);
lscordovar 5:2e4e5085d597 135
lscordovar 5:2e4e5085d597 136 // Write a raw string to the LCD *-> pointer*
lscordovar 6:8b78e3cddd78 137
lscordovar 6:8b78e3cddd78 138 lcd.locate(0,1);
lscordovar 6:8b78e3cddd78 139 lcd.printf("/*----------------*/");
lscordovar 6:8b78e3cddd78 140
lscordovar 6:8b78e3cddd78 141 const char* msg = "Mensaje con punteros";
lscordovar 5:2e4e5085d597 142 int string_size = strlen (msg);
lscordovar 6:8b78e3cddd78 143 lcd.locate(0,2);
lscordovar 6:8b78e3cddd78 144 lcd.printf("%.*s", string_size, msg);
lscordovar 6:8b78e3cddd78 145
lscordovar 6:8b78e3cddd78 146 lcd.locate(0,3);
lscordovar 6:8b78e3cddd78 147 const char* msg2 = "\"TXT: %.*s\",size,msg";
lscordovar 6:8b78e3cddd78 148 int string_size2 = strlen (msg2);
lscordovar 6:8b78e3cddd78 149 lcd.printf("%.*s", string_size2, msg2);
lscordovar 5:2e4e5085d597 150 wait(1);
lscordovar 5:2e4e5085d597 151
lscordovar 5:2e4e5085d597 152
lscordovar 5:2e4e5085d597 153
lscordovar 5:2e4e5085d597 154 // Return the memoryaddress of screen column and row location
lscordovar 5:2e4e5085d597 155 lcd.getAddress(col,row);
lscordovar 5:2e4e5085d597 156 pc.printf("column %d\trow %d\r\n",col,row);
lscordovar 5:2e4e5085d597 157 wait(1);
lscordovar 5:2e4e5085d597 158
lscordovar 5:2e4e5085d597 159
lscordovar 5:2e4e5085d597 160
lscordovar 5:2e4e5085d597 161 // Return the number of rows ans columns
lscordovar 5:2e4e5085d597 162 pc.printf("column %d\trow %d\r\n",lcd.rows(),lcd.columns());
lscordovar 5:2e4e5085d597 163 wait(1);
lscordovar 5:2e4e5085d597 164
lscordovar 5:2e4e5085d597 165
lscordovar 5:2e4e5085d597 166
wim 4:a3e4bb2053cb 167 }
wim 3:f238b4f7874f 168
wim 3:f238b4f7874f 169
wim 0:a75049de1a82 170