| @ -0,0 +1,153 @@ | |||
| # Diseño de teclado mecánico y prueba de funcionamiento con microcontrolador MSP430 | |||
| Galván.A , Chávez.G , Enero 2023. | |||
| ------ | |||
| **Abstract** | |||
| This document aims to show how a mechanical keybord 1x4 was made using UPVERTER software and how it was tested with an easy program using the MSP430FR6989 microcontroller target device and Code Composer Studio. | |||
| [TOC] | |||
| ------ | |||
| ## **Introducción** | |||
| Se realizó el diseño de un teclado 1x4 con botones mecánicos con la finalidad de que este sea un medio más cómodo para el usuario para interactuar con otros dispositivos e introducir información o comandos para ejecutar una tarea específica. Para el diseño, se empleó el software libre UPVERTER el cuál permite realizar modelos de PCBs a partir del diseño de un circuito. En este caso, también se tuvo que diseñar el botón mecánico, debido a su forma y medidas específicas. | |||
| ## **Desarrollo** | |||
| #### Esquemático del teclado mecánico | |||
| A continuación, se muestra una imagen del circuito esquemático del teclado de botones mecánicos. | |||
| [](https://postimg.cc/rzxDSfSF) | |||
| #### PCB Layout del teclado mecánico | |||
| Este diseño permite en la programación implementar detección de filas y columnas para saber qué tecla fue presionada así como tomar cada botón por separado con una tierra común y detectar la tecla por medio de interrupciones. A continuación, se aprecia el diseño representativo del lugar de cada componente en el PCB así como las pistas del mismo. | |||
| [](https://postimg.cc/DJYPLBsc) | |||
| #### Teclado mecánico | |||
| En seguida, se muestran imagenes del PCB terminado del teclado 1x4 con botones mecánicos. | |||
| [](https://postimg.cc/hJVG9jdZ) | |||
| [](https://postimg.cc/vgzHNNXW) | |||
| #### Código | |||
| En seguida, se muestra el código usado para probar el teclado matricial; para ello, se empleó el microcontrolador MSP430FR6989 y el programa Code Composer Studio para desarrollarlo. El programa consiste en el encendido y apagado de los LEDs integrados del microcontrolador según la tecla que se presione. | |||
| ```c | |||
| #include <msp430fr6989.h> | |||
| char lec=0; | |||
| int cont1,cont2,cont3,cont4; | |||
| void main(void) | |||
| { | |||
| WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer | |||
| PM5CTL0 = 0x0000;// DESACTIVAR EL MODO DE ALTA IMPEDANCIA | |||
| /*Confg. de perifericos */ | |||
| P1SEL0 = 0x00; | |||
| P1SEL1 = 0x00; //SELECCIONAMOS FUNCION COMO I/O DIGITAL | |||
| P1DIR = 0x01; //P1.0-> SALIDA P1.1-P1.7-> ENTRADAS | |||
| P1REN = 0xFE; | |||
| P1OUT = 0xFE; | |||
| P1IE = 0x7E; | |||
| P1IES = 0x00; | |||
| P1IFG = 0x00; | |||
| P9SEL0 = 0x00; | |||
| P9SEL1 = 0x00; //SELECCIONAMOS FUNCION COMO I/O DIGITAL | |||
| P9DIR = 0x80; //P9.7-> SALIDA P9.0-P9.6->ENTRADAS | |||
| P9REN = 0x7f; | |||
| P9OUT = 0x00; | |||
| __enable_interrupt(); //también se puede usar _enable_interrupts() | |||
| for(;;) | |||
| { | |||
| }//loop | |||
| }//main | |||
| //**************Interruptions************** | |||
| #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) | |||
| #pragma vector=PORT1_VECTOR | |||
| __interrupt void inter_puerto1(void) | |||
| #elif defined(__GNUC__) | |||
| void __attribute__ ((interrupt(PORT1_VECTOR))) PORT1_ISR (void) | |||
| #else | |||
| #error Compiler not supported! | |||
| #endif | |||
| { | |||
| lec=P1IFG; | |||
| lec &= BIT3; | |||
| __delay_cycles(250); | |||
| if( P1IFG == BIT3){ | |||
| cont1++; | |||
| P1OUT ^= 0x01; | |||
| } | |||
| lec &= BIT4; | |||
| __delay_cycles(250); | |||
| if( P1IFG == BIT4){ | |||
| cont2++; | |||
| P9OUT ^= 0x80; | |||
| } | |||
| lec &= BIT5; | |||
| __delay_cycles(250); | |||
| if( P1IFG == BIT5){ | |||
| cont3++; | |||
| P1OUT ^= 0x01; | |||
| } | |||
| lec &= BIT6; | |||
| __delay_cycles(250); | |||
| if( P1IFG == BIT6){ | |||
| cont4++; | |||
| P9OUT ^= 0x80; | |||
| } | |||
| P1IFG=0x00; | |||
| } | |||
| ``` | |||
| ## **Anexos** | |||
| #### Microcontrolador implementado (MSP430FR6989) | |||
|  | |||
| #### Esquemático del microcontrolador. | |||
|  | |||
| #### Salidas del microcontrolador. | |||
|  | |||
| ## **Referencias** | |||
| [1] Texas Instruments. Msp430-gcc-opensource gcc-open source compiler for msp microcontrollers, 2017. | |||
| [2] Kaihua Electronics Co, LTD. CPG1511 Keyboard Switch, 2016. | |||