From e8f5ff1aa0d4476bca70c46a7953adbddf546977 Mon Sep 17 00:00:00 2001 From: griceldacc Date: Mon, 16 Jan 2023 22:18:22 -0600 Subject: [PATCH] version 1 --- readme.md | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..05f9452 --- /dev/null +++ b/readme.md @@ -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. + +[![Schematics.jpg](https://i.postimg.cc/jqkyY92N/Schematics.jpg)](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. + +[![Whats-App-Image-2023-01-16-at-5-57-06-PM.jpg](https://i.postimg.cc/3N3fMqxz/Whats-App-Image-2023-01-16-at-5-57-06-PM.jpg)](https://postimg.cc/DJYPLBsc) + +#### Teclado mecánico + +En seguida, se muestran imagenes del PCB terminado del teclado 1x4 con botones mecánicos. + +[![PCB.jpg](https://i.postimg.cc/tgMVGnCb/PCB.jpg)](https://postimg.cc/hJVG9jdZ) + +[![Paths.jpg](https://i.postimg.cc/Y0cGhcWy/Paths.jpg)](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 + + +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) + +![1.png](https://i.postimg.cc/3NXN4MRW/msp430fr6989.png) + + + +#### Esquemático del microcontrolador. + +![2.png](https://i.postimg.cc/7LjZKPJf/esquematico-MSP430-FR6989.png) + + + +#### Salidas del microcontrolador. + +![3.png](https://i.postimg.cc/wxXjkpqj/pines-de-salida.png) + + + +## **Referencias** + + [1] Texas Instruments. Msp430-gcc-opensource gcc-open source compiler for msp microcontrollers, 2017. + +[2] Kaihua Electronics Co, LTD. CPG1511 Keyboard Switch, 2016. +