miércoles, 11 de diciembre de 2019

Programacion pantalla LCD Lab11

Laboratorio N°11

Programacion pantalla LCD Lab 11


1.- Competencias especificas
  • Conocer el funcionamiento del Display LCD
  • Programacion de LCD
2.- Marco Teórico 

Un PIC es un circuito integrado programable (Programmable Integrated Circuited), el cual contiene todos los componentes para poder realizar y controlar una tarea, por lo que se denomina como un microcontrolador.Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de general instrument.






El PIC original se diseñó para ser usado con la nueva CPU de 16 bits CP16000. Siendo en general una buena CPU, ésta tenía malas prestaciones de entrada y salida, y el PIC de 8 bits se desarrolló en 1975 para mejorar el rendimiento del sistema quitando peso de entrada/salida a la CPU. El PIC utilizaba microcódigo simple almacenado en ROM para realizar estas tareas; y aunque el término no se usaba por aquel entonces, se trata de un diseño RISC que ejecuta una instrucción cada 4 ciclos del oscilador.

3.- Que es un LCD?

El LCD(Liquid Crystal Dysplay) 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. Está gobernado por un microcontrolador el cual dirige todo su funcionamiento.
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.


4.- Conexiones

En la siguiente imagen de Proteus se puede observar la estructura de sus pines.
Lo  podemos dividir en los Pines de alimentación, pines de control y los pines del bus de datos bidireccional. Por lo general podemos encontrar ademas en su estructura los pines de Anodo de led backlight y cátodo de led backlight.




5.- Pines de alimentacion.

Vss: Gnd
Vdd: +5 voltios
Vee: corresponde al pin de contraste, lo regularemos con un potenciómetro de 10K conectado a Vdd.
6.- Pines de control.

RS: Corresponde al pin de selección de registro de control de datos (0) o registro de datos(1). Es decir el pin RS funciona paralelamente a los pines del bus de datos. Cuando RS es 0 el dato presente en el bus pertenece a un registro de control/instrucción. y cuando RS es 1 el dato presente en el bus de datos pertenece a un registro de datos o un carácter.
RW: Corresponde al pin de Escritura(0) o de Lectura(1). Nos permite escribir un dato en la pantalla o leer un dato desde la pantalla.
E: Corresponde al pin Enable o de habilitación. Si E(0) esto quiere decir que el LCD no esta activado para recibir datos, pero si E(1) se encuentra activo y podemos escribir o leer desde el LCD.

7.- Pines de Bus de datos.

El Bus de datos bidireccional comprende desde los pines D0 a D7. Para realizar la comunicación con el LCD podemos hacerlo utilizando los 8 bits del bus de datos(D0 a D7) o  empleando los 4 bits mas significativos del bus de datos(D4 a D7). En este caso vamos a explicar la comunicación con el bus de 4 bits.


8.- DDRAW y CGROW.


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.







Modulo PIC





9.- Video.











10.- Observaciones 


  • Se empleó otro antirrebote ya que el presentado en el laboratorio en ciertas ocasiones contaba doble al momento de soltar el pulsador.
  • AL mantener precionado el boton, tenemos problemas en el coclo while ya que no permite ejecutar ninguna otra instruccion.

11.- Conclusiones

  • Al finalizar con el laboratorio, se logro comprender el funcionamiento de un LCD y el cómo controlarlo empleando un microcontrolador PIC16F877A.
  • Se lograron emplear de manera correcta las instrucciones de manejo del LCD, teniendo como resultado la implementación virtual y física del programa propuesto en el presente laboratorio.

Programacion bucles de control Lab 09

Laboratorio N°09

PROGRAMACION BUCLES DE CONTROL


1.- Competencias especificas
  • Interaccion con display 7 segmentos
  • Conocimientos herramientas multiplexor
2.- Marco Teórico 

Un PIC es un circuito integrado programable (Programmable Integrated Circuited), el cual contiene todos los componentes para poder realizar y controlar una tarea, por lo que se denomina como un microcontrolador.Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de general instrument.






El PIC original se diseñó para ser usado con la nueva CPU de 16 bits CP16000. Siendo en general una buena CPU, ésta tenía malas prestaciones de entrada y salida, y el PIC de 8 bits se desarrolló en 1975 para mejorar el rendimiento del sistema quitando peso de entrada/salida a la CPU. El PIC utilizaba microcódigo simple almacenado en ROM para realizar estas tareas; y aunque el término no se usaba por aquel entonces, se trata de un diseño RISC que ejecuta una instrucción cada 4 ciclos del oscilador.

3.- Instrucciones PIC.



4.- Bucle "For".


El display 7 segmentos es un componente electrónico muy utilizado para representar visualmente números y letras, es de gran utilidad dado su simpleza para implementar en cualquier proyecto electrónico.
Esta compuesto por 7 dispositivos lumínicos (Led) que forman un “8”, de esta forma controlando el encendido y apagado de cada led, podremos representar el numero o letra que necesitamos.

Como controlar el numero que quiero dibujar?

