![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Programa del profe
Embed:
(wiki syntax)
Show/hide line numbers
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 */
Generated on Wed Jul 27 2022 01:57:34 by
![doxygen](doxygen.png)