martes, 12 de noviembre de 2019

Laboratorio 12_2019

Laboratorio 12
"Manejo del Timer y las Interrupciones"

1.- Marco teórico
Temporizador contador PIC


Un temporizador contador PIC es un registro que aumenta su valor en una unidad con cada 4 ciclos de reloj al cual se encuentre funcionando el micro controlador PIC, si por ejemplo la frecuencia del oscilador es de 4MHz, entonces  el ciclo de trabajo del microcontrolador PIC será de 1us, por lo que el temporizador contador PIC aumentará  su  valor de uno en uno en cada micro segundo; por ejemplo cuando el temporizador aumenta su valor en 10 unidades habrán transcurrido 10us.
El temporizador contador PIC puede aumentar sus valores de 0 a 255 si es de 8 bits como el timer0, o de 0 a 65535 si es de 16 bits como el timer1, cada vez que estos registros alcanzan su máximo valor se reinician, volviendo a contar desde su valor mínimo hasta su máximo, ademas pueden ser programados para provocar interrupciones.
Para el uso del temporizador contador PIC se cuenta además con un grupo de registros mediante los cuales se puede lo puede configurar de acuerdo a las necesidades que se tengan.
El registro temporizador contador PIC TMR1 puede ser utilizado para tareas de comparación, captura y el registro TMR2 es utilizado para la obtención de señales  de modulación de ancho de pulso o PWM, siendo para ello necesario el uso de otros registros.

2.- Vídeo



Simulación

Código 








3.-Conclusiones
  • Se utilizo 3 pulsadores para incrementar los segundos, minutos y darle a la cuenta regresiva haciendo la función de un temporizador.
  • Para congelar el temporizador en cero minutos y ceros segundos se utilizó la relación condicional de que si minutos es igual a -1, se detenga el temporizador.
  • Se debe usar un delay  después de presionar cada pulsador, esto con la finalidad de evitar falsos disparos.

martes, 5 de noviembre de 2019

Laboratorio 11_2019

Laboratorio 11
"Programación de una Pantalla LCD"

1.- Marco teórico

Descripción y funcionamiento de una pantalla LCD

El LCD o pantalla de cristal líquido es un dispositivo empleado para la visualización de contenidos o información de una forma gráfica, mediante caracteres, símbolos o pequeños dibujos dependiendo del modelo. 
En este caso vamos a emplear un LCD de 16x2, esto quiere decir que dispone de 2 filas de 16 caracteres cada una. Los píxeles de cada símbolo o carácter, varían en función de cada modelo.


¿DDRAM y CGROM?

Son las dos zonas de memoria del LCD.
La memoria DDRAM(Data Display Ram): corresponde a una zona de memoria donde se almacenan los caracteres que se van a representar en pantalla. Es decir es la memoria donde se almacenan los caracteres a mostrar con su correspondiente posición.

La memoria CGROM es una memoria interna donde se almacena una tabla con los caracteres que podemos visualizar en el lcd. En la imagen podemos ver un ejemplo de la tabla con un contenido de 192 caracteres.


La memoria CGRAM(Character Generator Ram): en ella se pueden almacenar nuestros propios caracteres.


La librería del LCD:

Para poder visualizar los caracteres o símbolos en el LCD es necesario que en el programa de código fuente a emplear, incluyamos la librería de este. 
En este caso empleamos la librería "lcd.c", la cual hemos modificado. Siempre que utilicemos una librería de este tipo tendremos que analizarla para saber cuales son los pines de control y los pines para el Bus de datos, en este caso podemos observar que están definidos al comienzo de la misma.

#define LCD_ENABLE_PIN  PIN_D0
#define LCD_RS_PIN      PIN_D1
#define LCD_RW_PIN      PIN_D2
#define LCD_DATA4       PIN_D4   
#define LCD_DATA5       PIN_D5  
#define LCD_DATA6       PIN_D6 
#define LCD_DATA7       PIN_D7 

En el resto de la librería se puede encontrar todas las estructuras necesarias así como las funciones que nos permiten utilizar nuestro LCD.
Podemos encontrar funciones como :

