Actividad 1
dsa.cpp@0:98f2b220cf58, 2021-04-27 (annotated)
- Committer:
- hades234
- Date:
- Tue Apr 27 15:56:16 2021 +0000
- Revision:
- 0:98f2b220cf58
Actividad 1
Who changed what in which revision?
User | Revision | Line number | New 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 */ |