Fácil, Lo primero que tenemos que identificar es con que tipo de display estamos trabajando (Cátodo o Ánodo común), una ves identificado nos basamos en la siguiente tabla de verdad dado el caso que corresponda.

5.- Condicionante "IF".
La sentencia condicional if se usa para tomar decisiones, este evaluá básicamente una operación lógica, es decir una expresión que de como resultado True o False, y ejecuta la pieza de código siguiente siempre y cuando el resultado sea verdadero.



6.-  "Else if".

elseif, como su nombre lo sugiere, es una combinación de if y else. Del mismo modo que else, extiende una sentencia if para ejecutar una sentencia diferente en caso que la expresión if original se evalúe como FALSE. Sin embargo, a diferencia de else, esa expresión alternativa sólo se ejecutará si la expresión condicional del elseif se evalúa como TRUE. 



7.- Caracteristicas Tecnicas.
  • Memoria ROM: 8Kb.
  • Memoria RAM: 368 x 8 bytes.
  • Pines I/O: 33.
  • Frecuencia: 20 Mhz con cristal externo.
  • Permite programación ICSP.

Diagrama de pines
Resultado de imagen para PIC16F877A caracteristicas

Diagrama interno 


Modulo PIC





8.- Video.











9.- Observaciones 
  • El programa al no tener declarada la variable "i" usada para el void BIP() , se procedió a declararla ya que si esta funcion no se utilizaba en el programa se podia borrar.
  • Al presionar el botón de incremento, solo se quedaba prendido el último display, para solucionar este problema se emplearon 2 funciones visualizar como retardos de distintos tiempos.

10.- Conclusiones

  • Se comprendio el concepto de multiplexación y aplicarlo al control de un arreglo de displays mediante el microcontrolador.
  • Se comprendió sobre uso y aplicación de los display de 7 segmentos, mediante las pruebas en laboratorio.
  • Se logró crear un programa empleando PICC compiler para manipular un display de 7 segmentos con el micro controlador PIC, haciendo uso de bucles, sentencias y declaración de las variables necesarias para dicho fin.

martes, 10 de diciembre de 2019

Manejo de timer Lab12

Laboratorio N°12

Manejo de Timer


1.- Competencias especificas
  • Conocer el funcionamiento y configuracion del Timer
  • Conocer el funcionamiento y configuracion de las interrupciones
  • Programacion de un cronometro
2.- Marco Teórico 

Un PIC es un circuito integrado programable (Programmable Integrated Circuited), el cual contiene todos los componentes para poder realizar y controlar una tarea, por lo que se denomina como un microcontrolador.Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de general instrument.






El PIC original se diseñó para ser usado con la nueva CPU de 16 bits CP16000. Siendo en general una buena CPU, ésta tenía malas prestaciones de entrada y salida, y el PIC de 8 bits se desarrolló en 1975 para mejorar el rendimiento del sistema quitando peso de entrada/salida a la CPU. El PIC utilizaba microcódigo simple almacenado en ROM para realizar estas tareas; y aunque el término no se usaba por aquel entonces, se trata de un diseño RISC que ejecuta una instrucción cada 4 ciclos del oscilador.

3.- Interrupciones de un microcontrolador

Es una de las caracterasticas de los microcontroladores, de las mas importantes que constituye la capacidad de sincronizar la ejecucion de programas con acontecimientos externos; es decir, cuando se produce una interrupcion, el micro automaticamente deja lo que esto haciendo, va a la direccion 04h de programa y ejecuta lo que encuentre a partir de alli hasta encontrarse con la instruccion RETFIE que le hara abandonar la interrupcion y volver al lugar donde se encontraba antes de producirse dicha interrupcion. Hemos de diferenciar entre dos tipos de interrupciones posibles en un PIC:




1. - Mediante una accion interna. El desbordamiento de la Pila (Stack) por una operacion indebida, por ejemplo:
  • Al completarse la escritura de datos en una EEPROM.
  • Por desbordamiento del registro TMR0 al rebasar el valor 255 (FFh) a 0.

2. - Mediante una accion externa, la mas util. Al producirse un cambio del nivel en uno de sus pines por una accion externa.
  • Estando en el modo de reposo (SLEEP), un cambio de nivel en el pin RB0/INT .
  • Un cambio de nivel en uno de los pines RB4 a RB7 estando configurados como entrada.

4.- Conexiones

En la siguiente imagen de Proteus se puede observar la estructura de sus pines.
Lo  podemos dividir en los Pines de alimentación, pines de control y los pines del bus de datos bidireccional. Por lo general podemos encontrar ademas en su estructura los pines de Anodo de led backlight y cátodo de led backlight.




5.- Pines de alimentacion.

Vss: Gnd
Vdd: +5 voltios
Vee: corresponde al pin de contraste, lo regularemos con un potenciómetro de 10K conectado a Vdd.




Modulo PIC





6.- Video.










