Programa del profe

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /* #############################################################################
00002 **    Archivo        : main.c
00003 **    Proyecto       : STM32-103C8_Barrido_Displays
00004 **    Procesador     : STM32F103C8
00005 **    Herramienta    : Mbed
00006 **    Compilador     : Mbed Online C Compiler
00007 **    Version        : 5.14
00008 **    Descripción    :
00009 **         Este proyecto provee lo necesario para el despliegue de números y 
00010 **         caracteres en un display de 7 segmentos.
00011 **         Contiene un Generador de Caracteres y las rutinas de Barrido para un
00012 **         Display de 7 segmentos de Ánodo Común de 4 dígitos.
00013 **         This module contains user's application code.
00014 **   Componentes     : GPIO, Ticker, Terminal Serial.
00015 **   Configuraciones : 
00016 **         Modo 0.- Despliega números de hasta cuatro digitos
00017 **         Modo 1.- Despliega una cadena de caracteres con desplazamiento a la
00018 **                  Izquierda.
00019 **         Modo 2.- Realiza el Parpadeo (Blinking) del valor que se esta
00020 **                  deplegando (por implementar)
00021 **
00022 **   Autores         :
00023 **         ATEAM Development Group:
00024 **          - Antulio Morgado Valle
00025 **
00026 **   Versión        : Beta
00027 **   Revisión       : A
00028 **   Release        : 0
00029 **   Bugs & Fixes   :
00030 **   Date           : 20/10/2019
00031 **                    Added support for Shift Messages
00032 **
00033 ** ###########################################################################*/
00034 /*
00035 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00036 :  Includes
00037 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00038 */
00039 #include "stm32f103c8t6.h"
00040 #include "mbed.h"
00041 //#include "AnalogIn.h"
00042 //#include "ADC.h"
00043 //#include "Led_RGB.h"
00044 #include "Serial.h"
00045 //#include "TextLCD.h"
00046 //#include "I2C.h"
00047 //#include "SPI.h"
00048 #include "stdio.h"
00049 /*
00050 :...............................................................................
00051 :  Definiciones
00052 :...............................................................................
00053 */
00054 #define on              0               // Estado para boton presionado
00055 #define off             1               // Estado para boton sin presionar
00056 #define hold            2               // Estado para boton mantenido
00057 #define release         3               // Estado para boton liberado
00058 #define FALSE           0               // Estado FALSO
00059 #define TRUE            1               // Estado VERDADERO
00060 #define Ticker_Rate     1000            // Periodo de interrupción (us)
00061 #define Rate_Time       2               // Tiempo de Encendido de los Digitos (ms)
00062 #define Scan_Time       2               // Tiempo de Barrido del Display (ms)
00063 #define Shift_Time      10              // Tiempo de corrimiento  (x Counter_Time)
00064 #define Counter_Time    100             // Tiempo de counter (ms)
00065 #define Size_String     20              // Tamaño del Buffer de Caracteres
00066 #define Digit_Null      0xFF            // Valor para apagar los Segmentos 
00067 #define Degree_Symbol   0x0F            // Valor para el Símbolo de Grados
00068 /*
00069 +-------------------------------------------------------------------------------
00070 |  Configuración de Puertos 
00071 +-------------------------------------------------------------------------------
00072 */
00073 
00074 DigitalOut  led_monitor(LED1);         // Inicializa el Led de Monitor
00075 PwmOut      buzzer  (PB_1);            // PWM para el Buzzer
00076 AnalogIn    sensor1 (PA_0);            // Canal Analógico para sensor 1
00077 AnalogIn    sensor2 (PA_1);            // Canal Analógico para sensor 2
00078 BusIn       Teclado (PB_5,PB_6,PB_7,PB_8);          // Teclado Matricial
00079 BusOut      Anodos  (PB_12, PB_13, PB_14, PB_15);   // Anodos: (Uni Dec Cent Mill)  A1 A2 A3 A4
00080 BusOut      Catodos (PA_8,PA_9,PA_10,PA_11,PA_12,PA_15,PB_3,PB_4);     // Cátodos: p e d c b a f g  (lsb -> msb)) 
00081 // *****    Host PC Terminal Communication channels
00082 Serial      Terminal (PA_2, PA_3);          // Inicializa la comunicación serial a la PC (Tx,Rx)
00083 //Serial      Terminal(USBTX, USBRX,115200);// Tx, Rx  Baud Rate - Terminal Serial por USB @ 115,200 Bauds
00084 // *****    I2C Communication
00085 //I2C         i2c_LCD(PB_9,PB_8,);          // SDA, SCL
00086 // *****    SPI Communication
00087 //SPI         spi_LCD(PA_7,PA_6,PA_5,PB_6);   // MOSI, MISO, SCLK, SS
00088 Ticker      Barrido;                        // Interrupción por Timer
00089 /*
00090 ** -------------------------------------------------------------------
00091 **    Instanciación del LCD
00092 ** -------------------------------------------------------------------
00093 */
00094 // LCD instantiation 
00095 //TextLCD lcd(PTC5, PTC6, PTC8, PTC9, PTC10, PCT11, TextLCD::LCD20x2); // 4bit bus: rs, e, d4-d7
00096 //TextLCD_SPI lcd(&spi_LCD, PB_6, TextLCD::LCD16x4, TextLCD::AC780);   // SPI bus, CS, LCD Type 
00097 //TextLCD_I2C lcd(&i2c_LCD, 0x7E, TextLCD::LCD20x4); // I2C bus, PCF8574A Arduino Shield, LCD Type
00098 
00099 /*
00100 +-------------------------------------------------------------------------------
00101 |  Variables Globales de Usuario 
00102 +-------------------------------------------------------------------------------
00103 */
00104 uint16_t Rate=1000;             // Velocidad de barrido (1000us = 1ms)
00105 // ++++++++++++++++++++ Generador de Caracteres ++++++++++++++++++++++++++++++++
00106 //             Offset:  0    1    2    3    4    5    6    7    8    9   10    11  12   13   14   15   16   17   18   19   20   21  22    23   24   25   26   27   28   29   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   45   46   47  48   49   50   51   52   53   54   55   56   57   58   59   60   61   62   63   64   65   66   67   68   69   70   71   72   73   74   75   76   77   78   79   80   81   82   83   84   85   86   87   88   89   90   91  92
00107 //Caracter a Desplegar: 0    1    2    3    4    5    6    7    8    9    A     b   C    d    E    f    G    h    I    j    K    L   M     n    o    P    q    r    S    t    u    V    W    X    y    Z  space a    e    /e   @    ñ    [    ]    U    /U   /_   -    _   _/_  /=   =   ==    °   +/c   +n   +/c  +u   o    c    n    /c   u    ^    ¬   + >   ^   / v   <    v    >   i    +i   /i   +/i  ii   +ii  #   /#    J    /J   -J   -/J  |    ||     |  +    /+   F    +F   /F   +/F  null         !  "   #   $  %   &   '   (    )   *   +   -   .   /   :   ;   <   >   ?   @
00108 uint8_t  Segmentos[]={0x81,0xE7,0x49,0x43,0x27,0x13,0x11,0xC7,0x01,0x03,0x05,0x31,0x99,0x61,0x19,0x1D,0x91,0x35,0xBD,0xE3,0x2D,0xB9,0x85,0x75,0x71,0x0D,0x07,0x7D,0x13,0x39,0xF1,0xB1,0xA1,0x25,0x23,0x49,0xFF,0x41,0x09,0x03,0x11,0x55,0x99,0xC3,0xA1,0x85,0xDF,0x7F,0xFB,0xDB,0x7B,0x5F,0x5B,0x0F,0x1F,0x8F,0x4F,0x2F,0x71,0x79,0x75,0x73,0xF1,0x3F,0x9F,0xCF,0x6F,0x7D,0xF9,0xF3,0x77,0xFD,0xBF,0xF7,0xEF,0xF5,0xAF,0x6D,0x37,0xE3,0xB9,0x9D,0xC7,0xBD,0xA5,0xE7,0x3D,0x67,0x1D,0x47,0x63,0x39,0x00};
00109 // ++++++++++++++++++++++ Selector de Digitos ++++++++++++++++++++++++++++++++++
00110 uint8_t  Digitos[]={0x08,0x04,0x02,0x01,0x00,0x0F};     // Millares, Centenas, Decenas, Unidades, Apagados, Encendidos
00111 uint8_t  Numeros[]={1,0,2,4};   // Valor a Desplegar
00112 uint8_t  Cadena[]={33,0,21,10,36,14,28,18,22,14,36,35,10,12,10,29,14,23,12,24,36,36,36}; // Mensaje a Desplegar
00113 uint8_t  punto_decimal=0;   // Posición del punto decimal: 0=sin punto, 1=unidades, 2=decenas, 3=centemas 4=millares,  
00114 uint8_t  cont_1ms;          // Contador de milésimas de Segundo
00115 uint8_t  cont_10ms;         // Contador de centésimas de Segundo
00116 uint8_t  cont_100ms;        // Contador de décimas de Segundo
00117 uint8_t  cont_1s;           // Contador de Segundos
00118 uint8_t  scan_rate = Scan_Time ;
00119 uint8_t  shift_rate= Shift_Time;
00120 uint8_t  display_rate=10;           // Display Rate = 10ms
00121 uint16_t counter=1250;
00122 uint8_t  i=0;
00123 uint8_t  nchar=0;
00124 bool     mode=0;
00125 bool     flag1=FALSE;
00126 bool     flag2=FALSE;
00127 
00128 /*
00129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00130 |  Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
00131 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00132 */
00133 void Barrido_OnInterrupt(void);  
00134 /* END definitions */ 
00135 
00136 /*
00137 #===============================================================================
00138 |
00139 |               P R O G R A M A     P R I N C I P A L
00140 |
00141 #=============================================================================== 
00142 */
00143 int main()          
00144 {                       // Inicialización de variables, puertos e interrupciones
00145 confSysClock();         // Configure system clock (72MHz HSE clock, 48MHz USB clock)
00146 Barrido.attach_us(&Barrido_OnInterrupt, Rate);   // Le asigna el periodo de barrido de 1ms (Rate=1000)
00147 Terminal.baud(115200);  // Se configura la velocodad de transmisión     
00148 Terminal.printf("\e[2J");                       // Clear Screen  
00149 Terminal.printf(" System is Wake Up!.\n\r");    // e inicia la  comunicación serial
00150 Terminal.printf ("\t\e[1;37;41mInstituto Politecnico Nacional\e[0m\n\r");
00151 Terminal.printf ("\e[1;37;42mESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA\e[0m\n\r\v");
00152 Terminal.printf ("\t\e[1;34;40mBarrido \e[1;37;40mdel \e[1;32;40mDisplay \e[1;33;40mde \e[1;31;40m7 Segmentos\e[0m\n\r\v\v\e[0m");
00153 
00154 Terminal.printf ("\nSelecciona el Modo de Operacion:\n\r");
00155 Terminal.printf ("Modo 0 = Normal (4 Digitos)\n\r");
00156 Terminal.printf ("Modo 1 = Corrimiento \n\r");   
00157 
00158     while (TRUE)        // El Lazo del Programa principal está aquí !!!
00159     {    
00160         if (flag1==TRUE)                // Está puesta la Bandera 1 ?
00161         {                         
00162             if (mode==1)                // Está en modo 1? (corrimiento de mensaje)
00163             {
00164                 Numeros[i]=Cadena[i+nchar];// Copia 4 caracteres al buffer de despliegue
00165                 if (nchar >= Size_String) nchar=0;   // Restablece el contador de caractres
00166                   if (i==4)             // 
00167                   {
00168                       i=0;              // 
00169                       mode=0;           // 
00170                   }                         
00171             }    
00172             //------------------ Barrido de los Digitos ------------------------
00173             /* ................. Display de Ánodo Común ........................
00174             */
00175             Anodos= Digitos[4];          // Apaga todos los Digitos (Evita fantasmas)                
00176             Catodos= Segmentos[Numeros[i]];  // Actualiza los segmentos
00177             if (i==4-punto_decimal) Catodos=(Segmentos[Numeros[i]]& 0xFE); // Enciende el punto decimal
00178             Anodos= Digitos[i];          // Activa el Digito en cuestión
00179             
00180             /* ................. Display de Cátodo Común ........................
00181             Anodos= 0x0F - (Digitos[4]);          // Apaga todos los Digitos (Evita fantasmas)                
00182             Catodos= 0x0FF - (Segmentos[Numeros[i]]);  // Actualiza los segmentos
00183             if (i==4-punto_decimal) Catodos=(Segmentos[Numeros[i]]& 0xFE); // Enciende el punto decimal
00184             Anodos= 0x0F - (Digitos[i]);          // Activa el Digito en cuestión
00185             */
00186             i++;                        // Apunta al siguiente dígito
00187             if (i==4)                   // Es el últino dígito?
00188             {
00189                 i=0;                    // Reinicia el Barriodo
00190             }      
00191             flag1=FALSE;                // Apaga la Bandera 1
00192         }
00193         
00194         //------------------ Corrimiento de los Digitos ------------------------   
00195         if (flag2==TRUE)                // Está puesta la Bandera 2?
00196         {
00197             shift_rate--;               // Decrementa el contador de Corrimientos
00198         if (!shift_rate)                // Es Cero?
00199             {    
00200                 mode=1;                 // Tiempo entre desplazamientos del mensaje
00201                 shift_rate = Shift_Time;// Restablece el tiempo de los corrimientos
00202                 nchar++;                // corrimiento al siguiente conjunto de de caracteres
00203                 i=0;                    // Restablece el barrido de los digitos
00204             }            
00205             led_monitor=!led_monitor;   // parapadeo del led_monitor 
00206             flag2=FALSE;                // Limpia la Bandera 2
00207         } 
00208     }
00209 }
00210 /* END main */
00211 
00212 /*
00213 ................................................................................
00214 :  Rutinas de los Vectores de Interrupción
00215 ................................................................................
00216 */
00217 void Barrido_OnInterrupt()          // Rutina de Atención al Ticker
00218 {
00219     cont_1ms++;                     // Incrmenta el contador de milisegundos
00220     counter--;                      // Decrementa el contador de eventos
00221     scan_rate--;                    // Decrementa el tiempo de  despliege
00222     if(!scan_rate)                  // Se acabo el tiempo de desplige?
00223     {
00224         scan_rate=Scan_Time;        // Se restable el tiempo de despliegue     
00225         flag1=TRUE;                 // Enciende la bandera para las rutinas de despliege
00226     }        
00227     if (cont_1ms>=10)               // Son 10ms?
00228     {
00229         cont_10ms++;                // Incrementa el contador de decimas de ms
00230         cont_1ms=0;                 // Restablece el contador de ms
00231     }      
00232     if (cont_10ms>=10)              // Son 100ms?
00233     {
00234         cont_100ms++;               // Incrementa el contador de centecimas de ms
00235         cont_10ms=0;                // Restablece el contador de decimas de seg
00236     }   
00237     if (cont_100ms>=10)             // Son 1000ms o sea 1 seg?
00238     {
00239         cont_1s++;                  // Incrementa el contador de segundos
00240         cont_100ms=0;               // Restablece el contador de centesimas de seg
00241     }    
00242     if (cont_1s>=10)                // Son 10seg?
00243     {
00244         cont_1s=0;                  // Restablece el contador de segundos
00245     }
00246     if (!counter)
00247     {
00248         counter=Counter_Time;       // Restablece el contador de eventos
00249         flag2=TRUE;            
00250     }
00251 }  
00252 /* END Events */ 
00253 /*
00254 ________________________________________________________________________________
00255 |
00256 |  Funciones Prototipo
00257 |_______________________________________________________________________________
00258 */
00259                 // Las Funciones Prototipo van aquí !
00260                 
00261                 
00262 /* END program */                
00263 /*+-----------------------------------------------------------------------------
00264 *+ Descripción del Display de 7 Segmentos de Anodos Comunes en modo multiplexado
00265 *+------------------------------------------------------------------------------
00266 *+                            13 12 11 10  9  8
00267 *+                             |  |  |  |  |  |                         
00268 *+                             |  |  |  |  |  |  
00269 *+               --------------------------------------------------
00270 *+              |               A  a  f  A  A  b                   |
00271 *+              |               4        3  2                      |
00272 *+              |  ______________________________________________  |             
00273 *+              | |       ____      ____      _____     _____    | |
00274 *+              | |     /     /   /     /    /     /   /     /   | |
00275 *+              | |    /____ /   /____ / .  /____ /   /____ /    | |
00276 *+              | |   /     /   /     / .  /     /   /     /     | |
00277 *+              | |  /____ /.  /_____/ .  /____ /.  /____ /.     | |
00278 *+              | |                                              | |
00279 *+              | |______________________________________________| |
00280 *+              |                                                  |
00281 *+              |                              A                   |
00282 *+              |               e  d  p  c  g  1                   |
00283 *+               --------------------------------------------------
00284 *+                              |  |  |  |  |  |  |                       
00285 *+                              |  |  |  |  |  |  |
00286 *+                              1  2  3  4  5  6  7                                  
00287 *+
00288 *+                              Display: HS410561K-D30
00289 *+
00290 *+
00291 *+                            13 12 11 10  9  8
00292 *+                             |  |  |  |  |  |                         
00293 *+                             |  |  |  |  |  |  
00294 *+               --------------------------------------------------
00295 *+              |               A  g  f  p  a  b                   |
00296 *+              |               4                                  |
00297 *+              |  ______________________________________________  |             
00298 *+              | |       ____      ____      _____     _____    | |
00299 *+              | |     /     /   /     /    /     /   /     /   | |
00300 *+              | |    /____ /   /____ / .  /____ /   /____ /    | |
00301 *+              | |   /     /   /     / .  /     /   /     /     | |
00302 *+              | |  /____ /.  /_____/    /____ /.  /____ /.     | |
00303 *+              | |                                              | |
00304 *+              | |______________________________________________| |
00305 *+              |                                                  |
00306 *+              |                  A  A        A                   |
00307 *+              |               e  3  2  c  d  1                   |
00308 *+               --------------------------------------------------
00309 *+                              |  |  |  |  |  |  |                       
00310 *+                              |  |  |  |  |  |  |
00311 *+                              1  2  3  4  5  6  7                                  
00312 *+
00313 *+                               Display: BQ-M544RE
00314 *+
00315 *+
00316 *+                            12 11  10 9  8  7
00317 *+                             |  |  |  |  |  |                           
00318 *+                             |  |  |  |  |  |    
00319 *+               --------------------------------------------------
00320 *+              |              A  a  f  A  A  b                    |
00321 *+              |              4        3  2                       |
00322 *+              |  ______________________________________________  |             
00323 *+              | |       ____      ____      _____  .  _____    | |
00324 *+              | |     /     /   /     /    /     /   /     /   | |
00325 *+              | |    /____ /   /____ / .  /____ /   /____ /    | |
00326 *+              | |   /     /   /     / .  /     /   /     /     | |
00327 *+              | |  /____ /.  /_____/ .  /____ /.  /____ /.     | |
00328 *+              | |                                              | |
00329 *+              | |______________________________________________| |
00330 *+              |                                                  |
00331 *+              |                     A        A                   |
00332 *+              |               e  d  p  c  g  1                   |
00333 *+               --------------------------------------------------
00334 *+                              |  |  |  |  |  |  
00335 *+                              |  |  |  |  |  |             p1 = g
00336 *+                              1  2  3  4  5  6             p2 = c             
00337 *+                                                           p3 = d
00338 *+                              Display: HS-5463BS           p4 = e
00339 *+                              Cátodo Común                 pu = b
00340 *+                                                           pd = f
00341 *+
00342 *+
00343 *+                            16 15 14 13    11 
00344 *+                             |  |  |  |    |                           
00345 *+                             |  |  |  |    |    
00346 *+               --------------------------------------------------
00347 *+              |              b  g  a  c    f                     |
00348 *+              |                                                  |
00349 *+              |  ______________________________________________  |             
00350 *+              | |       ____      ____      _____  .  _____    | |
00351 *+              | |     /     /   /     /    /     /   /     /   | |
00352 *+              | |    /____ /   /____ / .  /____ /   /____ /    | |
00353 *+              | |   /     /   /     / .  /     /   /     /     | |
00354 *+              | |  /____ /.  /_____/ .  /____ /.  /____ /.     | |
00355 *+              | |                                              | |
00356 *+              | |______________________________________________| |
00357 *+              |                                                  |
00358 *+              |               A  A     A     A     A             |
00359 *+              |               4  3  d  p  e  2  p  1             |
00360 *+               --------------------------------------------------
00361 *+                              |  |  |  |  |  |  |  |                      
00362 *+                              |  |  |  |  |  |  |  |
00363 *+                              1  2  3  4  5  6  7  8                                  
00364 *+
00365 *+                              Display: KEM-3942BSR
00366 *+
00367 +*
00368 *+
00369 *+                            12 11 10  9  8  7
00370 *+                             |  |  |  |  |  |                         
00371 *+                             |  |  |  |  |  |  
00372 *+               --------------------------------------------------
00373 *+              |              A  a  f  A  A  b                    |
00374 *+              |              4        3  2                       |
00375 *+              |  ______________________________________________  |             
00376 *+              | |       ____      ____      _____     _____    | |
00377 *+              | |     /     /   /     /    /     /   /     /   | |
00378 *+              | |    /____ /   /____ / .  /____ /   /____ /    | |
00379 *+              | |   /     /   /     / .  /     /   /     /     | |
00380 *+              | |  /____ /.  /_____/ .  /____ /.  /____ /.     | |
00381 *+              | |                                              | |
00382 *+              | |______________________________________________| |
00383 *+              |                                                  |
00384 *+              |                              A                   |
00385 *+              |               e  d  p  c  g  1                   |
00386 *+               --------------------------------------------------
00387 *+                              |  |  |  |  |  |                        
00388 *+                              |  |  |  |  |  |  
00389 *+                              1  2  3  4  5  6                                    
00390 *+
00391 *+                              Display: FYQ-2841BH
00392 *+
00393 *+
00394 *+                      PB_15 PB_14 PB_13 PB_12 
00395 *+                        A4    A3    A2    A1
00396 *+                       Mill  Cent  Dec   Uni
00397 *+ 
00398 *+     STM32-F103C8      PB_4  PB_3 PA_15 PA_12   PA_11 PA_10  PA_9  PA_8    #    Hex     Offset
00399 *+            a
00400 *+         ______         g     f     a     b       c     d     e     p       
00401 *+        /     /         1     0     0     0       1     0     0     0      0    0x81      0
00402 *+     f /  g  / b        1     1     0     1       1     1     1     0      1    0xE7      1
00403 *+      /_____/           1     0     1     1       0     1     0     0      2    0x49      2
00404 *+     /     /            1     0     0     1       0     1     0     0      3    0x43      3
00405 *+  e /     / c           1     1     0     1       0     0     1     0      4    0x27      4
00406 *+   /_____/ .            1     0     0     1       0     0     0     1      5    0x13      5
00407 *+      d    p            1     0     0     0       0     0     0     1      6    0x11      6
00408 *+                        1     1     0     1       1     1     0     0      7    0xC7      7
00409 *+                        1     0     0     0       0     0     0     0      8    0x01      8
00410 *+                        1     0     0     1       0     0     0     0      9    0x03      9
00411 *+                        1     1     0     0       0     0     0     0      A    0x05      10
00412 *+                        1     0     0     0       0     0     1     1      b    0x31      11
00413 *+                        1     0     1     0       1     0     0     1      C    0x99      12
00414 *+                        1     0     0     0       0     1     1     0      d    0x61      13
00415 *+                        1     0     1     0       0     0     0     1      E    0x19      14
00416 *+                        1     1     1     0       0     0     0     1      f    0x1D      15
00417 *+                        1     0     0     0       1     0     0     1      G    0x91      16
00418 *+                        1     1     0     0       0     0     1     1      h    0x35      17
00419 *+                        1     1     0     1       1     1     1     1      i    0xBD      18
00420 *+                        1     0     0     0       1     1     1     0      J    0xE3      19
00421 *+                        1     0     1     0       0     0     1     0      k    0x2D      20
00422 *+                        1     0     1     0       1     0     1     1      L    0xB9      21
00423 *+                        1     1     0     0       1     0     0     0      M    0x85      22
00424 *+                        1     1     0     0       0     1     1     1      n    0x75      23
00425 *+                        1     0     0     0       0     1     1     1      o    0x71      24
00426 *+                        1     1     1     0       0     0     0     0      P    0x0D      25
00427 *+                        1     1     0     1       0     0     0     0      q    0x07      26
00428 *+                        1     1     1     0       0     1     1     1      r    0x7D      27
00429 *+                        1     0     0     1       0     0     0     1      s    0x13      28
00430 *+                        1     0     1     0       0     0     1     1      t    0x39      29
00431 *+                        1     0     0     0       1     1     1     1      u    0xF1      30
00432 *+                        1     0     0     0       1     0     1     1      V    0xB1      31
00433 *+                        1     0     0     0       1     0     1     0      w    0xA1      32
00434 *+                        1     1     0     0       1     0     1     0      X    0x25      33
00435 *+                        1     0     0     1       0     0     1     0      y    0x23      34
00436 *+                        1     0     1     0       1     1     0     0      Z    0x49      35
00437 *+                        1     1     1     1       1     1     1     1   space   0xFF      36
00438 *+                        0     1     0     0       0     0     0     1      a    0x41      37
00439 *+                        0     0     0     0       1     0     0     1      e    0x09      38
00440 *+                        0     0     0     0       0     0     1     1     /e    0x03      39
00441 *+                        0     0     0     1       0     0     0     1      @    0x11      40
00442 *+                        0     1     0     1       0     1     0     1      ñ    0x55      41
00443 *+                        1     0     0     1       1     0     0     1      [    0x99      42
00444 *+                        0     0     0     0       1     0     0     1      ]    0xC3      43
00445 *+                        1     0     1     0       0     0     0     1      U    0xA1      44
00446 *+                        1     0     0     0       0     1     0     1     /U    0x85      45
00447 *+                        1     1     0     1       1     1     1     1     /_    0xDF      46
00448 *+                        0     1     1     1       1     1     1     1      -    0x7F      47
00449 *+                        1     1     1     1       1     0     1     1      _    0xFB      48
00450 *+                        1     1     0     1       1     0     1     1    _/_    0xDB      49
00451 *+                        0     1     1     1       1     0     1     1     /=    0x7B      50
00452 *+                        0     1     0     1       1     1     1     1      =    0x5F      51
00453 *+                        0     1     0     1       1     0     1     1     ==    0x5B      52
00454 *+                        0     0     0     0       1     1     1     1      °    0x0F      53
00455 *+                        1     1     1     1       0     0     0     1    + c    0xF1      38
00456 *+                        1     1     1     1       0     1     0     0    +/c    0xF4      39
00457 *+                        1     0     1     0       0     1     1     1      c    0xA7      40
00458 *+                        1     0     0     1       0     1     1     1     /c    0x97      41
00459 *+                        1     1     1     1       0     0     1     0    + u    0xF2      42
00460 *+                        1     1     1     1       1     0     0     0    + n    0xF8      43
00461 *+                        1     0     1     0       1     0     0     1      [    0xA9      44
00462 *+                        1     0     0     1       1     1     0     0      ]    0x9C      45
00463 *+                        1     1     1     1       0     0     0     0      °    0xF0      46
00464 *+                        1     1     1     1       1     1     0     0      ¬    0xFC      47
00465 *+                        1     1     1     1       0     1     1     0    + >    0xF6      48
00466 *+                        1     1     1     0       0     1     1     1     ^     0xE7      49
00467 *+                        1     0     1     0       1     1     1     1    / <    0xAF      50
00468 *+                        1     0     0     1       1     1     1     1    / v    0x9F      51
00469 *+                        1     1     0     1       0     1     1     1      >    0xD7      52
00470 *+                        1     1     1     1       0     0     1     1      v    0xF3      53
00471 *+                        1     1     1     1       1     0     0     1      <    0xF9      54
00472 *+                        1     1     1     1       1     1     0     1    / _    0xBF      55
00473 *+                        1     1     1     1       0     1     1     1      -    0xF7      56
00474 *+                        1     0     1     1       1     1     1     1      _    0xFD      57
00475 *+                        1     1     1     1       0     1     0     1      =    0xF5      58
00476 *+                        1     0     1     1       0     1     1     1    / =    0xB7      59
00477 *+                        1     0     1     1       0     1     0     1     ==    0xB5      60
00478 *+                        1     0     1     1       1     1     0     1     _¬    0xBD      61
00479 *+                        1     1     0     0       1     1     1     1     ii    0xCF      62
00480 *+                        1     1     1     1       1     0     1     0      #    0xFA      63
00481 *+                        1     0     0     1       1     1     1     0      j    0x9E      64
00482 *+                        1     1     0     1       1     1     0     0     /j    0xDC      65
00483 *+                        1     1     1     0       1     0     0     1    - j    0xE9      66
00484 *+                        1     0     1     0       1     0     1     1    -/j    0xAB      67
00485 *+                        1     0     0     0       1     1     1     0    - J    0x8E      68
00486 *+                        1     1     0     1       1     0     0     0    -/J    0xD8      69
00487 *+                        1     1     1     0       1     0     1     1     |     0xEB      70
00488 *+                        1     1     0     0       1     0     1     0     ||    0xCA      71
00489 *+                        1     1     0     1       0     1     1     0      +    0xD6      72
00490 *+                        1     1     1     0       0     0     1     1     /+    0xE3      73
00491 *+                        1     0     0     1       1     0     1     1  espacio  0xFF      74
00492 *+
00493 *+ Nota: Cada dígito se activa al hacer la señal A correspondiente en "alto"
00494 *+       y enviar las señales de los segmentos que se desean encender en "bajo" 
00495 *+
00496 *+----------------------------------------------------------------------------*/
00497 /* END documentation */ 
00498 /*
00499 +-------------------------------------------------------------------------------
00500 |                               EJERCICIO
00501 |
00502 | 1.-   Implementar el menú para seleccionar entre Modo 0 y Modo 1 por el usuario
00503 | 2.-   Crear la función para convertir cualquier valor entero a codigo BCD 
00504 |       y representarlo en un buffer de un arreglo de Millares, Centenas, Decenas 
00505 |       y unidades para su despliegue en el display de 7 segmentos.
00506 | 3.-   Implementar la rutina para eliminación de los ceros a la izquierda 
00507 |       (Blanking).
00508 |
00509 +------------------------------------------------------------------------------+
00510 |
00511 |                               EXAMEN
00512 |
00513 | 1.-   Modificar este programa para: 
00514 |       a) Leer una cadena de caracteres (Mensaje) desde la terminal serial.
00515 |       b) Convertir todos los caracteres de la cadena a Mayúsculas.
00516 |        
00517 | 2.-   Utilizando el generador de caracteres para el display 
00518 |   a) Traducir los caracteres de la cadena a su equivalente de caracteres 
00519 |      para ser desplegados por el display de 7 segmentos.
00520 |   b) Crear los buffers corresponedientes para depositar las nuevas cadenas 
00521 |      generadas y poderlas desplegar.
00522 |   c) Delimitar el tamaño del buffer de despliegue para que se ajuste a la
00523 |      longitud de la cadena a desplegar más 4 especios. 
00524 |      (La longitud para el Buffer para despliegue no debe exceder los 80 
00525 |      caracters).
00526 |       
00527 |  Tip.- Consultar la Tabla ASCII 
00528 |        (Para los números, restarles 0x30 y para las letras, restarles 0x37)
00529 |        (Para la Ñ, restar 0x7C y para el espacio, sumarle 0x04)
00530 |
00531 | 3.-   Utilizando el Convertidor Analógico/Digital.
00532 |   a) Obtener una medición en representación flotante (0.0 a 1.0) y escalarla
00533 |      para poder ser representada en formato BCD de 4 dígitos (0-9999).
00534 |   b) proveer rutinas para poder escalar por medio del punto decimal.
00535 |
00536 +------------------------------------------------------------------------------+
00537 *+   Powered by
00538 *+
00539 *+          T H E     A N T U L I U ' S   T E A M   R&D  Unltd 
00540 *+
00541 *+  Research, Development, Systems, Equipment, Support & Spare Parts.
00542 *+  (C) Copyright 1989-2019, All Rights Reserved            
00543 *+
00544 *+  Welcome to The Beaners Proyect Community!                   
00545 *+----------------------------------------------------------------------------*/
00546 /* END Mbed */