Está en la página 1de 16

PROGRAMACIÓN DE MICROCONTROLADORES

Laboratorio N°9

Programación y Simulación del


Aplicativo II

Integrantes:

Amaya Canchumanta, Fabrizio Santiago

Vigo Cuadrado, Diego Fabricio

Yancan Lanzaca, Cristhian

2023 - 1
Lab. N° 9 Programación y Simulación del Aplicativo 2

Programación y Simulación del Aplicativo 2

Objetivos

1. Utilizar las instrucciones para programar al microcontrolador PIC16F877


2. Utilizar software de desarrollo proporcionada por el fabricante.
3. Utilizar software de simulación digital.

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 cuantas veces se quiera. Una vez logrado el diseño y la programación
correcta recién se realiza la implementación.

Preparación
Para la realización de este laboratorio se requiere la lectura previa de la información proporcionada
para el curso, como el texto y el manual del fabricante.

Equipos y Materiales

• Computadora
• Software de desarrollo
• Proyector multimedia
• Texto del curso
• Manual del fabricante

pág. 2
Lab. N° 9 Programación y Simulación del Aplicativo 2

Seguridad

Trabajar con Seguridad evita que las personas sufran daños, y provee un ambiente satisfactorio de
trabajo.

Al trabajar en este laboratorio o taller y cualquiera de los subsiguientes, realice el siguiente


procedimiento:

1. Al ingresar, inspeccione:
Las vías de acceso.
Orden y limpieza.

2. En su estación de trabajo evalúe las condiciones de:


Orden y Limpieza.
Herramientas y equipos.

3. Realice su trabajo teniendo en cuenta:


Orden y limpieza.
Seguridad.
Proceda a realizar las conexiones de los equipos o implementación de los circuitos comprobando
que la línea eléctrica se encuentre desconectada.
Solicite visto bueno al profesor antes de aplicar energía eléctrica.

4. Realice el análisis de riesgo personal:


¿Qué es lo que voy a hacer?
¿Qué es lo que puede salir mal?
¿Qué debo hacer para que no salga mal?

5. Al terminar sus labores, deje su estación de trabajo en buenas condiciones:


Ordenado y limpio.
Seguro.
Desconecte el suministro de energía eléctrica.

pág. 3
Lab. N° 9 Programación y Simulación del Aplicativo 2

Ejercicio N°1

;*****CONVERSION DE BINARIO 16 bits A BCD******


;*****ING. CÉSAR CIRIACO MARTINEZ*****
#include <P18F4550.INC>
#include <MACRO_PIC18F4550.inc>

CONFIG FOSC = HS
CONFIG PWRT = OFF
CONFIG BOR = OFF
CONFIG BORV = 3
CONFIG VREGEN = OFF
CONFIG WDT = OFF
CONFIG PBADEN = OFF
CONFIG LVP = OFF
CONFIG MCLRE = ON

cblock 0x10
endc
ORG 0x0000
goto MAIN

ORG 0x0020
MAIN:

CALL Config_UART
; MULTIPLICACION
MOVLW .255
MULLW .255

CALL BIN16_BCD
CALL BCD_ASCII

ENVIAR_DATA:
MOVF DMILLAR,W
MOVWF TXREG
ENVIAR_TX1:
BTFSS TXSTA,TRMT
GOTO ENVIAR_TX1
delay_ms .200
MOVF UMILLAR,W
MOVWF TXREG
ENVIAR_TX2:
BTFSS TXSTA,TRMT
GOTO ENVIAR_TX2
delay_ms .200
MOVF CENTENA,W
MOVWF TXREG
ENVIAR_TX3:
BTFSS TXSTA,TRMT
GOTO ENVIAR_TX3
delay_ms .200
MOVF DECENA,W
MOVWF TXREG
ENVIAR_TX4:
BTFSS TXSTA,TRMT
GOTO ENVIAR_TX4
delay_ms .200
MOVF UNIDAD,W
MOVWF TXREG
ENVIAR_TX5:
BTFSS TXSTA,TRMT
GOTO ENVIAR_TX5
delay_ms .200
MOVLW ' '
MOVWF TXREG
ENVIAR_TX6:
BTFSS TXSTA,TRMT
GOTO ENVIAR_TX6
GOTO ENVIAR_DATA
delay_ms .200
GOTO MAIN

pág. 4
Lab. N° 9 Programación y Simulación del Aplicativo 2

