FRDM-KL46Z_Barrido_Display

Dependencies:   TSI mbed

Committer:
Antulius
Date:
Thu Jun 27 18:57:00 2019 +0000
Revision:
7:e74aed8c8ee8
Parent:
6:333a2763ad29
FRDM-KL46Z_Barrido_Display

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Antulius 6:333a2763ad29 1 /* ###########################################################################
Antulius 6:333a2763ad29 2 ** Archivo : main.c
Antulius 7:e74aed8c8ee8 3 ** Proyecto : FRDM-KL46Z_Barrido_Teclado
Antulius 6:333a2763ad29 4 ** Procesador : MKL46Z256VLL4
Antulius 6:333a2763ad29 5 ** Herramienta : Mbed
Antulius 6:333a2763ad29 6 ** Version : Driver 01.01
Antulius 6:333a2763ad29 7 ** Compilador : GNU C Compiler
Antulius 6:333a2763ad29 8 ** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0
Antulius 6:333a2763ad29 9 ** Descripción :
Antulius 7:e74aed8c8ee8 10 ** Este proyecto realiza el Barrido de un Dispal de 7 Segmentos y cuatro
Antulius 7:e74aed8c8ee8 11 ** dígitos y al mismo tiempo lee un Teclado mMtricial de 4x4 y obtine el
Antulius 7:e74aed8c8ee8 12 ** el valor y estado de cada una de las teclas.
Antulius 6:333a2763ad29 13 ** This module contains user's application code.
Antulius 6:333a2763ad29 14 ** Componentes : GPIO, Timer, etc .
Antulius 6:333a2763ad29 15 ** Configuraciones : Includes, Stacks y Drivers externos
Antulius 6:333a2763ad29 16 ** Autores :
Antulius 6:333a2763ad29 17 ** ATEAM Development Group:
Antulius 6:333a2763ad29 18 ** - Antulio Morgado Valle
Antulius 6:333a2763ad29 19 **
Antulius 6:333a2763ad29 20 ** Versión : Beta
Antulius 6:333a2763ad29 21 ** Revisión : A
Antulius 6:333a2763ad29 22 ** Release : 0
Antulius 6:333a2763ad29 23 ** Bugs & Fixes :
Antulius 6:333a2763ad29 24 ** Date : 20/10/2019
Antulius 6:333a2763ad29 25 ** Added support for Led_RGB
Antulius 6:333a2763ad29 26 ** 22/09/2018
Antulius 6:333a2763ad29 27 ** Added LCD Menu, Beta version (with bugs)
Antulius 6:333a2763ad29 28 **
Antulius 6:333a2763ad29 29 ** ###########################################################################*/
Antulius 6:333a2763ad29 30 /*
Antulius 6:333a2763ad29 31 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Antulius 6:333a2763ad29 32 : Includes
Antulius 6:333a2763ad29 33 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Antulius 6:333a2763ad29 34 */
emilmont 0:0f00f07ebde0 35 #include "mbed.h"
Antulius 7:e74aed8c8ee8 36 #include "MKL46Z4.h"
Antulius 7:e74aed8c8ee8 37 //#include "TSISensor.h"
Antulius 6:333a2763ad29 38 /*
Antulius 6:333a2763ad29 39 :...............................................................................
Antulius 6:333a2763ad29 40 : Definiciones
Antulius 6:333a2763ad29 41 :...............................................................................
Antulius 6:333a2763ad29 42 */
Antulius 7:e74aed8c8ee8 43 #define on 0 // Estado para boton presionado
Antulius 7:e74aed8c8ee8 44 #define off 1 // Estado para boton sin presionar
Antulius 7:e74aed8c8ee8 45 #define hold 2 // Estado para boton mantenido
Antulius 7:e74aed8c8ee8 46 #define release 3 // Estado para boton liberado
Antulius 7:e74aed8c8ee8 47 #define TRUE 1
Antulius 7:e74aed8c8ee8 48 #define FALSE 0
Antulius 7:e74aed8c8ee8 49 #define Ticker_Period 1000 // Periodo de Tiempo del Ticker (us)
Antulius 7:e74aed8c8ee8 50 #define Rate_Period 2 // Tiempo de Encendido de los Digitos (ms)
Antulius 7:e74aed8c8ee8 51 #define Scan_Time 2 // Tiempo de Barrido del Display (ms)
Antulius 7:e74aed8c8ee8 52 #define Shift_Time 2 // Tiempo de corrimiento (x Counter_Time)
Antulius 7:e74aed8c8ee8 53 #define Counter_Time 100 // Tiempo de counter (ms)
Antulius 7:e74aed8c8ee8 54 #define String_Size 20 // Tamaño del Buffer de Caracteres
Antulius 7:e74aed8c8ee8 55 #define Digit_Null 0xFF // Valor para apagar los Segmentos
Antulius 7:e74aed8c8ee8 56 #define Degree_Symbol 0x0F // Valor para el Símbolo de Grados
Antulius 7:e74aed8c8ee8 57 #define DO2 0.0078125 // 128 Hz (Escala Filosófica)
Antulius 7:e74aed8c8ee8 58 #define DOs2 0.0073740180703125 // 136 Hz
Antulius 7:e74aed8c8ee8 59 #define RE2 0.006960146234375 // 144 Hz
Antulius 7:e74aed8c8ee8 60 #define REs2 0.0065695032421875 // 152 Hz
Antulius 7:e74aed8c8ee8 61 #define MI2 0.006200785359375 // 161 Hz
Antulius 7:e74aed8c8ee8 62 #define FA2 0.005852762015625 // 171 Hz
Antulius 7:e74aed8c8ee8 63 #define FAs2 0.0055242717265625 // 181 Hz
Antulius 7:e74aed8c8ee8 64 #define SOL2 0.0052142181796875 // 192 Hz
Antulius 7:e74aed8c8ee8 65 #define SOLs2 0.0049215666015625 // 203 Hz
Antulius 7:e74aed8c8ee8 66 #define LA2 0.004645340296875 // 215 Hz
Antulius 7:e74aed8c8ee8 67 #define LAs2 0.004384617375 // 228 Hz
Antulius 7:e74aed8c8ee8 68 #define SI2 0.0041385277109375 // 242 Hz
Antulius 7:e74aed8c8ee8 69 #define DO3 0.00390625 // 256 Hz
Antulius 7:e74aed8c8ee8 70 #define DOs3 0.00368700903515625 // 271 Hz
Antulius 7:e74aed8c8ee8 71 #define RE3 0.0034800731171875 // 287 Hz
Antulius 7:e74aed8c8ee8 72 #define REs3 0.00328475162109375 // 304 Hz
Antulius 7:e74aed8c8ee8 73 #define MI3 0.0031003926796875 // 323 Hz
Antulius 7:e74aed8c8ee8 74 #define FA3 0.0029263810078125 // 342 Hz
Antulius 7:e74aed8c8ee8 75 #define FAs3 0.0055242717265625 // 362 Hz
Antulius 7:e74aed8c8ee8 76 #define SOL3 0.00260710908984375 // 384 Hz
Antulius 7:e74aed8c8ee8 77 #define SOLs3 0.00246078330078125 // 406 Hz
Antulius 7:e74aed8c8ee8 78 #define LA3 0.0023226701484375 // 431 Hz
Antulius 7:e74aed8c8ee8 79 #define LAs3 0.0021923086875 // 456 Hz
Antulius 7:e74aed8c8ee8 80 #define SI3 0.00206926385546875 // 483 Hz
Antulius 7:e74aed8c8ee8 81 #define DO4 0.00390625 // 512 Hz
Antulius 7:e74aed8c8ee8 82 #define DOs4 0.001843504517578125 // 542 Hz
Antulius 7:e74aed8c8ee8 83 #define RE4 0.00174003655859375 // 575 Hz
Antulius 7:e74aed8c8ee8 84 #define REs4 0.001642375810546875 // 609 Hz
Antulius 7:e74aed8c8ee8 85 #define MI4 0.00155019633984375 // 645 Hz
Antulius 7:e74aed8c8ee8 86 #define FA4 0.00146319050390625 // 683 Hz
Antulius 7:e74aed8c8ee8 87 #define FAs4 0.001381067931640625 // 724 Hz
Antulius 7:e74aed8c8ee8 88 #define SOL4 0.001303554544921875 // 767 Hz
Antulius 7:e74aed8c8ee8 89 #define SOLs4 0.001230391650390625 // 813 Hz
Antulius 7:e74aed8c8ee8 90 #define LA4 0.00116133507421875 // 861 Hz
Antulius 7:e74aed8c8ee8 91 #define LAs4 0.00109615434375 // 912 Hz
Antulius 7:e74aed8c8ee8 92 #define SI4 0.001034631927734375 // 966 Hz
Antulius 7:e74aed8c8ee8 93 #define DO5 0.001953125 // 1024 Hz
Antulius 6:333a2763ad29 94 /*
Antulius 6:333a2763ad29 95 +-------------------------------------------------------------------------------
Antulius 6:333a2763ad29 96 | Configuración de Puertos
Antulius 6:333a2763ad29 97 +-------------------------------------------------------------------------------
Antulius 6:333a2763ad29 98 */
Antulius 7:e74aed8c8ee8 99 BusIn Renglones (PTC8, PTC9, PTC10, PTC11); // Definición para los Renglones
Antulius 6:333a2763ad29 100
Antulius 7:e74aed8c8ee8 101 BusOut Anodos (PTA14, PTA15, PTA16, PTA17); // Definición para los Ánodos
Antulius 7:e74aed8c8ee8 102 BusOut Catodos (PTE16, PTE17,PTE18,PTE19,PTE20,PTE21,PTE22,PTE23); // Definición para los Cätodos
Antulius 7:e74aed8c8ee8 103 DigitalOut Green_Led (PTD5); // Led de Actividad del Programa
Antulius 7:e74aed8c8ee8 104 DigitalOut Red_Led (PTE29); // Led de Actividad del Programa
Antulius 7:e74aed8c8ee8 105 PwmOut Buzzer (PTE31); // Salida del Buzzer
Antulius 7:e74aed8c8ee8 106 Ticker Barrido;
Antulius 7:e74aed8c8ee8 107 Serial Terminal(USBTX, USBRX); //activa la Terminal a traves del Puerto USB
Antulius 6:333a2763ad29 108 /*
Antulius 6:333a2763ad29 109 +-------------------------------------------------------------------------------
Antulius 6:333a2763ad29 110 | Variables Globales de Usuario
Antulius 6:333a2763ad29 111 +-------------------------------------------------------------------------------
Antulius 6:333a2763ad29 112 */
Antulius 7:e74aed8c8ee8 113 uint16_t Rate=1000;
Antulius 7:e74aed8c8ee8 114 // 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
Antulius 7:e74aed8c8ee8 115 // 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 ! " # $ % & ' ( ) * + - . / : ; < > ? @
Antulius 7:e74aed8c8ee8 116 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};
Antulius 7:e74aed8c8ee8 117 uint8_t Digitos[]={0x08,0x04,0x02,0x01,0x00,0x0F}; // Millares, Centenas, Decenas, Unidades, Apagados, Encendidos
Antulius 7:e74aed8c8ee8 118 uint8_t Numeros[]={1,0,2,4};
Antulius 7:e74aed8c8ee8 119 uint8_t Cadena[]={33,0,21,10,36,14,28,18,22,36,35,10,12,10,29,14,23,12,24,36,36};
Antulius 7:e74aed8c8ee8 120 uint8_t Tecla[]={1,2,3,10,4,5,6,11,7,8,9,12,75,0,74,13};
Antulius 7:e74aed8c8ee8 121 uint8_t Boton[]={1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1};
Antulius 7:e74aed8c8ee8 122 uint8_t Boton_Ant[]={1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1};
Antulius 7:e74aed8c8ee8 123 uint8_t Edo_Boton[]={off,off,off,off, off,off,off,off, off,off,off,off, off,off,off,off};
Antulius 7:e74aed8c8ee8 124 uint8_t Renglon[]={0,0,0,0};
Antulius 7:e74aed8c8ee8 125 uint8_t punto_decimal=0; //Posición del punto decimal: 0=sin punto, 1=unidades, 2=decenas, 3=centemas 4=millares,
Antulius 7:e74aed8c8ee8 126 uint8_t cont_1ms;
Antulius 7:e74aed8c8ee8 127 uint8_t cont_10ms;
Antulius 7:e74aed8c8ee8 128 uint8_t cont_100ms;
Antulius 7:e74aed8c8ee8 129 uint8_t cont_1s;
Antulius 7:e74aed8c8ee8 130 uint8_t scan_rate=25;
Antulius 7:e74aed8c8ee8 131 uint8_t shift_rate=0;
Antulius 7:e74aed8c8ee8 132 uint16_t counter=250;
Antulius 7:e74aed8c8ee8 133 uint8_t i=0;
Antulius 7:e74aed8c8ee8 134 uint8_t j=0;
Antulius 7:e74aed8c8ee8 135 uint8_t valor=0;
Antulius 7:e74aed8c8ee8 136 uint8_t nchar=0;
Antulius 7:e74aed8c8ee8 137 bool flag1=FALSE;
Antulius 7:e74aed8c8ee8 138 bool flag2=FALSE;
Antulius 7:e74aed8c8ee8 139 bool Blinking=FALSE;
Antulius 7:e74aed8c8ee8 140 bool mode=0;
Antulius 6:333a2763ad29 141
Antulius 6:333a2763ad29 142 /*
Antulius 6:333a2763ad29 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 7:e74aed8c8ee8 144 | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
Antulius 6:333a2763ad29 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 6:333a2763ad29 146 */
Antulius 7:e74aed8c8ee8 147 void Barrido_OnInterrupt(void);
Antulius 7:e74aed8c8ee8 148 void Buzzer_SetPeriodMode(float Periodo,bool Estado);
Antulius 6:333a2763ad29 149 /*
Antulius 6:333a2763ad29 150 #===============================================================================
Antulius 6:333a2763ad29 151 |
Antulius 6:333a2763ad29 152 | P R O G R A M A P R I N C I P A L
Antulius 6:333a2763ad29 153 |
Antulius 6:333a2763ad29 154 #===============================================================================
Antulius 6:333a2763ad29 155 */
Antulius 6:333a2763ad29 156 int main()
Antulius 6:333a2763ad29 157 {
Antulius 7:e74aed8c8ee8 158 // Inicialización de variables, puertos e interrupciones
Antulius 7:e74aed8c8ee8 159 Terminal.baud(115200); // Establece la velocidad de Transmisión de la Terminal
Antulius 7:e74aed8c8ee8 160 Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Period); // Periodo de Interrupción del Timer = 1ms (Ticker_Period=1000)
Antulius 7:e74aed8c8ee8 161 Renglones.mode(PullUp); // Habilita los Pull-Up's de las entradas
Antulius 6:333a2763ad29 162 while (true)
Antulius 7:e74aed8c8ee8 163 { //El Programa principal está aquí !!!
Antulius 7:e74aed8c8ee8 164 nchar=0; // Inicializa el contador de caracteres a desplegar
Antulius 7:e74aed8c8ee8 165 if (flag1==TRUE)
Antulius 7:e74aed8c8ee8 166 {
Antulius 7:e74aed8c8ee8 167 Buzzer_SetPeriodMode(LA4,FALSE);// Apaga el Buzzer
Antulius 7:e74aed8c8ee8 168 Buzzer=off; // Apaga el Buzzer
Antulius 7:e74aed8c8ee8 169 Anodos=Digitos[4]; // Apaga todos los Digitos (Evita fantasmas)
Antulius 7:e74aed8c8ee8 170 Catodos=Segmentos[Numeros[i]]; // Escribe los segmentos del Dígito
Antulius 7:e74aed8c8ee8 171 if (i==4-punto_decimal) Catodos=(Segmentos[Numeros[i]]& 0xFE); // Enciende el punto decimal
Antulius 7:e74aed8c8ee8 172 Anodos=Digitos[i]; // Activa el Dígito/columna
Antulius 7:e74aed8c8ee8 173 valor=Renglones; // Lee los renglones
Antulius 7:e74aed8c8ee8 174 Renglon[i]=(valor>>i)&1; // Obtiene el valor de cada bit del renglón
Antulius 7:e74aed8c8ee8 175 Boton[i+j]=Renglon[i]; // Llena el renglon-columna correspondiente
Antulius 7:e74aed8c8ee8 176 if (Boton[i+j]==1)
Antulius 7:e74aed8c8ee8 177 {
Antulius 7:e74aed8c8ee8 178 Buzzer_SetPeriodMode(DO5,TRUE); // Selecciona Tono y lo habilita
Antulius 7:e74aed8c8ee8 179 Buzzer=on; // Enciende el Buzzer
Antulius 7:e74aed8c8ee8 180 }
Antulius 7:e74aed8c8ee8 181 if ( Boton[i+j] && Boton_Ant[i+j])
Antulius 7:e74aed8c8ee8 182 {
Antulius 7:e74aed8c8ee8 183 Edo_Boton[i+j]= off; // El Botón está Apagado
Antulius 7:e74aed8c8ee8 184 }
Antulius 7:e74aed8c8ee8 185 if (!Boton[i+j] && Boton_Ant[i+j])
Antulius 7:e74aed8c8ee8 186 {
Antulius 7:e74aed8c8ee8 187 Edo_Boton[i+j]= on; // El Botón está Encendido
Antulius 7:e74aed8c8ee8 188 }
Antulius 7:e74aed8c8ee8 189 if (!Boton[i+j] && !Boton_Ant[i+j])
Antulius 7:e74aed8c8ee8 190 {
Antulius 7:e74aed8c8ee8 191 Edo_Boton[i+j]= hold; // El Botón está Presionado
Antulius 7:e74aed8c8ee8 192 }
Antulius 7:e74aed8c8ee8 193 if ( Boton[i+j] && !Boton_Ant[i+j])
Antulius 7:e74aed8c8ee8 194 {
Antulius 7:e74aed8c8ee8 195 Edo_Boton[i+j]= release; // El Botón está Liberado
Antulius 7:e74aed8c8ee8 196 }
Antulius 7:e74aed8c8ee8 197 Boton_Ant[i+j]=Boton[i+j]; // Actualiza el valor del botón anterior
Antulius 7:e74aed8c8ee8 198 if (valor != 0xFF)
Antulius 7:e74aed8c8ee8 199 {
Antulius 7:e74aed8c8ee8 200 Numeros[0]= Digit_Null; // Millares
Antulius 7:e74aed8c8ee8 201 Numeros[1]= Digit_Null; // Centenas
Antulius 7:e74aed8c8ee8 202 Numeros[2]= Digit_Null; // Decenas
Antulius 7:e74aed8c8ee8 203 Numeros[3]= Tecla[i+j]; // Unidades
Antulius 7:e74aed8c8ee8 204 mode=2;
Antulius 7:e74aed8c8ee8 205 }
Antulius 7:e74aed8c8ee8 206 i++; // Incrementa la columna
Antulius 7:e74aed8c8ee8 207 if (i==4) // Se terminó de barrer las columnas?
Antulius 7:e74aed8c8ee8 208 {
Antulius 7:e74aed8c8ee8 209 i=0; // Reinicia las columnas
Antulius 7:e74aed8c8ee8 210 j=j+4; // Brinca al siguiente renglón
Antulius 7:e74aed8c8ee8 211 if (j==16) j=0; // Se terminó de barrer los renglones? Reinicia los renglones
Antulius 7:e74aed8c8ee8 212
Antulius 7:e74aed8c8ee8 213 if (mode==1) // Se va a desplegar un mensaje?
Antulius 7:e74aed8c8ee8 214 {
Antulius 7:e74aed8c8ee8 215 Numeros[i]=Cadena[i+nchar]; // Cargamos 4 caracteres en el buffer de despliege
Antulius 7:e74aed8c8ee8 216 if (nchar >= String_Size) nchar=0; // Restablece el contador de caractres
Antulius 7:e74aed8c8ee8 217 }
Antulius 7:e74aed8c8ee8 218 if (mode==2) // Se va a desplegar un el valor de la botonera
Antulius 7:e74aed8c8ee8 219 {
Antulius 7:e74aed8c8ee8 220 if ( Blinking==1) punto_decimal=3; // Activa los puntos del Reloj
Antulius 7:e74aed8c8ee8 221 if ( Blinking==0) punto_decimal=0; // Desactiva los puntos del Reloj
Antulius 7:e74aed8c8ee8 222 if (i==4-punto_decimal)
Antulius 7:e74aed8c8ee8 223 Catodos=Segmentos[Numeros[i]&0xFE]; // Enciende el punto decimal
Antulius 7:e74aed8c8ee8 224 Terminal.printf("Tecla Oprimida: %c",valor);
Antulius 7:e74aed8c8ee8 225 }
Antulius 7:e74aed8c8ee8 226 Red_Led=!Red_Led; // Parpadeo del Led Rojo
Antulius 7:e74aed8c8ee8 227 }
Antulius 7:e74aed8c8ee8 228
Antulius 7:e74aed8c8ee8 229 flag1=FALSE; // Apaga la Bandera 1
Antulius 7:e74aed8c8ee8 230 }
Antulius 7:e74aed8c8ee8 231 if (flag2==TRUE) // Está puesta la Bandera 2?
Antulius 7:e74aed8c8ee8 232 {
Antulius 7:e74aed8c8ee8 233 Green_Led=!Green_Led; // Parpadeo del Led Verde
Antulius 7:e74aed8c8ee8 234 flag2=FALSE; // Apaga la Bandera 2
Antulius 7:e74aed8c8ee8 235 }
emilmont 0:0f00f07ebde0 236 }
Antulius 6:333a2763ad29 237 }
Antulius 7:e74aed8c8ee8 238 /* END main() */
Antulius 7:e74aed8c8ee8 239 /*
Antulius 7:e74aed8c8ee8 240 ................................................................................
Antulius 7:e74aed8c8ee8 241 : Rutinas de los Vectores de Interrupción
Antulius 7:e74aed8c8ee8 242 ................................................................................
Antulius 7:e74aed8c8ee8 243 */
Antulius 7:e74aed8c8ee8 244 void Barrido_OnInterrupt(void) // Rutina de Atención al Ticker
Antulius 7:e74aed8c8ee8 245 {
Antulius 7:e74aed8c8ee8 246 cont_1ms++;
Antulius 7:e74aed8c8ee8 247 scan_rate++;
Antulius 7:e74aed8c8ee8 248 counter--;
Antulius 7:e74aed8c8ee8 249 if(!scan_rate) // Se terminó el tiempo de barrido
Antulius 7:e74aed8c8ee8 250 {
Antulius 7:e74aed8c8ee8 251 scan_rate=Rate_Period; // Restablece el tiempo de barrido?
Antulius 7:e74aed8c8ee8 252 flag1=TRUE; // Enciende la bandera para las rutinas de despliege y teclado
Antulius 7:e74aed8c8ee8 253 }
Antulius 7:e74aed8c8ee8 254 if (cont_1ms>=10)
Antulius 7:e74aed8c8ee8 255 {
Antulius 7:e74aed8c8ee8 256 cont_10ms++;
Antulius 7:e74aed8c8ee8 257 cont_1ms=0;
Antulius 7:e74aed8c8ee8 258 }
Antulius 7:e74aed8c8ee8 259 if (cont_10ms>=10)
Antulius 7:e74aed8c8ee8 260 {
Antulius 7:e74aed8c8ee8 261 cont_100ms++;
Antulius 7:e74aed8c8ee8 262 cont_10ms=0;
Antulius 7:e74aed8c8ee8 263 }
Antulius 7:e74aed8c8ee8 264 if (cont_100ms>=10)
Antulius 7:e74aed8c8ee8 265 {
Antulius 7:e74aed8c8ee8 266 cont_1s++;
Antulius 7:e74aed8c8ee8 267 cont_100ms=0;
Antulius 7:e74aed8c8ee8 268 }
Antulius 7:e74aed8c8ee8 269 if (cont_1s>=10)
Antulius 7:e74aed8c8ee8 270 {
Antulius 7:e74aed8c8ee8 271 cont_1s=0;
Antulius 7:e74aed8c8ee8 272 }
Antulius 7:e74aed8c8ee8 273 if (!counter) // Se terminó de contar?
Antulius 7:e74aed8c8ee8 274 {
Antulius 7:e74aed8c8ee8 275 counter=500; // Restablece el contador
Antulius 7:e74aed8c8ee8 276 Blinking= !Blinking; // Parpadeo
Antulius 7:e74aed8c8ee8 277 shift_rate --; // Decrementa el tiempo del corrimiento
Antulius 7:e74aed8c8ee8 278 flag2=TRUE; // Prende la bandera para realizar un desplazamiento
Antulius 7:e74aed8c8ee8 279 }
Antulius 7:e74aed8c8ee8 280 if (!shift_rate) // Se terminó el tiempo de corrimiento?
Antulius 7:e74aed8c8ee8 281 {
Antulius 7:e74aed8c8ee8 282 mode=!mode; // Tiempo entre desplazamientos del mensaje
Antulius 7:e74aed8c8ee8 283 shift_rate = Shift_Time; // Restablece el tiempo de los corrimientos
Antulius 7:e74aed8c8ee8 284 }
Antulius 7:e74aed8c8ee8 285 }
Antulius 7:e74aed8c8ee8 286 /* END Events */
Antulius 7:e74aed8c8ee8 287
Antulius 7:e74aed8c8ee8 288 /*
Antulius 7:e74aed8c8ee8 289 ________________________________________________________________________________
Antulius 7:e74aed8c8ee8 290 |
Antulius 7:e74aed8c8ee8 291 | Funciones Prototipo
Antulius 7:e74aed8c8ee8 292 |_______________________________________________________________________________
Antulius 7:e74aed8c8ee8 293 */
Antulius 7:e74aed8c8ee8 294 // Las Funciones Prototipo van aquí !
Antulius 7:e74aed8c8ee8 295 void Buzzer_SetPeriodMode(float Periodo,bool Estado)
Antulius 7:e74aed8c8ee8 296 {
Antulius 7:e74aed8c8ee8 297 Buzzer.period(Periodo);
Antulius 7:e74aed8c8ee8 298 Buzzer.pulsewidth(Periodo/2);
Antulius 7:e74aed8c8ee8 299 if (Estado==1)Buzzer=0.5;
Antulius 7:e74aed8c8ee8 300 if (Estado==0)Buzzer=0.0;
Antulius 7:e74aed8c8ee8 301 }
Antulius 7:e74aed8c8ee8 302
Antulius 7:e74aed8c8ee8 303 /* END Routines */
Antulius 7:e74aed8c8ee8 304
Antulius 7:e74aed8c8ee8 305 /* END program */
Antulius 7:e74aed8c8ee8 306 /*+------------------------------------------------------------------------------------
Antulius 7:e74aed8c8ee8 307 *+ Descripción del Display de 7 Segmentos de Anodos Comunes en modo multiplexado
Antulius 7:e74aed8c8ee8 308 *+-------------------------------------------------------------------------------------
Antulius 7:e74aed8c8ee8 309 *+ 13 12 11 10 9 8
Antulius 7:e74aed8c8ee8 310 *+ | | | | | |
Antulius 7:e74aed8c8ee8 311 *+ | | | | | |
Antulius 7:e74aed8c8ee8 312 *+ --------------------------------------------------
Antulius 7:e74aed8c8ee8 313 *+ | A a f A A b |
Antulius 7:e74aed8c8ee8 314 *+ | 4 3 2 |
Antulius 7:e74aed8c8ee8 315 *+ | ______________________________________________ |
Antulius 7:e74aed8c8ee8 316 *+ | | ____ ____ _____ _____ | |
Antulius 7:e74aed8c8ee8 317 *+ | | / / / / / / / / | |
Antulius 7:e74aed8c8ee8 318 *+ | | /____ / /____ / . /____ / /____ / | |
Antulius 7:e74aed8c8ee8 319 *+ | | / / / / . / / / / | |
Antulius 7:e74aed8c8ee8 320 *+ | | /____ /. /_____/ . /____ /. /____ /. | |
Antulius 7:e74aed8c8ee8 321 *+ | | | |
Antulius 7:e74aed8c8ee8 322 *+ | |______________________________________________| |
Antulius 7:e74aed8c8ee8 323 *+ | |
Antulius 7:e74aed8c8ee8 324 *+ | A |
Antulius 7:e74aed8c8ee8 325 *+ | e d p c g 1 |
Antulius 7:e74aed8c8ee8 326 *+ --------------------------------------------------
Antulius 7:e74aed8c8ee8 327 *+ | | | | | | |
Antulius 7:e74aed8c8ee8 328 *+ | | | | | | |
Antulius 7:e74aed8c8ee8 329 *+ 1 2 3 4 5 6 7
Antulius 7:e74aed8c8ee8 330 *+
Antulius 7:e74aed8c8ee8 331 *+ Display: HS410561K-D30
Antulius 7:e74aed8c8ee8 332 *+
Antulius 7:e74aed8c8ee8 333 *+
Antulius 7:e74aed8c8ee8 334 *+ 13 12 11 10 9 8
Antulius 7:e74aed8c8ee8 335 *+ | | | | | |
Antulius 7:e74aed8c8ee8 336 *+ | | | | | |
Antulius 7:e74aed8c8ee8 337 *+ --------------------------------------------------
Antulius 7:e74aed8c8ee8 338 *+ | A g f p a b |
Antulius 7:e74aed8c8ee8 339 *+ | 4 |
Antulius 7:e74aed8c8ee8 340 *+ | ______________________________________________ |
Antulius 7:e74aed8c8ee8 341 *+ | | ____ ____ _____ _____ | |
Antulius 7:e74aed8c8ee8 342 *+ | | / / / / / / / / | |
Antulius 7:e74aed8c8ee8 343 *+ | | /____ / /____ / . /____ / /____ / | |
Antulius 7:e74aed8c8ee8 344 *+ | | / / / / . / / / / | |
Antulius 7:e74aed8c8ee8 345 *+ | | /____ /. /_____/ /____ /. /____ /. | |
Antulius 7:e74aed8c8ee8 346 *+ | | | |
Antulius 7:e74aed8c8ee8 347 *+ | |______________________________________________| |
Antulius 7:e74aed8c8ee8 348 *+ | |
Antulius 7:e74aed8c8ee8 349 *+ | A A A |
Antulius 7:e74aed8c8ee8 350 *+ | e 3 2 c d 1 |
Antulius 7:e74aed8c8ee8 351 *+ --------------------------------------------------
Antulius 7:e74aed8c8ee8 352 *+ | | | | | | |
Antulius 7:e74aed8c8ee8 353 *+ | | | | | | |
Antulius 7:e74aed8c8ee8 354 *+ 1 2 3 4 5 6 7
Antulius 7:e74aed8c8ee8 355 *+
Antulius 7:e74aed8c8ee8 356 *+ Display: BQ-M544RE
Antulius 7:e74aed8c8ee8 357 *+
Antulius 7:e74aed8c8ee8 358 *+
Antulius 7:e74aed8c8ee8 359 *+ 16 15 14 13 11
Antulius 7:e74aed8c8ee8 360 *+ | | | | |
Antulius 7:e74aed8c8ee8 361 *+ | | | | |
Antulius 7:e74aed8c8ee8 362 *+ --------------------------------------------------
Antulius 7:e74aed8c8ee8 363 *+ | b g a c f |
Antulius 7:e74aed8c8ee8 364 *+ | |
Antulius 7:e74aed8c8ee8 365 *+ | ______________________________________________ |
Antulius 7:e74aed8c8ee8 366 *+ | | ____ ____ _____ . _____ | |
Antulius 7:e74aed8c8ee8 367 *+ | | / / / / / / / / | |
Antulius 7:e74aed8c8ee8 368 *+ | | /____ / /____ / . /____ / /____ / | |
Antulius 7:e74aed8c8ee8 369 *+ | | / / / / . / / / / | |
Antulius 7:e74aed8c8ee8 370 *+ | | /____ /. /_____/ . /____ /. /____ /. | |
Antulius 7:e74aed8c8ee8 371 *+ | | | |
Antulius 7:e74aed8c8ee8 372 *+ | |______________________________________________| |
Antulius 7:e74aed8c8ee8 373 *+ | |
Antulius 7:e74aed8c8ee8 374 *+ | A A A A A |
Antulius 7:e74aed8c8ee8 375 *+ | 4 3 3 p e 2 p 1 |
Antulius 7:e74aed8c8ee8 376 *+ --------------------------------------------------
Antulius 7:e74aed8c8ee8 377 *+ | | | | | | | |
Antulius 7:e74aed8c8ee8 378 *+ | | | | | | | |
Antulius 7:e74aed8c8ee8 379 *+ 1 2 3 4 5 6 7 8
Antulius 7:e74aed8c8ee8 380 *+
Antulius 7:e74aed8c8ee8 381 *+ Display: KEM-3942BSR
Antulius 7:e74aed8c8ee8 382 *+
Antulius 7:e74aed8c8ee8 383 +*
Antulius 7:e74aed8c8ee8 384 *+
Antulius 7:e74aed8c8ee8 385 *+ 12 11 10 9 8 7
Antulius 7:e74aed8c8ee8 386 *+ | | | | | |
Antulius 7:e74aed8c8ee8 387 *+ | | | | | |
Antulius 7:e74aed8c8ee8 388 *+ --------------------------------------------------
Antulius 7:e74aed8c8ee8 389 *+ | A a f A A b |
Antulius 7:e74aed8c8ee8 390 *+ | 4 3 2 |
Antulius 7:e74aed8c8ee8 391 *+ | ______________________________________________ |
Antulius 7:e74aed8c8ee8 392 *+ | | ____ ____ _____ _____ | |
Antulius 7:e74aed8c8ee8 393 *+ | | / / / / / / / / | |
Antulius 7:e74aed8c8ee8 394 *+ | | /____ / /____ / . /____ / /____ / | |
Antulius 7:e74aed8c8ee8 395 *+ | | / / / / . / / / / | |
Antulius 7:e74aed8c8ee8 396 *+ | | /____ /. /_____/ . /____ /. /____ /. | |
Antulius 7:e74aed8c8ee8 397 *+ | | | |
Antulius 7:e74aed8c8ee8 398 *+ | |______________________________________________| |
Antulius 7:e74aed8c8ee8 399 *+ | |
Antulius 7:e74aed8c8ee8 400 *+ | A |
Antulius 7:e74aed8c8ee8 401 *+ | e d p c g 1 |
Antulius 7:e74aed8c8ee8 402 *+ --------------------------------------------------
Antulius 7:e74aed8c8ee8 403 *+ | | | | | |
Antulius 7:e74aed8c8ee8 404 *+ | | | | | |
Antulius 7:e74aed8c8ee8 405 *+ 1 2 3 4 5 6
Antulius 7:e74aed8c8ee8 406 *+
Antulius 7:e74aed8c8ee8 407 *+ Display: FYQ-2841BH
Antulius 7:e74aed8c8ee8 408 *+
Antulius 7:e74aed8c8ee8 409 *+
Antulius 7:e74aed8c8ee8 410 *+ PTA17 PTA16 PTA15 PTA14
Antulius 7:e74aed8c8ee8 411 *+ A4 A3 A2 A1
Antulius 7:e74aed8c8ee8 412 *+ Mill Cent Dec Uni
Antulius 7:e74aed8c8ee8 413 *+
Antulius 7:e74aed8c8ee8 414 *+ FRDM_KL25Z PTE23 PTE22 PTE21 PTE20 PTE5 PTE4 PTE3 PTE2 # Hex
Antulius 7:e74aed8c8ee8 415 *+ FRDM-KL46Z PTE23 PTE22 PTE21 PTE20 PTE19 PTE18 PTE17 PTE16 # Hex Offset
Antulius 7:e74aed8c8ee8 416 *+ a
Antulius 7:e74aed8c8ee8 417 *+ ______ g f a b c d e p
Antulius 7:e74aed8c8ee8 418 *+ / / 1 0 0 0 1 0 0 0 0 0x81 0
Antulius 7:e74aed8c8ee8 419 *+ f / g / b 1 1 0 1 1 1 1 0 1 0xE7 1
Antulius 7:e74aed8c8ee8 420 *+ /_____/ 1 0 1 1 0 1 0 0 2 0x49 2
Antulius 7:e74aed8c8ee8 421 *+ / / 1 0 0 1 0 1 0 0 3 0x43 3
Antulius 7:e74aed8c8ee8 422 *+ e / / c 1 1 0 1 0 0 1 0 4 0x27 4
Antulius 7:e74aed8c8ee8 423 *+ /_____/ . 1 0 0 1 0 0 0 1 5 0x13 5
Antulius 7:e74aed8c8ee8 424 *+ d p 1 0 0 0 0 0 0 1 6 0x11 6
Antulius 7:e74aed8c8ee8 425 *+ 1 1 0 1 1 1 0 0 7 0xC7 7
Antulius 7:e74aed8c8ee8 426 *+ 1 0 0 0 0 0 0 0 8 0x01 8
Antulius 7:e74aed8c8ee8 427 *+ 1 0 0 1 0 0 0 0 9 0x03 9
Antulius 7:e74aed8c8ee8 428 *+ 1 1 0 0 0 0 0 0 A 0x05 10
Antulius 7:e74aed8c8ee8 429 *+ 1 0 0 0 0 0 1 1 b 0x31 11
Antulius 7:e74aed8c8ee8 430 *+ 1 0 1 0 1 0 0 1 C 0x99 12
Antulius 7:e74aed8c8ee8 431 *+ 1 0 0 0 0 1 1 0 d 0x61 13
Antulius 7:e74aed8c8ee8 432 *+ 1 0 1 0 0 0 0 1 E 0x19 14
Antulius 7:e74aed8c8ee8 433 *+ 1 1 1 0 0 0 0 1 f 0x1D 15
Antulius 7:e74aed8c8ee8 434 *+ 1 0 0 0 1 0 0 1 G 0x91 16
Antulius 7:e74aed8c8ee8 435 *+ 1 1 0 0 0 0 1 1 h 0x35 17
Antulius 7:e74aed8c8ee8 436 *+ 1 1 0 1 1 1 1 1 i 0xBD 18
Antulius 7:e74aed8c8ee8 437 *+ 1 0 0 0 1 1 1 0 J 0xB3 19
Antulius 7:e74aed8c8ee8 438 *+ 1 0 1 0 0 0 1 0 k 0x2D 20
Antulius 7:e74aed8c8ee8 439 *+ 1 0 1 0 1 0 1 1 L 0xB9 21
Antulius 7:e74aed8c8ee8 440 *+ 1 1 0 0 1 0 0 0 M 0x85 22
Antulius 7:e74aed8c8ee8 441 *+ 1 1 0 0 0 1 1 1 n 0x75 23
Antulius 7:e74aed8c8ee8 442 *+ 1 0 0 0 0 1 1 1 o 0x71 24
Antulius 7:e74aed8c8ee8 443 *+ 1 1 1 0 0 0 0 0 P 0x0D 25
Antulius 7:e74aed8c8ee8 444 *+ 1 1 0 1 0 0 0 0 q 0x07 26
Antulius 7:e74aed8c8ee8 445 *+ 1 1 1 0 0 1 1 1 r 0x3D 27
Antulius 7:e74aed8c8ee8 446 *+ 1 0 0 1 0 0 0 1 s 0x13 28
Antulius 7:e74aed8c8ee8 447 *+ 1 0 1 0 0 0 1 1 t 0x39 29
Antulius 7:e74aed8c8ee8 448 *+ 1 0 0 0 1 1 1 1 u 0xF1 30
Antulius 7:e74aed8c8ee8 449 *+ 1 0 0 0 1 0 1 1 V 0xE1 31
Antulius 7:e74aed8c8ee8 450 *+ 1 0 0 0 1 0 1 0 w 0xA1 32
Antulius 7:e74aed8c8ee8 451 *+ 1 1 0 0 1 0 1 0 X 0x25 33
Antulius 7:e74aed8c8ee8 452 *+ 1 0 0 1 0 0 1 0 y 0x37 34
Antulius 7:e74aed8c8ee8 453 *+ 1 0 1 0 1 1 0 0 Z 0x49 35
Antulius 7:e74aed8c8ee8 454 *+ 1 0 0 0 0 1 0 0 a 0x84 36
Antulius 7:e74aed8c8ee8 455 *+ 1 0 1 0 0 0 0 0 e 0xA0 37
Antulius 7:e74aed8c8ee8 456 *+ 1 1 1 1 0 0 0 1 + c 0xF1 38
Antulius 7:e74aed8c8ee8 457 *+ 1 1 1 1 0 1 0 0 +/c 0xF4 39
Antulius 7:e74aed8c8ee8 458 *+ 1 0 1 0 0 1 1 1 c 0xA7 40
Antulius 7:e74aed8c8ee8 459 *+ 1 0 0 1 0 1 1 1 /c 0x97 41
Antulius 7:e74aed8c8ee8 460 *+ 1 1 1 1 0 0 1 0 + u 0xF2 42
Antulius 7:e74aed8c8ee8 461 *+ 1 1 1 1 1 0 0 0 + n 0xF8 43
Antulius 7:e74aed8c8ee8 462 *+ 1 0 1 0 1 0 0 1 [ 0xA9 44
Antulius 7:e74aed8c8ee8 463 *+ 1 0 0 1 1 1 0 0 ] 0x9C 45
Antulius 7:e74aed8c8ee8 464 *+ 1 1 1 1 0 0 0 0 ° 0xF0 46
Antulius 7:e74aed8c8ee8 465 *+ 1 1 1 1 1 1 0 0 ¬ 0xFC 47
Antulius 7:e74aed8c8ee8 466 *+ 1 1 1 1 0 1 1 0 + > 0xF6 48
Antulius 7:e74aed8c8ee8 467 *+ 1 1 1 0 0 1 1 1 ^ 0xE7 49
Antulius 7:e74aed8c8ee8 468 *+ 1 0 1 0 1 1 1 1 / < 0xAF 50
Antulius 7:e74aed8c8ee8 469 *+ 1 0 0 1 1 1 1 1 / v 0x9F 51
Antulius 7:e74aed8c8ee8 470 *+ 1 1 0 1 0 1 1 1 > 0xD7 52
Antulius 7:e74aed8c8ee8 471 *+ 1 1 1 1 0 0 1 1 v 0xF3 53
Antulius 7:e74aed8c8ee8 472 *+ 1 1 1 1 1 0 0 1 < 0xF9 54
Antulius 7:e74aed8c8ee8 473 *+ 1 1 1 1 1 1 0 1 / _ 0xBF 55
Antulius 7:e74aed8c8ee8 474 *+ 1 1 1 1 0 1 1 1 - 0xF7 56
Antulius 7:e74aed8c8ee8 475 *+ 1 0 1 1 1 1 1 1 _ 0xFD 57
Antulius 7:e74aed8c8ee8 476 *+ 1 1 1 1 0 1 0 1 = 0xF5 58
Antulius 7:e74aed8c8ee8 477 *+ 1 0 1 1 0 1 1 1 / = 0xB7 59
Antulius 7:e74aed8c8ee8 478 *+ 1 0 1 1 0 1 0 1 == 0xB5 60
Antulius 7:e74aed8c8ee8 479 *+ 1 0 1 1 1 1 0 1 _¬ 0xBD 61
Antulius 7:e74aed8c8ee8 480 *+ 1 1 0 0 1 1 1 1 ii 0xCF 62
Antulius 7:e74aed8c8ee8 481 *+ 1 1 1 1 1 0 1 0 # 0xFA 63
Antulius 7:e74aed8c8ee8 482 *+ 1 0 0 1 1 1 1 0 j 0x9E 64
Antulius 7:e74aed8c8ee8 483 *+ 1 1 0 1 1 1 0 0 /j 0xDC 65
Antulius 7:e74aed8c8ee8 484 *+ 1 1 1 0 1 0 0 1 - j 0xE9 66
Antulius 7:e74aed8c8ee8 485 *+ 1 0 1 0 1 0 1 1 -/j 0xAB 67
Antulius 7:e74aed8c8ee8 486 *+ 1 0 0 0 1 1 1 0 - J 0x8E 68
Antulius 7:e74aed8c8ee8 487 *+ 1 1 0 1 1 0 0 0 -/J 0xD8 69
Antulius 7:e74aed8c8ee8 488 *+ 1 1 1 0 1 0 1 1 | 0xEB 70
Antulius 7:e74aed8c8ee8 489 *+ 1 1 0 0 1 0 1 0 || 0xCA 71
Antulius 7:e74aed8c8ee8 490 *+ 1 1 0 1 0 1 1 0 + 0xD6 72
Antulius 7:e74aed8c8ee8 491 *+ 1 1 1 0 0 0 1 1 /+ 0xE3 73
Antulius 7:e74aed8c8ee8 492 *+ 1 0 0 1 1 0 1 1 espacio 0xFF 74
Antulius 7:e74aed8c8ee8 493 *+
Antulius 7:e74aed8c8ee8 494 *+ Nota: Cada dígito se activa al hacer la señal A correspondiente en "alto"
Antulius 7:e74aed8c8ee8 495 *+ y enviar las señales de los segmentos que se desean encender en "bajo"
Antulius 7:e74aed8c8ee8 496 *+
Antulius 7:e74aed8c8ee8 497 *+---------------------------------------------------------------------------------------- */
Antulius 7:e74aed8c8ee8 498 /*........................................................................................
Antulius 7:e74aed8c8ee8 499 :
Antulius 7:e74aed8c8ee8 500 : TECLADO MATRICIAL DE 4X4
Antulius 7:e74aed8c8ee8 501 :
Antulius 7:e74aed8c8ee8 502 : C1 C2 C3 C4
Antulius 7:e74aed8c8ee8 503 : | | | |
Antulius 7:e74aed8c8ee8 504 : | | | |
Antulius 7:e74aed8c8ee8 505 : | 1 | 2 | 3 | F1
Antulius 7:e74aed8c8ee8 506 : R1 __/ ________/ ________/ ________/
Antulius 7:e74aed8c8ee8 507 : | | | |
Antulius 7:e74aed8c8ee8 508 : | 4 | 5 | 6 | F2
Antulius 7:e74aed8c8ee8 509 : R2 __/ ________/ ________/ ________/
Antulius 7:e74aed8c8ee8 510 : | | | |
Antulius 7:e74aed8c8ee8 511 : | 7 | 8 | 9 | F3
Antulius 7:e74aed8c8ee8 512 : R3 __/ ________/ ________/ ________/
Antulius 7:e74aed8c8ee8 513 : | | | |
Antulius 7:e74aed8c8ee8 514 : | * | 0 | # | F4
Antulius 7:e74aed8c8ee8 515 : R4 __/ ________/ ________/ ________/
Antulius 7:e74aed8c8ee8 516 :
Antulius 7:e74aed8c8ee8 517 :
Antulius 7:e74aed8c8ee8 518 : Función: REN1 REN2 REN3 REN4 COL1 COL2 COL3 COL4
Antulius 7:e74aed8c8ee8 519 : Pin: 1 2 3 4 5 6 7 8
Antulius 7:e74aed8c8ee8 520 .......................................................................................... */
Antulius 7:e74aed8c8ee8 521 /* END Mbed */