Lab09 ProgramacionSimulacionAplicativo2 PIC18F4550
Lab09 ProgramacionSimulacionAplicativo2 PIC18F4550
Lab09 ProgramacionSimulacionAplicativo2 PIC18F4550
MICROCONTROLADORES
Laboratorio N° 9 y 10
Programación y Simulación del Aplicativo II
Integrantes:
Sección: 5 C16 A
TECSUP - 2022 II
ÍNDICE
Introducción 1
Objetivos 1
Equipos y Materiales 1
Fundamento Teórico 1
Procedimiento 4
Reto en clase 10
Reto en clase 2 14
Observaciones 21
Conclusiones 21
Rúbrica 23
Introducción
Los simuladores, en la electrónica, permiten realizar infinidad de pruebas en los cálculos
electrónicos, lógica de programación, etc. Esto permite validar el diseño electrónico y la
programación del microcontrolador. En caso hubiera algún error este se corrige modificando el
diseño o realizando otra lógica en la programación cuántas veces se quiera. Una vez logrado el
diseño y la programación correcta recién se realiza la implementación.
Objetivos
1. Utilizar las instrucciones para programar al microcontrolador PIC18F4550.
2. Utilizar software de desarrollo proporcionado por el fabricante.
3. Utilizar software de simulación digital.
Equipos y Materiales
● Computadora
● Software de desarrollo
● Proyector multimedia
● Texto del curso
● Manual del fabricante
Fundamento Teórico
Terminal Virtual:
El terminal virtual es un modelo que simula al teletipo TTY de comunicaciones serie
convencional. Este funciona bajo la norma RS 232, la cual fue establecida para poder
comunicar un ordenador con un módem.
Sus principales características son:
● Cuenta con un completo soporte bi-direccional. Esto indica que los datos que se
reciben son visualizados como caracteres ASCII, así como los datos se transmiten
en serie ASCII.
● La transmisión de datos serie se realiza mediante la utilización de dos cables: TXD
para transmitir datos y RXD para recibir datos.
● Cuenta con velocidades de transmisión de entre 300 a 57,6 kbaudios.
● Cuenta con paridad par, impar y nula.
● Su protocolo de sincronización hardware se realiza mediante dos hilos: RTS siendo
“listo para enviar” y CTS es “limpio para enviar”.
● Cuenta con un protocolo de sincronización software XON/XOFF adicional al
protocolo de sincronización hardware.
1
Figura 1. Terminal virtual en el software Proteus
Interrupciones:
Cuando se activa una interrupción, se le indica al PIC que detenga la tarea que se
encuentra realizando con el objetivo de que realice otra función con urgencia y después
continúe ejecutando su rutina habitual.
Podríamos definir a las interrupciones como unas desviaciones de flujo de control del
programa que son originadas de forma asincrónica y que puede ocurrir por diversos
sucesos que son independientes del programador, esto quiere decir que estas pueden
ocurrir en cualquier momento.
Tipos de interrupciones:
Se indicarán algunas de las diferentes causas que pueden producir una interrupción en el
PIC, siendo que el primer paso en la rutina de interrupción deberá ser el identificar la
causa de dicha interrupción:
● Interrupción externa PIC RB0/INT
● Interrupción por desborde del timer 0 (TMR0)
● Interrupción por desborde del timer 1 (TMR1)
● Interrupción por comparación exitosa exitosa en TMR2
● Interrupción del EEPROM
● Interrupción del comparador
2
LabView:
Plataforma y entorno de desarrollo que nos permite diseñar sistemas mediante un
lenguaje de programación visual pensado principalmente para sistemas hardware y
software de pruebas.
Creado por la empresa National Instruments en el año de 1976, nombra a sus programas
como instrumentos virtuales o mejor conocidos como VIs. Al ser una herramienta gráfica
de programación sus programas no se escriben como se acostumbra en otros lenguajes
de programación, es más adecuado decir que se dibujan, permitiendo una mejor
comprensión.
3
Procedimiento
Ejercicio 1
Analizar, comentar, simular e implementar en el siguiente código.
4
Figura 6. Código de Ejercicio 1- Parte 2.
Simulación:
Video: https://youtu.be/tnSG8jUUX3U
5
Circuito implementado en Proteus:
6
Figura 10. Simulación en Proteus - ejercicio 1.
7
Explicación:
Se separó el programa en 4 partes para simplificar su explicación.
En la Parte 1 se muestra la configuración de bits del PIC. Asimismo, se agrega la librería
P18F4550.INC la cual sirve para usar nombres en vez de la dirección de los registros que
tiene el PIC, también una macro llamada “MACRO_PIC18F4550.inc” la cual contiene
algunas macros para los retardos. Posteriormente se indica que la rutina MAIN se iniciará
a partir de la dirección 0x0020 de la memoria de instrucciones. De seguido Iniciaremos
llamando a la subrutina CONFIG_UART, esto nos indica la configuración para establecer
una comunicación; en ello se configura los registros TXSTA, RCSTA, BAUDCON.
8
Figura 13. Parte 2, Línea de código 25 - 34.
9
Por último, en la parte 4 se muestra la configuración UART, además se incluyen las
librerías de retardos y conversión.
10
Figura 17. Función MAIN
La tercera parte es la subrutina leer_adc que se encarga de obtener los datos de la
entrada, realizar la conversión a voltios y mostrarla por el monitor serial y el lcd 16x2. El
envío de datos al LCD se realiza mediante el uso de la subrutina ENVIA_LCD_DATO
encontrada en la librería LIB_LCD, mientras que para el envío de datos al monitor serial
es realizado mediante la subrutina ENVIAR_TX.
11
La siguiente parte es la subrutina ENVIAR_TX que se encarga de enviar los datos a el
monitor serial.
12
Simulación de programa
13
Reto en clase 2
Diseñar un programa que muestre el valor de un sensor de Temperatura de entrada, este
será mostrado en un panel LCD 16x2 y en un monitor serial.
Desarrollo:
El programa consiste en 5 partes principales sin contar con la configuración. En la primera
parte se realiza la creación de una variable DATO_ADC, seguido de esto se da la
indicación de ir a la rutina MAIN que se encuentra en la dirección 0x0020.
14
Figura 25. Parte 2 del reto en clase 2- Función LEER_ADC.
La tercera parte es la subrutina leer_adc que se encarga de obtener los datos de la
entrada, realizará la conversión a (°C);debido al literal .39 ubicado en la línea 40; ya que
se hizo una regla de 3 ;para obtener valores de 0-100°C. segudiamente se mostrará por el
monitor serial y el LCD 16x2. El envío de datos al LCD se realiza mediante el uso de la
subrutina ENVIA_LCD_DATO encontrada en la librería LIB_LCD, mientras que para el
envío de datos al monitor serial es realizado mediante la subrutina ENVIAR_TX.
15
Figura 26. Parte 3 del reto en clase 2 - Datos de sensor Temperatura.
La siguiente parte es la subrutina ENVIAR_TX que se encarga de enviar los datos a el
monitor serial.
16
Figura 28. Parte 5 del reto en clase 2- Subrutina Config_UART,Config_ADC.
Y por ultimo la inclsuion de las librerías “retardos.inc” , “Conversion.inc” y “LIB_LCD.INC”
17
Simulación de programa
18
RETO
1. Diseñar un programa en el cual muestre el valor de un sensor de temperatura y uno de
humedad por la entrada analógica CH0 y CH1.El rango del sensor de temperatura es: 10 a 150
°C, la humedad de 0 a 100%, los valores deben mostrarse en la pantalla LCD 16x2 y en el
puerto serial
19
Figura 33. Parte 2 del reto- Variable TEMPERATURA.
20
Se llamará Config_ADC_2 como canal 1, la subrutina leer_adc_2 que se encarga de
obtener los datos del sensor de humedad.
21
La siguiente parte es la subrutina ENVIAR_TX,ENVIAR_TX_2 que se encarga de enviar
los datos de temperatura y humedad al monitor serial.
22
Simulación de programa
23
https://youtu.be/xEFVP3SzoQQ
Se pide diseñar y realizar la lógica de programación del caso de estudio propuesto en clase:
Enunciado:
Aplicación Implementación 2
Observaciones
- Se recomienda realizar una lectura de la información proporcionada, para que de
esta manera sea más fácil programar y sea menos probable estancarse al
quedarse sin ideas de cómo continuar.
- Se recomienda realizar la programación de poco en poco; es decir, primero realizar
una programación básica y a partir de esa base, ir añadiendo las funcionalidades
que se piden.
- Es recomendable hacer un diagrama de flujo de la programación a realizar, pues
de esta manera es más sencillo aplicar los siguientes pasos a programar.
Conclusiones
- Se utilizó el set instrucciones para programar al microcontrolador PIC18F4550 y de
esta manera se logró hacer los programas para los ejercicios y retos propuestos en
clase.
- Se utilizó el software de desarrollo proporcionado por el fabricante Microchip, en
este caso, el software es MPLAB. De esta manera, luego de haber realizado los
ejercicios de laboratorio se concluye que el programa MPLAB ofrece la posibilidad
de programar diferentes microcontroladores de su catálogo, así como el poder
simularlos dentro del mismo software.
- Se utilizó el software de simulación Proteus para realizar las conexiones de los
circuitos realizados en el laboratorio, gracias a ello se concluye que es importante
tener un software de simulación pues es más rápido hacer las conexiones y
24
también es más seguro pues no se corre el riesgo de quemar los dispositivos por
una mala conexión.
- Se concluye que para las conversiones como variable, el número máximo que
podemos obtener son valores hasta 255.. ; por ser de 8 bits; ya que si tenemos un
número por ejemplo 785 que va ser multiplicado; sólo se aceptará el valor de 78 ;
no es posible poner 785 ya que nos dará una programación errónea; es por ello
que en las conversiones nos da algunos valores no tan precisos o exactos.
Bibliografía
Hubor. (s.f.). Terminal virtual de teletipo RS232 y TTY. Recuperado de
https://www.hubor-proteus.com/proteus-pcb/prospice/59-terminal-virtual-de-teletipo.html
25
Rúbrica
26