Config_UART:
;****REGISTRO TXSTA, RCSTA, BAUDCON******
MOVLW B'00100100' ;TRANSMISION 8 BITS, TX=ON, MODO ASINCRONO, HIGH SPEED,
MOVWF TXSTA
MOVLW B'10010000' ; PUERTO SERIAL HABILITADO RX(RC7) y TX (RC6), RX 8 BITS, RX=ON,
MOVWF RCSTA
MOVLW B'00000000' ; SPBRG --> 8 BITS
MOVWF BAUDCON
MOVLW .129 ; BAUD RATE= FOSC/(16(SPBRG+1)) 20000000/ (16 ( n + 1)) = 9600
MOVWF SPBRG ; SPBRG = (20000000/(9600 * 16)) - 1 = 129

BSF TRISC,RC7 ; RX
BCF TRISC,RC6 ; TX
return

#include "retardos.inc"
#include "Conversion.inc"
END

Simulación:

pág. 5
Lab. N° 9 Programación y Simulación del Aplicativo 2

• Este código realiza la conversión de un número binario de 16 bits a BCD (Binary-Coded Decimal)

y luego lo convierte en una representación ASCII para ser enviado a través de UART (Universal

Asynchronous Receiver-Transmitter) en un microcontrolador PIC18F4550. El código comienza

con las directivas de inclusión de los archivos de cabecera correspondientes y las

configuraciones del microcontrolador, como la frecuencia del oscilador, la configuración de

energía y otros ajustes. La función principal del programa se encuentra en la etiqueta MAIN,

donde se llaman a otras dos funciones: BIN16_BCD y BCD_ASCII. La función BIN16_BCD toma

el número binario de 16 bits almacenado en los registros DMILLAR, UMILLAR, CENTENA,

DECENA y UNIDAD y realiza la conversión a BCD, almacenando los dígitos correspondientes

en los mismos registros. La función BCD_ASCII toma los dígitos BCD convertidos y los convierte

en representación ASCII para poder ser enviados a través de UART. Luego, los dígitos ASCII se

envían uno por uno mediante la transmisión serial, utilizando el registro TXREG y controlando el

estado de transmisión con el bit TRMT del registro TXSTA. También se agrega un pequeño

retraso (delay_ms) entre el envío de cada dígito para asegurar una transmisión adecuada.

pág. 6
Lab. N° 9 Programación y Simulación del Aplicativo 2

RETO
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

;CONVERSION DE BINARIO A BCD*


;ING. CÉSAR CIRIACO MARTINEZ

#include <P18F4550.INC>
#include <MACRO_PIC18F4550_1.inc>

CONFIG FOSC = HS
CONFIG PWRT = OFF
CONFIG BOR = OFF
CONFIG BORV = 3
CONFIG VREGEN = OFF
CONFIG WDT = OFF
CONFIG PBADEN = OFF
CONFIG LVP = OFF
CONFIG MCLRE = ON

cblock 0x00
DATO_ADC_A0
DATO_ADC_A1
endc
ORG 0x0000
goto MAIN
ORG 0x0020
MAIN:
clrf TRISD ;Todo el puerto D como salida (LCD)
call LCD_CONFIG
call CURSOR_OFF
SETF TRISA
CALL Config_UART
CALL Config_ADC
ENVIANDO:
TBLRD*
movf TABLAT,W
call ENVIA_CHAR
incf TBLPTRL
movlw .32
cpfseq TBLPTRL
goto ENVIANDO

pág. 7
Lab. N° 9 Programación y Simulación del Aplicativo 2

leer_adc:
BTFSC ADCON0,GO_DONE
GOTO leer_adc

MOVFF ADRESH,DATO_ADC_A0

; MULTIPLICACION A0
MOVLW .55
MULWF DATO_ADC_A0
MOVlw .4
ADDwf PRODH ,1
CALL BIN16_BCD
CALL BCD_ASCII
movlw .0
call POS_CUR_FIL1
MOVF DMILLAR,W
CALL ENVIAR_TX
call ENVIA_LCD_DATO
MOVF UMILLAR,W
CALL ENVIAR_TX
call ENVIA_LCD_DATO
MOVF CENTENA,W
CALL ENVIAR_TX
call ENVIA_LCD_DATO
MOVLW ' '
CALL ENVIAR_TX
call ENVIA_LCD_DATO
MOVLW 'C'
CALL ENVIAR_TX
call ENVIA_LCD_DATO
MOVLW .13
CALL ENVIAR_TX
call ENVIA_LCD_DATO

; CAMBIO DE CANAL A1
BSF ADCON0,CHS0 ; Selecciona el canal A1
BCF ADCON0,CHS1

BSF ADCON0,GO_DONE ; INICIA LA CONVERSION


GOTO leer_adc_a1

pág. 8
Lab. N° 9 Programación y Simulación del Aplicativo 2

leer_adc_a1:
BTFSC ADCON0,GO_DONE
GOTO leer_adc_a1

