Está en la página 1de 10

MICROCONTROLADORES

Laboratorio 8

“Comunicación serial”

Profesor:

Ciriaco Martinez, Cesar Augusto

Alumnos:

Cáceres Lescano, Ángel


Santillán Centeno, Axel
Vásquez Benites, Eduardo
Vásquez Capcha, Jordy

Sección: 5C16-B

Fecha de realización: 16/04/2019

Fecha de presentación: 27/04/2019

2019-I
Objetivos

1. Utilizar las instrucciones para programar al microcontroladorPIC16F877A


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

Fundamento teórico

¿Qué es la comunicación serial?

La comunicación serial consiste en el envío de un bit de información de manera


secuencial, ésto es, un bit a la vez y a un ritmo acordado entre el emisor y el
receptor.

La comunicación serial en computadores ha seguido los estándares definidos en


1969 por el RS-232 (Recommended Standard 232) que establece niveles de
voltaje, velocidad de transmisión de los datos, etc. Por ejemplo, este protocolo
establece un nivel de -12v como un uno lógico y un nivel de voltaje de +12v como
un cero lógico (por su parte, los microcontroladores emplean por lo general 5v
como un uno lógico y 0v como un cero lógico).

Existen en la actualidad diferentes ejemplos de puertos que comunican


información de manera serial (un bit a la vez). El conocido como “puerto serial” ha
sido gradualmente reemplazado por el puerto USB (Universal Serial Bus) que
permite mayor versatilidad en la conexión de múltiples dispositivos. Aunque en
naturaleza serial, no suele referenciarse de esta manera ya que sigue sus propios
estándares y no los establecidos por el RS-232.
Procedimiento

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

;*****************************************************
;Ejemplo de comunicación serial
;*****************************************************
list p=16f877a
include<p16f877a.inc>
include<macro16f877.inc>
__config 0x3f32
cblock 0x20
endc
org 0000h
;---------------------------------
banco 1
clrf trisb ;comentar:
banco 0
clrf portb ;comentar:
call RS232_Inicializa ;comentar:

repite
call RS232_LeeDato ;comentar:
movf RS232_Dato,0 ;comentar:
movwf portb ;comentar:
goto repite
;---------------------------------
include<electronicpic16f877.asm>
include<rs232_16f877.asm> ;comentar:
end

Figura: Simulación de comunicación serial.


Fuente: Elaboración propia.
2. ¿Qué sucede en el RS232_Dato?

- En este registro se guarda el contenido del byte que se va a transmitir.

3. ¿Qué hace el programa?

- Trasmite al puerto b los caracteres de un teclado en código ASCII.

4. ¿Qué se visualiza en el PORTB?

- Se visualiza en binario los caracteres presionados en el teclado.

5. ¿Para qué sirve la rutina RS232_LeeDato?

- Para almacenar la cantidad de los bits recibidos y almacenarlos en el registro


RS232_ContadorBits.

6. Explicar el contenido de la librería RS232_16F877a

- Esta librería sirve para realizar la comunicación serial entre el microcontrolador


y el pic.

7. Copiar el siguiente programa, analizar, comentar, simular e implementar:

;****************************************************
;Ejemplo de comunicación serial
;****************************************************
list p=16f877a
include<p16f877a.inc>
include<macro16f877.inc>
__config 0x3f32
cblock 0x20
endc
org 0000h
;---------------------------------
call RS232_Inicializa ;comentar:

repite
movf portb,0 ;comentar:
call RS232_EnviaDato ;comentar:
delay_seg .1
goto repite
;---------------------------------
include<electronicpic16f877.asm>
include<rs232_16f877.asm> ;comentar:
end
Figura: Simulación de comunicación serial.
Fuente: Elaboración propia.

8. ¿En qué consiste el programa?

- Envía los datos binarios del puerto B a la PC, transformándolos en código ASCII.

9. ¿Para qué sirve la rutina RS232_EnviaDato?

- Envía los datos del puerto B a la PC

10. ¿Qué función está cumpliendo el PORTB?

- Cumple función de entrada, ya que recibe el dato binario que se le manda.

11. ¿De cuánto es la velocidad de transmisión serie?

- Según la programación es de 1 segundo, se ve en la parte que dice “delay_seg


.1”

12. ¿A cuántos bits de datos está transmitiendo?

- Se transmite a 8 bits.

13. ¿Cuántos bits de paridad se está utilizando?

- Se utilizan 2 bits de paridad.


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.

Figura: Simulación de comunicación serial.


Fuente: Elaboración propia.

En esta aplicación se puede escribir un texto de más de 16 letras y la función del


programa será proyectar el texto en el LCD según el orden que se haya mandado.

Observaciones y conclusiones

- El bit6 “RX9” sirve para elegir la cantidad de bits de recepción de datos, que
pueden ser 8 o 9 datos, el primero representado por “0” y el segundo por “1”.
- Es importante leer las librerías para poder entender el funcionamiento de cada
código que se coloca.
APLICACIÓN DE LO APRENDIDO

Grupo 4:

Diseñe e implemente una cerradura electrónica con 4 dígitos, al tercer error, este
debe de bloquearse por 30 segundos y nuevamente se podrá a ingresar los códigos.
La lectura de datos se hace a través de Bluetooth aplicando UART.

Código:

list P=16f877a
include<p16f877A.inc>
include<macro16f877.inc> ;comentar:
__CONFIG 3f32
cblock 0x20 ;comentar:
clave1
clave2
clave3
clave4
intento
endc ;comentar:

org 0000h
;------------------------------------------------------
;Programa principal
bsf STATUS,RP0 ;comentar:
clrf TRISB
bcf STATUS,RP0 ;comentar:
clrf PORTB ;comentar:
clrf intento
call RS232_Inicializa ;comentar:

repite
clrf clave1
clrf clave2
clrf clave3
clrf clave4
call RS232_LeeDato ;comentar:
movf RS232_Dato,0 ;comentar:
movwf clave1 ;comentar:
delay_ms .250

call RS232_LeeDato ;comentar:


movf RS232_Dato,0 ;comentar:
movwf clave2 ;comentar:
delay_ms .250

call RS232_LeeDato ;comentar:


movf RS232_Dato,0 ;comentar:
movwf clave3 ;comentar:
delay_ms .250
call RS232_LeeDato ;comentar:
movf RS232_Dato,0 ;comentar:
movwf clave4 ;comentar:
delay_ms .250

csme clave1,.47,repite

csi clave1,'1',compara1
goto errado

compara1
csi clave2,'2',compara2
goto errado

compara2
csi clave3,'3',correcto
goto errado

compara3
csi clave4,'4',correcto
goto errado

correcto
BSF PORTB,RB0
delay_seg .10
BCF PORTB,RB0

errado
incf intento
csi intento,.3,bloqueo
goto repite

bloqueo
clrf intento
BSF PORTB,RB1
delay_seg .30
BCF PORTB,RB1

goto repite ;comentar:

;------------------------------------------------------
;Librerias
include<electronicpic16f877.asm> ;comentar:
include<rs232_16f877.asm>
end
Simulación:

Implementación:

Figura: Circuito Implementado


Figura: App del circuito

Conclusiones:

 Los leds nos facilitaron el reconocimiento de cuando se abría y cuando se


bloqueaba la cerradura.
 El código e implementación resultaron como en nuestra simulación.

También podría gustarte