Está en la página 1de 28

PROGRAMACIÓN DE

MICROCONTROLADORES

IV Ciclo

Laboratorio N° 08
COMUNICACIÓN SERIAL PIC18F4550

Integrantes del grupo:

Barraza Clares, Marco


Garate Bonifacio, Alejandro
Torres Guerrero, Ramiro
Huaman Acuña, Yhan Pier
Mayta Perales, Ángel

Profesor:
Ciriaco Martínez, Cesar Augusto

Fecha de realización: 12/05/2023


Fecha de entrega: 19/05/2023
Lab. N° 08 Comunicación Serial

Índice
Marco teorico........................................................................................................................................2
1) Copiar el siguiente programa, analizar, comentar, simular e implementar:..............................10
2) Copiar el siguiente programa, analizar, comentar, simular e implementar:.................................14

Comunicación Serial
Objetivos

1. Utilizar las instrucciones para programar al microcontroladorPIC16F877A


2. Utilizar software de desarrollo proporcionada por el fabricante
3. Implementación hardware

Marco teorico
PIC18F4550:
El PIC18F4550 es un microcontrolador de la familia PIC de Microchip. Es ampliamente
utilizado en aplicaciones embebidas debido a su capacidad de procesamiento, amplio
conjunto de características y facilidad de programación. Algunas de sus características
clave incluyen una arquitectura RISC de 8 bits, una velocidad de reloj de hasta 48 MHz,
una memoria flash programable de 32 KB y una memoria RAM de 2 KB. Además, cuenta
con periféricos integrados, como módulos de comunicación USB, UART, SPI e I2C, ADC
y PWM, que lo hacen ideal para una amplia gama de aplicaciones.

LCD 16x2:
El LCD 16x2, también conocido como pantalla de cristal líquido de 16 caracteres por 2
líneas, es un tipo común de display utilizado para la visualización de información en
sistemas electrónicos. Está compuesto por una matriz de píxeles y un controlador que
permite enviar datos y comandos para mostrar caracteres y gráficos. El LCD 16x2 tiene
capacidad para mostrar 16 caracteres alfanuméricos en cada línea, lo que proporciona una
interfaz sencilla para mostrar texto y números. Estas pantallas son ampliamente utilizadas
en sistemas embebidos debido a su bajo consumo de energía y facilidad de uso.

Terminales virtuales:
En el contexto de simulación de sistemas embebidos, como el uso de microcontroladores
PIC y pantallas LCD, Proteus es un software de simulación ampliamente utilizado.
Permite la creación de terminales virtuales que simulan la interfaz entre el
microcontrolador y el LCD. Estos terminales virtuales ofrecen una forma conveniente de
interactuar con el sistema simulado, enviando comandos y datos al microcontrolador y
recibiendo respuestas para visualizar en el LCD. A través de los terminales virtuales, los

pá g. 2
Lab. N° 08 Comunicación Serial
diseñadores pueden probar y depurar sus programas antes de implementarlos en hardware
físico.

Además de la simulación en Proteus, los sistemas basados en los PIC18F4550 y los LCD
16x2 también pueden ser implementados en hardware físico. En este caso, los terminales
físicos, como botones, teclados o interfaces de comunicación serie, se utilizan para
interactuar con el microcontrolador. Los datos y comandos enviados desde estos
terminales físicos se procesan y se envían al LCD para su visualización. Este enfoque
permite crear sistemas embebidos completamente funcionales que pueden interactuar
directamente con los usuarios en tiempo real.

Los PICs constituyen en la actualidad una forma de proveer inteligencia a equipos o sistemas para
un mejor desempeño de los mismos. Para que realicen los eventos que queramos es necesario
utilizar los puertos como entrada para que la data ingrese y se procese en el PIC y puertos de
salida para comunicarlos con otros dispositivos y en conjunto logren un objetivo.

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
 Tarjeta de desarrollo

pá g. 3
Lab. N° 08 Comunicación Serial

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. 4
Lab. N° 08 Comunicación Serial
Lectura

pá g. 5
Lab. N° 08 Comunicación Serial

REGISTROS INVOLUCRADOS PARA LA COMUNICACIÓN SERIAL

pá g. 6
Lab. N° 08 Comunicación Serial

pá g. 7
Lab. N° 08 Comunicación Serial

pá g. 8
Lab. N° 08 Comunicación Serial

Diagrama de bloques del funcionamiento de transmisión de la


comunicación serial

pá g. 9
Lab. N° 08 Comunicación Serial

Diagrama de bloques de funcionamiento de recepción de la comunicación


serial

Procedimiento

1) Copiar el siguiente programa, analizar, comentar, simular e implementar:

;*****COMUNICACIÓN SERIAL TX UART PIC18F4550******


;*****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

pá g. 10
Lab. N° 08 Comunicación Serial
MAIN:

CALL Config_UART
REPETIR:
MOVLW 'T'
CALL ENVIAR_DATA
MOVLW 'E'
CALL ENVIAR_DATA
MOVLW 'C'
CALL ENVIAR_DATA
MOVLW 'S'
CALL ENVIAR_DATA
MOVLW 'U'
CALL ENVIAR_DATA
MOVLW 'P'
CALL ENVIAR_DATA
MOVLW ' '
CALL ENVIAR_DATA
delay_ms .250
goto REPETIR

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

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"
END

pá g. 11
Lab. N° 08 Comunicación Serial

- Código empleado en el MPLAB:

- En la primera parte se configuraron los fusibles

pá g. 12
Lab. N° 08 Comunicación Serial
- Luego se configure la variable a repetir