7.- Observaciones 

  • Durante el presente laboratorio se aprendió el correcto funcionamiento del Timer0 en el PIC 16F877A, así como los algoritmos necesarios en relación a la programación para su adecuado manejo.
  • Tanto en un temporizador ascendente como descendente  la variable centenas debe estar siempre incrementándose y no decrementándose, ya que esta variable realiza la operación de funcionamiento del temporizador ya sea para aumentar tiempo o quitar tiempo.
  • Se utilizó una variable contador, el cual me permite saber si el temporizador ya realizó la cuenta regresiva programada y de esa manera recién hacer sonar los bips correspondientes.
  • Se utilizó la función Bip en la programación, esto con la finalidad del funcionamiento de la bocina, ya que esta trabaja no con señal continua sino con alterna; y para simularlo se utilizó un bucle for que activa y desactiva el mismo.

8.- Conclusiones
  • Para el desarrollo del problema propuesto en el laboratorio, se hizo uso de 3 pulsadores D0, E0, D1. Con el D0 y E0 podemos incrementar el cronometro en segundos y minutos respectivamente, y con el D1 podemos iniciar la cuenta regresiva de dicho temporizador.
  • Se realizó una algoritmo de programación utilizando condicionales “if”, para poder limitar la subida ascendente de los segundos, ya que al no realizarlo, aparecería en nuestro LCD 60, 61 a más segundos, lo cual sería incorrecto.
  • Para poder 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, ya que de lo contrario empezaría la cuenta otras vez en 255.
  • Se debe usar un delay  después de presionar cada pulsador, esto con la finalidad de evitar falsos disparos y hacer que nuestra configuración de segundos y minutos sea lo más precisa posible ya que de lo contrario  al presionar un pulsador, este aumentaría desproporcionalmente.

viernes, 15 de noviembre de 2019

Display 7 segmentos Lab 10

Laboratorio N°10

DISPLAY 7 SEGMENTOS


1.- Competencias especificas
  • Introduccion a manejo de puertos para luces
  • Programacion de sonido
  • Creacion de subrutinas
2.- Marco Teórico 

Un PIC es un circuito integrado programable (Programmable Integrated Circuited), el cual contiene todos los componentes para poder realizar y controlar una tarea, por lo que se denomina como un microcontrolador.Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de general instrument.






El PIC original se diseñó para ser usado con la nueva CPU de 16 bits CP16000. Siendo en general una buena CPU, ésta tenía malas prestaciones de entrada y salida, y el PIC de 8 bits se desarrolló en 1975 para mejorar el rendimiento del sistema quitando peso de entrada/salida a la CPU. El PIC utilizaba microcódigo simple almacenado en ROM para realizar estas tareas; y aunque el término no se usaba por aquel entonces, se trata de un diseño RISC que ejecuta una instrucción cada 4 ciclos del oscilador.

3.- Bucle "While".

El bucle while o bucle mientras es un ciclo repetitivo basado en los resultados de una expresión lógica; se encuentra en la mayoría de los lenguajes de programación estructurados. El propósito es repetir un bloque de código mientras una condición se mantenga verdadera.



4.- Bucle "For".
El bucle for es una estructura de control en programación en la que se puede indicar de antemano el número mínimo de iteraciones. Está disponible en casi todos los lenguajes de programación imperativos.


5.- Condicionante "IF".
La sentencia condicional if se usa para tomar decisiones, este evaluá básicamente una operación lógica, es decir una expresión que de como resultado True o False, y ejecuta la pieza de código siguiente siempre y cuando el resultado sea verdadero.



6.- Condicionante "IF".

elseif, como su nombre lo sugiere, es una combinación de if y else. Del mismo modo que else, extiende una sentencia if para ejecutar una sentencia diferente en caso que la expresión if original se evalúe como FALSE. Sin embargo, a diferencia de else, esa expresión alternativa sólo se ejecutará si la expresión condicional del elseif se evalúa como TRUE. 



7.- Caracteristicas Tecnicas.
  • Memoria ROM: 8Kb.
  • Memoria RAM: 368 x 8 bytes.
  • Pines I/O: 33.
  • Frecuencia: 20 Mhz con cristal externo.
  • Permite programación ICSP.

Diagrama de pines
Resultado de imagen para PIC16F877A caracteristicas

Diagrama interno 


Modulo PIC





8.- Video.










9.- Observaciones 
  • Declarando retardos altos en el reconocimiento de un pulso, no se podían realizar estos de forma muy seguida, pero al disminuir el "delay", no se daba el suficiente tiempo de margen para soltar el botón, ocasionando que la secuencia que estos ejecutaban se hiciese más de una vez.
  • Es necesario el uso de un sistema de antirrebote, ya que el PIC funciona a la suficiente frecuencia para detectar estos transitorios, pero este problema no ocurría en simulación.
  • Se empleó una placa entrenadora diseñada para el uso del microcontrolador PIC aparte del módulo HFK.
10.- Conclusiones

  • Se logro comprender el funcionamiento de los bucles y sentencias de la programación en C, esto gracias a los programas para los ejercicios propuestos.
  • Se implemento un antirrebote que permitía pulsar rápidamente y que el microcontrolador respondiese de manera correcta a esa frecuencia.
  • Se logró conseguir información sobre las instrucciones del manejo de puertos y la declaración de valores numéricos en distintas bases.