viernes, 6 de diciembre de 2019

PROYECTO FINAL

PROYECTO FINAL

"Estacionamiento Inteligente"

1. CAPACIDAD TERMINAL:
  • Utilizar al microcontrolador en aplicaciones de control electrónico.
  • Desarrollar y ejecutar programas en un microcontrolador PIC.
  • Programar y configurar interfaces básicas del microcontrolador.
2. COMPETENCIA ESPECIFICA DE LA SESIÓN:
  • Poner en practica los conocimientos adquiridos en cuanto la programación de controladores PIC y Arduino.
2. OBJETIVOS:

  • Diseñar un estacionamiento inteligente, a partir de los conocimientos adquiridos en el cursos de microcontroladores.
  • Realizar la programación correspondiente al proyecto mediante el software y hardware Arduino.
  • Implementar nuestro proyecto en un prototipo de pequeña escala, para demostrar el funcionamiento de nuestro proyecto.
3. JUSTIFICACIÓN:


En la actualidad, los estacionamientos convencionales ubicados en los centros comerciales, lugares públicos o el centro histórico de la ciudad de Arequipa, sufren diversos inconvenientes al momento de ingresar con nuestro automóvil; tales como: el número de espacios vacíos u ocupados, la fácil visualización de un espacio libre o, el control de la entrada y salida de los autos que ingresaron al estacionamiento. A partir de todos estos problemas presentes en una ciudad con un parque automotor relativamente amplio como es el de Arequipa, decidimos diseñar este proyecto, el "Estacionamiento Inteligente", con el objetivo de solucionar todos los problemas ya antes mencionados.

Resultado de imagen para estacionamiento inteligente

4. MATERIALES Y EQUIPO:

4.1. Sensor infrarrojo
Resultado de imagen para sensores infrarrojos arduino
4.2. Sensor seguidor de línea
Resultado de imagen para sensor seguidor de linea arduino
4.3. Display (7 segmentos)
Resultado de imagen para display 7 segmentos
4.4. Arduino UNO
Resultado de imagen para arduino uno
4.5. Servomotor
Resultado de imagen para servomotor
4.6. Led's
Resultado de imagen para leds
4.6. Jumpers
Resultado de imagen para jumpers
4.7. Foam

Resultado de imagen para foam
5. EVIDENCIAS DEL PROYECTO:

5.1. Avance #1
5.2. Avance #2
5.3. Avance #3
6. OBSERVACIONES:
  • Para la elaboración de la maqueta, optamos por el material conocido como "foam"; ya que, es fácil de cortar y bastante resistente.
  • El display es anodo por lo tanto se conectara a positivo.
  • El sensor elegido para el proyecto, es el de seguidor de linea, funciona de tal manera que al detectar el carro se encenderá un led de un determinado color.
  • El display tiene un "dp" que se conecta directamente a el hardware de Arduino.
7. CONCLUSIONES
  • Tuvimos esta idea debido a que observamos que en los estacionamientos no se da una buena administración y poco orden, diseñamos un sistema de orden de carros y conteo.
  • Arduino es una sencilla placa de entradas y salidas de señales digitales y analogicas.
  • Arduino al ser un open-hardware, podemos hacer cualquier programación sin necesidad de una licencia.

sábado, 23 de noviembre de 2019

LABORATORIO NRO. 13

LECTURA DE ENTRADAS ANALÓGICAS

1. CAPACIDAD TERMINAL:
  • Utilizar al microcontrolador en aplicaciones de control electrónico.
  • Desarrollar y ejecutar programas en un microcontrolador PIC
  • Programar y configurar interfaces básicas del microcontrolador.
2. COMPETENCIA ESPECIFICA DE LA SESIÓN:
  • Lecturas analógicas de un canal del PIC.
  • Configuración de un sensor de temperatura.
  • Lectura analogica en una pantalla LCD.
2. MARCO TEÓRICO:

2.1. MICROCONTROLADORES:

Los principiantes en electrónica creen que un microcontrolador es igual a un microprocesador. Esto no es cierto. Difieren uno del otro en muchos sentidos. La primera y la más importante diferencia es su funcionalidad. Para utilizar al microprocesador en una aplicación real, se debe de conectar con componentes tales como memoria o componentes buses de transmisión de datos. Aunque el microprocesador se considera una máquina de computación poderosa, no está preparado para la comunicación con los dispositivos periféricos que se le conectan. Para que el microprocesador se comunique con algún periférico, se deben utilizar los circuitos especiales. Así era en el principio y esta práctica sigue vigente en la actualidad.

