FRDM-KL46Z_SquashedRaiders Es un ejemplo de un Vídeo Juego utilizando un Display LCD Alfanumérico

Dependencies:   mbed NewTextLCD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /* ###########################################################################
00002 **    Archivo        : main.c
00003 **    Proyecto       : FRDM-KL46Z_SquashedRaiders
00004 **    Procesador     : MKL46Z256VLL4
00005 **    Herramienta    : Mbed
00006 **    Version        : Driver 01.01
00007 **    Compilador     : GNU C Compiler
00008 **    Fecha/Hora     : 14-07-2015, 11:48, # CodeGen: 0
00009 **    Descripción    :
00010 **         Este proyecto es un video juego. El objetivo es eliminar aplastando
00011 **         a cada ladrón que aparece en pantalla, mediante la flecha que aparece
00012 **         en la pantalla lcd. Esto se logra presionando el botón de la tarjeta.
00013 **         This module contains user's application code.
00014 **   Componentes     : NewTextLCD, GPIO, ect.
00015 **   Configuraciones : Includes, Stacks y Drivers externos
00016 **   Autores         :
00017 **         ATEAM Development Group:
00018 **          - Antulio Morgado Valle
00019 **
00020 **   Versión        : Beta
00021 **   Revisión       : A
00022 **   Release        : 0
00023 **   Bugs & Fixes   :
00024 **   Date           : 20/10/2019
00025 **                    Added support for Led_RGB
00026 **                    22/09/2018 
00027 **                    Added lcd Menu, Beta version (with bugs)
00028 **
00029 * ###########################################################################/
00030 
00031 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00032 :  Includes
00033 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00034 */
00035 #include "mbed.h"
00036 #include "NewTextLCD.h" 
00037 /*
00038 :...............................................................................
00039 :  Definiciones
00040 :...............................................................................
00041 */
00042 #define on  0
00043 #define off 1
00044 /*
00045 +-------------------------------------------------------------------------------
00046 |  Configuración de Puertos 
00047 +-------------------------------------------------------------------------------
00048 */
00049 DigitalIn   push(SW1,PullUp);           // Botón Derecho (SW1)
00050 DigitalOut  led_monitor(LED1);          // Inicializa el LED Monitor
00051 Serial      terminal(USBTX, USBRX);     // Inicializa la Comunicación Serial a la PC
00052 // I2C Communication
00053 //I2C         lcd(PTC2,PTC1);             // SDA, SCL
00054 // SPI Communication
00055 //SPI         lcd(PTD6,PTD7,PTD5,PTD4);   // MOSI, MISO, SCLK, SSEL
00056 // LCD instantiation 
00057 //TextLCD_SPI lcd(&lcd, PTD4, Textlcd::lcd16x4, TextLCD::HD44780);    // SPI bus, SN74595 expander, CS pin, lcd Type 
00058 //TextLCD_I2C lcd(&i2c_LCD, 0x7E, TextLCD::LCD20x4);                  // I2C bus, PCF8574A Arduino Shield, LCD Type
00059 TextLCD lcd(PTA1,PTA2,PTD3,PTA12,PTA4,PTA5,TextLCD::LCD20x4);       // HD44780: R/S, E, DB4, DB5, DB6, DB7 
00060 
00061 /*
00062 +-------------------------------------------------------------------------------
00063 |  Variables Globales de Usuario 
00064 +-------------------------------------------------------------------------------
00065 */
00066 int pattern[8];
00067 int pattern1[8];
00068 int pattern2[8];
00069 
00070 /*
00071 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00072 |  Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
00073 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00074 */
00075                 // Las Definiciones de Funciones Prototipo 
00076                 // y Apuntadores a Vectores de Interrupciones van aquí !
00077 /*
00078 #===============================================================================
00079 |
00080 |               P R O G R A M A     P R I N C I P A L
00081 |
00082 #=============================================================================== 
00083 */
00084 int main()
00085 {
00086                 // Definición del Primer Patrón
00087     pattern[0] = 0x0e;      //  0b00001110     ***
00088     pattern[1] = 0x0a;      //  0b00001010     * *
00089     pattern[2] = 0x0e;      //  0b00001110     *** 
00090     pattern[3] = 0x04;      //  0b00000100      * 
00091     pattern[4] = 0x1f;      //  0b00011111    *****     
00092     pattern[5] = 0x04;      //  0b00000100      * 
00093     pattern[6] = 0x0a;      //  0b00000100     * * 
00094     pattern[7] = 0x0a;      //  0b00000100     * *
00095                 // Definición del Segundo Patrón   
00096     pattern1[0] = 0x0e;     //  0b00001110     ***
00097     pattern1[1] = 0x0a;     //  0b00001010     * *
00098     pattern1[2] = 0x0e;     //  0b00001110     ***
00099     pattern1[3] = 0x15;     //  0b00010101    * * *
00100     pattern1[4] = 0x0e;     //  0b00001110     ***
00101     pattern1[5] = 0x04;     //  0b00000100      * 
00102     pattern1[6] = 0x0a;     //  0b00001010     * *
00103     pattern1[7] = 0x11;     //  0b00010001    *   *
00104                 // Definición del Tercer Patrón
00105     pattern2[0] = 0x04;     //  0b00000100      *
00106     pattern2[1] = 0x0e;     //  0b00001110     ***
00107     pattern2[2] = 0x1f;     //  0b00001111    *****
00108     pattern2[3] = 0x04;     //  0b00000100      *
00109     pattern2[4] = 0x04;     //  0b00000100      *
00110     pattern2[5] = 0x04;     //  0b00000100      *
00111     pattern2[6] = 0x04;     //  0b00000100      * 
00112     pattern2[7] = 0x0e;     //  0b00001110     ***  
00113 
00114 terminal.baud(115200);      // Se configura la velocidad de transmisión e inicia la comunicación serial.    
00115 terminal.printf(" System is Wake Up!.\n\r"); 
00116 
00117 /* Configufración del Display lcd */    /* Mucho OjO !!! */
00118 /* lcd Utilizando el SPI */   
00119 //  lcd.frequency(100000);      // Frecuencia de operación para el SPI
00120 //  lcd.format(8,0);            // Modo de Operación para el SPI
00121 
00122                 // Inicialización de los patrones en la CGRAM
00123     lcd.writeCGRAM(0, pattern);
00124     lcd.writeCGRAM(1, pattern1);
00125     lcd.writeCGRAM(2, pattern2);
00126     /*Las líneas anteriores permiten realizar las figuras
00127     para el juego, como la flecha y los movimientos de
00128     los ladrones*/
00129 INICIO:
00130     int i=0,j=0,y=0,p=0;
00131     uint16_t time=15;           // tiempo en ms
00132     while(push==1)              // Si no se oprime el Botón
00133     {
00134         if(i==9||i==19)y++;
00135         if(i==29)
00136         {
00137             y++;
00138             i=0;
00139         }
00140         if(j==20)j=0,y=0;
00141         p=y%2;
00142         lcd.locate(2,1);
00143         lcd.putc(p);
00144         lcd.locate(17,1);
00145         lcd.putc(p);
00146         lcd.locate(4,1);
00147         lcd.printf("Get all the\n      raiders!");
00148         wait_ms(time);
00149         i++;
00150         lcd.cls();
00151     }
00152     lcd.cls();
00153     lcd.locate(7,1);
00154     lcd.printf("INICIO!");
00155     wait(1);
00156     lcd.cls();                          // Limpia laPantalla LCD
00157     uint8_t atrapados=0,fallos=0,faltan=7;
00158     //Se muestran textos que dan indicaciones del juego.
00159     i=0;
00160    while(true){
00161     //***Siempre en pantalla*****
00162         lcd.locate(0,0);                // Inicio del LCD 
00163         lcd.printf("Missing %i    Fails %i",faltan,fallos);
00164         lcd.locate(9,1);
00165         lcd.printf(">%i",atrapados);
00166     /*Se añaden contadores para administrar el número de 
00167     ladrones por atrapar y los fallos cometidos por el usuario.*/
00168     //*******Ladrón desplazándose******
00169         if(i==2||i==5)y++;
00170         if(i==8){
00171             j++;
00172             y++;
00173             i=0;
00174         }
00175         if(j==20)j=0,y=0;
00176         p=y%2;
00177         lcd.locate(j,2);
00178         lcd.putc(p);
00179         wait_ms(time);
00180         i++;
00181         lcd.cls();
00182     //***Capturando al ladrón***
00183         if(j>=5&&j<=13)time=6;
00184         else time=15;
00185         
00186         if(push==0)           // Si se oprime el Botón
00187         {
00188             lcd.locate(11,2);
00189             lcd.putc(2);
00190             led_monitor=on;
00191             wait_ms(500);
00192             led_monitor=off;
00193             if(j==11)
00194             {
00195                 faltan--;
00196                 atrapados++;
00197                 lcd.cls();
00198                 lcd.locate(8,1);
00199                 lcd.printf("BIEN!");
00200                 j=0;
00201                 i=0;
00202                 wait(1);
00203             }
00204             else
00205             {
00206                 lcd.cls();
00207                 lcd.locate(6,1);
00208                 lcd.printf("FALLASTE!");
00209                 fallos++;
00210                 j=0;
00211                 i=0;
00212                 wait(1);
00213             }
00214         }
00215         else
00216         {
00217             lcd.locate(11,3);
00218             lcd.putc(2);
00219         }
00220         if(j==19)
00221         {
00222             lcd.cls();
00223             lcd.locate(6,1);
00224             lcd.printf("FALLASTE!");
00225             fallos++;
00226             j=0;
00227             i=0;
00228             wait(1);
00229         }
00230         if(fallos==3)
00231         {
00232             lcd.locate(4,1);
00233             lcd.printf("Perdiste xD :(");
00234             wait(2);
00235             goto INICIO;
00236         }
00237         if(atrapados==7)
00238         {
00239             lcd.locate(4,1);
00240             lcd.printf("Ganaste! :D");
00241             wait(2);
00242             goto INICIO;
00243         }
00244         
00245     }
00246 }
00247 /* END main */
00248 
00249 /*
00250 ................................................................................
00251 :  Rutinas de los Vectores de Interrupción
00252 ................................................................................
00253 */
00254                 // Las Rutinas de Atención a Interrupciones van aquí !
00255                 
00256 /* END Events */   
00257 /*
00258 ________________________________________________________________________________
00259 |
00260 |  Funciones Prototipo
00261 |_______________________________________________________________________________
00262 */
00263                 // Las Funciones Prototipo van aquí !
00264 
00265 /* END functions */  
00266 
00267 /* END Program */
00268 
00269 /*+-----------------------------------------------------------------------------
00270 *+                 Conexiones al LCD
00271 *+
00272 *+ FRDM-KL46Z                PTA1,    PTA2, PTD3,PTA12,PTA4,PTA5  PWM   
00273 *+              GND Vcc POT       GND                                  GND
00274 *+ HD44780:     GNG Vcc Vee  R/S  RW   E    DB4   DB5  DB6  DB7   BL+  BL-    
00275 *+
00276 *+------------------------------------------------------------------------------       
00277 *+ Direccinamiento de la RAM del Display:
00278 *+ 
00279 *+ Los módulos de 8x1 (obsoletos) están arreglados como una líneas de 
00280 *+ 8 caracteres de lada a lado.
00281 *+  "Linea 1" Las direcciones comienzan en 80h a 87h
00282 *+
00283 *+ Los módulos de 16x1 están arreglados como dos líneas de 8 caracteres de lada a lado.
00284 *+  "Linea 1" Las direcciones comienzan en 80h a 87h (primera parte de la línea)
00285 *+  "Linea 1" Las direcciones comienzan en C0h a C7h (segunda parte de la línea)
00286 *+  de manera que al escribir caracteres al módulo, el cursor se incrementará automaticamente
00287 *+  hasta alcanzar el 9° caracter entonces tendrá que mover el cursor a la dirección C0h antes
00288 *+  de escribir el 9° caracter en el módulo de 1x16.
00289 *+  
00290 *+  Módulo de 16x2 es dos líneas por 16 caracteres
00291 *+  "Linea 1" Las direcciones comienzan en 80h a 8Fh
00292 *+  "Linea 2" Las direcciones comienzan en C0h a CFh
00293 *+
00294 *+  Módulo de 16x4 
00295 *+  "Linea 1" Las direcciones comienzan en 80h a 8Fh
00296 *+  "Linea 2" Las direcciones comienzan en C0h a CFh
00297 *+  "Linea 3" Las direcciones comienzan en 90h a 9Fh
00298 *+  "Linea 4" Las direcciones comienzan en D0h a DFh
00299 *+    
00300 *+  Módulo de 20x1 
00301 *+  "Linea 1" Las direcciones comienzan en 80h a 93h
00302 *+  
00303 *+  Módulo de 20x2 
00304 *+  "Linea 1" Las direcciones comienzan en 80h a 93h
00305 *+  "Linea 2" Las direcciones comienzan en C0h a D3h
00306 *+  
00307 *+  Módulo de 20x4 
00308 *+  "Linea 1" Las direcciones comienzan en 80h a 93h
00309 *+  "Linea 2" Las direcciones comienzan en C0h a D3h
00310 *+  "Linea 3" Las direcciones comienzan en 94h a A7h
00311 *+  "Linea 4" Las direcciones comienzan en D4h a E7h
00312 *+  
00313 *+  Módulo de 24x2 
00314 *+  "Linea 1" Las direcciones comienzan en 80h a 98h
00315 *+  "Linea 2" Las direcciones comienzan en C0h a D8h
00316 *+  
00317 *+  Módulo de 32x2 
00318 *+  "Linea 1" Las direcciones comienzan en 80h a A0h
00319 *+  "Linea 2" Las direcciones comienzan en C0h a E0h
00320 *+
00321 *+  Módulo de 40x2 
00322 *+  "Linea 1" Las direcciones comienzan en 80h a A7h
00323 *+  "Linea 2" Las direcciones comienzna en C0h a E7h
00324 *+ 
00325 *+
00326 *+--------------------------------------------------------------------------- */ 
00327 
00328 /*+-----------------------------------------------------------------------------
00329 *+ Inicializaci¢n del Display de Cristal Líquido Alfanumérico en modo de 4 bits
00330 *+
00331 *+ Definici¢n de pines:
00332 *+                            __      Vdd GND
00333 *+             MOSI MISO SCK SS       |   |    
00334 *+               |   |   |   |       10K  |   
00335 *+               |   |   |   |        |   |    
00336 *+ CD 4094     DATA NC CLOCK STROBE  NC  OE  QS  ---> DATA en la siguiente etapa
00337 *+ 74HC 595     SER NC SCLK RCLK    SCLR  G  QH' ---> SER en la siguiente etapa
00338 *+
00339 *+ CD 4094      Q1  Q2  Q3  Q4   Q5  Q6  Q7  Q8
00340 *+ 74HC 595     QA  QB  QC  QD   QE  QF  QG  QH
00341 *+               |   |   |   |    |   |   |   |
00342 *+               |   |   |   |    |   |   |   |               
00343 *+ HD44780      R/S  RW  E  BL   DB4 DB5 DB6 DB7 
00344 *+
00345 *+ Notas: El pin RW del LCD debe estar estar siempre en "L" o conectado a GND.
00346 *+        El pin E2 es usado solo para el LCD40x4 (segundo controlador)
00347 *+        La señal BL = LED+ y debe ser usado para control del Backlight
00348 *+        Para enviar cualquier dato o instrucci¢n hay que hacer una   _
00349 *+        transici¢n de bajo a alto en el pin de E (Enable) del LCD. _| |_
00350 *+
00351 *+------------------------------------------------------------------------------
00352 *+
00353 *+ Ubicaciónn de pines:
00354 *+      ---------------------------------------------------------------------
00355 *+      |  _______________________________________________________________  |
00356 *+      | |                                                               | |
00357 *+      | |                                                               | |
00358 *+      | |                                                               | |
00359 *+      | |                                                               | |
00360 *+      | |                                                               | |
00361 *+      | |                                                               | |
00362 *+      | |_______________________________________________________________| |
00363 *+      |                                                                   |
00364 *+      ---------------------------------------------------------------------
00365 *+                          |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
00366 *+                          |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
00367 *+                          16 15 14 13 12 11 10 9  8  7  6  5  4  3  2  1
00368 *+
00369 *+   1   Vss - GND
00370 *+   2   Vdd - Vcc
00371 *+   3   Vee - Ajuste de contraste
00372 *+   4   RS  - (Register/String) 0=Entrada de Instrucción, 1=Entrada de Dato 
00373 *+   5   RW  - Lectura/Escritura 0=Escribe al LCD, 1=Lee del LCD
00374 *+   6   E   - Señal de Habilitación  "101"
00375 *+   7   DB0 - Línea 0 del bus de datos
00376 *+   8   DB1 - Línea 1 del bus de datos
00377 *+   9   DB2 - Línea 2 del bus de datos
00378 *+   10  DB3 - Línea 3 del bus de datos  _
00379 *+   11  DB4 - Línea 4 del bus de datos   |
00380 *+   12  DB5 - Línea 5 del bus de datos    \  Operación en 4 bits
00381 *+   13  DB6 - Línea 6 del bus de datos    / 
00382 *+   14  DB7 - Línea 7 del bus de datos  _|
00383 *+   15  LED+  Ánodo  Backlight
00384 *+   16  LED-  Cátodo Backlight 
00385 *+
00386 *+------------------------------------------------------------------------------                                 
00387 *+
00388 *+  +5V ------------*----------- Vcc          PTE19 PTE18 PTE20 PTE21 PTE22 PTE23                
00389 *+                  |                           RS    E    D4    D5    D6    D7 
00390 *+                  /
00391 *+          10k to  <---------- Vee          R/W ---> GND  
00392 *+          20k pot /                         A   ---> PWM1 o   R=330 ---> Vcc
00393 *+                  \                         K   ---> GND
00394 *+                  |
00395 *+  GND ------------*----------- Vss
00396 *+
00397 *+------------------------------------------------------------------------------
00398 *+      
00399 *+ Definici¢n de bits:
00400 *+
00401 *+ I/D=1:   (Increment/Decrement) Incremento (+) del Cursor
00402 *+ I/D=0:   (Increment/Decrement) Decremento (-) del Cursor
00403 *+ D=0:     (Display) Apaga el Display
00404 *+ D=1:     (Display) Enciende el Display
00405 *+ C=0:     (Cursor) Apaga el Cursor
00406 *+ C=1:     (Cursor) Enciende el Cursor
00407 *+ B=0:     (Blinking) Apaga el parpadeo del Cursor
00408 *+ B=1:     (Blinking) Enciende el parpadeo del Cursor
00409 *+ S=0:     (Shift) Sin corrimiento del Display
00410 *+ S=1:     (Shift) Con corrimiento del Display
00411 *+ S/C=1:   (Shift/Cursor) Con corrimiento del Display
00412 *+ S/C=0:   (Shift/Cursor) Con Movimiento del Cursor
00413 *+ R/L=1:   (Right/Left) Corrimiento a la Derecha
00414 *+ R/L=0:   (Right/Left) Corrimiento a la Izquierda
00415 *+ DL=1:    (Data Lenght) 8 Bits de datos
00416 *+ DL=0:    (Data Lenght) 4 Bits de datos
00417 *+ N=1:     (Number Lines) Modo de 2 Líneas de despliege
00418 *+ N=0:     (Number Lines) Modo de 1 Línea de despliege
00419 *+ F=1:     (Font) 5X10 Puntos por caracter
00420 *+ F=0:     (Font) 5X7 Puntos por caracter
00421 *+ BF=1:    (Busy Flag) Operación interna en proceso
00422 *+ BF=0:    (Busy Flag) Listo para aceptar instrucciones/datos
00423 *+ DDRAM:   (Display Data Ram)
00424 *+ CGRAM:   (Character Generator RAM)
00425 *+ ACC:     Address of CGRAM
00426 *+ ADD:     Address of DDRAM These correspond to curser addresses.
00427 *+ AC:      Address counter used for both DDRAM and CGRAM
00428 *+
00429 *+                              RS RW  MSB                         LSB 
00430 *+ Clear Display                0  0    0   0   0   0   0   0   0   1
00431 *+ Cursor at Home               0  0    0   0   0   0   0   0   1   0
00432 *+ Entry Mode Set               0  0    0   0   0   0   0   1  I/D  S
00433 *+ Display ON/OFF control       0  0    0   0   0   0   1   D   C   B
00434 *+ Cursor/Display Shift         0  0    0   0   0   1  S/C R/L  x   x
00435 *+ Function Set                 0  0    0   0   1   DL  N   F   x   x
00436 *+ CGRAM                        0  0    0   1   -------- ACC --------
00437 *+ DDRAM                        0  0    1   ---------- ADD ----------
00438 *+ Busy Flag/Address Read       0  1    1   -----------AC------------
00439 *+ CGRAM/CDDRAM Data Write      1  0            Write Data
00440 *+ CGRAM/CDDRAM Data Read       1  1            Read  Data
00441 *+
00442 *+
00443 *+ Tiempos de Ejecución:
00444 *+ Dependiendo del Oscilador Interno del LCD los tiempos de ejecución de las 
00445 *+ instrucciones pueden variar.
00446 *+                                          Fosc
00447 *+   INSTRUCCION            160Khz          250Khz          270Khz
00448 *+   Clear Display          120us~4.9ms     82us~1.6ms      40us~1.5ms
00449 *+   Cursor Home            120us           40~1.6ms        37us~1.5ms
00450 *+   Todas las demás        120us           40us            37us
00451 *+   Lectura/Escritura      120us           40us            37us
00452 *+   Lectura de Busy Flag   1us             1us             1us
00453 
00454 *+   El controlador podría estar en modo de 8 bits (reinicio de encendido)
00455 *+   o en modo de 4 bits (reinicio en caliente) en este punto.
00456 *+   Siga este procedimiento para asegurarse de que el controlador entre en el
00457 *+   estado correcto. 
00458 *+
00459 *+******************************************************************************
00460 *+// Patrón de Configuración del LCD  en modo de 4 bits (LSN first)
00461 *+******************************************************************************
00462 *+   char init_LCD[] = {0b00000000, 0b00000000, // Datos en DB7=DB6=DB5=DB4=0, LED+=0, EN=0,RW=0,RS=0   
00463 *+                      0b00111110, 0b00111010, // Datos en DB5=DB4=1, LED+=1, EN=1,0,RW=1,RS=0
00464 *+                      0b00111110, 0b00111010, // Datos en DB5=DB4=1, LED+=1, EN=1,0,RW=1,RS=0
00465 *+                      0b00111110, 0b00111010, // Datos en DB5=DB4=1, LED+=1, EN=1,0,RW=1,RS=0 
00466 *+                      0b00101110, 0b00100010, // Datos en DB5=1, LED+=1, EN=1,0,RW=1,RS=0                       
00467 *+                      0b00101110, 0b00100010, // => Function Set Control: DB5=1, LED+=1, EN=1,0,RW=1,RS=0 
00468 *+                      0b10001110, 0b10001110, // => Function Set Control: DB7=N=1 2 líneas, DB6=F=0 5x7puntos, LED+=1, EN=1,0,RW=1,RS=0
00469 *+                      0b00001110, 0b00000010, // => Display ON/OFF Control: DB7=DB6=DB5=DB4=0, LED+=1, EN=1,0,RW=1,RS=0 
00470 *+                      0b00101110, 0b00100010, // => Display ON/OFF Control: DB7=1 (Display off, cursor off, blink off),LED+=1, EN=1,0,RW=1,RS=0
00471 *+                      0b00001110, 0b00000010, // => Display Clear: DB7=DB6=DB5=DB4=0, LED+=1, EN=1,0,RW=1,RS=0 
00472 *+                      0b00011110, 0b00010010, // => Display Clear: D4=1, LED+=1, EN=1,0,RW=1,RS=0
00473 *+                      0b00001110, 0b00000010, // => Cursor Home: DB7=DB6=DB5=DB4=0, LED+=1, EN=1,0,RW=1,RS=0                                          
00474 *+                      0b00101110, 0b00100010, // => Cursor Home: DB5=1, LED+=1, EN=1,0,RW=1,RS=0 , (Cursor Home};
00475 *+                      0b01001111, 0b00001011, // => Text 0x48: DB5=1, LED+=1, EN=1,0,RW=1,RS=1                                          
00476 *+                      0b10001111, 0b00101011, // => Text "H" : DB7=1, LED+=1, EN=1,0,RW=1,RS=1 , (ASCII "H"}
00477 *+                      0b01101111, 0b01101011, // => Text 0x6F: DB5=1, LED+=1, EN=1,0,RW=1,RS=1
00478 *+                      0b11111111, 0b11111011, // => Text "o" : DB7=DB6=DB5=DB4=1, LED+=1, EN=1,0,RW=1,RS=1 , (ASCII "o"}
00479 *+                      0b01101111, 0b01101011, // => Text 0x6C: DB6=DB5=1, LED+=1, EN=1,0,RW=1,RS=1                                          
00480 *+                      0b11001111, 0b11001011, // => Text "l" : DB7=DB6=1, LED+=1, EN=1,0,RW=1,RS=1 , (ASCII "l"}
00481 *+                      0b01101111, 0b01101011, // => Text 0x61: DB6=DB5=1, LED+=1, EN=1,0,RW=1,RS=1                                          
00482 *+                      0b00011111, 0b00011011, // => Text "a" : DB4=1, LED+=1, EN=1,0,RW=1,RS=1 , (ASCII "a"}
00483 *+                      0b00101111, 0b00101011, // => Text 0x21: DB5=1, LED+=1, EN=1,0,RW=1,RS=1                                          
00484 *+                      0b00011111, 0b00011011};// => Text "!" : DB4=1, LED+=1, EN=1,0,RW=1,RS=1 , (ASCII "!"}
00485 *+
00486 *+   La interfaz de hardware entre el MCU y la LCD  en modo de 8 bits solo puede 
00487 *+   recibir los 4 bits más significativos (Nibble más significativo, MSN) 
00488 *+   como instrucción para cambier a modo 4.
00489 *+   En el modo de 4 bits, la pantalla LCD espera el MSN primero, seguido del LSN.
00490 *+----------------------------------------------------------------------------*
00491 *+
00492 *+   Powered by
00493 *+
00494 *+          T H E     A N T U L I U ' S   T E A M   R&D  Unltd 
00495 *+
00496 *+  Research, Development, Systems, Equipment, Support & Spare Parts.
00497 *+  (C) Copyright 1989-2019, All Rights Reserved            
00498 *+
00499 *+  Welcome to The Beaners Proyect Community!                   
00500 *+----------------------------------------------------------------------------*/
00501 
00502 /* END Mbed */