MOVFF ADRESH,DATO_ADC_A1
; MULTIPLICACION A1
MOVLW .39
MULWF DATO_ADC_A1
CALL BIN16_BCD
CALL BCD_ASCII
movlw .0
call POS_CUR_FIL2
MOVF DMILLAR,W
CALL ENVIAR_TX
call ENVIA_LCD_DATO
MOVF UMILLAR,W
CALL ENVIAR_TX
call ENVIA_LCD_DATO
MOVF CENTENA,W
CALL ENVIAR_TX
call ENVIA_LCD_DATO
MOVLW ' '
CALL ENVIAR_TX
call ENVIA_LCD_DATO
MOVLW '%'
CALL ENVIAR_TX
call ENVIA_LCD_DATO
MOVLW .13
CALL ENVIAR_TX
call ENVIA_LCD_DATO
delay_ms .200
BSF ADCON0,GO_DONE ; INICIA LA CONVERSION
GOTO leer_adc

ENVIAR_TX:
MOVWF TXREG
ENVIAR_TX1:
BTFSS TXSTA,TRMT
GOTO ENVIAR_TX1
RETURN

pág. 9
Lab. N° 9 Programación y Simulación del Aplicativo 2

Config_UART:
;REGISTRO TXSTA, RCSTA, BAUDCON**
MOVLW B'00100100' ;TRANSMISION 8 BITS, TX=ON, MODO ASINCRONO, HIGH SPEED,
MOVWF TXSTA
MOVLW B'10010000' ; PUERTO SERIAL HABILITADO RX(RC7) y TX (RC6), RX 8 BITS, RX=ON,
MOVWF RCSTA
MOVLW B'00000000' ; SPBRG --> 8 BITS
MOVWF BAUDCON
MOVLW .129 ; BAUD RATE= FOSC/(16(SPBRG+1)) 20000000/ (16 ( n + 1)) = 9600
MOVWF SPBRG ; SPBRG = (20000000/(9600 * 16)) - 1 = 129

BSF TRISC,RC7 ; RX
BCF TRISC,RC6 ; TX
RETURN

Config_ADC:
;REGISTRO ADCON0, ADCON1, ADCON2**
MOVLW B'00001101' ;ENTRADAS ANALOGICAS AN0 Y AN1, REFERENCIA 5V Y GND
MOVWF ADCON1
MOVLW B'00010101'
MOVWF ADCON2
MOVLW B'00000011' ; SE ESCOGE CANAL 0, GO_DONE=0, ADON=1
MOVWF ADCON0
RETURN

#include "retardos.inc"
#include "Conversion.inc"
#include "LIB_LCD_1.INC"
END

NOTA: las librerías usadas son las mismas que se usaron en clase, solo se le cambio el
nombre. También cabe recalcar que en el caso del segundo sensor de 0 a 100% no se logró
alcanzar el 100% sino el 99%.

pág. 10
Lab. N° 9 Programación y Simulación del Aplicativo 2

Cuando los sensores están al Máximo:

Cuando los sensores están al mínimo:

pág. 11
Lab. N° 9 Programación y Simulación del Aplicativo 2
Procedimiento – CASO DE ESTUDIO PROPUESTO EN LABORATOR

Se pide diseñar y realizar la lógica de programación del caso de estudio propuesto en clase:

Enunciado:

Aplicacion Implementación 2

1 Control de distancia con sensor ultrasonido, con adquisición de


datos en Labview, indicar el límite con un buzzer a una
frecuencia de 10 KHz.

;**VOLTIMETRO***
;**ING. CÉSAR CIRIACO MARTINEZ**
#include <P18F4550.INC>
#include <MACRO_PIC18F4550.inc>
CONFIG FOSC = HS
CONFIG PWRT = OFF
CONFIG BOR = OFF
CONFIG BORV = 3
CONFIG VREGEN = OFF
CONFIG WDT = OFF
CONFIG PBADEN = OFF
CONFIG LVP = OFF
CONFIG MCLRE = ON
cblock 0x00
tiempo_us
distancia_cm
endc
ORG 0x0000
goto MAIN
ORG 0x0020
MAIN:
MOVLW B'00000010'
MOVWF TRISD ;PONER SALIDAS Y ENTRADAS
clrf TRISA ;VUELVE TODO EL PUERTO A COMO SALIDAS
CLRF tiempo_us
CALL Config_UART
; inicializar los pines
bcf LATD,0 ;TRIGGER INICIALIZO EN 0
delay_us .2 ;retardo de 2 microsegundos

