TECLADO DISPLAY
Dependencies: mbed
Revision 1:af2f0021bf9b, committed 2019-10-30
- Comitter:
- micro_IPN_JLL
- Date:
- Wed Oct 30 21:13:30 2019 +0000
- Parent:
- 0:583269628e14
- Commit message:
- TECLADO DISPLAY
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 583269628e14 -r af2f0021bf9b main.cpp --- a/main.cpp Fri Sep 20 20:46:16 2019 +0000 +++ b/main.cpp Wed Oct 30 21:13:30 2019 +0000 @@ -1,253 +1,76 @@ -/* ############################################################################# -** Archivo : main.c -** Proyecto : STM32-F103C8_Torreta -** Procesador : STM32F103C8T6 -** Plataforma : Blue Pill -** Herramienta : Mbed Compiler -** Version : Driver 01.01 -** Compilador : GNU C Compiler -** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0 -** Descripción : -** Este proyecto hace... -** This module contains user's application code. -** Componentes : GPIO, Timer, etc . -** Configuraciones : Includes, Stacks y Drivers externos -** Autores : -** ATEAM Development Group: -** - Antulio Morgado Valle -** -** Versión : Beta -** Revisión : A -** Release : 0 -** Bugs & Fixes : -** Date : 20/10/2019 -** Added support for Led_RGB -** 22/09/2018 -** Added LCD Menu, Beta version (with bugs) -** -** ###########################################################################*/ -/* -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Includes -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -*/ #include "stm32f103c8t6.h" #include "mbed.h" -/* -:............................................................................... -: Definiciones -:............................................................................... -*/ -#define Ticker_Rate 1000 // Periodo de interrupción (us) -/* -+------------------------------------------------------------------------------- -| Configuración de Puertos -+------------------------------------------------------------------------------- -*/ -Ticker Barrido; // Interrupción del Timer -//BusOut Torreta(D0,D1,D2,D3,D4,D5,D6,D7); // Utilizando las definiciones Arduino -BusOut Torreta(PB_4,PB_3,PA_15,PA_12,PA_11,PA_10,PA_9,PA_8); // -DigitalOut Led_Monitor (LED1); // Led monitor de la Tarjeta STM32F103C8 -//PwmOut Buzzer(PB_1); // PB1_TIM3_CH4N -/* -+------------------------------------------------------------------------------- -| Variables Globales de Usuario -+------------------------------------------------------------------------------- -*/ -uint8_t Secuencias[]={ - 0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0, // 8 - 0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0, // 16 - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, // 24 - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, // 32 - 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0xC0, // 40 - 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, // 48 - 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, // 56 - 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, // 64 - 0x07, 0x08, 0x13, 0x20, 0xC0, 0x20, 0xC8, 0x04, // 72 - 0x07, 0x08, 0x13, 0x20, 0xC0, 0x20, 0xC8, 0x04, // 80 - 0x07, 0x0B, 0xD0, 0xE0, 0x07, 0x0B, 0xD0, 0xE0, // 88 - 0x07, 0x0B, 0xD0, 0xE0, 0x07, 0x0B, 0xD0, 0xE0, // 96 - 0x23, 0x13, 0xC8, 0xC4, 0x23, 0x13, 0xC8, 0xC4, // 104 - 0x23, 0x13, 0xC8, 0xC4, 0x23, 0x13, 0xC8, 0xC4, // 112 - 0x23, 0x10, 0xC8, 0x04, 0x23, 0x10, 0xC8, 0x04, // 120 - 0x23, 0x10, 0xC8, 0x04, 0x23, 0x10, 0xC8, 0x04, // 128 - 0x07, 0x43, 0xD0, 0xC4, 0x07, 0x43, 0xD0, 0xC4, // 136 - 0x07, 0x43, 0xD0, 0xC4, 0x07, 0x43, 0xD0, 0xC4, // 144 + +BusOut display(PB_4,PB_3,PA_15,PA_12,PA_11,PA_10,PA_9,PA_8); +BusOut multiplexaje(PA_3,PA_2,PA_1,PA_0); +BusIn entrada(PB_0,PB_1,PB_10,PB_11); +BusOut salida(PB_6,PB_7,PB_8,PB_9); + - 0x03, 0x04, 0x08, 0x10, 0x20, 0xC0, 0x20, 0x10, // 152 - 0x08, 0x04, 0x03, 0x04, 0x08, 0x10, 0x20, 0xC0, // 160 - 0x20, 0x10, 0x08, 0x04, 0x03, 0x04, 0x08, 0x10, // 168 - 0x20, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x03, 0x04, // 176 - 0x08, 0x10, 0x20, 0xC0, 0x20, 0x10, 0x08, 0x04, // 184 - - 0x03, 0x18, 0xC0, 0x3C, 0x03, 0x24, 0xC0, 0x3C, // 192 +uint8_t Numero[4][4]= +{ + {0x42,0xB6,0xBC,0xFA}, + {0xD8,0xEC,0xEE,0xCE}, + {0x38,0xFE,0xFC,0x86}, + {0x80,0x7E,0xFA,0x9E} +}; + +uint8_t catodo[]= +{ + //0b0001,0b0010,0b0100,0b1000 + 0x01,0x02,0x04,0x08 +}; + +uint8_t fila[]= +{ + 0x01,0x02,0x04,0x08 +}; - 0x04, 0x08, 0x10, 0x20, 0x04, 0x08, 0x10, 0x20, // 200 - 0x04, 0x08, 0x10, 0x20, 0x04, 0x08, 0x10, 0x20, // 208 - 0x20, 0x10, 0x08, 0x04, 0x20, 0x10, 0x08, 0x04, // 216 - 0x20, 0x10, 0x08, 0x04, 0x20, 0x10, 0x08, 0x04, // 224 - 0x03, 0x04, 0x03, 0x08, 0x03, 0x10, 0x03, 0x20, // 232 - 0x03, 0x04, 0x03, 0x08, 0x03, 0x10, 0x03, 0x20, // 240 - 0xC0, 0x20, 0xC0, 0x10, 0xC0, 0x08, 0xC0, 0x04, // 248 - 0xC0, 0x20, 0xC0, 0x10, 0xC0, 0x08, 0xC0, 0x04, // 256 - 0x04, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x04, // 264 - 0x04, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x04, // 272 - 0x88, 0x44, 0x11, 0x22, 0x88, 0x44, 0x22, 0x11, // 280 - 0x88, 0x44, 0x11, 0x22, 0x88, 0x44, 0x22, 0x11, // 288 - 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, // 296 - 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, // 304 - 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, // 312 - 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, // 320 - 0x18, 0x81, 0x3C, 0xC3, 0x24, 0x42, 0x0F, 0xF0, // 328 - 0x18, 0x81, 0x3C, 0xC3, 0x24, 0x42, 0x0F, 0xF0, // 336 - 0x18, 0xC3, 0x24, 0xC3, 0x18, 0xC3, 0x24, 0xC3, // 344 - 0x18, 0xC3, 0x24, 0xC3, 0x18, 0xC3, 0x24, 0xC3, // 352 - 0x20, 0x30, 0x10, 0x18, 0x08, 0x0C, 0x04, 0x03, // 360 - 0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20, 0xC0, // 368 - 0x20, 0x30, 0x10, 0x18, 0x08, 0x0C, 0x04, 0x03, // 376 - 0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20, 0xC0, // 384 - 0x81, 0x81, 0x7E, 0x7E, 0x81, 0x81, 0x7E, 0x7E, // 392 - 0x81, 0x7E, 0x81, 0x7E, 0x81, 0x7E, 0x7E, 0x81, // 400 - 0x81, 0x00, 0x81, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 408 - 0x81, 0x00, 0x81, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 416 - 0x80, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 424 - 0x80, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 432 - - 0x33, 0xCC, 0x33, 0xCC, 0x33, 0xCC, 0x33, 0xCC, // 440 - 0x03, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0xC0, 0x3C, // 448 - 0x03, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0xC0, 0x3C, // 456 - 0x3C, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0xC3, 0x00, // 464 - 0x3C, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0xC3, 0x00, // 472 - 0x3C, 0x3C, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, // 480 - 0x3C, 0x3C, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, // 488 - 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, // 496 - 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, // 504 - 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, // 512 - 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, // 520 - 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 528 - 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 536 - 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 544 - 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 552 - 0x00, 0x28, 0x00, 0x14, 0x00, 0x28, 0x00, 0x14, // 560 - 0x00, 0x28, 0x00, 0x14, 0x00, 0x28, 0x00, 0x14, // 568 - 0xC0, 0xF0, 0x30, 0x0C, 0x0F, 0xC0, 0xF0, 0x30, // 576 - 0x0C, 0x0F, 0xC0, 0xF0, 0x30, 0x0C, 0x0F, 0x03, // 584 - 0x03, 0x0F, 0x0C, 0x30, 0xF0, 0xC0, 0x0F, 0x0C, // 592 - 0x30, 0xF0, 0xC0, 0x0F, 0x0C, 0x30, 0xF0, 0xC0, // 600 - 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 608 - 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 616 - 0x00, 0x03, 0x0F, 0x0C, 0x3C, 0x30, 0xF0, 0xC0, // 624 - 0x00, 0x03, 0x0F, 0x0C, 0x3C, 0x30, 0xF0, 0xC0, // 632 - 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 640 - 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 648 - 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, // 656 - 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, // 674 - 0x00, 0xF0, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x0F, // 682 - 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF }; - -uint16_t No_Secuencias=689; // Número de secuencias a desplegar -uint16_t i=0; // Indice para las secuencias -uint16_t delay=250; // Tiempo de retardo entre secuencias (en ms) -uint16_t contador=0; // Contador de mili segundos - -/* END Global Variables */ -/* -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -| Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -*/ -void Barrido_OnInterrupt(void); - -/* -#=============================================================================== -| -| P R O G R A M A P R I N C I P A L -| -#=============================================================================== -*/ -int main() -{ // Inicialización de variables locales, puertos e interrupciones van aquí !!! -confSysClock(); // Inicialización del Sistema, -Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate); // Periodo de la Interrupción por Timer = 1ms (Tcker_Rate=1000) - - while (true) // El Lazo del Programa principal está aquí !!! - { - //El Programa principal no hace nada !!! +uint8_t columna[]= +{ + //0b0001,0b0010,0b0100,0b1000 + 0x01,0x02,0x04,0x08 +}; + +void Encender(int C,int F); + +int main() +{ + + while(1) + { + for(int i=0; i<4; i++) + { + salida=columna[i]; + + if(entrada!=0) + { + if(entrada==fila[0]) + { + Encender(i,0); + }else if(entrada==fila[1]) + { + Encender(i,1); + }else if(entrada==fila[2]) + { + Encender(i,2); + }else if(entrada==fila[3]) + { + Encender(i,3); + } + } + } } } -/* END main */ - -/* -................................................................................ -: Rutinas de los Vectores de Interrupción -................................................................................ -*/ -void Barrido_OnInterrupt() -{ - /* Rutina de Atención a la Interrupción */ - /* Write your code here ... */ - - contador++; // Incremeta el contador de mili segundos - if (contador == delay) // Contador es igual al retardo programado? - { - Torreta=Secuencias[i]; // Escribe la secuencia - i++; // Incrementa el índice - if (i >= No_Secuencias) i=0; // Es la última secuencia? - contador =0; // Reinicia contador de retardo - Led_Monitor = !Led_Monitor; // Parpadeo del Led Monitor - } -} -/* END Events */ -/* -________________________________________________________________________________ -| -| Funciones Prototipo -|_______________________________________________________________________________ -*/ - // Las Funciones Prototipo van aquí ! -//void confSysClock(void); // Configure system clock (72MHz HSE clock, 48MHz USB clock) - -/* END functions */ - -/* END program */ - -/*+----------------------------------------------------------------------------- -*+ La documentación va aquí!: -+-------------------------------------------------------------------------------- -| EJERCICIO -| -| 1.- Modificar este programa para: -| a) Agregar más secuencias (mínimo 32). -| b) Realizar el barrido del arreglo de atrás hacia adelante y repetir -| 2.- Modificar el programa para incluir secuencias de sonidos utiliando el -| módulo PWM (Sirena). -| -+-------------------------------------------------------------------------------- -| -| EXAMEN -| -| 1.- Modificar el programa para que despliegue un rango de secuencias -| determinado. -| 2.- Modificar el programa para incluir un menú de selección de secuencias. -| a) Para la Torreta -| b) Para la Sirena -| c) Combinados -| 3.- Volver a realizar éste programa utilizando tambien con apuntadores. -| -| Mucha Suerte! -| -*+----------------------------------------------------------------------------* -*+ -*+ Powered by -*+ -*+ T H E A N T U L I U ' S T E A M R&D Unltd -*+ -*+ Research, Development, Systems, Equipment, Support & Spare Parts. -*+ (C) Copyright 1989-2019, All Rights Reserved -*+ -*+ Welcome to The Beaners Proyect Community! -*+----------------------------------------------------------------------------*/ - -/* END Mbed */ \ No newline at end of file +void Encender(int C,int F) +{ + multiplexaje=catodo[0]; + + display=Numero[F][C]; + wait_ms(200); + + multiplexaje=0x00; + display=0x00; +} \ No newline at end of file