FRDM-KL46Z_SquashedRaiders Es un ejemplo de un Vídeo Juego utilizando un Display LCD Alfanumérico
Dependencies: mbed NewTextLCD
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 */
Generated on Fri Jul 15 2022 03:41:54 by 1.7.2