INICIO_LECTURA:
bsf LATD,0 ; activo la señal al ultrasonido
delay_us .20 ; retardo minimo debe ser >10 us
bcf LATD,0 ; EN ESTE INSTANTE EL ultrasonico envía 8 pulsos de 40Khz
call leer_high

pág. 12
Lab. N° 9 Programación y Simulación del Aplicativo 2

; MULTIPLICACION
MOVF tiempo_us,w ;copie var1 a WREG
MULLW .172 ; CONSTANTE DE MULTIPLICACIÓN

CALL BIN16_BCD
CALL BCD_ASCII
; DMILLAR) (UMILLAR)
ENVIAR_DATA:
MOVF DMILLAR,W ;MUEVE DMILLAR AL REGISTRO W
MOVWF TXREG ;MUEVE EL REGISTRO W AL FILE TXREG
MOVLW .2 ; MUEVE EL LITERAL 2 A W
CPFSGT DMILLAR ; COMPARA SI ES MAYOR QUE DMILLAR
GOTO ENVIAR_TX1 ; VA A ENVIAR_TX1
BSF LATA,2 ;SETEA EL PIN2 DEL PUERTO A ----ESTO CORRESPONDE AL BUZZER----

ENVIAR_TX1:
BTFSS TXSTA,TRMT ;TESTEA Y SALTA SI NO ES 0
GOTO ENVIAR_TX1 ;REGRESA A ENVIAR_TX1 PARA TESTEAR
delay_ms .200

MOVLW '.'
MOVWF TXREG ;MUEVE EL LITERAL ANTERIOR AL FILE
ENVIAR_TX2:
BTFSS TXSTA,TRMT ;TESTEA Y SALTA SI NO ES 0
GOTO ENVIAR_TX2 ;REGRESA A ENVIAR_TX2 PARA TESTEAR
delay_ms .200
MOVF UMILLAR,W
MOVWF TXREG
ENVIAR_TX3:
BTFSS TXSTA,TRMT
GOTO ENVIAR_TX3
delay_ms .200
MOVLW .13 ;PONE UN ENTER EN EL SERIAL
MOVWF TXREG
ENVIAR_TX4:
BTFSS TXSTA,TRMT
GOTO ENVIAR_TX4
delay_ms .200
GOTO INICIO_LECTURA ;UNA VEZ ENVIADO TODO VUELVE A LEER
leer_high:
BTFSS PORTD,1
GOTO leer_high

pág. 13
Lab. N° 9 Programación y Simulación del Aplicativo 2

leer_low:
delay_us .1
incf tiempo_us
btfsc PORTD,1
GOTO leer_low
RETURN

Config_UART:

MOVLW B'00100100'
MOVWF TXSTA
MOVLW B'10010000'
MOVWF RCSTA
MOVLW B'00000000'
MOVWF BAUDCON
MOVLW .129
MOVWF SPBRG

BSF TRISC,RC7 ; RX
BCF TRISC,RC6 ; TX
return
#include "retardos.inc"
#include "Conversion.inc"
END

Proteus:

pág. 14
Lab. N° 9 Programación y Simulación del Aplicativo 2

LabVIEW:

pág. 15
Lab. N° 9 Programación y Simulación del Aplicativo 2

Conclusión:

En conclusión, la comunicación serial TX (transmisión) y RX (recepción) entre el microcontrolador


PIC18F4550 y LabVIEW es una solución efectiva para la transferencia de datos entre ambos dispositivos.

• El PIC18F4550 es un microcontrolador de alto rendimiento con capacidad de comunicación serial


incorporada. Con sus puertos UART, puede transmitir y recibir datos de manera confiable a
través de protocolos de comunicación como RS232, RS485 o USB. Esto permite establecer una
conexión serial con LabVIEW, un potente entorno de programación gráfica ampliamente utilizado
en la adquisición y control de datos.
• La combinación de la capacidad de comunicación serial del PIC18F4550 y las funciones de
LabVIEW para el procesamiento y visualización de datos, brinda una plataforma flexible y versátil
para aplicaciones que requieren una interfaz de usuario amigable y un control preciso. LabVIEW
proporciona una interfaz gráfica intuitiva para diseñar programas y crear una conexión serial con
el PIC18F4550, lo que facilita la implementación de sistemas de monitoreo, control y adquisición
de datos en tiempo real.
• La comunicación serial entre el PIC18F4550 y LabVIEW ofrece varias ventajas, como una
transmisión confiable de datos a través de una conexión cableada, una alta velocidad de
transferencia y una fácil integración con otros dispositivos o sistemas. Además, la flexibilidad de
LabVIEW permite personalizar la interfaz de usuario y adaptarla a las necesidades específicas
del proyecto.

pág. 16

También podría gustarte