STM32F103C8_Barrido_Display Barrido de un Display de Ánodo Común
Dependencies: mbed
Diff: main.cpp
- Revision:
- 2:49e089d4d1ac
- Parent:
- 1:dc2ae76df12d
--- a/main.cpp Fri Jun 28 19:32:38 2019 +0000 +++ b/main.cpp Wed Nov 13 00:51:19 2019 +0000 @@ -1,6 +1,6 @@ /* ########################################################################### ** Archivo : main.c -** Proyecto : STM32-F103C8_Plantilla +** Proyecto : STM32-F103C8_Barrido_Teclado ** Procesador : STM32F103C8 ** Herramienta : Mbed ** Version : Driver 01.01 @@ -30,12 +30,8 @@ : Includes :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ +#include "stm32f103c8t6.h" #include "mbed.h" -#include "stm32f103c8t6.h" -//#include "stm32f10x.h" -#include "PinNames.h" -//#include "SysClockConf.h" -//#include "AnalogIn.h" //#include "Led_RGB.h" //#include "Serial.h" //#include "stdio.h" @@ -101,24 +97,25 @@ | Configuración de Puertos +------------------------------------------------------------------------------- */ -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 +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 +DigitalOut Led_Verde (PC_11); // Led de Actividad del Programa +DigitalOut Led_Rojo (PB_11); // Led de Actividad del Programa +PwmOut Buzzer (PB_13); // Salida del Buzzer +Ticker Barrido; // Interrupción por el Temporizador +// ***** Host PC Terminal Communication channels +Serial Terminal (PA_2, PA_3); // Inicializa la comunicación serial a la PC (Tx,Rx) +//Serial Terminal(USBTX, USBRX); // Activa la Terminal a traves del Puerto USB /* +------------------------------------------------------------------------------- | Variables Globales de Usuario +------------------------------------------------------------------------------- */ 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}; +// 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 +//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 ! " # $ % & ' ( ) * + - . / : ; < > ? @ +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}; 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}; @@ -161,84 +158,130 @@ int main() { // Inicialización de variables, puertos e interrupciones - Terminal.baud(115200); // Establece la velocidad de Transmisión de la Terminal + confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock) 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) + Renglones.mode(PullUp); // Habilita los Pull-Up's de las entradas de los renglones + Terminal.baud(115200); // Establece la velocidad de Transmisión de la Terminal + Terminal.printf("\e[2J"); // Clear Screen + Terminal.printf(" System is Wake Up!.\n\r"); // e inicia la comunicación serial + Terminal.printf ("\t\e[1;37;41mInstituto Politecnico Nacional\e[0m\n\r"); + Terminal.printf ("\e[1;37;42mESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA\e[0m\n\r\v"); + Terminal.printf ("\t\e[1;34;40mBarrido \e[1;37;40mdel \e[1;31;40mDisplay \e[1;33;40mde \e[1;32;40m7 Segmentos\e[0m \e[1;35;40my \e[1;36;40mTeclado \n\r\v\v\e[0m"); + 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 + //------------------ Barrido de los Digitos ------------------------ + 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 + //------------------ Barrido del Teclado --------------------------- + valor=Renglones; // Lee los renglones. Posibles valores: 0xFF,0xFE,0xFD,0xFB,0xF7 + if (valor==0x0E) + { + if (i==0) printf ("Tecla=1\r"); + if (i==1) printf ("Tecla=2\r"); + if (i==2) printf ("Tecla=3\r"); + if (i==3) printf ("Tecla=F1\r"); + } + if (valor==0x0D) + { + if (i==0) printf ("Tecla=4\r"); + if (i==1) printf ("Tecla=5\r"); + if (i==2) printf ("Tecla=6\r"); + if (i==3) printf ("Tecla=F2\r"); + } + if (valor==0x0B) + { + if (i==0) printf ("Tecla=7\r"); + if (i==1) printf ("Tecla=8\r"); + if (i==2) printf ("Tecla=9\r"); + if (i==3) printf ("Tecla=F3\r"); + } + if (valor==0x07) + { + if (i==0) printf ("Tecla=*\r"); + if (i==1) printf ("Tecla=0\r"); + if (i==2) printf ("Tecla=#\r"); + if (i==3) printf ("Tecla=F4\r"); + } + if (valor==0x0F) { - 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]) + if (i==0) printf ("Tecla=H\r"); + if (i==1) printf ("Tecla=O\r"); + if (i==2) printf ("Tecla=L\r"); + if (i==3) printf ("Tecla=A\r"); + } + +// Renglon[i]=(valor>>i)&1; // Obtiene el valor de cada bit del renglón +// Boton[i+j]=Renglon[i]; // Llena el renglon-columna correspondiente + Terminal.printf("Tecla Oprimida: %c\r",valor); +/* 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 { - 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 ( 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\r",valor); + } + Led_Rojo=!Led_Rojo; // Parpadeo del Led Rojo + } - 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 - } - } + flag1=FALSE; // Apaga la Bandera 1 + } + if (flag2==TRUE) // Está puesta la Bandera 2? + { + Led_Verde=!Led_Verde; // Parpadeo del Led Verde + flag2=FALSE; // Apaga la Bandera 2 + } + } } /* END main() */ /* @@ -246,11 +289,11 @@ : Rutinas de los Vectores de Interrupción ................................................................................ */ -void Barrido_OnInterrupt(void) // Rutina de Atención al Ticker +void Barrido_OnInterrupt() // Rutina de Atención al Ticker { - cont_1ms++; - scan_rate++; - counter--; + cont_1ms++; // Incrmenta el contador de milisegundos + scan_rate--; // Decrementa el tiempo de despliege + counter--; // Decrementa el contador de eventos if(!scan_rate) // Se terminó el tiempo de barrido { scan_rate=Rate_Period; // Restablece el tiempo de barrido? @@ -308,9 +351,49 @@ /* END Routines */ /* END program */ -/*+------------------------------------------------------------------------------------ +/*+----------------------------------------------------------------------------- +*+ CD4041 Quad Buffer/Inverter +*+------------------------------------------------------------------------------ +*+ +*+ |\ 1 +*+ | \------- A1 +*+ 3 | \ +*+ PB_12 -----| > +*+ | / 2 +*+ | /o------ COL1 +*+ |/ +*+ +*+ +*+ |\ 8 +*+ | \------- A2 +*+ 10 | \ +*+ PB_13 -----| > +*+ | / 9 +*+ | /o------ COL2 +*+ |/ +*+ +*+ +*+ |\ 4 +*+ | \------- A3 +*+ 6 | \ +*+ PB_14 -----| > +*+ | / 5 +*+ | /o------ COL3 +*+ |/ +*+ +*+ +*+ +*+ |\ 11 +*+ | \------- A4 +*+ 13 | \ +*+ PB_15 -----| > +*+ | / 12 +*+ | /o------ COL4 +*+ |/ +*+ +*+------------------------------------------------------------------------------ *+ Descripción del Display de 7 Segmentos de Anodos Comunes en modo multiplexado -*+------------------------------------------------------------------------------------- +*+------------------------------------------------------------------------------ *+ 13 12 11 10 9 8 *+ | | | | | | *+ | | | | | | @@ -361,6 +444,33 @@ *+ Display: BQ-M544RE *+ *+ +*+ 12 11 10 9 8 7 +*+ | | | | | | +*+ | | | | | | +*+ -------------------------------------------------- +*+ | A a f A A b | +*+ | 4 3 2 | +*+ | ______________________________________________ | +*+ | | ____ ____ _____ . _____ | | +*+ | | / / / / / / / / | | +*+ | | /____ / /____ / . /____ / /____ / | | +*+ | | / / / / . / / / / | | +*+ | | /____ /. /_____/ . /____ /. /____ /. | | +*+ | | | | +*+ | |______________________________________________| | +*+ | | +*+ | A A | +*+ | e d p c g 1 | +*+ -------------------------------------------------- +*+ | | | | | | +*+ | | | | | | p1 = g +*+ 1 2 3 4 5 6 p2 = c +*+ p3 = d +*+ Display: HS-5463BS p4 = e +*+ Cátodo Común pu = b +*+ pd = f +*+ +*+ *+ 16 15 14 13 11 *+ | | | | | *+ | | | | | @@ -377,7 +487,7 @@ *+ | |______________________________________________| | *+ | | *+ | A A A A A | -*+ | 4 3 3 p e 2 p 1 | +*+ | 4 3 d p e 2 p 1 | *+ -------------------------------------------------- *+ | | | | | | | | *+ | | | | | | | | @@ -412,12 +522,14 @@ *+ Display: FYQ-2841BH *+ *+ -*+ PTA17 PTA16 PTA15 PTA14 +*+ FRDM-KL46Z PTA17 PTA16 PTA15 PTA14 +*+ STM32-F103C8 PB_15 PB_14 PB_13 PB_12 *+ A4 A3 A2 A1 *+ Mill Cent Dec Uni *+ -*+ FRDM_KL25Z PTE23 PTE22 PTE21 PTE20 PTE5 PTE4 PTE3 PTE2 # Hex -*+ FRDM-KL46Z PTE23 PTE22 PTE21 PTE20 PTE19 PTE18 PTE17 PTE16 # Hex Offset +*+ FRDM_KL25Z PTE23 PTE22 PTE21 PTE20 PTE5 PTE4 PTE3 PTE2 # Hex Offset +*+ FRDM-KL46Z PTE23 PTE22 PTE21 PTE20 PTE19 PTE18 PTE17 PTE16 # Hex Offset +*+ STM32-F103C8 PA_8 PA_9 PA_10 PA_11 PA_12 PA_15 PB_3 PB_4 # Hex Offset *+ a *+ ______ g f a b c d e p *+ / / 1 0 0 0 1 0 0 0 0 0x81 0 @@ -439,7 +551,7 @@ *+ 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 0 0 1 1 1 0 J 0xE3 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 @@ -447,17 +559,33 @@ *+ 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 1 1 0 0 1 1 1 r 0x7D 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 1 V 0xB1 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 0 1 0 0 1 0 y 0x23 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 1 1 1 1 space 0xFF 36 +*+ 0 1 0 0 0 0 0 1 a 0x41 37 +*+ 0 0 0 0 1 0 0 1 e 0x09 38 +*+ 0 0 0 0 0 0 1 1 /e 0x03 39 +*+ 0 0 0 1 0 0 0 1 @ 0x11 40 +*+ 0 1 0 1 0 1 0 1 ñ 0x55 41 +*+ 1 0 0 1 1 0 0 1 [ 0x99 42 +*+ 0 0 0 0 1 0 0 1 ] 0xC3 43 +*+ 1 0 1 0 0 0 0 1 U 0xA1 44 +*+ 1 0 0 0 0 1 0 1 /U 0x85 45 +*+ 1 1 0 1 1 1 1 1 /_ 0xDF 46 +*+ 0 1 1 1 1 1 1 1 - 0x7F 47 +*+ 1 1 1 1 1 0 1 1 _ 0xFB 48 +*+ 1 1 0 1 1 0 1 1 _/_ 0xDB 49 +*+ 0 1 1 1 1 0 1 1 /= 0x7B 50 +*+ 0 1 0 1 1 1 1 1 = 0x5F 51 +*+ 0 1 0 1 1 0 1 1 == 0x5B 52 +*+ 0 0 0 0 1 1 1 1 ° 0x0F 53 *+ 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 @@ -499,10 +627,10 @@ *+ 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" *+ -*+---------------------------------------------------------------------------------------- */ -/*........................................................................................ +*+----------------------------------------------------------------------------*/ +/*.............................................................................. : -: TECLADO MATRICIAL DE 4X4 +: TECLADO MATRICIAL DE 4X4 DE MEMBRANA : : C1 C2 C3 C4 : | | | | @@ -522,8 +650,29 @@ : : Función: REN1 REN2 REN3 REN4 COL1 COL2 COL3 COL4 : Pin: 1 2 3 4 5 6 7 8 -.......................................................................................... -*+----------------------------------------------------------------------------* +................................................................................ +: +: TECLADO MATRICIAL DE 4X4 DE PUSH BOTTONS +: +: C1 C2 C3 C4 +: | | | | +: | | | | +: | S1 | S2 | S3 | S4 +: R1 __/ ________/ ________/ ________/ +: | | | | +: | S5 | S6 | S7 | S8 +: R2 __/ ________/ ________/ ________/ +: | | | | +: | S9 | S10 | S11 | S12 +: R3 __/ ________/ ________/ ________/ +: | | | | +: | S13 | S14 | S15 | S16 +: R4 __/ ________/ ________/ ________/ +: +: +: Función: COL1 COL2 COL3 REN4 REN1 REN2 REN3 REN4 +: Pin: 1 2 3 4 5 6 7 8 +**+----------------------------------------------------------------------------* *+ *+ Powered by *+ @@ -534,5 +683,5 @@ *+ *+ Welcome to The Beaners Proyect Community! *+----------------------------------------------------------------------------*/ -/* END Mbed */ +/* END Documentation */ /* END Mbed */ \ No newline at end of file