PROGRAMACIÓN CON DISPLAY DE 7
SEGMENTOS
SEGMENTOS
- Conocer el Display de 7 segmentos y su funcionamiento
- Conocer las técnicas de multiplexación
- Programar HMI para juego de encestar.
2. MARCO TEÓRICO
2.1. TIPOS DE VARIABLES
Una variable es un objeto del lenguaje cuyo valor se puede cambiar. Antes de utilizar una variable ésta debe de ser declarada. Al declarar una variable, se le asocia un identificador, es decir, un nombre, con un tipo de almacenamiento cuya forma determina la visibilidad y existencia de la variable.
Hay dos clases de tipos de datos: tipos fundamentales y tipos derivados.
A continuación veremos los tipos de datos fundamentales:
Representa números enteros con o sin signo, que estarán compuestos por los dígitos del 0 al 9, pudiendo ser precedidos por los signos + o -.
Algunos ejemplo de datos enteros son: 0, 23, -176, -1, etc.
Para definir variables en C se antepone la palabra reservada del tipo al identificador de la variable. El tipo de datos entero se define en el lenguaje de programación C por la palabra reservada int.
Para definir un tipo de dato en C se escribe lo siguiente:
int nombre_variable = valor;
No es necesario que la variable tenga un valor predeterminado. Se puede definir sin asignarle ningún valor.
Si tenemos varios datos que son del mismo tipo, se pueden definir todas en la misma línea de código escribiendo un único int, separando el nombre de las variables por “,”. Una vez que se haya acabado de definir variables, se cierra la línea de código con “;”.
Por ejemplo:
int edad = 24;
int edad;
int edad, num, contador;
Algunos ejemplo de datos enteros son: 0, 23, -176, -1, etc.
Para definir variables en C se antepone la palabra reservada del tipo al identificador de la variable. El tipo de datos entero se define en el lenguaje de programación C por la palabra reservada int.
Para definir un tipo de dato en C se escribe lo siguiente:
int nombre_variable = valor;
No es necesario que la variable tenga un valor predeterminado. Se puede definir sin asignarle ningún valor.
Si tenemos varios datos que son del mismo tipo, se pueden definir todas en la misma línea de código escribiendo un único int, separando el nombre de las variables por “,”. Una vez que se haya acabado de definir variables, se cierra la línea de código con “;”.
Por ejemplo:
int edad = 24;
int edad;
int edad, num, contador;
2.1.2. TIPO REAL
Se emplean para representar números reales (con decimales).
Para definir datos reales se antepone la palabra reservada float al identificador de la variable.
float identificador = valor;
Por ejemplo:
float numero1, numero2;
float numero3 = 123.43;
float numero3;
Para definir datos reales se antepone la palabra reservada float al identificador de la variable.
float identificador = valor;
Por ejemplo:
float numero1, numero2;
float numero3 = 123.43;
float numero3;
2.1.3. TIPO CARACTER
Este tipo de datos se emplea para representar un carácter perteneciente a un determinado código utilizado por el ordenador (normalmente el código ASCII).
Para representar este tipo de dato se antepone la palabra reservada char al identificador de la variable.
Char identificador = ‘valor’;
Una constante tipo char se representa como un solo carácter encerrado entre comillas simples.
Por ejemplo:
char letra, letra2;
char letra=’a’;
Para representar este tipo de dato se antepone la palabra reservada char al identificador de la variable.
Char identificador = ‘valor’;
Una constante tipo char se representa como un solo carácter encerrado entre comillas simples.
Por ejemplo:
char letra, letra2;
char letra=’a’;
2.1.4. TIPO CADENA DE CARACTERES
Una cadena de caracteres es un número de caracteres consecutivos (incluso ninguno) encerrado entre unos delimitadores determinados, que en el lenguaje C son las comillas dobles.
Para definir variables de tipo cadena, estas se definen como vectores de caracteres, esto es, anteponiendo la palabra reservada char al identificador de la variable, y después entre corchetes la longitud máxima de cadena.
Char identificador[cantidad] = “ mensaje ”;
Por ejemplo:
char cadena[20];
char cadena[20] = “Hola mundo”;
char cadena[] = “HOLA”;
En la siguiente tabla se hace un resumen de los distintos tipos de datos:
Estos tipos básicos admiten una modificación del rango de valores, aplicando las siguientes palabras reservadas:
Para definir variables de tipo cadena, estas se definen como vectores de caracteres, esto es, anteponiendo la palabra reservada char al identificador de la variable, y después entre corchetes la longitud máxima de cadena.
Char identificador[cantidad] = “ mensaje ”;
Por ejemplo:
char cadena[20];
char cadena[20] = “Hola mundo”;
char cadena[] = “HOLA”;
En la siguiente tabla se hace un resumen de los distintos tipos de datos:
TIPO DE DATO
|
ESPECIFICADORES
DE FORMATO
|
COMENTARIO
|
Int
|
%d
|
Entero con signo
|
Float
|
%f
|
Real con signo
|
Char
|
%c
|
carácter
|
Char [n]
|
%s
|
Cadena de caracteres
|
Estos tipos básicos admiten una modificación del rango de valores, aplicando las siguientes palabras reservadas:
- short (corto)
- long (largo)
- signed (con signo)
- unsigned (sin signo)
Las modificaciones se aplican a los tipos int y char, a excepción del modificador long que también puede aplicarse al tipo double. Las posibles combinaciones son:
TIPO
|
NÚMERO DE BITS
|
RANGO
|
char
|
8
|
-128 a 127
|
unsigned char
|
8
|
0 a 255
|
signed char
|
8
|
-128 a 127
|
short
|
16
|
-32768 a 32767
|
int
|
16
|
-32768 a 32767
|
unsigned int
|
16
|
0 a 65535
|
signed int
|
16
|
-32768 a 32767
|
short int
|
16
|
-32768 a 32767
|
unsigned short int
|
16
|
0 a 65535
|
signed short int
|
16
|
-32768 a 32767
|
long int
|
32
|
-2147483648 a 2147483647
|
signed long int
|
32
|
-2147483648 a 2147483647
|
unsigned long int
|
32
|
0 a 4294967295
|
long
|
32
|
-2147483648 a 2147483647
|
unsigned long
|
32
|
0 a 4294967295
|
float
|
32
|
3.4E-38 a 3.4E+38
|
double
|
64
|
1.7E-308 a 1.7E+308
|
long double
|
64 ó 80 (según versión).
|
1.7E-308 a 1.7E+308 ó 3.4E-4932 a 1.1E+4932
|
3.1. DIAGRAMA DE LA SIMULACIÓN DEL ENTRENADOR DE PICS EN PROTEUS
3.2. VIDEO EXPLICATIVO MOSTRANDO LAS TAREAS A SER EVALUADAS, SIMULACIÓN E IMPLEMENTACIÓN DEL PROGRAMA SOLICITADO
4. OBSERVACIONES:
- Para llamar a una subrutina, debemos colocar el nombre de esta y luego colocar paréntesis con la variable a ser evaluada, dependiendo del caso.
- Para hacer que la visualización de los tres Displays de 7 segmentos se vea en forma continua, tenemos que multiplexar el encendido de estos a una gran velocidad.
- Para hacer que se escuche un pitido en el parlante del entrenador se realizó una subrutina en la programación, en donde se creaba un tren de pulsos a una determinada frecuencia.
- Para realizar los tres pitidos en caso de que se sobrepase el número 600, se estableció un intervalo de 200ms entre ellos y uno de 1000ms en cada secuencia.
- Al momento de presionar los pulsadores, en los Displays de 7 segmentos solo se mostraba la cifra de unidades. Para solucionar este problema se creó un bucle con "for" adicional en vez de un retardo de tiempo.
5. CONCLUSIONES
- Se realizaron subrutinas y se aprendió a cómo llamarlas dentro del programa principal.
- Se modificó el programa base con las tareas a ser evaluadas, utilizando el programa PIC C Compiler, en donde se crearon nuevos bucles con "for" y se llamaron a las subrutinas necesarias.
- Se programaron bucles con "for" en la modificación del programa base, para no tener que copiar demasiadas lineas repetitivas.
- Se crearon bucles con "for" adicionales en lugar de los delays, para hacer que el numero se muestre en todo momento en los Displays casi de manera simultánea.
- Se logró transferir el archivo generado HEX al entrenador utilizando el programa PICKIT2.
- Se probó en el entrenador el correcto funcionamiento de las tareas a ser evaluadas, incluso se realizaron mejoras al programa anterior para que los Displays se visualizaran en todo momento incluso cuando se presionaban los pulsadores.
6. FOTO GRUPAL
7. ANEXOS