lcd_init: inicializa el lcd.
lcd_gotoxy: establece la posicion de escritura en el lcd.
lcd_putc: nos muestra un dato en la siguiente posición del lcd, podemos emplear funciones como \f para limpiar el display, \n cambio a la segunda línea, \b mueve una posición atrás.
lcd_getc(x,y): devuelve caracteres a la posición x,y.
Otras funciones: lcd_send_nibble(BYTE n), lcd_send_byte(BYTE address, BYTE n). 


Aquí se puede ver un ejemplo de una sencilla programación en una Pic control, y muestra de datos en el LCD, son datos inespecíficos que no muestran ninguna información.

2.- Vídeo



Simulación

Código 






3.-Conclusiones

  • Se utilizo el comando "lcd_gotoxy" para poder establecer y escribir en el LCD teniendo en cuenta las filas.
  • Para hacer la condición de bucle en el buzzer utilizamos la función for.
  • Realizamos un habilitador y des habilitador en el programa a evaluar,
4.- Referencia

viernes, 1 de noviembre de 2019

Laboratorio 10_2019


Laboratorio 10
"Programación con Display de 7 segmentos"

1.- Marco teórico

TIPOS DE VARIABLES

Enteros
Los enteros son el tipo de dato más primitivo en C. Se usan para representar números enteros. Pero siempre se pueden encontrar otras aplicaciones para los números enteros. En general se pueden usar para representar cualquier variable discreta.
Los tipos de datos enteros son: short, int, long y long long, cada uno representando un número entero de un tamaño o capacidad determinado. Según el compilador y la plataforma de hardware, cada uno de estos tipos de dato puede ocupar desde 1 byte hasta 8 bytes en memoria (para más detalles busca en la referencia).
Además, el lenguaje C hace la distinción de si el entero es con signo (signed) o sin signo (unsigned). En caso de que no se declare si es con signo o sin signo, se toma con signo.

Algunos ejemplos de declaraciones de enteros:
int a;
  unsigned int a;
  signed long a;
  signed long long a = 10000000;
Todos los números son representados en memoria mediante una cadena de bits. En el caso de los números con signo, el bit más significativo es el que se usa para representar el signo. La representación de los números negativos se realiza mediante el complemento a dos, que es una técnica que permite operar con los números negativos de forma lógica.
A modo de ejemplo, la representación en memoria del número -8 en una variable de 2 bytes, entera, con signo, sería la siguiente:
1111111111111000

Reales
Los tipos de datos que representan a los números reales, ya que utilizan un sistema de representación basado en la técnica de coma flotante, que permite operar con números reales de diversas magnitudes, mediante un número decimal llamado mantisa y un exponente que indica el orden de magnitud.
El tipo de dato flotante en lenguaje C sólo tiene dos tamaños: el float y el double, que son 4 bytes y 8 bytes respectivamente. Se los puede utilizar tanto para representar números decimales, como para representar números enteros con un orden de magnitud muy grande.
La forma de declarar una variable flotante es escribiendo en una línea uno de los tipos de datos flotantes y a continuación el nombre de la variable y tal vez algún valor que se les quiera dar.
Algunos ejemplos:

float a;
  double a = 1e23;
  double a = 3.1416;
  float a = 4e-9;
  double a = -78;
 Hay que tener en cuenta que aunque los valores flotantes son más convenientes para algunas aplicaciones, hay casos en los que se prefieren los enteros. Esto se debe a que los números flotantes no necesariamente tienen soporte de hardware, en particular en las plataformas integradas. Una alternativa que se utiliza en estas situaciones es interpretar los enteros como decimales de forma que 150 se interprete como 1.5 y 2345 como 23.45.

2.- Vídeo


Simulación


Código






3.-Conclusiones
  • Reconocimos los comandos del software de programación de CCS C COMPILER. 
  • Realizamos la simulación en ISIS PROTEUS del mismo programa.
  • Identificamos y programamos el display de 7 segmentos.