Actividad 1

Committer:
hades234
Date:
Tue Apr 27 15:56:16 2021 +0000
Revision:
0:98f2b220cf58
Actividad 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hades234 0:98f2b220cf58 1 /* #############################################################################
hades234 0:98f2b220cf58 2 ** Archivo : main.c
hades234 0:98f2b220cf58 3 ** Proyecto : STM32F103C8_Barrido_Displays
hades234 0:98f2b220cf58 4 ** Procesador : STM32F103C8
hades234 0:98f2b220cf58 5 ** Plataforma : Blue Pill
hades234 0:98f2b220cf58 6 ** Herramienta : Mbed
hades234 0:98f2b220cf58 7 ** Compilador : Mbed Online C Compiler
hades234 0:98f2b220cf58 8 ** Version : Mbed-OS 5.15.0
hades234 0:98f2b220cf58 9 ** Fecha/Hora : 18-12-2019, 11:48, # CodeGen: 0
hades234 0:98f2b220cf58 10 ** Descripción :
hades234 0:98f2b220cf58 11 ** Este proyecto provee lo necesario para el despliegue de números y
hades234 0:98f2b220cf58 12 ** caracteres en un display de 7 segmentos.
hades234 0:98f2b220cf58 13 ** Contiene un Generador de Caracteres y las rutinas de Barrido para un
hades234 0:98f2b220cf58 14 ** Display de 7 segmentos de Ánodo Común de 4 dígitos.
hades234 0:98f2b220cf58 15 ** This module contains user's application code.
hades234 0:98f2b220cf58 16 ** Componentes : GPIO, Ticker, Terminal Serial.
hades234 0:98f2b220cf58 17 ** Configuraciones :
hades234 0:98f2b220cf58 18 ** Modo 0.- Despliega números de hasta cuatro digitos
hades234 0:98f2b220cf58 19 ** Modo 1.- Realiza el Parpadeo (Blinking) de los Puntos Decimales.
hades234 0:98f2b220cf58 20 ** Modo 2.- Realiza el Parpadeo (Blinking) del valor que se esta
hades234 0:98f2b220cf58 21 ** deplegando.
hades234 0:98f2b220cf58 22 ** Modo 3.- Despliega una cadena de caracteres con desplazamiento a la
hades234 0:98f2b220cf58 23 ** Izquierda.
hades234 0:98f2b220cf58 24 ** Modo 3.- Despliega una cadena de caracteres con desplazamiento a la
hades234 0:98f2b220cf58 25 ** Derecha (por implementar).
hades234 0:98f2b220cf58 26 **
hades234 0:98f2b220cf58 27 ** Autores :
hades234 0:98f2b220cf58 28 ** ATEAM Development Group:
hades234 0:98f2b220cf58 29 ** - Antulio Morgado Valle
hades234 0:98f2b220cf58 30 **
hades234 0:98f2b220cf58 31 ** Versión : Beta
hades234 0:98f2b220cf58 32 ** Revisión : A
hades234 0:98f2b220cf58 33 ** Release : 0
hades234 0:98f2b220cf58 34 ** Bugs & Fixes :
hades234 0:98f2b220cf58 35 ** Date : 20/10/2019
hades234 0:98f2b220cf58 36 ** Added support for Shift Messages
hades234 0:98f2b220cf58 37 **
hades234 0:98f2b220cf58 38 ** ###########################################################################*/
hades234 0:98f2b220cf58 39 /*
hades234 0:98f2b220cf58 40 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
hades234 0:98f2b220cf58 41 : I N C L U D E S
hades234 0:98f2b220cf58 42 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
hades234 0:98f2b220cf58 43 */
hades234 0:98f2b220cf58 44 #include "stm32f103c8t6.h"
hades234 0:98f2b220cf58 45 #include "mbed.h"
hades234 0:98f2b220cf58 46 //#include "AnalogIn.h"
hades234 0:98f2b220cf58 47 //#include "ADC.h"
hades234 0:98f2b220cf58 48 //#include "Led_RGB.h"
hades234 0:98f2b220cf58 49 #include "Serial.h"
hades234 0:98f2b220cf58 50 #include "TextLCD.h"
hades234 0:98f2b220cf58 51 #include "I2C.h"
hades234 0:98f2b220cf58 52 #include "SPI.h"
hades234 0:98f2b220cf58 53 #include "stdio.h"
hades234 0:98f2b220cf58 54 /*
hades234 0:98f2b220cf58 55 :...............................................................................
hades234 0:98f2b220cf58 56 : D E F I N I C I O N E S
hades234 0:98f2b220cf58 57 :...............................................................................
hades234 0:98f2b220cf58 58 */
hades234 0:98f2b220cf58 59 #define Led_on 0 // Estado para el Led Encendido
hades234 0:98f2b220cf58 60 #define Led_off 1 // Estado para el Led Apagado
hades234 0:98f2b220cf58 61 #define Buzz_On 1 // Estado para Buzzer Encendido
hades234 0:98f2b220cf58 62 #define Buzz_Off 0 // Estado para Buzzer Apagado
hades234 0:98f2b220cf58 63 #define ON 0 // Estado para boton presionado
hades234 0:98f2b220cf58 64 #define OFF 1 // Estado para boton sin presionar
hades234 0:98f2b220cf58 65 #define HOLD 2 // Estado para boton mantenido
hades234 0:98f2b220cf58 66 #define RELEASE 3 // Estado para boton liberado
hades234 0:98f2b220cf58 67 #define FALSE 0 // Estado FALSO
hades234 0:98f2b220cf58 68 #define TRUE 1 // Estado VERDADERO
hades234 0:98f2b220cf58 69 #define Ticker_Rate 1000 // Periodo de interrupción Ticker (us)
hades234 0:98f2b220cf58 70 #define Scan_Time 2 // Tiempo de Barrido del Display (ms)
hades234 0:98f2b220cf58 71 #define Blink_Time 500 // Tiempo de Parpadeo del Display (ms)
hades234 0:98f2b220cf58 72 #define Shift_Time 750 // Tiempo de corrimiento (ms)
hades234 0:98f2b220cf58 73 #define Event_Time 15000 // Tiempo de los eventos (ms)
hades234 0:98f2b220cf58 74 #define String_Size 20 // Tamaño de la Cadena de Caracteres
hades234 0:98f2b220cf58 75 #define Digit_Null 0xFF // Valor para apagar los Segmentos
hades234 0:98f2b220cf58 76 #define Degree_Symbol 0x0F // Valor para el Símbolo de Grados
hades234 0:98f2b220cf58 77 #define Display_Type 1 // Tipo de Display: 0 = Cátodo Común 1= Ánodo Común
hades234 0:98f2b220cf58 78 #define LCD_Type 0 // Tipo Interfaz del LCD: 0=Normal, 1=I2C, 2=SPI
hades234 0:98f2b220cf58 79 #define Baud_Rate 115200 // Velocidad de Transmisión (Bauds)
hades234 0:98f2b220cf58 80 // Velocidades Permitidas:
hades234 0:98f2b220cf58 81 // 300, 600, 1200, 2400, 4800, 9600,
hades234 0:98f2b220cf58 82 // 14400, 19600, 28800, 38400, 57600
hades234 0:98f2b220cf58 83 // 115200, 230400
hades234 0:98f2b220cf58 84 /*
hades234 0:98f2b220cf58 85 *===============================================================================
hades234 0:98f2b220cf58 86 *
hades234 0:98f2b220cf58 87 * C O N F I G U R A C I O N D E P U E R T O S
hades234 0:98f2b220cf58 88 *
hades234 0:98f2b220cf58 89 *===============================================================================
hades234 0:98f2b220cf58 90 */
hades234 0:98f2b220cf58 91 BusIn Teclado (PB_6, PB_7, PB_8, PB_9); // Definición para los Renglones: REN1,REN2,REN3,REN4
hades234 0:98f2b220cf58 92 BusOut Anodos (PB_12, PB_13, PB_14, PB_15); // Anodos: (Uni Dec Cent Mill) A1 A2 A3 A4 (lsb -> msb)
hades234 0:98f2b220cf58 93 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))
hades234 0:98f2b220cf58 94 DigitalOut led_monitor(LED1); // Inicializa el Led de Monitor
hades234 0:98f2b220cf58 95 PwmOut buzzer (PB_1); // PWM para el Buzzer
hades234 0:98f2b220cf58 96 #if LCD_Type == 0 // Definición para pines del LCD con interfaz HD44780
hades234 0:98f2b220cf58 97 DigitalOut DB4 (PB_4);
hades234 0:98f2b220cf58 98 DigitalOut DB5 (PB_3);
hades234 0:98f2b220cf58 99 DigitalOut DB6 (PA_15);
hades234 0:98f2b220cf58 100 DigitalOut DB7 (PA_12);
hades234 0:98f2b220cf58 101 DigitalOut e (PA_11);
hades234 0:98f2b220cf58 102 DigitalOut rs (PA_10);
hades234 0:98f2b220cf58 103 #endif
hades234 0:98f2b220cf58 104 // ***** Host PC Terminal Communication channels
hades234 0:98f2b220cf58 105 Serial Terminal (PA_2, PA_3); // Inicializa la comunicación serial a la PC (Tx,Rx)
hades234 0:98f2b220cf58 106 //Serial Terminal(USBTX, USBRX,115200);// Tx, Rx Baud Rate - Terminal Serial por USB @ 115,200 Bauds
hades234 0:98f2b220cf58 107
hades234 0:98f2b220cf58 108 Ticker Barrido; // Interrupción por Timer
hades234 0:98f2b220cf58 109 /*
hades234 0:98f2b220cf58 110 ** -------------------------------------------------------------------
hades234 0:98f2b220cf58 111 ** Configuración del LCD
hades234 0:98f2b220cf58 112 ** -------------------------------------------------------------------
hades234 0:98f2b220cf58 113 */
hades234 0:98f2b220cf58 114 // El LCD puede trabajar con 3 configuraciones de la Interfaz:
hades234 0:98f2b220cf58 115 // Tipo Interfaz del LCD:
hades234 0:98f2b220cf58 116 // 0=Normal,
hades234 0:98f2b220cf58 117 // 1=I2C,
hades234 0:98f2b220cf58 118 // 2=SPI
hades234 0:98f2b220cf58 119 /*******************************************************************************
hades234 0:98f2b220cf58 120 * I2C Communication
hades234 0:98f2b220cf58 121 ********************************************************************************
hades234 0:98f2b220cf58 122 * Initialize the library with the numbers of the interface pins
hades234 0:98f2b220cf58 123 * Board Blue Pill STM32F103C8T6
hades234 0:98f2b220cf58 124 * IDE Mbed On Line Compiler
hades234 0:98f2b220cf58 125 * I2C PCF8574A
hades234 0:98f2b220cf58 126 * Pin Board LCD
hades234 0:98f2b220cf58 127 * (PB_10) I2C2_SCL SCL (white) + resistance pull-up 4.7k
hades234 0:98f2b220cf58 128 * (PB_11) I2C2_SDA SDA (blue) + resistance pull-up 4.7k
hades234 0:98f2b220cf58 129 * 3.3V 3.3V 3.3V (red)
hades234 0:98f2b220cf58 130 * GND GND GND (black)
hades234 0:98f2b220cf58 131 *******************************************************************************/
hades234 0:98f2b220cf58 132 #if LCD_Type == 1
hades234 0:98f2b220cf58 133 I2C i2c_lcd(PB_11,PB10); // SDA, SCL (I2C2)
hades234 0:98f2b220cf58 134 #endif
hades234 0:98f2b220cf58 135 /*******************************************************************************
hades234 0:98f2b220cf58 136 * SPI Communication
hades234 0:98f2b220cf58 137 ********************************************************************************
hades234 0:98f2b220cf58 138 * Initialize the library with the numbers of the interface pins
hades234 0:98f2b220cf58 139 * Board Blue Pill STM32F103C8T6
hades234 0:98f2b220cf58 140 * IDE Mbed On Line Compiler
hades234 0:98f2b220cf58 141 * SPI SN74HC595
hades234 0:98f2b220cf58 142 * Pin Board LCD
hades234 0:98f2b220cf58 143 *(PA_7) SPI1_MOSI SER (white)
hades234 0:98f2b220cf58 144 *(PA_6) SPI1_MISO none (blue)
hades234 0:98f2b220cf58 145 *(PA_5) SPI1_CLK SRCLK
hades234 0:98f2b220cf58 146 *(PA_4) SPI1_NSS1 RCLK
hades234 0:98f2b220cf58 147 * 3.3V 3.3V 3.3V (red)
hades234 0:98f2b220cf58 148 * GND GND GND (black)
hades234 0:98f2b220cf58 149 *******************************************************************************/
hades234 0:98f2b220cf58 150 #if LCD_Type == 2
hades234 0:98f2b220cf58 151 SPI spi_lcd(PA_7,PA_6,PA_5,PA_4); // MOSI, MISO, SCK, CS (SPI1)
hades234 0:98f2b220cf58 152 #endif
hades234 0:98f2b220cf58 153
hades234 0:98f2b220cf58 154 // LCD Instantiation
hades234 0:98f2b220cf58 155 /*******************************************************************************
hades234 0:98f2b220cf58 156 * Instantiation for creating a TextLCD interface
hades234 0:98f2b220cf58 157 * for using control and functions over selected port
hades234 0:98f2b220cf58 158 ********************************************************************************
hades234 0:98f2b220cf58 159 */
hades234 0:98f2b220cf58 160 #if LCD_Type == 0
hades234 0:98f2b220cf58 161 TextLCD lcd(PA_10,PA_11,PA_12,PA_15,PB_3,PB_4, TextLCD::LCD20x4); // 4bit bus: rs, e, d4-d7 (lsb -> msb)
hades234 0:98f2b220cf58 162 //TextLCD lcd(PB_11,PB_10,PA_7,PA_6,PA_5,PA_4, TextLCD::LCD20x2); // 4bit bus: rs, e, d4-d7 (lsb -> msb)
hades234 0:98f2b220cf58 163 #endif
hades234 0:98f2b220cf58 164
hades234 0:98f2b220cf58 165 #if LCD_Type == 1
hades234 0:98f2b220cf58 166 TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD20x4); // Address 0x4E I2C bus, PCF8574A Arduino Shield, LCD Type
hades234 0:98f2b220cf58 167 //TextLCD_I2C lcd(&i2c_lcd, 0x7E, TextLCD::LCD20x4); // Address 0x7E I2C bus, PCF8574A Arduino Shield, LCD Type
hades234 0:98f2b220cf58 168 //TextLCD_I2C lcd(&i2c_lcd, 0x27, TextLCD::LCD20x4); // Address 0x2E I2C bus, PCF8574A Arduino Shield, LCD Type
hades234 0:98f2b220cf58 169 //TextLCD_I2C lcd(&i2c_lcd, 0x3F, TextLCD::LCD20x4); // Address 0x3F I2C bus, PCF8574A Arduino Shield, LCD Type
hades234 0:98f2b220cf58 170 //TextLCD_I2C lcd(&i2c_lcd, 0x7F, TextLCD::LCD20x4); // Address 0x7F I2C bus, PCF8574A Arduino Shield, LCD Type
hades234 0:98f2b220cf58 171 //TextLCD_I2C lcd(&i2c_lcd, 0x7E, TextLCD::LCD16x4); // Address 0x3E I2C bus, PCF8574A Arduino Shield, LCD Type
hades234 0:98f2b220cf58 172 //TextLCD_I2C lcd(&i2c_lcd, 0x40, TextLCD::LCD20x4); // Address 0x40 I2C bus, PCF8574 Slaveaddress, LCD Type
hades234 0:98f2b220cf58 173 //TextLCD_I2C lcd(&i2c_lcd, 0x42, TextLCD::LCD20x4); // Address 0x42 I2C bus, PCF8574 Slaveaddress, LCD Type
hades234 0:98f2b220cf58 174 //TextLCD_I2C lcd(&i2c_lcd, 0x77, TextLCD::LCD16x2); // Address 0x77 I2C exp: I2C bus, PCF8574 Slaveaddress, LCD Type
hades234 0:98f2b220cf58 175 //TextLCD_I2C lcd(&i2c_lcd, 0x40, TextLCD::LCD16x4); // Address 0x40 I2C exp: I2C bus, PCF8574 Slaveaddress, LCD Type
hades234 0:98f2b220cf58 176 //TextLCD_I2C lcd(&i2c_lcd, 0x40, TextLCD::LCD20x4); // Address 0x42 I2C exp: I2C bus, PCF8574 Slaveaddress, LCD Type
hades234 0:98f2b220cf58 177 //TextLCD_I2C lcd(&i2c_lcd, 0x42, TextLCD::LCD16x2, TextLCD::WS0010); // I2C exp: I2C bus, PCF8574 Slaveaddress, LCD Type, Ctrl Type
hades234 0:98f2b220cf58 178 #endif
hades234 0:98f2b220cf58 179
hades234 0:98f2b220cf58 180 #if LCD_Type == 2
hades234 0:98f2b220cf58 181 TextLCD_SPI lcd(&spi_lcd, PA_4, TextLCD::LCD16x4, TextLCD::HD44780);// SPI bus, SN74595 expander, CS pin, LCD Type
hades234 0:98f2b220cf58 182 //TextLCD_SPI lcd(&spi_lcd, PA_4, TextLCD::LCD20x4, TextLCD::HD44780);// SPI bus, CD4094 expander, CS pin, LCD Type
hades234 0:98f2b220cf58 183 //TextLCD_SPI_N lcd(&spi_lcd, PB_12, TextLCD::LCD16x2, NC, TextLCD::ST7032_3V3); // SPI native: SPI bus, CS pin, RS pin, LCDType=LCD16x2, BL=NC, LCDTCtrl=ST7032
hades234 0:98f2b220cf58 184 //TextLCD_SPI lcd(&spi_lcd, PA_4, TextLCD::LCD24x4D); // SPI bus, CD4094 expander, CS pin, LCD Type
hades234 0:98f2b220cf58 185 #endif
hades234 0:98f2b220cf58 186
hades234 0:98f2b220cf58 187 /* END Port Declarations */
hades234 0:98f2b220cf58 188 /*
hades234 0:98f2b220cf58 189 #===============================================================================
hades234 0:98f2b220cf58 190 |
hades234 0:98f2b220cf58 191 | A R E A D E D A T O S
hades234 0:98f2b220cf58 192 |
hades234 0:98f2b220cf58 193 #===============================================================================
hades234 0:98f2b220cf58 194 */
hades234 0:98f2b220cf58 195 /*
hades234 0:98f2b220cf58 196 +-------------------------------------------------------------------------------
hades234 0:98f2b220cf58 197 | Variables Globales de Usuario
hades234 0:98f2b220cf58 198 +-------------------------------------------------------------------------------
hades234 0:98f2b220cf58 199 */
hades234 0:98f2b220cf58 200 uint16_t Rate=Ticker_Rate/2; // Velocidad de barrido (500us = 0.5ms)
hades234 0:98f2b220cf58 201 // ++++++++++++++++++++ Generador de Caracteres ++++++++++++++++++++++++++++++++
hades234 0:98f2b220cf58 202 // 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
hades234 0:98f2b220cf58 203 //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 ! " # $ % & ' ( ) * + - . / : ; < > ? @
hades234 0:98f2b220cf58 204 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};
hades234 0:98f2b220cf58 205 // ++++++++++++++++++++++ Selector de Digitos ++++++++++++++++++++++++++++++++++
hades234 0:98f2b220cf58 206 uint8_t Digitos[]={0x08,0x04,0x02,0x01,0x00,0x0F}; // Millares, Centenas, Decenas, Unidades, Apagados, Encendidos
hades234 0:98f2b220cf58 207 uint8_t Numeros[]={1,2,3,4}; // Valor a Desplegar
hades234 0:98f2b220cf58 208 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
hades234 0:98f2b220cf58 209 uint8_t punto_decimal=0; // Posición del punto decimal: 0=sin punto, 1=unidades, 2=decenas, 3=centemas 4=millares,
hades234 0:98f2b220cf58 210 uint8_t cont_1ms; // Contador de milésimas de Segundo
hades234 0:98f2b220cf58 211 uint8_t cont_10ms; // Contador de centésimas de Segundo
hades234 0:98f2b220cf58 212 uint8_t cont_100ms; // Contador de décimas de Segundo
hades234 0:98f2b220cf58 213 uint8_t cont_1s; // Contador de Segundos
hades234 0:98f2b220cf58 214 uint16_t scan_rate =Scan_Time ; // Tiempo de barrido para el Display (ms)
hades234 0:98f2b220cf58 215 uint16_t shift_rate=Shift_Time; // Tiempo del Corrimiento del Display (ms)
hades234 0:98f2b220cf58 216 uint16_t blink_rate=Blink_Time; // Tiempo de Parpadeo (ms)
hades234 0:98f2b220cf58 217 uint16_t event_rate=Event_Time; // Tiempo entre Eventos (ms)
hades234 0:98f2b220cf58 218 uint8_t Secuencia=0; // Secuencia a ejecutar
hades234 0:98f2b220cf58 219 uint8_t i=0; // Incice de Barrido
hades234 0:98f2b220cf58 220 uint8_t corrimiento=0; // Contador de Corrimientos
hades234 0:98f2b220cf58 221 bool mode=0; // Modo de despliegue: 0=Normal, 1=Corrimiento
hades234 0:98f2b220cf58 222 bool flag1=FALSE; // Bandera para Barrido Display
hades234 0:98f2b220cf58 223 bool flag2=FALSE; // Bandera para Corrimientos
hades234 0:98f2b220cf58 224 bool flag3=FALSE; // Bandera para Parpadeo
hades234 0:98f2b220cf58 225 bool flag4=FALSE; // Bandera para Secuenciador
hades234 0:98f2b220cf58 226 bool Blinking=FALSE; // 0=Sin Parapadeo, 1=Parpadeo
hades234 0:98f2b220cf58 227 /*
hades234 0:98f2b220cf58 228 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
hades234 0:98f2b220cf58 229 | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
hades234 0:98f2b220cf58 230 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
hades234 0:98f2b220cf58 231 */
hades234 0:98f2b220cf58 232 void Barrido_OnInterrupt(void);
hades234 0:98f2b220cf58 233 void Clear_Screen(void);
hades234 0:98f2b220cf58 234 void Buzzer_Beep(void);
hades234 0:98f2b220cf58 235
hades234 0:98f2b220cf58 236 /* END definitions */
hades234 0:98f2b220cf58 237
hades234 0:98f2b220cf58 238 /*
hades234 0:98f2b220cf58 239 #===============================================================================
hades234 0:98f2b220cf58 240 |
hades234 0:98f2b220cf58 241 | P R O G R A M A P R I N C I P A L
hades234 0:98f2b220cf58 242 |
hades234 0:98f2b220cf58 243 #===============================================================================
hades234 0:98f2b220cf58 244 */
hades234 0:98f2b220cf58 245 int main()
hades234 0:98f2b220cf58 246 { // Inicialización de variables, puertos e interrupciones
hades234 0:98f2b220cf58 247 confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock)
hades234 0:98f2b220cf58 248 Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate); // Le asigna el periodo de barrido de 1ms (Rate=1000)
hades234 0:98f2b220cf58 249 Terminal.baud(Baud_Rate); // Se configura la velocodad de transmisión
hades234 0:98f2b220cf58 250 Terminal.printf("\e[2J"); // Clear Screen
hades234 0:98f2b220cf58 251 Terminal.printf(" System is Wake Up!.\n\r"); //e inicia la comunicación a la Terminal
hades234 0:98f2b220cf58 252 Buzzer_Beep(); // Prueba el Buzzer
hades234 0:98f2b220cf58 253 Clear_Screen(); // Limpa la Pantalla de la Terminal Serial
hades234 0:98f2b220cf58 254 Terminal.printf(" System is Ready to Work...\n\r"); // e inicia la comunicación serial
hades234 0:98f2b220cf58 255 Terminal.printf ("\t\e[1;37;41mInstituto Politecnico Nacional\e[0m\n\r");
hades234 0:98f2b220cf58 256 Terminal.printf ("\e[1;37;42mESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA\e[0m\n\r\v");
hades234 0:98f2b220cf58 257 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");
hades234 0:98f2b220cf58 258 Terminal.printf ("\nSeleccion del Modo de Operacion:\n\r");
hades234 0:98f2b220cf58 259 while (TRUE) // El Lazo del Programa principal está aquí !!!
hades234 0:98f2b220cf58 260 {
hades234 0:98f2b220cf58 261 if (Secuencia==0)
hades234 0:98f2b220cf58 262 {
hades234 0:98f2b220cf58 263 Terminal.printf ("Modo 0 = Normal (4 Digitos) \r");
hades234 0:98f2b220cf58 264 }
hades234 0:98f2b220cf58 265 if (Secuencia==1)
hades234 0:98f2b220cf58 266 {
hades234 0:98f2b220cf58 267 Terminal.printf ("Modo 1 = Parpadeo Puntos \r");
hades234 0:98f2b220cf58 268 }
hades234 0:98f2b220cf58 269 if (Secuencia==2)
hades234 0:98f2b220cf58 270 {
hades234 0:98f2b220cf58 271 Terminal.printf ("Modo 2 = Parpadeo Digitos \r");
hades234 0:98f2b220cf58 272 }
hades234 0:98f2b220cf58 273 if (Secuencia==3)
hades234 0:98f2b220cf58 274 {
hades234 0:98f2b220cf58 275 Terminal.printf ("Modo 3 = Corrimiento Izquierda \r");
hades234 0:98f2b220cf58 276 }
hades234 0:98f2b220cf58 277 if (Secuencia==4)
hades234 0:98f2b220cf58 278 {
hades234 0:98f2b220cf58 279 Terminal.printf ("Modo 4 = Corrimiento Derecha \r");
hades234 0:98f2b220cf58 280 }
hades234 0:98f2b220cf58 281 if (flag1==TRUE) // Está puesta la Bandera 1 ?
hades234 0:98f2b220cf58 282 {
hades234 0:98f2b220cf58 283 //----------------------------------------------------------------------------
hades234 0:98f2b220cf58 284 //----------------------- BARRIDO DE LOS DÍGITOS -----------------------------
hades234 0:98f2b220cf58 285 //----------------------------------------------------------------------------
hades234 0:98f2b220cf58 286 //............................................................................
hades234 0:98f2b220cf58 287 // ...................... Display de Ánodo Común .............................
hades234 0:98f2b220cf58 288 //............................................................................
hades234 0:98f2b220cf58 289 #if Display_Type == 1
hades234 0:98f2b220cf58 290 Anodos= Digitos[4]; // Apaga todos los Digitos (Evita fantasmas)
hades234 0:98f2b220cf58 291 Catodos= Segmentos[Numeros[i]]; // Actualiza los segmentos
hades234 0:98f2b220cf58 292 if (i==4-punto_decimal) Catodos=(Segmentos[Numeros[i]]& 0xFE); // Enciende el punto decimal
hades234 0:98f2b220cf58 293 Anodos= Digitos[i]; // Activa el Digito en cuestión
hades234 0:98f2b220cf58 294 //----------------------- Parpadeo de los Puntos -----------------------------
hades234 0:98f2b220cf58 295 if (Secuencia==1) // Si estamos en modo Normal:
hades234 0:98f2b220cf58 296 {
hades234 0:98f2b220cf58 297 if ( Blinking) punto_decimal=3; // Activa los puntos del Reloj
hades234 0:98f2b220cf58 298 // if ( Blinking && i==2) punto_decimal=2; // Activa los puntos del Reloj (para LTC-5650)
hades234 0:98f2b220cf58 299 if (!Blinking) punto_decimal=0; // Desactiva los puntos del Reloj
hades234 0:98f2b220cf58 300 if (i==4-punto_decimal) Catodos=(Segmentos[Numeros[i]]& 0xFE); // Enciende el punto decimal
hades234 0:98f2b220cf58 301 Anodos= Digitos[i]; // Activa el Digito en cuestión
hades234 0:98f2b220cf58 302 }
hades234 0:98f2b220cf58 303 //----------------------- Parpadeo de los Digitos ----------------------------
hades234 0:98f2b220cf58 304 if (Secuencia==2 && Blinking == 1) Anodos= Digitos[4]; // Apaga todos los Digitos
hades234 0:98f2b220cf58 305 //----------------------- Corrimiento de los Digitos -------------------------
hades234 0:98f2b220cf58 306 if (Secuencia==3) // Está en modo 3? (corrimiento de mensaje)
hades234 0:98f2b220cf58 307 {
hades234 0:98f2b220cf58 308 Numeros[i]=Cadena[i+corrimiento]; // Copia 4 caracteres al buffer de despliegue
hades234 0:98f2b220cf58 309 if (corrimiento >= String_Size) corrimiento=0; // Restablece el contador de caractres
hades234 0:98f2b220cf58 310 if (i==4) // Se terminó de barrer los digitos?
hades234 0:98f2b220cf58 311 {
hades234 0:98f2b220cf58 312 i=0; // Restablece el índice de barrido
hades234 0:98f2b220cf58 313 // mode=0; // Restablece el Modo Normal
hades234 0:98f2b220cf58 314 }
hades234 0:98f2b220cf58 315 }
hades234 0:98f2b220cf58 316 #endif
hades234 0:98f2b220cf58 317 //............................................................................
hades234 0:98f2b220cf58 318 // ...................... Display de Cátodo Común ............................
hades234 0:98f2b220cf58 319 //............................................................................
hades234 0:98f2b220cf58 320 #if Display_Type == 0
hades234 0:98f2b220cf58 321 Anodos= ~(Digitos[4]); // Apaga todos los Digitos (Evita fantasmas)
hades234 0:98f2b220cf58 322 Catodos= ~(Segmentos[Numeros[i]]); // Actualiza los segmentos
hades234 0:98f2b220cf58 323 if (i==4-punto_decimal) Catodos=~(Segmentos[Numeros[i]]& 0xFE); // Enciende el punto decimal
hades234 0:98f2b220cf58 324 Anodos= ~(Digitos[i]); // Activa el Digito en cuestión
hades234 0:98f2b220cf58 325 if (mode==2) Anodos= ~(Digitos[4]); // Apaga todos los Digitos
hades234 0:98f2b220cf58 326 if (mode==1) // Si estamos en modo Normal
hades234 0:98f2b220cf58 327 {
hades234 0:98f2b220cf58 328 if ( Blinking) punto_decimal=3; // Activa los puntos del Reloj
hades234 0:98f2b220cf58 329 // if ( Blinking && i==2) punto_decimal=2; // Activa los puntos del Reloj (para LTC-5650)
hades234 0:98f2b220cf58 330 if (!Blinking) punto_decimal=0; // Desactiva los puntos del Reloj
hades234 0:98f2b220cf58 331 if (i==4-punto_decimal) Catodos=~(Segmentos[Numeros[i]]& 0xFE); // Enciende el punto decimal
hades234 0:98f2b220cf58 332 Anodos= ~(Digitos[i]); // Correspondiente al Digito en cuestión
hades234 0:98f2b220cf58 333 }
hades234 0:98f2b220cf58 334 #endif
hades234 0:98f2b220cf58 335 //............................................................................
hades234 0:98f2b220cf58 336
hades234 0:98f2b220cf58 337 //----------------------- Actualiza Indices ----------------------------------
hades234 0:98f2b220cf58 338 i++; // Apunta al siguiente dígito
hades234 0:98f2b220cf58 339 if (i==4) // Es el últino dígito?
hades234 0:98f2b220cf58 340 {
hades234 0:98f2b220cf58 341 i=0; // Reinicia el Barriodo
hades234 0:98f2b220cf58 342 }
hades234 0:98f2b220cf58 343 flag1=FALSE; // Apaga la Bandera 1
hades234 0:98f2b220cf58 344 }
hades234 0:98f2b220cf58 345 //--------------------- Corrimiento de los Digitos -------------------------
hades234 0:98f2b220cf58 346 if (flag2==TRUE) // Está puesta la Bandera 2?
hades234 0:98f2b220cf58 347 {
hades234 0:98f2b220cf58 348 if (Secuencia==3)
hades234 0:98f2b220cf58 349 {
hades234 0:98f2b220cf58 350 mode=3; // Tiempo entre desplazamientos del mensaje
hades234 0:98f2b220cf58 351 corrimiento++; // corrimiento al siguiente conjunto de de caracteres
hades234 0:98f2b220cf58 352 }
hades234 0:98f2b220cf58 353 shift_rate = Shift_Time; // Restablece el tiempo de los corrimientos
hades234 0:98f2b220cf58 354 flag2=FALSE; // Limpia la Bandera 2
hades234 0:98f2b220cf58 355 }
hades234 0:98f2b220cf58 356
hades234 0:98f2b220cf58 357 //--------------------- Blinking o Parpadeo --------------------------------
hades234 0:98f2b220cf58 358 if (flag3==TRUE) // Está puesta la Bandera 3?
hades234 0:98f2b220cf58 359 {
hades234 0:98f2b220cf58 360 led_monitor=!led_monitor; // parapadeo del led_monitor
hades234 0:98f2b220cf58 361 flag3=FALSE; // Limpia la Bandera 3
hades234 0:98f2b220cf58 362 }
hades234 0:98f2b220cf58 363 //--------------------- Secuenciación de Eventos ---------------------------
hades234 0:98f2b220cf58 364 if (flag4==TRUE) // Está puesta la Bandera 4?
hades234 0:98f2b220cf58 365 {
hades234 0:98f2b220cf58 366 if (Secuencia==0) // Reinica las Secuencias
hades234 0:98f2b220cf58 367 {
hades234 0:98f2b220cf58 368 mode=0; // Nos vamos a modo Normal
hades234 0:98f2b220cf58 369 }
hades234 0:98f2b220cf58 370 if (Secuencia==1) // Si la secuencoa es Puntos Parapadeantes
hades234 0:98f2b220cf58 371 {
hades234 0:98f2b220cf58 372 mode=1; // Nos vamos a modo Parpadeo de Puntos
hades234 0:98f2b220cf58 373 }
hades234 0:98f2b220cf58 374 if (Secuencia==2) // Si la secuencoa so Digitos Parapadeantes
hades234 0:98f2b220cf58 375 {
hades234 0:98f2b220cf58 376 mode=2; // Nos vamos a modo Parpadeo de los Dígitos
hades234 0:98f2b220cf58 377 i=0; // Reinicia el indice de los dígitos
hades234 0:98f2b220cf58 378 }
hades234 0:98f2b220cf58 379 if (Secuencia==3) // Si la secuencoa es Corrimiento a la Izquierda
hades234 0:98f2b220cf58 380 {
hades234 0:98f2b220cf58 381 mode=3; // Nos vamos a modo de Corrimiento a la Izquierda
hades234 0:98f2b220cf58 382 }
hades234 0:98f2b220cf58 383 Secuencia++;
hades234 0:98f2b220cf58 384 if (Secuencia >= 4) // Si se terminaron las secuencias
hades234 0:98f2b220cf58 385 {
hades234 0:98f2b220cf58 386 corrimiento=0; // Restablece el buffer de despliege
hades234 0:98f2b220cf58 387 i=0; // Reinicia el indice de los dígitos
hades234 0:98f2b220cf58 388 Secuencia = 0; // Reinicia las secuencias
hades234 0:98f2b220cf58 389 }
hades234 0:98f2b220cf58 390 flag4=FALSE; // Limpia la Bandera 4
hades234 0:98f2b220cf58 391 }
hades234 0:98f2b220cf58 392 }
hades234 0:98f2b220cf58 393 }
hades234 0:98f2b220cf58 394 /* END main */
hades234 0:98f2b220cf58 395
hades234 0:98f2b220cf58 396 /*
hades234 0:98f2b220cf58 397 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
hades234 0:98f2b220cf58 398 ::
hades234 0:98f2b220cf58 399 :: V E C T O R E S D E I N T E R R U P C I Ó N
hades234 0:98f2b220cf58 400 :: (Rutinas de Atención)
hades234 0:98f2b220cf58 401 ::
hades234 0:98f2b220cf58 402 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
hades234 0:98f2b220cf58 403 */
hades234 0:98f2b220cf58 404 /* #############################################################################
hades234 0:98f2b220cf58 405 ** Evento : Barrido_OnInterrupt()
hades234 0:98f2b220cf58 406 ** Proyecto : STM32F103C8_Barrido_Display
hades234 0:98f2b220cf58 407 ** Procesador : STM32F103C8T6
hades234 0:98f2b220cf58 408 ** Herramienta : Mbed
hades234 0:98f2b220cf58 409 ** Compilador : Mbed Online C Compiler
hades234 0:98f2b220cf58 410 ** Version : Mbed-OS 5.15.0
hades234 0:98f2b220cf58 411 ** Compiler : GNU C Compiler
hades234 0:98f2b220cf58 412 ** Date/Time : 18-12-2019, 11:48, # CodeGen: 0
hades234 0:98f2b220cf58 413 ** Abstract :
hades234 0:98f2b220cf58 414 /*!
hades234 0:98f2b220cf58 415 ** @brief
hades234 0:98f2b220cf58 416 ** Called after Ticker is done, [Interrupt service/event]
hades234 0:98f2b220cf58 417 ** and it is enabled:
hades234 0:98f2b220cf58 418 ** TimerInt.attach_us(&TimerInt_OnInterrupt, Ticker_Rate);
hades234 0:98f2b220cf58 419 ** the event is enabled and will be executed every [Ticker_Rate]
hades234 0:98f2b220cf58 420 ** This is user's event module.
hades234 0:98f2b220cf58 421 ** Put your event handler code here.
hades234 0:98f2b220cf58 422 ** @param
hades234 0:98f2b220cf58 423 ** UserDataPtr - Pointer to the user or
hades234 0:98f2b220cf58 424 ** RTOS specific data. The pointer is passed
hades234 0:98f2b220cf58 425 ** as the parameter of Init method.
hades234 0:98f2b220cf58 426 ** Settings :
hades234 0:98f2b220cf58 427 ** Contents :
hades234 0:98f2b220cf58 428 ** Ticker - &Barrido_OnInterrupt;
hades234 0:98f2b220cf58 429 **
hades234 0:98f2b220cf58 430 ** ###########################################################################*/
hades234 0:98f2b220cf58 431 void Barrido_OnInterrupt() // Rutina de Atención al Ticker
hades234 0:98f2b220cf58 432 {
hades234 0:98f2b220cf58 433 cont_1ms++; // Incrmenta el contador de milisegundos
hades234 0:98f2b220cf58 434 scan_rate--; // Decrementa el tiempo de despliege
hades234 0:98f2b220cf58 435 shift_rate--; // Decrementa el tiempo de desplazamiento del display
hades234 0:98f2b220cf58 436 event_rate--; // Decrementa el contador de eventos
hades234 0:98f2b220cf58 437 blink_rate--; // Decrementa el tiempo de parpadeo
hades234 0:98f2b220cf58 438 if(!scan_rate) // Se acabo el tiempo de desplige?
hades234 0:98f2b220cf58 439 {
hades234 0:98f2b220cf58 440 scan_rate=Scan_Time; // Se restable el tiempo de despliegue
hades234 0:98f2b220cf58 441 flag1=TRUE; // Enciende la bandera para las rutinas de despliege
hades234 0:98f2b220cf58 442 }
hades234 0:98f2b220cf58 443 //-------------------- Corrimiento de la Pantalla ----------------------------
hades234 0:98f2b220cf58 444
hades234 0:98f2b220cf58 445 if (!shift_rate)
hades234 0:98f2b220cf58 446 {
hades234 0:98f2b220cf58 447 shift_rate=Shift_Time; // Restablece el contador de corrimientos
hades234 0:98f2b220cf58 448 flag2=TRUE;
hades234 0:98f2b220cf58 449 }
hades234 0:98f2b220cf58 450 //---------------------- Parpadeo del Display --------------------------------
hades234 0:98f2b220cf58 451
hades234 0:98f2b220cf58 452 if (!blink_rate)
hades234 0:98f2b220cf58 453 {
hades234 0:98f2b220cf58 454 Blinking= !Blinking; // Parpadeo
hades234 0:98f2b220cf58 455 blink_rate=Blink_Time; // Restablece el contador de parpadeo
hades234 0:98f2b220cf58 456 flag3=TRUE;
hades234 0:98f2b220cf58 457 }
hades234 0:98f2b220cf58 458 //--------------------- Secuenciador de Eventos ------------------------------
hades234 0:98f2b220cf58 459
hades234 0:98f2b220cf58 460 if (!event_rate)
hades234 0:98f2b220cf58 461 {
hades234 0:98f2b220cf58 462 event_rate=Event_Time; // Restablece el contador de eventos
hades234 0:98f2b220cf58 463 flag4=TRUE;
hades234 0:98f2b220cf58 464 }
hades234 0:98f2b220cf58 465 //--------------------------- Reloj ------------------------------------------
hades234 0:98f2b220cf58 466
hades234 0:98f2b220cf58 467 if (cont_1ms>=10) // Son 10ms?
hades234 0:98f2b220cf58 468 {
hades234 0:98f2b220cf58 469 cont_10ms++; // Incrementa el contador de decimas de ms
hades234 0:98f2b220cf58 470 cont_1ms=0; // Restablece el contador de ms
hades234 0:98f2b220cf58 471 }
hades234 0:98f2b220cf58 472 if (cont_10ms>=10) // Son 100ms?
hades234 0:98f2b220cf58 473 {
hades234 0:98f2b220cf58 474 cont_100ms++; // Incrementa el contador de centecimas de ms
hades234 0:98f2b220cf58 475 cont_10ms=0; // Restablece el contador de decimas de seg
hades234 0:98f2b220cf58 476 }
hades234 0:98f2b220cf58 477 if (cont_100ms>=10) // Son 1000ms o sea 1 seg?
hades234 0:98f2b220cf58 478 {
hades234 0:98f2b220cf58 479 cont_1s++; // Incrementa el contador de segundos
hades234 0:98f2b220cf58 480 cont_100ms=0; // Restablece el contador de centesimas de seg
hades234 0:98f2b220cf58 481 }
hades234 0:98f2b220cf58 482 if (cont_1s>=10) // Son 10seg?
hades234 0:98f2b220cf58 483 {
hades234 0:98f2b220cf58 484 cont_1s=0; // Restablece el contador de segundos
hades234 0:98f2b220cf58 485 }
hades234 0:98f2b220cf58 486 }
hades234 0:98f2b220cf58 487 /* END Events */
hades234 0:98f2b220cf58 488 /*
hades234 0:98f2b220cf58 489 ______________________________________________________________________________
hades234 0:98f2b220cf58 490 /______________________________________________________________________________\
hades234 0:98f2b220cf58 491 | |
hades234 0:98f2b220cf58 492 | F U N C I O N E S P R O T O T I P O |
hades234 0:98f2b220cf58 493 |______________________________________________________________________________|
hades234 0:98f2b220cf58 494 \_____________________________________________________________________________/
hades234 0:98f2b220cf58 495 */
hades234 0:98f2b220cf58 496 // Las Funciones Prototipo van aquí !
hades234 0:98f2b220cf58 497
hades234 0:98f2b220cf58 498 /*
hades234 0:98f2b220cf58 499 |-------------------------------------------------------------------------------
hades234 0:98f2b220cf58 500 | Función : Clear_Screen()
hades234 0:98f2b220cf58 501 |
hades234 0:98f2b220cf58 502 | Descripción : Limpia la Pantalla de la Terminal
hades234 0:98f2b220cf58 503 |
hades234 0:98f2b220cf58 504 | Parámetros : Ninguno
hades234 0:98f2b220cf58 505 |
hades234 0:98f2b220cf58 506 | Retorna : Nada
hades234 0:98f2b220cf58 507 |-------------------------------------------------------------------------------
hades234 0:98f2b220cf58 508 */
hades234 0:98f2b220cf58 509 void Clear_Screen()
hades234 0:98f2b220cf58 510 {
hades234 0:98f2b220cf58 511 // ANSI Terminal Commands
hades234 0:98f2b220cf58 512 Terminal.printf("\x1B[2J"); // secuencia de Escape \e1B[2J
hades234 0:98f2b220cf58 513 Terminal.printf("\x1B[H"); // secuencia de Escape \e1B[H
hades234 0:98f2b220cf58 514 }
hades234 0:98f2b220cf58 515
hades234 0:98f2b220cf58 516 /*
hades234 0:98f2b220cf58 517 |-------------------------------------------------------------------------------
hades234 0:98f2b220cf58 518 | Función : Buzzer_Beep()
hades234 0:98f2b220cf58 519 |
hades234 0:98f2b220cf58 520 | Descripción : Rutina para prueba del Buzzer
hades234 0:98f2b220cf58 521 |
hades234 0:98f2b220cf58 522 | Parámetros : Ninguno
hades234 0:98f2b220cf58 523 |
hades234 0:98f2b220cf58 524 | Retorna : Nada
hades234 0:98f2b220cf58 525 |-------------------------------------------------------------------------------
hades234 0:98f2b220cf58 526 */
hades234 0:98f2b220cf58 527 void Buzzer_Beep() // Software routine for Buzzer Beep
hades234 0:98f2b220cf58 528 {
hades234 0:98f2b220cf58 529 Terminal.printf("Testing Buzzer... \n\r");
hades234 0:98f2b220cf58 530 buzzer = Buzz_On;
hades234 0:98f2b220cf58 531 wait_ms(750);
hades234 0:98f2b220cf58 532 buzzer = Buzz_Off;
hades234 0:98f2b220cf58 533 wait_ms(125);
hades234 0:98f2b220cf58 534 buzzer = Buzz_Off;
hades234 0:98f2b220cf58 535 wait_ms(125);
hades234 0:98f2b220cf58 536 buzzer = Buzz_On;
hades234 0:98f2b220cf58 537 wait_ms(500);
hades234 0:98f2b220cf58 538 buzzer = Buzz_Off;
hades234 0:98f2b220cf58 539 Terminal.printf("Buzzer OK ! \n\r");
hades234 0:98f2b220cf58 540 }
hades234 0:98f2b220cf58 541 /* END Functions */
hades234 0:98f2b220cf58 542 /* END Routines */
hades234 0:98f2b220cf58 543 /* END program */
hades234 0:98f2b220cf58 544
hades234 0:98f2b220cf58 545 /*
hades234 0:98f2b220cf58 546 *+******************************************************************************
hades234 0:98f2b220cf58 547 *+ La documentación va aquí!:
hades234 0:98f2b220cf58 548 *+******************************************************************************
hades234 0:98f2b220cf58 549 *+
hades234 0:98f2b220cf58 550 *+------------------------------------------------------------------------------
hades234 0:98f2b220cf58 551 *+ Descripción del Display de 7 Segmentos de Anodos Comunes en modo multiplexado
hades234 0:98f2b220cf58 552 *+------------------------------------------------------------------------------
hades234 0:98f2b220cf58 553 *+ 14 13 12 11 10 9 8
hades234 0:98f2b220cf58 554 *+ | | | | | |
hades234 0:98f2b220cf58 555 *+ | | | | | |
hades234 0:98f2b220cf58 556 *+ --------------------------------------------------
hades234 0:98f2b220cf58 557 *+ | A a f A A b |
hades234 0:98f2b220cf58 558 *+ | 4 3 2 |
hades234 0:98f2b220cf58 559 *+ | ______________________________________________ |
hades234 0:98f2b220cf58 560 *+ | | ____ ____ _____ _____ | |
hades234 0:98f2b220cf58 561 *+ | | / / / / / / / / | |
hades234 0:98f2b220cf58 562 *+ | | /____ / /____ / . /____ / /____ / | |
hades234 0:98f2b220cf58 563 *+ | | / / / / . / / / / | |
hades234 0:98f2b220cf58 564 *+ | | /____ /. /_____/ . /____ /. /____ /. | |
hades234 0:98f2b220cf58 565 *+ | | | |
hades234 0:98f2b220cf58 566 *+ | |______________________________________________| |
hades234 0:98f2b220cf58 567 *+ | |
hades234 0:98f2b220cf58 568 *+ | A |
hades234 0:98f2b220cf58 569 *+ | e d p c g 1 |
hades234 0:98f2b220cf58 570 *+ --------------------------------------------------
hades234 0:98f2b220cf58 571 *+ | | | | | | |
hades234 0:98f2b220cf58 572 *+ | | | | | | |
hades234 0:98f2b220cf58 573 *+ 1 2 3 4 5 6 7
hades234 0:98f2b220cf58 574 *+
hades234 0:98f2b220cf58 575 *+ Display: HS410561K-D30
hades234 0:98f2b220cf58 576 *+
hades234 0:98f2b220cf58 577 *+
hades234 0:98f2b220cf58 578 *+ 14 13 12 11 10 9 8
hades234 0:98f2b220cf58 579 *+ | | | | | |
hades234 0:98f2b220cf58 580 *+ | | | | | |
hades234 0:98f2b220cf58 581 *+ --------------------------------------------------
hades234 0:98f2b220cf58 582 *+ | A g f p a b |
hades234 0:98f2b220cf58 583 *+ | 4 |
hades234 0:98f2b220cf58 584 *+ | ______________________________________________ |
hades234 0:98f2b220cf58 585 *+ | | ____ ____ _____ _____ | |
hades234 0:98f2b220cf58 586 *+ | | / / / / / / / / | |
hades234 0:98f2b220cf58 587 *+ | | /____ / /____ / . /____ / /____ / | |
hades234 0:98f2b220cf58 588 *+ | | / / / / . / / / / | |
hades234 0:98f2b220cf58 589 *+ | | /____ /. /_____/ /____ /. /____ /. | |
hades234 0:98f2b220cf58 590 *+ | | | |
hades234 0:98f2b220cf58 591 *+ | |______________________________________________| |
hades234 0:98f2b220cf58 592 *+ | |
hades234 0:98f2b220cf58 593 *+ | A A A |
hades234 0:98f2b220cf58 594 *+ | e 3 2 c d 1 |
hades234 0:98f2b220cf58 595 *+ --------------------------------------------------
hades234 0:98f2b220cf58 596 *+ | | | | | | |
hades234 0:98f2b220cf58 597 *+ | | | | | | |
hades234 0:98f2b220cf58 598 *+ 1 2 3 4 5 6 7
hades234 0:98f2b220cf58 599 *+
hades234 0:98f2b220cf58 600 *+ Display: BQ-M544RE
hades234 0:98f2b220cf58 601 *+
hades234 0:98f2b220cf58 602 *+
hades234 0:98f2b220cf58 603 *+ 16 15 14 13 11
hades234 0:98f2b220cf58 604 *+ | | | | |
hades234 0:98f2b220cf58 605 *+ | | | | |
hades234 0:98f2b220cf58 606 *+ --------------------------------------------------
hades234 0:98f2b220cf58 607 *+ | b g a c f |
hades234 0:98f2b220cf58 608 *+ | |
hades234 0:98f2b220cf58 609 *+ | ______________________________________________ |
hades234 0:98f2b220cf58 610 *+ | | ____ ____ _____ . _____ | |
hades234 0:98f2b220cf58 611 *+ | | / / / / / / / / | |
hades234 0:98f2b220cf58 612 *+ | | /____ / /____ / . /____ / /____ / | |
hades234 0:98f2b220cf58 613 *+ | | / / / / . / / / / | |
hades234 0:98f2b220cf58 614 *+ | | /____ /. /_____/ . /____ /. /____ /. | |
hades234 0:98f2b220cf58 615 *+ | | | |
hades234 0:98f2b220cf58 616 *+ | |______________________________________________| |
hades234 0:98f2b220cf58 617 *+ | |
hades234 0:98f2b220cf58 618 *+ | A A A A A |
hades234 0:98f2b220cf58 619 *+ | 4 3 d p e 2 p 1 |
hades234 0:98f2b220cf58 620 *+ --------------------------------------------------
hades234 0:98f2b220cf58 621 *+ | | | | | | | |
hades234 0:98f2b220cf58 622 *+ | | | | | | | |
hades234 0:98f2b220cf58 623 *+ 1 2 3 4 5 6 7 8
hades234 0:98f2b220cf58 624 *+
hades234 0:98f2b220cf58 625 *+ Display: KEM-3942BSR
hades234 0:98f2b220cf58 626 *+
hades234 0:98f2b220cf58 627 *+
hades234 0:98f2b220cf58 628 *+ 12 11 10 9 8 7
hades234 0:98f2b220cf58 629 *+ | | | | | |
hades234 0:98f2b220cf58 630 *+ | | | | | |
hades234 0:98f2b220cf58 631 *+ --------------------------------------------------
hades234 0:98f2b220cf58 632 *+ | A a f A A b |
hades234 0:98f2b220cf58 633 *+ | 4 3 2 |
hades234 0:98f2b220cf58 634 *+ | ______________________________________________ |
hades234 0:98f2b220cf58 635 *+ | | ____ ____ _____ . _____ | |
hades234 0:98f2b220cf58 636 *+ | | / / / / / / / / | |
hades234 0:98f2b220cf58 637 *+ | | /____ / /____ / . /____ / /____ / | |
hades234 0:98f2b220cf58 638 *+ | | / / / / . / / / / | |
hades234 0:98f2b220cf58 639 *+ | | /____ /. /_____/ . /____ /. /____ /. | |
hades234 0:98f2b220cf58 640 *+ | | | |
hades234 0:98f2b220cf58 641 *+ | |______________________________________________| |
hades234 0:98f2b220cf58 642 *+ | |
hades234 0:98f2b220cf58 643 *+ | A |
hades234 0:98f2b220cf58 644 *+ | e d p c g 1 |
hades234 0:98f2b220cf58 645 *+ --------------------------------------------------
hades234 0:98f2b220cf58 646 *+ | | | | | |
hades234 0:98f2b220cf58 647 *+ | | | | | | p1 = g
hades234 0:98f2b220cf58 648 *+ 1 2 3 4 5 6 p2 = c
hades234 0:98f2b220cf58 649 *+ p3 = d
hades234 0:98f2b220cf58 650 *+ Display: HS-5463BS p4 = e
hades234 0:98f2b220cf58 651 *+ Cátodo Común pu = b
hades234 0:98f2b220cf58 652 *+ pd = f
hades234 0:98f2b220cf58 653 *+
hades234 0:98f2b220cf58 654 *+
hades234 0:98f2b220cf58 655 *+ 14 13 12 11 10 8 9
hades234 0:98f2b220cf58 656 *+ | | | | |
hades234 0:98f2b220cf58 657 *+ | | | | |
hades234 0:98f2b220cf58 658 *+ --------------------------------------------------
hades234 0:98f2b220cf58 659 *+ | A a f A A |
hades234 0:98f2b220cf58 660 *+ | 4 3 2 |
hades234 0:98f2b220cf58 661 *+ | ______________________________________________ |
hades234 0:98f2b220cf58 662 *+ | | ____ ____ . _____ . _____ | |
hades234 0:98f2b220cf58 663 *+ | | / / / / / / / / | |
hades234 0:98f2b220cf58 664 *+ | | /____ / /____ / /____ / /____ / | |
hades234 0:98f2b220cf58 665 *+ | | / / / / / / / / | |
hades234 0:98f2b220cf58 666 *+ | | /____ /. /_____/ . /____ / /____ / | |
hades234 0:98f2b220cf58 667 *+ | | | |
hades234 0:98f2b220cf58 668 *+ | |______________________________________________| |
hades234 0:98f2b220cf58 669 *+ | |
hades234 0:98f2b220cf58 670 *+ | A |
hades234 0:98f2b220cf58 671 *+ | e d p c g 1 b |
hades234 0:98f2b220cf58 672 *+ --------------------------------------------------
hades234 0:98f2b220cf58 673 *+ | | | | | | |
hades234 0:98f2b220cf58 674 *+ | | | | | | |
hades234 0:98f2b220cf58 675 *+ 1 2 3 4 5 6 7
hades234 0:98f2b220cf58 676 *+
hades234 0:98f2b220cf58 677 *+ Display: LTC-5650G
hades234 0:98f2b220cf58 678 *+
hades234 0:98f2b220cf58 679 +*
hades234 0:98f2b220cf58 680 *+ 12 11 10 9 8 7
hades234 0:98f2b220cf58 681 *+ | | | | | |
hades234 0:98f2b220cf58 682 *+ | | | | | |
hades234 0:98f2b220cf58 683 *+ --------------------------------------------------
hades234 0:98f2b220cf58 684 *+ | A a f A A b |
hades234 0:98f2b220cf58 685 *+ | 4 3 2 |
hades234 0:98f2b220cf58 686 *+ | ______________________________________________ |
hades234 0:98f2b220cf58 687 *+ | | ____ ____ _____ _____ | |
hades234 0:98f2b220cf58 688 *+ | | / / / / / / / / | |
hades234 0:98f2b220cf58 689 *+ | | /____ / /____ / . /____ / /____ / | |
hades234 0:98f2b220cf58 690 *+ | | / / / / . / / / / | |
hades234 0:98f2b220cf58 691 *+ | | /____ /. /_____/ . /____ /. /____ /. | |
hades234 0:98f2b220cf58 692 *+ | | | |
hades234 0:98f2b220cf58 693 *+ | |______________________________________________| |
hades234 0:98f2b220cf58 694 *+ | |
hades234 0:98f2b220cf58 695 *+ | A |
hades234 0:98f2b220cf58 696 *+ | e d p c g 1 |
hades234 0:98f2b220cf58 697 *+ --------------------------------------------------
hades234 0:98f2b220cf58 698 *+ | | | | | |
hades234 0:98f2b220cf58 699 *+ | | | | | |
hades234 0:98f2b220cf58 700 *+ 1 2 3 4 5 6
hades234 0:98f2b220cf58 701 *+
hades234 0:98f2b220cf58 702 *+ Display: FYQ-2841BH
hades234 0:98f2b220cf58 703 *+ Display: FYQ-3641BS
hades234 0:98f2b220cf58 704 *+ Display: FYQ-5641BS
hades234 0:98f2b220cf58 705 *+
hades234 0:98f2b220cf58 706 *+
hades234 0:98f2b220cf58 707 *+ PB_15 PB_14 PB_13 PB_12
hades234 0:98f2b220cf58 708 *+ A4 A3 A2 A1
hades234 0:98f2b220cf58 709 *+ Mill Cent Dec Uni
hades234 0:98f2b220cf58 710 *+
hades234 0:98f2b220cf58 711 *+ STM32-F103C8 PB_4 PB_3 PA_15 PA_12 PA_11 PA_10 PA_9 PA_8 # Hex Offset
hades234 0:98f2b220cf58 712 *+ a
hades234 0:98f2b220cf58 713 *+ ______ g f a b c d e p
hades234 0:98f2b220cf58 714 *+ / / 1 0 0 0 0 0 0 1 0 0x81 0
hades234 0:98f2b220cf58 715 *+ f / g / b 1 1 1 0 0 1 1 1 1 0xE7 1
hades234 0:98f2b220cf58 716 *+ /_____/ 0 1 0 0 1 0 0 1 2 0x49 2
hades234 0:98f2b220cf58 717 *+ / / 0 1 0 0 0 0 1 1 3 0x43 3
hades234 0:98f2b220cf58 718 *+ e / / c 0 0 1 0 0 1 1 1 4 0x27 4
hades234 0:98f2b220cf58 719 *+ /_____/ . 0 0 0 1 0 0 1 1 5 0x13 5
hades234 0:98f2b220cf58 720 *+ d p 0 0 0 0 0 0 1 1 6 0x11 6
hades234 0:98f2b220cf58 721 *+ 1 1 0 0 0 1 1 1 7 0xC7 7
hades234 0:98f2b220cf58 722 *+ 0 0 0 0 0 0 0 1 8 0x01 8
hades234 0:98f2b220cf58 723 *+ 0 0 0 0 0 0 1 1 9 0x03 9
hades234 0:98f2b220cf58 724 *+ 0 0 0 0 0 1 0 1 A 0x05 10
hades234 0:98f2b220cf58 725 *+ 0 0 1 1 0 0 0 1 b 0x31 11
hades234 0:98f2b220cf58 726 *+ 1 0 0 1 1 0 0 1 C 0x99 12
hades234 0:98f2b220cf58 727 *+ 0 1 1 0 0 0 0 1 d 0x61 13
hades234 0:98f2b220cf58 728 *+ 0 0 0 1 1 0 0 1 E 0x19 14
hades234 0:98f2b220cf58 729 *+ 0 0 0 1 1 1 0 1 f 0x1D 15
hades234 0:98f2b220cf58 730 *+ 1 0 0 1 1 0 0 1 G 0x91 16
hades234 0:98f2b220cf58 731 *+ 0 0 1 1 0 1 0 1 h 0x35 17
hades234 0:98f2b220cf58 732 *+ 1 0 1 1 1 1 0 1 i 0xBD 18
hades234 0:98f2b220cf58 733 *+ 1 1 1 0 0 0 1 1 J 0xE3 19
hades234 0:98f2b220cf58 734 *+ 0 0 1 0 1 1 0 1 k 0x2D 20
hades234 0:98f2b220cf58 735 *+ 1 0 1 1 1 0 0 1 L 0xB9 21
hades234 0:98f2b220cf58 736 *+ 1 0 0 0 0 1 0 1 M 0x85 22
hades234 0:98f2b220cf58 737 *+ 0 1 1 1 0 1 0 1 n 0x75 23
hades234 0:98f2b220cf58 738 *+ 0 1 1 1 0 0 0 1 o 0x71 24
hades234 0:98f2b220cf58 739 *+ 0 0 0 0 1 1 0 1 P 0x0D 25
hades234 0:98f2b220cf58 740 *+ 0 0 0 0 0 1 1 1 q 0x07 26
hades234 0:98f2b220cf58 741 *+ 0 1 1 1 1 1 0 1 r 0x7D 27
hades234 0:98f2b220cf58 742 *+ 0 0 0 1 0 0 1 1 s 0x13 28
hades234 0:98f2b220cf58 743 *+ 0 0 1 1 1 0 0 1 t 0x39 29
hades234 0:98f2b220cf58 744 *+ 1 1 1 1 0 0 0 1 u 0xF1 30
hades234 0:98f2b220cf58 745 *+ 1 0 1 1 0 0 0 1 V 0xB1 31
hades234 0:98f2b220cf58 746 *+ 1 0 1 0 0 0 0 1 w 0xA1 32
hades234 0:98f2b220cf58 747 *+ 0 0 1 0 0 1 0 1 X 0x25 33
hades234 0:98f2b220cf58 748 *+ 0 0 1 0 0 0 1 1 y 0x23 34
hades234 0:98f2b220cf58 749 *+ 0 1 0 0 1 0 0 1 Z 0x49 35
hades234 0:98f2b220cf58 750 *+ 1 1 1 1 1 1 1 1 space 0xFF 36
hades234 0:98f2b220cf58 751 *+ 0 1 0 0 0 0 0 1 a 0x41 37
hades234 0:98f2b220cf58 752 *+ 0 0 0 0 1 0 0 1 e 0x09 38
hades234 0:98f2b220cf58 753 *+ 0 0 0 0 0 0 1 1 /e 0x03 39
hades234 0:98f2b220cf58 754 *+ 0 0 0 1 0 0 0 1 @ 0x11 40
hades234 0:98f2b220cf58 755 *+ 0 1 0 1 0 1 0 1 ñ 0x55 41
hades234 0:98f2b220cf58 756 *+ 1 0 0 1 1 0 0 1 [ 0x99 42
hades234 0:98f2b220cf58 757 *+ 0 0 0 0 1 0 0 1 ] 0xC3 43
hades234 0:98f2b220cf58 758 *+ 1 0 1 0 0 0 0 1 U 0xA1 44
hades234 0:98f2b220cf58 759 *+ 1 0 0 0 0 1 0 1 /U 0x85 45
hades234 0:98f2b220cf58 760 *+ 1 1 0 1 1 1 1 1 /_ 0xDF 46
hades234 0:98f2b220cf58 761 *+ 0 1 1 1 1 1 1 1 - 0x7F 47
hades234 0:98f2b220cf58 762 *+ 1 1 1 1 1 0 1 1 _ 0xFB 48
hades234 0:98f2b220cf58 763 *+ 1 1 0 1 1 0 1 1 _/_ 0xDB 49
hades234 0:98f2b220cf58 764 *+ 0 1 1 1 1 0 1 1 /= 0x7B 50
hades234 0:98f2b220cf58 765 *+ 0 1 0 1 1 1 1 1 = 0x5F 51
hades234 0:98f2b220cf58 766 *+ 0 1 0 1 1 0 1 1 == 0x5B 52
hades234 0:98f2b220cf58 767 *+ 0 0 0 0 1 1 1 1 ° 0x0F 53
hades234 0:98f2b220cf58 768 *+ 1 1 1 1 0 0 0 1 + c 0xF1 38
hades234 0:98f2b220cf58 769 *+ 1 1 1 1 0 1 0 0 +/c 0xF4 39
hades234 0:98f2b220cf58 770 *+ 1 0 1 0 0 1 1 1 c 0xA7 40
hades234 0:98f2b220cf58 771 *+ 1 0 0 1 0 1 1 1 /c 0x97 41
hades234 0:98f2b220cf58 772 *+ 1 1 1 1 0 0 1 0 + u 0xF2 42
hades234 0:98f2b220cf58 773 *+ 1 1 1 1 1 0 0 0 + n 0xF8 43
hades234 0:98f2b220cf58 774 *+ 1 0 1 0 1 0 0 1 [ 0xA9 44
hades234 0:98f2b220cf58 775 *+ 1 0 0 1 1 1 0 0 ] 0x9C 45
hades234 0:98f2b220cf58 776 *+ 1 1 1 1 0 0 0 0 ° 0xF0 46
hades234 0:98f2b220cf58 777 *+ 1 1 1 1 1 1 0 0 ¬ 0xFC 47
hades234 0:98f2b220cf58 778 *+ 1 1 1 1 0 1 1 0 + > 0xF6 48
hades234 0:98f2b220cf58 779 *+ 1 1 1 0 0 1 1 1 ^ 0xE7 49
hades234 0:98f2b220cf58 780 *+ 1 0 1 0 1 1 1 1 / < 0xAF 50
hades234 0:98f2b220cf58 781 *+ 1 0 0 1 1 1 1 1 / v 0x9F 51
hades234 0:98f2b220cf58 782 *+ 1 1 0 1 0 1 1 1 > 0xD7 52
hades234 0:98f2b220cf58 783 *+ 1 1 1 1 0 0 1 1 v 0xF3 53
hades234 0:98f2b220cf58 784 *+ 1 1 1 1 1 0 0 1 < 0xF9 54
hades234 0:98f2b220cf58 785 *+ 1 1 1 1 1 1 0 1 / _ 0xBF 55
hades234 0:98f2b220cf58 786 *+ 1 1 1 1 0 1 1 1 - 0xF7 56
hades234 0:98f2b220cf58 787 *+ 1 0 1 1 1 1 1 1 _ 0xFD 57
hades234 0:98f2b220cf58 788 *+ 1 1 1 1 0 1 0 1 = 0xF5 58
hades234 0:98f2b220cf58 789 *+ 1 0 1 1 0 1 1 1 / = 0xB7 59
hades234 0:98f2b220cf58 790 *+ 1 0 1 1 0 1 0 1 == 0xB5 60
hades234 0:98f2b220cf58 791 *+ 1 0 1 1 1 1 0 1 _¬ 0xBD 61
hades234 0:98f2b220cf58 792 *+ 1 1 0 0 1 1 1 1 ii 0xCF 62
hades234 0:98f2b220cf58 793 *+ 1 1 1 1 1 0 1 0 # 0xFA 63
hades234 0:98f2b220cf58 794 *+ 1 0 0 1 1 1 1 0 j 0x9E 64
hades234 0:98f2b220cf58 795 *+ 1 1 0 1 1 1 0 0 /j 0xDC 65
hades234 0:98f2b220cf58 796 *+ 1 1 1 0 1 0 0 1 - j 0xE9 66
hades234 0:98f2b220cf58 797 *+ 1 0 1 0 1 0 1 1 -/j 0xAB 67
hades234 0:98f2b220cf58 798 *+ 1 0 0 0 1 1 1 0 - J 0x8E 68
hades234 0:98f2b220cf58 799 *+ 1 1 0 1 1 0 0 0 -/J 0xD8 69
hades234 0:98f2b220cf58 800 *+ 1 1 1 0 1 0 1 1 | 0xEB 70
hades234 0:98f2b220cf58 801 *+ 1 1 0 0 1 0 1 0 || 0xCA 71
hades234 0:98f2b220cf58 802 *+ 1 1 0 1 0 1 1 0 + 0xD6 72
hades234 0:98f2b220cf58 803 *+ 1 1 1 0 0 0 1 1 /+ 0xE3 73
hades234 0:98f2b220cf58 804 *+ 1 0 0 1 1 0 1 1 espacio 0xFF 74
hades234 0:98f2b220cf58 805 *+
hades234 0:98f2b220cf58 806 *+ Nota: Cada dígito se activa al hacer la señal A correspondiente en "alto"
hades234 0:98f2b220cf58 807 *+ y enviar las señales de los segmentos que se desean encender en "bajo"
hades234 0:98f2b220cf58 808 *+
hades234 0:98f2b220cf58 809 **+-----------------------------------------------------------------------------
hades234 0:98f2b220cf58 810 *+ CD4041 Quad True/Complement Buffer
hades234 0:98f2b220cf58 811 *+------------------------------------------------------------------------------
hades234 0:98f2b220cf58 812 *+
hades234 0:98f2b220cf58 813 *+ |\ 1
hades234 0:98f2b220cf58 814 *+ | \------- A1
hades234 0:98f2b220cf58 815 *+ 3 | \
hades234 0:98f2b220cf58 816 *+ PB_12 -----| >
hades234 0:98f2b220cf58 817 *+ | / 2
hades234 0:98f2b220cf58 818 *+ | /o------ REN1
hades234 0:98f2b220cf58 819 *+ |/
hades234 0:98f2b220cf58 820 *+
hades234 0:98f2b220cf58 821 *+
hades234 0:98f2b220cf58 822 *+ |\ 11
hades234 0:98f2b220cf58 823 *+ | \------- A2
hades234 0:98f2b220cf58 824 *+ 13 | \
hades234 0:98f2b220cf58 825 *+ PB_13 -----| >
hades234 0:98f2b220cf58 826 *+ | / 12
hades234 0:98f2b220cf58 827 *+ | /o------- REN2
hades234 0:98f2b220cf58 828 *+ |/
hades234 0:98f2b220cf58 829 *+
hades234 0:98f2b220cf58 830 *+
hades234 0:98f2b220cf58 831 *+ |\ 4
hades234 0:98f2b220cf58 832 *+ | \------- A3
hades234 0:98f2b220cf58 833 *+ 6 | \
hades234 0:98f2b220cf58 834 *+ PB_14 -----| >
hades234 0:98f2b220cf58 835 *+ | / 5
hades234 0:98f2b220cf58 836 *+ | /o------ REN3
hades234 0:98f2b220cf58 837 *+ |/
hades234 0:98f2b220cf58 838 *+
hades234 0:98f2b220cf58 839 *+
hades234 0:98f2b220cf58 840 *+
hades234 0:98f2b220cf58 841 *+ |\ 8
hades234 0:98f2b220cf58 842 *+ | \------- A4
hades234 0:98f2b220cf58 843 *+ 10 | \
hades234 0:98f2b220cf58 844 *+ PB_15 -----| >
hades234 0:98f2b220cf58 845 *+ | / 9
hades234 0:98f2b220cf58 846 *+ | /o------ REN4
hades234 0:98f2b220cf58 847 *+ |/
hades234 0:98f2b220cf58 848 *+
hades234 0:98f2b220cf58 849 *+
hades234 0:98f2b220cf58 850 *+----------------------------------------------------------------------------*/
hades234 0:98f2b220cf58 851 /* END documentation */
hades234 0:98f2b220cf58 852 /*
hades234 0:98f2b220cf58 853 +-------------------------------------------------------------------------------
hades234 0:98f2b220cf58 854 | EJERCICIO
hades234 0:98f2b220cf58 855 |
hades234 0:98f2b220cf58 856 | 1.- Crear la función para convertir cualquier cantidad o valor entero a
hades234 0:98f2b220cf58 857 | codigo BCD y representarlo en un buffer para su despliegue en un formato
hades234 0:98f2b220cf58 858 | de Millares, Centenas, Decenas y Unidades dentro de un arreglo para su
hades234 0:98f2b220cf58 859 | despliegue en el display de 7 segmentos.
hades234 0:98f2b220cf58 860 | 2.- Crear la función para convertir cualquier valor ASCII a codigo BCD
hades234 0:98f2b220cf58 861 | y representarlo en un buffer de un arreglo de Millares, Centenas,
hades234 0:98f2b220cf58 862 | Decenas y unidades para su despliegue en el display de 7 segmentos.
hades234 0:98f2b220cf58 863 | 3.- Implementar la rutina para eliminación de los ceros a la izquierda
hades234 0:98f2b220cf58 864 | (Blanking).
hades234 0:98f2b220cf58 865 | 4.- Implementar el menú para seleccionar entre Modo 0 y Modo 1 por el usuario
hades234 0:98f2b220cf58 866
hades234 0:98f2b220cf58 867 |
hades234 0:98f2b220cf58 868 +------------------------------------------------------------------------------+
hades234 0:98f2b220cf58 869 |
hades234 0:98f2b220cf58 870 | EXAMEN
hades234 0:98f2b220cf58 871 |
hades234 0:98f2b220cf58 872 | 1.- Modificar este programa para:
hades234 0:98f2b220cf58 873 | a) Leer una cadena de caracteres (Mensaje) desde la terminal serial.
hades234 0:98f2b220cf58 874 | b) Convertir todos los caracteres de la cadena a Mayúsculas (o minúsculas).
hades234 0:98f2b220cf58 875 | c) Depositarlas en un Buffer para su posterior despliegue en el Display
hades234 0:98f2b220cf58 876 | 2.- Utilizando el generador de caracteres para el display
hades234 0:98f2b220cf58 877 | a) Traducir los caracteres de la cadena a su equivalente del generador
hades234 0:98f2b220cf58 878 | de caracteres para ser desplegados por el display de 7 segmentos.
hades234 0:98f2b220cf58 879 | b) Crear la cadena traducida en el buffers de despliegue y adicionar al
hades234 0:98f2b220cf58 880 | final 4 espacios (para indicar el fin de la cadena)
hades234 0:98f2b220cf58 881 | c) Delimitar el tamaño del buffer de despliegue para que se ajuste a la
hades234 0:98f2b220cf58 882 | longitud de la cadena a desplegar más 4 espacios. Este ajuste debe
hades234 0:98f2b220cf58 883 | ser automático y ajustarse de acuerdo al tamaño del mensaje
hades234 0:98f2b220cf58 884 | corresponedientes para depositar las nuevas cadenas de mensajes
hades234 0:98f2b220cf58 885 | generados y poderlas desplegar.
hades234 0:98f2b220cf58 886 | d) Desplegar dicha cadena mediante corrimientos a la izquierda en el
hades234 0:98f2b220cf58 887 | Display de 4 Dígitos.
hades234 0:98f2b220cf58 888 | (La longitud para el Buffer para despliegue no debe exceder los 80
hades234 0:98f2b220cf58 889 | caracteres).
hades234 0:98f2b220cf58 890 |
hades234 0:98f2b220cf58 891 | Tip.- Consultar la Tabla ASCII
hades234 0:98f2b220cf58 892 | (Para los números, restarles 0x30 y para las letras, restarles 0x37)
hades234 0:98f2b220cf58 893 | (Para la Ñ, restar 0x7C y para el espacio, sumarle 0x04)
hades234 0:98f2b220cf58 894 |
hades234 0:98f2b220cf58 895 | 3.- Utilizando el Convertidor Analógico/Digital.
hades234 0:98f2b220cf58 896 | a) Obtener una medición en representación flotante (0.0 a 1.0) y escalarla
hades234 0:98f2b220cf58 897 | para poder ser representada en formato BCD de 4 dígitos (0-9999).
hades234 0:98f2b220cf58 898 | b) proveer rutinas para poder escalar y hacer ajustes por medio del punto
hades234 0:98f2b220cf58 899 | decimal.
hades234 0:98f2b220cf58 900 |
hades234 0:98f2b220cf58 901 +------------------------------------------------------------------------------+
hades234 0:98f2b220cf58 902 *+ Powered by
hades234 0:98f2b220cf58 903 *+
hades234 0:98f2b220cf58 904 *+ T H E A N T U L I U ' S T E A M R&D Unltd
hades234 0:98f2b220cf58 905 *+
hades234 0:98f2b220cf58 906 *+ Research, Development, Systems, Equipment, Support & Spare Parts.
hades234 0:98f2b220cf58 907 *+ (C) Copyright 1989-2019, All Rights Reserved
hades234 0:98f2b220cf58 908 *+
hades234 0:98f2b220cf58 909 *+ Welcome to The Beaners Proyect Community!
hades234 0:98f2b220cf58 910 *+----------------------------------------------------------------------------*/
hades234 0:98f2b220cf58 911 /* END Mbed */