- Finalmente definimos las variables ENVIAR_DATA y ENVIAR_TX;


ademaás de establecer la variable Config_UART

- Programa implementado:

- Para la simulación de este programa, configuramos el PIC, la primara parte de este


código trata de configurar el UART en donde dirigimos los valores al RCSTA, TXSTA y
BAUDCON, asimismo utilizaremos el RC7 como entrada y el RC6 como salida.
- Luego configuramos la variable a repetir donde “T” irá a W, luego lo dirigiremos a call
ENVIAR_DATA. En esta variable, ENVIAR_DATA, se desplaza todo hacía W, para
luego moverlo al registro TXREG aquí se le preguntará al TRMT, si está vacío o no, si
está vacío se visualizará 1, lo que significa que los datos ya fueron transmitidos y si no se
encuentra en 1 esperarán a que los datos del registro TXREG ingresen a TRMT y cuando
este pase a 0 significará que los datos ya se transmitieron por lo que saltará a return y
después este se moverá a la letra “E”, “C”, “S”, “U” y “P”.

pá g. 13
Lab. N° 08 Comunicación Serial

2) Copiar el siguiente programa, analizar, comentar, simular e implementar:

;*****COMUNICACIÓN SERIAL RX UART PIC18F4550******


;*****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:
CLRF TRISD
CLRF LATD
CALL Config_UART

LEER_DATA:
BTFSS PIR1,RCIF
GOTO LEER_DATA
MOVF RCREG,W
MOVWF LATD
GOTO LEER_DATA

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"
END

pá g. 14
Lab. N° 08 Comunicación Serial

- Código empleado en el MPLAB:

pá g. 15
Lab. N° 08 Comunicación Serial

- Programa implementado:

- Cuando presionamos el número 1

pá g. 16
Lab. N° 08 Comunicación Serial

- Cuando presionamos el número 2

- Cuando presionamos el número 3

pá g. 17
Lab. N° 08 Comunicación Serial

- Cuando presionamos el número 4

pá g. 18
Lab. N° 08 Comunicación Serial
- Por cada número que se presiona se observan diferentes funciones de los leds.

- Código empleado en el MPLAB:

pá g. 19
Lab. N° 08 Comunicación Serial

- Programa implementado:

pá g. 20
Lab. N° 08 Comunicación Serial
- Lo que escribamos en el visual terminal, se mostrará en el LCD.

3) Programa de escritura por comunicación serial a LCD 16X2

;*****COMUNICACIÓN SERIAL RX Y LCD UART PIC18F4550******


;*****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 0x7000
MENSAJE: da "ESCRIBIR DATO*"

ORG 0x0020
MAIN:
clrf TRISD ;Todo el puerto D como salida (LCD)
call LCD_CONFIG
call CURSOR_OFF
CALL Config_UART

movlw UPPER MENSAJE


movwf TBLPTRU
movlw HIGH MENSAJE
movwf TBLPTRH
movlw LOW MENSAJE
movwf TBLPTRL
movlw .0
call POS_CUR_FIL1
ENVIANDO:
TBLRD*
movf TABLAT,W
call ENVIA_CHAR
incf TBLPTRL
movlw '*'
cpfseq TBLPTRL
goto ENVIANDO
movlw .0
call POS_CUR_FIL2
LEER_DATA:
BTFSS PIR1,RCIF
GOTO LEER_DATA
MOVF RCREG,W
call ENVIA_LCD_DATO
GOTO LEER_DATA

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

pá g. 21
Lab. N° 08 Comunicación Serial
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 "LIB_LCD.INC"
END

- Código empleado en el MPLAB:

pá g. 22
Lab. N° 08 Comunicación Serial

- Programa implementado:

pá g. 23
Lab. N° 08 Comunicación Serial
- Lo que escribamos en el visual terminal, se mostrará en el LCD.

4) RETO EN CLASE:

Diseñar e implementar un programa en donde al escribir desde el teclado,


este se visualice en la pantalla LCD 16x2, al presionar la tecla ENTER, se
desplace a la segunda fila, al presionar SUPR se borre un carácter y al
presionar DELETE se borre por completo la pantalla para una nueva escritura.

- Código empleado en el MPLAB:

pá g. 24
Lab. N° 08 Comunicación Serial

pá g. 25
Lab. N° 08 Comunicación Serial

pá g. 26
Lab. N° 08 Comunicación Serial

- Programa implementado en PROTEUS

Se modifica el puerto A0 y observamos

pá g. 27
Lab. N° 08 Comunicación Serial

Conclusiones:
- El PIC18F4550 empleado en este laboratorio cuneta con varias funcionalidades, en
este caso lo utilizamos para desarrollar las funciones y circuitos.
- Después de detectar la presencia de bits en el puerto de comunicación serial, se
procede a realizar la lectura de estos datos, los cuales están destinados a ser mostrados
en el LCD. Esta lectura nos permite visualizar la información que hemos ingresado
previamente, este proceso de lectura y visualización en el LCD nos proporciona una
forma efectiva de verificar y confirmar la correcta transmisión y representación de los
datos que hemos introducido. Así, se asegura un flujo de información adecuado y se
facilita la interacción usuario-sistema en el contexto de los sistemas embebidos.
- Los bloques de memoria de multiplicación del PIC demostraron ser herramientas
altamente beneficiosas para facilitar la conversión entre diferentes escalas en el
sistema. Estos bloques permitieron ajustar la ubicación del punto decimal en los datos
antes de mostrarlos en el LCD. Esta capacidad de modificar la posición del punto
decimal resultó fundamental para presentar la información de manera legible y
comprensible en el display.

pá g. 28

También podría gustarte