al-mundo-de-los-microcontroladores-chapter-01-fig0-1

Por otro lado, al microcontrolador se le diseña de tal manera que tenga todas las componentes integradas en el mismo chip. No necesita de otros componentes especializados para su aplicación, porque todos los circuitos necesarios, que de otra manera correspondan a los periféricos, ya se encuentran incorporados. Así se ahorra tiempo y espacio necesario para construir un dispositivo.

2.2. PIC16F877A:
Es un microcontrolador de MicroChip Technology familia a la cual se le denomina PIC, fabricado por tecnología CMOS. Tiene ventajas como su consumo de potencia que es muy bajo y ademñas es completamente estático (el reloj puede detenerse y los datos de la memoria no se pierden). Tiene una memoria de programa tipo FLASH, lo que representa gran facilidad en el desarrollo de prototipos y en su aprendizaje, pues permite reprogramarlo nuevamente sin ser borrado con anterioridad.

CARACTERÍSTICAS
Las características principales de estos dispositivos son:
  • CPU de arquitectura RISC (Reduced Instruction Set Computer).
  • Set de 35 instrucciones.
  • Frecuencia de reloj de hasta 20MHz (ciclo de instrucción de 200ns).
  • Todas las instrucciones se ejecutan en un único ciclo de instrucción, excepto las de salto.
  • Hasta 8K x 14 palabras de Memoria de Programa FLASH.
  • Hasta 368 x 8 bytes de Memoria de Datos tipo RAM.
  • Hasta 256 x 8 bytes de Memoria de Datos tipo EEPROM.
  • Hasta 15 fuentes de Interrupción posibles.​
  • 8 niveles de profundidad en la Pila hardware.
  • Modo de bajo consumo (Sleep).
  • Tipo de oscilador seleccionable (RC, HS, XT, LP y externo).
  • Rango de voltaje de operación desde 2,0V a 5,5V.
  • Conversor Analógico/Digital de 10 bits multicanal.
  • 3 Temporizadores.
  • Watchdog Timer o Perro Guardián.
  • 2 módulos de captura/comparación/PWM.
  • Comunicaciones por interfaz USART (Universal Synchronous Asynchronous Receiver Transmitter).​
  • Puerto Paralelo Esclavo de 8 bits (PSP).
  • Puerto Serie Síncrono (SSP) con SPI e I²C.
    ENCAPSULADOS


    REGISTROS INTERNOS


    DIAGRAMA INTERNO


    2.3. ENTRADAS ANALÓGICAS


    Lectura de un valor analogico
    Esta característica es muy importante a la hora de trabajar con sensores, debido a que estos entregan valores de tensión para reflejar la variable física que esta midiendo.
    En estas entradas se pueden sensar valores de 0 a 5 V y se pueden representar(según el PIC) con diferentes resoluciones, como por ejemplo 256 valores, 1024(revisar datasheet).
    Así si trabajamos con una resolución de 256 tendremos para 0V una salida de 0 y para los 5V veremos el numero 255, lo mismo con otras resoluciones y valores intermedios.

    Para configurar las entradas analógicas debemos ir a Analog en el wizard y seleccionar que entradas ocuparemos para nuestros propósitos, por ejemplo yo configurare A0, A1 y A3.

     setup_adc_ports(AN0_AN1_AN3);

    Y al lado en Units una resolucion de 0-1023(1024 valores).

    Display alfanumerico
    Los displays son muy usados para permitir al usuario leer de una forma fácil alguna variable, mensaje, dato, etc.
    Los hay en varios modelos y características donde las principales son el numero de filas y columnas que tienen disponible para desplegar mensajes. Estos se expresan como una matriz donde por ejemplo si el display puede desplegar 16 caracteres en dos filas se dice que es un display alfanumérico de 16x2.


    Configurarlo en CCS es muy fácil y para eso en el mismo wizard nos dirigimos a Drivers y seleccionamos LCD driver. Las conexiones las podemos ver en I/O Pins pero yo las expondré en los ejemplos descargables.

    Ya con el código hecho por el wizard nos queda leer el valor analógico y desplegar caracteres en el display. Expondré el código en el cual están comentado todas las lineas importantes.

    #include <16F873A.h>
    #device adc=10 //resolucion de 1024 valores

    #FUSES NOWDT                    //No Watch Dog Timer
    #FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
    #FUSES NOPUT                    //No Power Up Timer
    #FUSES NOPROTECT                //Code not protected from reading
    #FUSES NODEBUG                  //No Debug mode for ICD
    #FUSES NOBROWNOUT               //No brownout reset
    #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
    #FUSES NOCPD                    //No EE protection
    #FUSES NOWRT                    //Program memory not write protected
    #FUSES RESERVED                 //Used to set the reserved FUSE bits

    #use delay(clock=20000000) //oscilador externo de 20MHz
    #include <LCD.C>
    float a=0; //definimos la variable "a"

    void main()
    {

       setup_adc_ports(AN0_AN1_AN3); //especifica que canales son configurados como analogicos
       setup_adc(ADC_CLOCK_DIV_2);
       setup_spi(SPI_SS_DISABLED);
       setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
       setup_timer_1(T1_DISABLED);
       setup_timer_2(T2_DISABLED,0,1);
       setup_comparator(NC_NC_NC_NC);
       setup_vref(FALSE);
       lcd_init(); //se inicializa el display

       while(true){
       set_adc_channel(0); //especifica de que canal se leera el valor analogico
       a=read_adc(); //se lee el valor analogico y se guarda digitalmente en la variable "a"
       printf(lcd_putc,"\f"); //limpiamos el display alfanumerico
       printf(lcd_putc,"Valor Digital"); //en la primera linea aparece el mensaje "Valor Digital"
       lcd_gotoxy(1,2); //saltamos al primer cuadro de la segunda linea del display
       printf(lcd_putc,"%f",a); //imprimimos el valor digital "a" en la segunda linea
       delay_ms(100); //esperamos un tiempo de 100ms para esperar a la siguiente conversion

       }   

    }


    2.4. SENSOR DE TEMPERATURA


    El sensor que nosotros vamos a utilizar para este circuito es el LM35, este sensor  LM35 es un sensor de temperatura digital. A diferencia de otros dispositivos como los termistores en los que la medición de temperatura se obtiene de la medición de su resistencia eléctrica, el LM35 (parecido a un transistor de gama baja) es un integrado con su propio circuito de control, que proporciona una salida de voltaje proporcional a la temperatura.

    La salida del LM35 es lineal con la temperatura, incrementando el valor a razón de 10mV por cada grado centígrado. El rango de medición es de -55ºC (-550mV) a 150ºC (1500 mV). Su precisión a temperatura ambiente es de 0,5ºC.

    Los sensores LM35 son relativamente habituales en el mundo de los aficionados a la electrónica por su bajo precio, y su sencillez de uso, tiene tan solo 3 pines.

    CARACTERÍSTICAS
    • Calibrado en centígrados °C.
    • Factor de escala lineal 10.0 mV/°C
    • Rango de medición de -55° a +150°C
    • Ideal para aplicaciones remotas.
    • Funciona de 4 - 30 V.
    • Consumo menor a 60 uA.
    • Baja impedancia.
    3. EVIDENCIA DE TAREAS EN LABORATORIO:



    4. OBSERVACIONES:
    • Debemos declarar en el código una librería especifica, para poder programar la pantalla LCD de forma sencilla.
    • La programación ejecutada en el software de Proteus presenta algunos errores en la simulación; por lo cual es conveniente probar nuestros programas en el modulo PIC físico.
    • Debemos ajustar el rango de nuestro sensor de temperatura; de tal forma que, este se encuentre en un valor de 0 a 100 grados centígrados.
    5. CONCLUSIONES


    • Logramos reconocer el funcionamiento y la configuración de las lecturas analógicas de un canal de PIC.
    • Realizamos la configuración de un sensor de temperatura; de tal forma que, este trabaje en un rango determinada y cumpla un numero de condiciones relevantes al laboratorio.
    • Programamos y configuramos las interfaces básicas y generales de un microcontrolador PIC.

    LABORATORIO NRO. 12

    MANEJO DEL TIMER Y LAS INTERRUPCIONES

    1. CAPACIDAD TERMINAL:
    • Utilizar al microcontrolador en aplicaciones de control electrónico.
    • Desarrollar y ejecutar programas en un microcontrolador PIC
    • Programar y configurar interfaces básicas del microcontrolador.
    2. COMPETENCIA ESPECIFICA DE LA SESIÓN:
    • Conocer el funcionamiento y la configuración de las interrupciones.
    • Programar eficientemente el LCD.
    • Programar HMI para el proyecto actual.
    2. MARCO TEÓRICO:

    2.1. MICROCONTROLADORES:

    Los principiantes en electrónica creen que un microcontrolador es igual a un microprocesador. Esto no es cierto. Difieren uno del otro en muchos sentidos. La primera y la más importante diferencia es su funcionalidad. Para utilizar al microprocesador en una aplicación real, se debe de conectar con componentes tales como memoria o componentes buses de transmisión de datos. Aunque el microprocesador se considera una máquina de computación poderosa, no está preparado para la comunicación con los dispositivos periféricos que se le conectan. Para que el microprocesador se comunique con algún periférico, se deben utilizar los circuitos especiales. Así era en el principio y esta práctica sigue vigente en la actualidad.

    al-mundo-de-los-microcontroladores-chapter-01-fig0-1

    Por otro lado, al microcontrolador se le diseña de tal manera que tenga todas las componentes integradas en el mismo chip. No necesita de otros componentes especializados para su aplicación, porque todos los circuitos necesarios, que de otra manera correspondan a los periféricos, ya se encuentran incorporados. Así se ahorra tiempo y espacio necesario para construir un dispositivo.

    2.2. PIC16F877A:
    Es un microcontrolador de MicroChip Technology familia a la cual se le denomina PIC, fabricado por tecnología CMOS. Tiene ventajas como su consumo de potencia que es muy bajo y ademñas es completamente estático (el reloj puede detenerse y los datos de la memoria no se pierden). Tiene una memoria de programa tipo FLASH, lo que representa gran facilidad en el desarrollo de prototipos y en su aprendizaje, pues permite reprogramarlo nuevamente sin ser borrado con anterioridad.

    CARACTERÍSTICAS
    Las características principales de estos dispositivos son:
    • CPU de arquitectura RISC (Reduced Instruction Set Computer).
    • Set de 35 instrucciones.
    • Frecuencia de reloj de hasta 20MHz (ciclo de instrucción de 200ns).
    • Todas las instrucciones se ejecutan en un único ciclo de instrucción, excepto las de salto.
    • Hasta 8K x 14 palabras de Memoria de Programa FLASH.
    • Hasta 368 x 8 bytes de Memoria de Datos tipo RAM.
    • Hasta 256 x 8 bytes de Memoria de Datos tipo EEPROM.
    • Hasta 15 fuentes de Interrupción posibles.​
    • 8 niveles de profundidad en la Pila hardware.
    • Modo de bajo consumo (Sleep).
    • Tipo de oscilador seleccionable (RC, HS, XT, LP y externo).
    • Rango de voltaje de operación desde 2,0V a 5,5V.
    • Conversor Analógico/Digital de 10 bits multicanal.
    • 3 Temporizadores.
    • Watchdog Timer o Perro Guardián.
    • 2 módulos de captura/comparación/PWM.
    • Comunicaciones por interfaz USART (Universal Synchronous Asynchronous Receiver Transmitter).​
    • Puerto Paralelo Esclavo de 8 bits (PSP).
    • Puerto Serie Síncrono (SSP) con SPI e I²C.
      ENCAPSULADOS


      REGISTROS INTERNOS


      DIAGRAMA INTERNO


      2.3. INTERRUPCIONES:


      Una interrupción es un aviso provocado por un módulo del PIC, por un cambio en el estado de un pin o un recordatorio de que ha pasado un cierto tiempo. Como su nombre indica este aviso interrumpirá la tarea que se este haciendo en ese momento y pasaremos a ejecutar una rutina de servicio o gestión de la interrupción.

      Veremos un repaso de los bits y registros de control asociados a las diferentes interrupciones, como habilitarlas y como escribir rutinas de servicio (ISR). Crearemos definiciones (#define) que nos permitirán operar con las interrupciones sin tener que recordar los bits/registros asociados, a la vez que facilitarán la tarea de portar nuestro programa a otro compilador y/o microcontrolador. 

      Es importante familiarizarse con el manejo de interrupciones, ya que nos evita poder manejar muchos tipos de eventos sin estar pendientes de ello. En sucesivos tutoriales veremos como el uso de interrupciones nos permite aprovechar de forma mucho más eficiente los recursos del PIC.

      2.4. HABILITACIÓN DE INTERRUPCIONES:



      Antes de entrar en detalles sobre cada interrupción por separado hemos de describir un par de bits (bits 7 y 6 del SFR INTCON) que tienen un efecto global sobre la activación de bloques de interrupciones. 



      INTCON.GIE  -> habilita (1) o deshabilita (0) todas las interrupciones.
      INTCON.PEIE -> habilita (1) o deshabilita (0) las interrupciones asociadas a módulos periféricos.

      Por ejemplo, antes de poder usar la interrupción del temporizador TMR0 debemos asegurarnos de que las interrupciones globales estén habilitadas (INTCON.GIE=1).  Si lo que deseamos es usar la interrupción asociada a la recepción del puerto serie, tanto INTCON.GIE como INTCON.PEIE deben estar a 1, ya que dicha interrupción está declarada como periférica.

      Para usar estos bits de una forma más conveniente incluiríamos los siguientes defines (en el programa principal o bien en un fichero .h incluido en el proyecto):

      // Global flags (without priority levels)
      #define enable_global_ints  INTCONbits.GIE=1
      #define enable_perif_ints   INTCONbits.PEIE=1
      #define disable_global_ints INTCONbits.GIE=0
      #define disable_perif_ints  INTCONbits.PEIE=0


      Hay varias razones para usar estas (o similares definiciones):
      • Siempre es más facil recordar enable_global_ints que acordarse de que hay que poner a 1 el bit GIE del registro INTCON.
      • Si cambiamos a otro compilador donde la forma de direccionar los bits de los registros es diferente, basta cambiar las definiciones (esto es, usar un fichero .h distinto). En el caso p.e. del compilador MikroC Pro en vez de INTCONbits.GIE usaríamos INTCON.GIE.
      • Si cambiamos a otro controlador, puede que los bits correspondientes cambien de registro y/o nombre. De nuevo, un cambio en el fichero de encabezamiento hace que no sea preciso cambiar el resto del código.
      3. EVIDENCIA DE TAREAS EN LABORATORIO:


      4. OBSERVACIONES:
      • Debemos declarar en el código una librería especifica, para poder programar la pantalla LCD de forma sencilla.
      • La programación ejecutada en el software de Proteus no presenta errores en la simulacion; lo que nos permite probar nuestro codigo con mayor facilidad.
      • Para realizar el conteo de nuestro temporizador, debemos cambiar los signos de + a - en nuestro "void timer" y, realizar algunos cambios extras para que el temporizador realize el conteo de forma descendente.
      5. CONCLUSIONES

      • Logramos conocer el funcionamiento y la configuración de interrupciones.
      • Programamos eficientemente el LCD en torno a un temporizador regresivo; ya que, logramos cumplir todas las condiciones indicadas en el reto del laboratorio.
      • Logramos diseñar un programa que cumpla con las condiciones indicadas en el laboratorio, de tal forma que, consolidemos nuestros conocimientos generales de programación.

      domingo, 17 de noviembre de 2019

      LABORATORIO NRO. 11

      PROGRAMACIÓN DE UNA PANTALLA LCD

      1. CAPACIDAD TERMINAL:
      • Utilizar al microcontrolador en aplicaciones de control electrónico.
      • Desarrollar y ejecutar programas en un microcontrolador PIC
      • Programar y configurar interfaces básicas del microcontrolador.
      2. COMPETENCIA ESPECIFICA DE LA SESIÓN:
      • Conocer el display LCD y su funcionamiento.
      • Programar eficientemente el LCD.
      • Programar HMI para el proyecto actual.
      2. MARCO TEÓRICO:

      2.1. MICROCONTROLADORES:

      Los principiantes en electrónica creen que un microcontrolador es igual a un microprocesador. Esto no es cierto. Difieren uno del otro en muchos sentidos. La primera y la más importante diferencia es su funcionalidad. Para utilizar al microprocesador en una aplicación real, se debe de conectar con componentes tales como memoria o componentes buses de transmisión de datos. Aunque el microprocesador se considera una máquina de computación poderosa, no está preparado para la comunicación con los dispositivos periféricos que se le conectan. Para que el microprocesador se comunique con algún periférico, se deben utilizar los circuitos especiales. Así era en el principio y esta práctica sigue vigente en la actualidad.

      al-mundo-de-los-microcontroladores-chapter-01-fig0-1

      Por otro lado, al microcontrolador se le diseña de tal manera que tenga todas las componentes integradas en el mismo chip. No necesita de otros componentes especializados para su aplicación, porque todos los circuitos necesarios, que de otra manera correspondan a los periféricos, ya se encuentran incorporados. Así se ahorra tiempo y espacio necesario para construir un dispositivo.

      2.2. PIC16F877A:
      Es un microcontrolador de MicroChip Technology familia a la cual se le denomina PIC, fabricado por tecnología CMOS. Tiene ventajas como su consumo de potencia que es muy bajo y ademñas es completamente estático (el reloj puede detenerse y los datos de la memoria no se pierden). Tiene una memoria de programa tipo FLASH, lo que representa gran facilidad en el desarrollo de prototipos y en su aprendizaje, pues permite reprogramarlo nuevamente sin ser borrado con anterioridad.

      CARACTERÍSTICAS
      Las características principales de estos dispositivos son:
      • CPU de arquitectura RISC (Reduced Instruction Set Computer).
      • Set de 35 instrucciones.
      • Frecuencia de reloj de hasta 20MHz (ciclo de instrucción de 200ns).
      • Todas las instrucciones se ejecutan en un único ciclo de instrucción, excepto las de salto.
      • Hasta 8K x 14 palabras de Memoria de Programa FLASH.
      • Hasta 368 x 8 bytes de Memoria de Datos tipo RAM.
      • Hasta 256 x 8 bytes de Memoria de Datos tipo EEPROM.
      • Hasta 15 fuentes de Interrupción posibles.​
      • 8 niveles de profundidad en la Pila hardware.
      • Modo de bajo consumo (Sleep).
      • Tipo de oscilador seleccionable (RC, HS, XT, LP y externo).
      • Rango de voltaje de operación desde 2,0V a 5,5V.
      • Conversor Analógico/Digital de 10 bits multicanal.
      • 3 Temporizadores.
      • Watchdog Timer o Perro Guardián.
      • 2 módulos de captura/comparación/PWM.
      • Comunicaciones por interfaz USART (Universal Synchronous Asynchronous Receiver Transmitter).​
      • Puerto Paralelo Esclavo de 8 bits (PSP).
      • Puerto Serie Síncrono (SSP) con SPI e I²C.
        ENCAPSULADOS


        REGISTROS INTERNOS


        DIAGRAMA INTERNO


        2.3. PANTALLA LCD:

        Una pantalla de cristal líquido o LCD (sigla del inglés Liquid Crystal Display) es una pantalla delgada y plana formada por un número de píxeles en color o monocromos colocados delante de una fuente de luz o reflectora. A menudo se utiliza en dispositivos electrónicos de pilas, ya que utiliza cantidades muy pequeñas de energía eléctrica.

        Manejo del LCD con PIC
        Existe en el compilador un driver para manejar un display de cristal líquido (LCD) de 2 líneas por 16 caracteres cada una.
        El procedimiento para trabajar con el LCD 16×2 con PIC es parecido al procedimiento del teclado telefónico.
        La conexión entre el LCD y el microcontrolador es la siguiente:
        Conexión LCD con PIC
        Los pasos que se deben seguir para manejar el LCD son:
        1. Incluir en el encabezado del programa el driver para manejar el teclado.
        2. Por defecto el LCD se conecta al puerto D, si se desea conectar el LCD en el puerto B  se incluye esta línea en el encabezado:
        3. En el programa principal se inicializa el driver
        4. Se usan las funciones del LCD que tiene implementadas el driver:
        Un LCD 16×2 PIC (Mostrado en la figura al inicio) esta conformado por 16 columnas y 2 filas
        Sin embargo también existen en el mercado otros tipos de LCDs como por ejemplo el LCD 20×4 PIC que tiene 20 columnas y 4 filas.
        3. EVIDENCIA DE TAREAS EN LABORATORIO:



        4. OBSERVACIONES:
        • Debemos declarar en el código una librería especifica, para poder programar la pantalla LCD de forma sencilla.
        • La programación ejecutada en el software de Proteus no presenta errores en la simulacion; lo que nos permite probar nuestro codigo con mayor facilidad.
        • Para borrar todos los datos mostrados en nuestra pantalla LCD, debemos colocar "\f" antes del mensaje o numeros que vayamos a mostrar.
        5. CONCLUSIONES
        • Se concluye que, logramos conocer el display LCD y su funcionamiento correspondiente, en base al modulo PIC y el software de simulación Proteus.
        • Programamos eficientemente el LCD en base a la solución del reto del laboratorio; ya que, logramos cumplir todas las condiciones indicadas.
        • Logramos diseñar un programa que cumpla con las condiciones indicadas en el laboratorio, de tal forma que, consolidemos nuestros conocimientos generales de programación.