STM32F103C8_Barrido_Display Barrido de un Display de Ánodo Común
Dependencies: mbed
Revision 1:dc2ae76df12d, committed 2019-06-28
- Comitter:
- Antulius
- Date:
- Fri Jun 28 19:32:38 2019 +0000
- Parent:
- 0:9f7581d1af6f
- Commit message:
- STM32F103C8_Barrido_Teclado
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Jun 26 18:54:11 2019 +0000 +++ b/main.cpp Fri Jun 28 19:32:38 2019 +0000 @@ -45,44 +45,112 @@ : Definiciones :............................................................................... */ -#define on 0 // Estado para boton presionado -#define off 1 // Estado para boton sin presionar -#define hold 2 // Estado para boton mantenido -#define release 3 // Estado para boton liberado -#define Ticker_Rate 1000 // Periodo de interrupción (us) +#define on 0 // Estado para boton presionado +#define off 1 // Estado para boton sin presionar +#define hold 2 // Estado para boton mantenido +#define release 3 // Estado para boton liberado +#define TRUE 1 +#define FALSE 0 +#define Ticker_Period 1000 // Periodo de Tiempo del Ticker (us) +#define Rate_Period 2 // Tiempo de Encendido de los Digitos (ms) +#define Scan_Time 2 // Tiempo de Barrido del Display (ms) +#define Shift_Time 2 // Tiempo de corrimiento (x Counter_Time) +#define Counter_Time 100 // Tiempo de counter (ms) +#define String_Size 20 // Tamaño del Buffer de Caracteres +#define Digit_Null 0xFF // Valor para apagar los Segmentos +#define Degree_Symbol 0x0F // Valor para el Símbolo de Grados +#define DO2 0.0078125 // 128 Hz (Escala Filosófica) +#define DOs2 0.0073740180703125 // 136 Hz +#define RE2 0.006960146234375 // 144 Hz +#define REs2 0.0065695032421875 // 152 Hz +#define MI2 0.006200785359375 // 161 Hz +#define FA2 0.005852762015625 // 171 Hz +#define FAs2 0.0055242717265625 // 181 Hz +#define SOL2 0.0052142181796875 // 192 Hz +#define SOLs2 0.0049215666015625 // 203 Hz +#define LA2 0.004645340296875 // 215 Hz +#define LAs2 0.004384617375 // 228 Hz +#define SI2 0.0041385277109375 // 242 Hz +#define DO3 0.00390625 // 256 Hz +#define DOs3 0.00368700903515625 // 271 Hz +#define RE3 0.0034800731171875 // 287 Hz +#define REs3 0.00328475162109375 // 304 Hz +#define MI3 0.0031003926796875 // 323 Hz +#define FA3 0.0029263810078125 // 342 Hz +#define FAs3 0.0055242717265625 // 362 Hz +#define SOL3 0.00260710908984375 // 384 Hz +#define SOLs3 0.00246078330078125 // 406 Hz +#define LA3 0.0023226701484375 // 431 Hz +#define LAs3 0.0021923086875 // 456 Hz +#define SI3 0.00206926385546875 // 483 Hz +#define DO4 0.00390625 // 512 Hz +#define DOs4 0.001843504517578125 // 542 Hz +#define RE4 0.00174003655859375 // 575 Hz +#define REs4 0.001642375810546875 // 609 Hz +#define MI4 0.00155019633984375 // 645 Hz +#define FA4 0.00146319050390625 // 683 Hz +#define FAs4 0.001381067931640625 // 724 Hz +#define SOL4 0.001303554544921875 // 767 Hz +#define SOLs4 0.001230391650390625 // 813 Hz +#define LA4 0.00116133507421875 // 861 Hz +#define LAs4 0.00109615434375 // 912 Hz +#define SI4 0.001034631927734375 // 966 Hz +#define DO5 0.001953125 // 1024 Hz /* +------------------------------------------------------------------------------- | Configuración de Puertos +------------------------------------------------------------------------------- */ -//confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock) -Ticker TimerInt; // Inicializa la Interrupción por Timer -DigitalOut led_monitor(LED1); // Inicializa el LED Monitor -DigitalOut led_testigo(PA_1); // Inicializa el LED Testigo -Serial terminal(PA_2, PA_3); // Inicializa la Comunicación Serial a la PC -PwmOut servo(PA_7); // Inicializa el PWM -AnalogIn sensor1 (PB_0); // Inicializa Canal Analógico para sensor 1 +BusIn Renglones (PA_8, PA_9, PA_10, PA_11); // Definición para los Renglones + +BusOut Anodos (PB_6, PB_7, PB_8, PB_9); // Definición para los Ánodos +BusOut Catodos (PA_0, PA_1,PA_2,PA_3,PA_4,PA_5,PA_6,PA_7); // Definición para los Cätodos +DigitalOut Green_Led (PC_11); // Led de Actividad del Programa +DigitalOut Red_Led (PB_11); // Led de Actividad del Programa +PwmOut Buzzer (PB_13); // Salida del Buzzer +Ticker Barrido; +Serial Terminal(USBTX, USBRX); //activa la Terminal a traves del Puerto USB /* +------------------------------------------------------------------------------- | Variables Globales de Usuario +------------------------------------------------------------------------------- */ -uint16_t Rate=Ticker_Rate/2; // Velocidad de barrido (500us = 0.5ms) -uint16_t counter=250; // Cuenta inicial de 250us -/* END variables */ +uint16_t Rate=1000; +// 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 +// 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 null a e +o +/c c /c +u +n [ ] ° ^ ¬ + > ^ / v < v > /_ - _ = /= == ¬_ ii # /# J /J -J -/J -J -/J | || + /+ null ! " # $ % & ' ( ) * + - . / : ; < > ? @ +uint8_t Segmentos[]={0x81,0xE7,0x49,0x43,0x27,0x13,0x11,0xC7,0x01,0x03,0x05,0x31,0x99,0x61,0x19,0x1D,0x91,0x35,0xBD,0xB3,0x2D,0xB9,0x85,0x75,0x71,0x0D,0x07,0x3D,0x13,0x39,0xF1,0xE1,0xA1,0x25,0x37,0x49,0xFF,0xBE,0xF6,0x0F,0x8F,0x4F,0x2F,0x1F,0x0F,0x13,0x01,0x7F,0x7D,0x7B,0x79,0x75,0x73,0x71,0x70,0x99,0xC3,0x3F,0x9F,0xCF,0x6F,0x7D,0xF9,0xF3,0xD7,0xF7,0xDF,0x7F,0xFB,0x5F,0x7B,0x5B,0xBD,0xF5,0x6D,0x37,0xE3,0xB9,0x9D,0x7C,0xE7,0xBD,0xCa,0x00}; +uint8_t Digitos[]={0x08,0x04,0x02,0x01,0x00,0x0F}; // Millares, Centenas, Decenas, Unidades, Apagados, Encendidos +uint8_t Numeros[]={1,0,2,4}; +uint8_t Cadena[]={33,0,21,10,36,14,28,18,22,36,35,10,12,10,29,14,23,12,24,36,36}; +uint8_t Tecla[]={1,2,3,10,4,5,6,11,7,8,9,12,75,0,74,13}; +uint8_t Boton[]={1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1}; +uint8_t Boton_Ant[]={1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1}; +uint8_t Edo_Boton[]={off,off,off,off, off,off,off,off, off,off,off,off, off,off,off,off}; +uint8_t Renglon[]={0,0,0,0}; +uint8_t punto_decimal=0; //Posición del punto decimal: 0=sin punto, 1=unidades, 2=decenas, 3=centemas 4=millares, +uint8_t cont_1ms; +uint8_t cont_10ms; +uint8_t cont_100ms; +uint8_t cont_1s; +uint8_t scan_rate=25; +uint8_t shift_rate=0; +uint16_t counter=250; +uint8_t i=0; +uint8_t j=0; +uint8_t valor=0; +uint8_t nchar=0; +bool flag1=FALSE; +bool flag2=FALSE; +bool Blinking=FALSE; +bool mode=0; /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ - // Las Definiciones de Funciones Prototipo - // y Apuntadores a Vectores de Interrupciones van aquí ! -void TimerInt_OnInterrupt(void); -void Blinking_Led(void); -/* END prototypes */ - -/* END definitions */ +void Barrido_OnInterrupt(void); +void Buzzer_SetPeriodMode(float Periodo,bool Estado); /* #=============================================================================== | @@ -90,40 +158,138 @@ | #=============================================================================== */ -int main() -{ // Inicialización de variables, puertos e interrupciones -confSysClock(); // Inicialización del Sistema, Configure system clock (72MHz HSE clock, 48MHz USB clock) -TimerInt.attach_us(&TimerInt_OnInterrupt, Ticker_Rate); // Le asigna el periodo de interrupción de 1ms (Ticker_Rate=1000) - -terminal.baud(115200); // Se configura la velocidad de transmisión e inicia la comunicación serial. -terminal.printf(" System is Wake Up!.\n\r"); - - while (true) // El Lazo del Programa principal está aquí !!! - { - Blinking_Led(); // Parapadeo del LED por Software - servo = sensor1.read(); // - terminal.printf("Blink \r\n"); +int main() +{ + // Inicialización de variables, puertos e interrupciones + Terminal.baud(115200); // Establece la velocidad de Transmisión de la Terminal + Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Period); // Periodo de Interrupción del Timer = 1ms (Ticker_Period=1000) + Renglones.mode(PullUp); // Habilita los Pull-Up's de las entradas + while (true) + { //El Programa principal está aquí !!! + nchar=0; // Inicializa el contador de caracteres a desplegar + if (flag1==TRUE) + { + Buzzer_SetPeriodMode(LA4,FALSE);// Apaga el Buzzer + Buzzer=off; // Apaga el Buzzer + Anodos=Digitos[4]; // Apaga todos los Digitos (Evita fantasmas) + Catodos=Segmentos[Numeros[i]]; // Escribe los segmentos del Dígito + if (i==4-punto_decimal) Catodos=(Segmentos[Numeros[i]]& 0xFE); // Enciende el punto decimal + Anodos=Digitos[i]; // Activa el Dígito/columna + valor=Renglones; // Lee los renglones + Renglon[i]=(valor>>i)&1; // Obtiene el valor de cada bit del renglón + Boton[i+j]=Renglon[i]; // Llena el renglon-columna correspondiente + if (Boton[i+j]==1) + { + Buzzer_SetPeriodMode(DO5,TRUE); // Selecciona Tono y lo habilita + Buzzer=on; // Enciende el Buzzer + } + if ( Boton[i+j] && Boton_Ant[i+j]) + { + Edo_Boton[i+j]= off; // El Botón está Apagado + } + if (!Boton[i+j] && Boton_Ant[i+j]) + { + Edo_Boton[i+j]= on; // El Botón está Encendido + } + if (!Boton[i+j] && !Boton_Ant[i+j]) + { + Edo_Boton[i+j]= hold; // El Botón está Presionado + } + if ( Boton[i+j] && !Boton_Ant[i+j]) + { + Edo_Boton[i+j]= release; // El Botón está Liberado + } + Boton_Ant[i+j]=Boton[i+j]; // Actualiza el valor del botón anterior + if (valor != 0xFF) + { + Numeros[0]= Digit_Null; // Millares + Numeros[1]= Digit_Null; // Centenas + Numeros[2]= Digit_Null; // Decenas + Numeros[3]= Tecla[i+j]; // Unidades + mode=2; + } + i++; // Incrementa la columna + if (i==4) // Se terminó de barrer las columnas? + { + i=0; // Reinicia las columnas + j=j+4; // Brinca al siguiente renglón + if (j==16) j=0; // Se terminó de barrer los renglones? Reinicia los renglones + + if (mode==1) // Se va a desplegar un mensaje? + { + Numeros[i]=Cadena[i+nchar]; // Cargamos 4 caracteres en el buffer de despliege + if (nchar >= String_Size) nchar=0; // Restablece el contador de caractres + } + if (mode==2) // Se va a desplegar un el valor de la botonera + { + if ( Blinking==1) punto_decimal=3; // Activa los puntos del Reloj + if ( Blinking==0) punto_decimal=0; // Desactiva los puntos del Reloj + if (i==4-punto_decimal) + Catodos=Segmentos[Numeros[i]&0xFE]; // Enciende el punto decimal + Terminal.printf("Tecla Oprimida: %c",valor); + } + Red_Led=!Red_Led; // Parpadeo del Led Rojo + } + + flag1=FALSE; // Apaga la Bandera 1 + } + if (flag2==TRUE) // Está puesta la Bandera 2? + { + Green_Led=!Green_Led; // Parpadeo del Led Verde + flag2=FALSE; // Apaga la Bandera 2 + } } } -/* END main */ - +/* END main() */ /* ................................................................................ : Rutinas de los Vectores de Interrupción ................................................................................ */ - // Las Rutinas de Atención a Interrupciones van aquí ! -void TimerInt_OnInterrupt() // Rutina de Atención al Ticker +void Barrido_OnInterrupt(void) // Rutina de Atención al Ticker { - counter--; // Aquí va la Rutina de Servicio ! - if (!counter) + cont_1ms++; + scan_rate++; + counter--; + if(!scan_rate) // Se terminó el tiempo de barrido + { + scan_rate=Rate_Period; // Restablece el tiempo de barrido? + flag1=TRUE; // Enciende la bandera para las rutinas de despliege y teclado + } + if (cont_1ms>=10) + { + cont_10ms++; + cont_1ms=0; + } + if (cont_10ms>=10) + { + cont_100ms++; + cont_10ms=0; + } + if (cont_100ms>=10) { - terminal.printf("Counter Finish! \r\n"); - led_monitor = !led_monitor; // Parapadeo del LED por Interrupción (LED Toggled) - counter = Rate; // Restablece el contador, Le asigna el periodo de 0.5ms (Rate=500) - } -} -/* END Events */ + cont_1s++; + cont_100ms=0; + } + if (cont_1s>=10) + { + cont_1s=0; + } + if (!counter) // Se terminó de contar? + { + counter=500; // Restablece el contador + Blinking= !Blinking; // Parpadeo + shift_rate --; // Decrementa el tiempo del corrimiento + flag2=TRUE; // Prende la bandera para realizar un desplazamiento + } + if (!shift_rate) // Se terminó el tiempo de corrimiento? + { + mode=!mode; // Tiempo entre desplazamientos del mensaje + shift_rate = Shift_Time; // Restablece el tiempo de los corrimientos + } +} +/* END Events */ + /* ________________________________________________________________________________ | @@ -131,68 +297,232 @@ |_______________________________________________________________________________ */ // Las Funciones Prototipo van aquí ! -void Blinking_Led() // Software Blinking routine for LED +void Buzzer_SetPeriodMode(float Periodo,bool Estado) { - // The on-board LED is connected, via a resistor, to +3.3V (not to GND). - // So to turn the LED on or off we have to set it to 0 or 1 respectively - led_testigo = 1; // turn the LED on (using Positive Logic) - wait_ms(200); // 200 millisecond - led_testigo = 0; // turn the LED off (using Positive Logic) - wait_ms(1000); // 1000 millisecond + Buzzer.period(Periodo); + Buzzer.pulsewidth(Periodo/2); + if (Estado==1)Buzzer=0.5; + if (Estado==0)Buzzer=0.0; } -/* END functions */ -/* END program */ +/* END Routines */ -/*+----------------------------------------------------------------------------- -*+ Conexión al Led Testigo: -*+ -*+ Los leds se pueden conectar a cualquier pin que se declare como DigitalOut. -*+ El dispositivo puede drenar hasta 20ma por todas sus salidas a un voltaje de -*+ 3.3V, pero se recomienda no exceder de 1mA por salida. -*+ Esto se logra poniendo una resistencia limitadora de mínimo 330 Ohms. +/* END program */ +/*+------------------------------------------------------------------------------------ +*+ Descripción del Display de 7 Segmentos de Anodos Comunes en modo multiplexado +*+------------------------------------------------------------------------------------- +*+ 13 12 11 10 9 8 +*+ | | | | | | +*+ | | | | | | +*+ -------------------------------------------------- +*+ | A a f A A b | +*+ | 4 3 2 | +*+ | ______________________________________________ | +*+ | | ____ ____ _____ _____ | | +*+ | | / / / / / / / / | | +*+ | | /____ / /____ / . /____ / /____ / | | +*+ | | / / / / . / / / / | | +*+ | | /____ /. /_____/ . /____ /. /____ /. | | +*+ | | | | +*+ | |______________________________________________| | +*+ | | +*+ | A | +*+ | e d p c g 1 | +*+ -------------------------------------------------- +*+ | | | | | | | +*+ | | | | | | | +*+ 1 2 3 4 5 6 7 +*+ +*+ Display: HS410561K-D30 +*+ +*+ +*+ 13 12 11 10 9 8 +*+ | | | | | | +*+ | | | | | | +*+ -------------------------------------------------- +*+ | A g f p a b | +*+ | 4 | +*+ | ______________________________________________ | +*+ | | ____ ____ _____ _____ | | +*+ | | / / / / / / / / | | +*+ | | /____ / /____ / . /____ / /____ / | | +*+ | | / / / / . / / / / | | +*+ | | /____ /. /_____/ /____ /. /____ /. | | +*+ | | | | +*+ | |______________________________________________| | +*+ | | +*+ | A A A | +*+ | e 3 2 c d 1 | +*+ -------------------------------------------------- +*+ | | | | | | | +*+ | | | | | | | +*+ 1 2 3 4 5 6 7 +*+ +*+ Display: BQ-M544RE +*+ +*+ +*+ 16 15 14 13 11 +*+ | | | | | +*+ | | | | | +*+ -------------------------------------------------- +*+ | b g a c f | +*+ | | +*+ | ______________________________________________ | +*+ | | ____ ____ _____ . _____ | | +*+ | | / / / / / / / / | | +*+ | | /____ / /____ / . /____ / /____ / | | +*+ | | / / / / . / / / / | | +*+ | | /____ /. /_____/ . /____ /. /____ /. | | +*+ | | | | +*+ | |______________________________________________| | +*+ | | +*+ | A A A A A | +*+ | 4 3 3 p e 2 p 1 | +*+ -------------------------------------------------- +*+ | | | | | | | | +*+ | | | | | | | | +*+ 1 2 3 4 5 6 7 8 +*+ +*+ Display: KEM-3942BSR +*+ ++* +*+ +*+ 12 11 10 9 8 7 +*+ | | | | | | +*+ | | | | | | +*+ -------------------------------------------------- +*+ | A a f A A b | +*+ | 4 3 2 | +*+ | ______________________________________________ | +*+ | | ____ ____ _____ _____ | | +*+ | | / / / / / / / / | | +*+ | | /____ / /____ / . /____ / /____ / | | +*+ | | / / / / . / / / / | | +*+ | | /____ /. /_____/ . /____ /. /____ /. | | +*+ | | | | +*+ | |______________________________________________| | +*+ | | +*+ | A | +*+ | e d p c g 1 | +*+ -------------------------------------------------- +*+ | | | | | | +*+ | | | | | | +*+ 1 2 3 4 5 6 +*+ +*+ Display: FYQ-2841BH +*+ +*+ +*+ PTA17 PTA16 PTA15 PTA14 +*+ A4 A3 A2 A1 +*+ Mill Cent Dec Uni *+ -*+ 3.3V o 5V -*+ O -*+ | -*+ | -*+ / -*+ \ 1K -*+ / -*+ \ UTILIZANDO LÓGICA NEGATIVA -*+ | -*+ ___|___ -*+ \ / -*+ \ / -*+ \ / -*+ __\/__ -*+ | -*+ |__________________________ PIN (Digital Out) +*+ FRDM_KL25Z PTE23 PTE22 PTE21 PTE20 PTE5 PTE4 PTE3 PTE2 # Hex +*+ FRDM-KL46Z PTE23 PTE22 PTE21 PTE20 PTE19 PTE18 PTE17 PTE16 # Hex Offset +*+ a +*+ ______ g f a b c d e p +*+ / / 1 0 0 0 1 0 0 0 0 0x81 0 +*+ f / g / b 1 1 0 1 1 1 1 0 1 0xE7 1 +*+ /_____/ 1 0 1 1 0 1 0 0 2 0x49 2 +*+ / / 1 0 0 1 0 1 0 0 3 0x43 3 +*+ e / / c 1 1 0 1 0 0 1 0 4 0x27 4 +*+ /_____/ . 1 0 0 1 0 0 0 1 5 0x13 5 +*+ d p 1 0 0 0 0 0 0 1 6 0x11 6 +*+ 1 1 0 1 1 1 0 0 7 0xC7 7 +*+ 1 0 0 0 0 0 0 0 8 0x01 8 +*+ 1 0 0 1 0 0 0 0 9 0x03 9 +*+ 1 1 0 0 0 0 0 0 A 0x05 10 +*+ 1 0 0 0 0 0 1 1 b 0x31 11 +*+ 1 0 1 0 1 0 0 1 C 0x99 12 +*+ 1 0 0 0 0 1 1 0 d 0x61 13 +*+ 1 0 1 0 0 0 0 1 E 0x19 14 +*+ 1 1 1 0 0 0 0 1 f 0x1D 15 +*+ 1 0 0 0 1 0 0 1 G 0x91 16 +*+ 1 1 0 0 0 0 1 1 h 0x35 17 +*+ 1 1 0 1 1 1 1 1 i 0xBD 18 +*+ 1 0 0 0 1 1 1 0 J 0xB3 19 +*+ 1 0 1 0 0 0 1 0 k 0x2D 20 +*+ 1 0 1 0 1 0 1 1 L 0xB9 21 +*+ 1 1 0 0 1 0 0 0 M 0x85 22 +*+ 1 1 0 0 0 1 1 1 n 0x75 23 +*+ 1 0 0 0 0 1 1 1 o 0x71 24 +*+ 1 1 1 0 0 0 0 0 P 0x0D 25 +*+ 1 1 0 1 0 0 0 0 q 0x07 26 +*+ 1 1 1 0 0 1 1 1 r 0x3D 27 +*+ 1 0 0 1 0 0 0 1 s 0x13 28 +*+ 1 0 1 0 0 0 1 1 t 0x39 29 +*+ 1 0 0 0 1 1 1 1 u 0xF1 30 +*+ 1 0 0 0 1 0 1 1 V 0xE1 31 +*+ 1 0 0 0 1 0 1 0 w 0xA1 32 +*+ 1 1 0 0 1 0 1 0 X 0x25 33 +*+ 1 0 0 1 0 0 1 0 y 0x37 34 +*+ 1 0 1 0 1 1 0 0 Z 0x49 35 +*+ 1 0 0 0 0 1 0 0 a 0x84 36 +*+ 1 0 1 0 0 0 0 0 e 0xA0 37 +*+ 1 1 1 1 0 0 0 1 + c 0xF1 38 +*+ 1 1 1 1 0 1 0 0 +/c 0xF4 39 +*+ 1 0 1 0 0 1 1 1 c 0xA7 40 +*+ 1 0 0 1 0 1 1 1 /c 0x97 41 +*+ 1 1 1 1 0 0 1 0 + u 0xF2 42 +*+ 1 1 1 1 1 0 0 0 + n 0xF8 43 +*+ 1 0 1 0 1 0 0 1 [ 0xA9 44 +*+ 1 0 0 1 1 1 0 0 ] 0x9C 45 +*+ 1 1 1 1 0 0 0 0 ° 0xF0 46 +*+ 1 1 1 1 1 1 0 0 ¬ 0xFC 47 +*+ 1 1 1 1 0 1 1 0 + > 0xF6 48 +*+ 1 1 1 0 0 1 1 1 ^ 0xE7 49 +*+ 1 0 1 0 1 1 1 1 / < 0xAF 50 +*+ 1 0 0 1 1 1 1 1 / v 0x9F 51 +*+ 1 1 0 1 0 1 1 1 > 0xD7 52 +*+ 1 1 1 1 0 0 1 1 v 0xF3 53 +*+ 1 1 1 1 1 0 0 1 < 0xF9 54 +*+ 1 1 1 1 1 1 0 1 / _ 0xBF 55 +*+ 1 1 1 1 0 1 1 1 - 0xF7 56 +*+ 1 0 1 1 1 1 1 1 _ 0xFD 57 +*+ 1 1 1 1 0 1 0 1 = 0xF5 58 +*+ 1 0 1 1 0 1 1 1 / = 0xB7 59 +*+ 1 0 1 1 0 1 0 1 == 0xB5 60 +*+ 1 0 1 1 1 1 0 1 _¬ 0xBD 61 +*+ 1 1 0 0 1 1 1 1 ii 0xCF 62 +*+ 1 1 1 1 1 0 1 0 # 0xFA 63 +*+ 1 0 0 1 1 1 1 0 j 0x9E 64 +*+ 1 1 0 1 1 1 0 0 /j 0xDC 65 +*+ 1 1 1 0 1 0 0 1 - j 0xE9 66 +*+ 1 0 1 0 1 0 1 1 -/j 0xAB 67 +*+ 1 0 0 0 1 1 1 0 - J 0x8E 68 +*+ 1 1 0 1 1 0 0 0 -/J 0xD8 69 +*+ 1 1 1 0 1 0 1 1 | 0xEB 70 +*+ 1 1 0 0 1 0 1 0 || 0xCA 71 +*+ 1 1 0 1 0 1 1 0 + 0xD6 72 +*+ 1 1 1 0 0 0 1 1 /+ 0xE3 73 +*+ 1 0 0 1 1 0 1 1 espacio 0xFF 74 *+ -*+ -*+ -*+ -*+ 1K -*+ -*+ _________/\ /\ /\ _____ PIN (Digital Out) -*+ | \/ \/ \/ -*+ | -*+ | -*+ ___|___ -*+ \ / -*+ \ / -*+ \ / UTILIZANDO LÓGICA POSITIVA -*+ __\/__ -*+ | -*+ | -*+ | -*+ ___|___ -*+ _____ -*+ ___ -*+ _ +*+ Nota: Cada dígito se activa al hacer la señal A correspondiente en "alto" +*+ y enviar las señales de los segmentos que se desean encender en "bajo" *+ -*+ GND -*+ +*+---------------------------------------------------------------------------------------- */ +/*........................................................................................ +: +: TECLADO MATRICIAL DE 4X4 +: +: C1 C2 C3 C4 +: | | | | +: | | | | +: | 1 | 2 | 3 | F1 +: R1 __/ ________/ ________/ ________/ +: | | | | +: | 4 | 5 | 6 | F2 +: R2 __/ ________/ ________/ ________/ +: | | | | +: | 7 | 8 | 9 | F3 +: R3 __/ ________/ ________/ ________/ +: | | | | +: | * | 0 | # | F4 +: R4 __/ ________/ ________/ ________/ +: +: +: Función: REN1 REN2 REN3 REN4 COL1 COL2 COL3 COL4 +: Pin: 1 2 3 4 5 6 7 8 +.......................................................................................... *+----------------------------------------------------------------------------* *+ *+ Powered by @@ -204,5 +534,5 @@ *+ *+ Welcome to The Beaners Proyect Community! *+----------------------------------------------------------------------------*/ - +/* END Mbed */ /* END Mbed */ \ No newline at end of file