0% encontró este documento útil (0 votos)
18 vistas9 páginas

Sistema embebido con PIC16F84A y display

Cargado por

jeissondgonzalez
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas9 páginas

Sistema embebido con PIC16F84A y display

Cargado por

jeissondgonzalez
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD POPULAR DEL CESAR

FACULTAD DE INGENIERÍAS Y TECNOLOGÍAS

PROGRAMACIÓN EN ENSAMBLADOR
UTILIZANDO EL PIC16F84A

ESTUDIANTE: ALBERT BENJAMIN LOPEZ RUIZ

PROFESOR: JORGE MARIO GÓMEZ BOLAÑO

ASIGNATURA: SISTEMAS EMBEBIDOS

FECHA DE REALIZACIÓN: 26/08/2024


FECHA DE ENTREGA: 27/08/2024
RESUMEN lectura de datos numéricos y su visualización en tiempo
real.
Este informe presenta el diseño, desarrollo e El experimento utiliza el microcontrolador
implementación de un sistema embebido que permite la PIC16F877A, conocido por su versatilidad y capacidad
lectura de datos numéricos a través de un teclado de manejar múltiples periféricos con un equilibrio entre
matricial 4x4 y su posterior visualización en un display rendimiento y eficiencia energética. La elección de un
de 7 segmentos. Se detalla el procedimiento teclado matricial 4x4 como dispositivo de entrada
experimental, los resultados obtenidos y las permite una interfaz sencilla y eficiente para la
conclusiones derivadas de la práctica realizada. A introducción de datos numéricos, mientras que el
través de estos proyectos, se fortalecieron las
display de 7 segmentos proporciona una solución
competencias en programación de bajo nivel, diseño de
circuitos electrónicos y simulación digital, aplicando efectiva para la visualización de estos datos. La
conocimientos teóricos en la creación de soluciones combinación de estos componentes permite a los
prácticas y funcionales. estudiantes comprender los conceptos clave detrás de la
interacción con periféricos y la programación en
Palabras Claves: Sistemas embebidos, lenguaje ensamblador, además de fomentar el
Microcontroladores, Periféricos, Visualización de desarrollo de habilidades en el diseño y la
datos. implementación de sistemas embebidos robustos.

ABSTRACT- This report presents the design,


development and implementation of an embedded OBJETIVOS
system that allows the reading of numerical data
through a 4x4 matrix keyboard and its subsequent
Objetivo General
display on a 7-segment display. The experimental
Desarrollar un sistema de control y visualización utilizando
procedure, the results obtained and the conclusions
LEDs y un display de 7 segmentos, permitiendo el control
derived from the practice carried out are detailed.
manual a través de interruptores para aprender sobre la
Through these projects, competencies in low-level
interacción con periféricos básicos y la visualización de
programming, electronic circuit design and digital
datos en sistemas embebidos.
simulation were strengthened, applying theoretical
knowledge in the creation of practical and functional
solutions Objetivos Específicos

Keywords: Embedded systems, Microcontrollers, • Implementar la lectura de entradas digitales


Peripherals, Data visualization. mediante un teclado matricial 4x4.

• Configurar la visualización de datos numéricos en


INTRODUCCION un display de 7 segmentos.

En el mundo de la tecnología actual, los sistemas • Programar rutinas en lenguaje ensamblador para la
embebidos juegan un papel crucial en la creación gestión de periféricos.
de dispositivos inteligentes y automatizados. Un
sistema embebido es un sistema de computación
diseñado para realizar tareas específicas dentro de
un dispositivo más grande, y es esencial en
aplicaciones como electrodomésticos, automóviles, MARCO TEORICO
dispositivos médicos, y equipos industriales. Este
informe se centra en el desarrollo de un sistema El desarrollo de sistemas embebidos involucra la
embebido utilizando un microcontrolador para la integración de hardware y software para realizar
interacción con periféricos de entrada y salida, funciones específicas en tiempo real. Un sistema
específicamente un teclado matricial 4x4 y un embebido, a diferencia de una computadora de
display de 7 segmentos. El objetivo principal es propósito general, está diseñado para ejecutar tareas
que los estudiantes adquieran habilidades prácticas concretas, usualmente dentro de un entorno con
en programación de microcontroladores, así como restricciones de recursos, como limitaciones de energía,
en la gestión de periféricos, a través de la memoria y capacidad de procesamiento.
implementación de un sistema que permite la
Microcontrolador PIC16F84A Periféricos de Entrada/Salida

El PIC16F84A es un microcontrolador de 8 bits Los pines del microcontrolador pueden


de la familia PIC de Microchip Technology, configurarse como entradas o salidas digitales.
ampliamente utilizado en aplicaciones de control En el ejercicio de control de Leds, se utilizan
debido a su simplicidad y bajo costo. Su pines de entrada para leer el estado de
arquitectura Harvard con memoria de programa y interruptores, y pines de salida para controlar los
memoria de datos separadas permite una Leds. El manejo adecuado de estos pines es
operación eficiente. Entre sus características crucial para la correcta operación del sistema.
destacan:
Control de Displays de 7 Segmentos

El display de 7 segmentos es un dispositivo de salida


 Memoria de programa (Flash): 1K ampliamente utilizado en sistemas embebidos para
palabras. mostrar información numérica. Cada segmento del
 Memoria de datos (RAM): 68 bytes. display puede ser controlado independientemente para
 Puertos de entrada/salida: 13 pines formar números del 0 al 9. Estos dispositivos son
digitales configurables. populares debido a su simplicidad y bajo costo, y son
 Interrupciones: Capacidad de manejar ideales para aplicaciones donde se requiere una
eventos asíncronos de forma eficiente. visualización numérica clara, como en contadores,
 Oscilador: Compatible con diferentes relojes digitales y sistemas de medición. El control del
tipos de osciladores, lo que permite una display de 7 segmentos se puede realizar de manera
operación flexible y adaptable. directa o mediante técnicas de multiplexación para
minimizar el uso de pines del microcontrolador
El lenguaje ensamblador es fundamental en la
programación de microcontroladores, pues
permite escribir instrucciones que se traducen
directamente a código máquina. En el
PIC16F84A, cada instrucción ensambladora
controla operaciones específicas, como mover Fig. 1 Display 7 segmento
datos entre registros, realizar operaciones
lógicas, o manejar saltos condicionales y Manejo de Interrupciones
subrutinas.
Las interrupciones permiten que el
microcontrolador responda a eventos externos de
manera inmediata, pausando la ejecución del
 Instrucción MOVLW: Carga un valor programa principal para atender la interrupción.
literal en el registro W, el registro de Este mecanismo es clave en sistemas que
trabajo principal del PIC16F84A. requieren respuestas rápidas y eficientes, como la
 Instrucción BCF/BSF: Clear/Set Bit detección de pulsaciones en un botón para un
Field. Manipulan bits individuales en los contador.
registros de control, esenciales para el
manejo de pines de entrada/salida. Estos conceptos son esenciales para entender el
 Instrucción GOTO: Realiza un salto diseño, programación y simulación de los
incondicional a una dirección específica ejercicios prácticos desarrollados, donde se
del programa. aplican de manera integrada para lograr un
control eficiente y preciso de los dispositivos
conectados al microcontrolador.
MATERIALES Y EQUIPO
Materiales Ejercicio 1: Control de Leds con
Interruptores

COMPONENTES REFERENCIA
Microcontrolador PIC16F84A
Resistencias 330Ω - 1kΩ - 10kΩ
Condensadores 22pF
Oscilador Cristal de 4MHz
Leds 4 leds-Aqua Fig. 3 simulación contador decimal
Fuente de alimentación 5V
Botón- pulsador 5 switch Materiales Ejercicio 3: lectura y visualización
Tabla 1 Lista de materiales implementados. de datos en un display de 7 segmentos

COMPONENTES REFERENCIA
Microcontrolador PIC16F84A
Ilustraciones de materiales implementados
decodificador 7448
Condensadores 22pF
Oscilador Cristal de 4MHz
Dual In-Line Resistor 200
Network (x8)
Fuente de alimentación 5V
Keypad 4x4
Display de 7 Segmentos Cátodo común
Logic State Indicator
Tabla 3 Lista de materiales implementados.

Ilustraciones de materiales implementados

Fig. 2 simulación control leds

Materiales Ejercicio 2: Contador Decimal con


Display de 7 Segmentos

COMPONENTES REFERENCIA
Microcontrolador PIC16F84A
Resistencias 5kΩ - 10kΩ
Condensadores 22pF
Oscilador Cristal de 4MHz
Dual In-Line Resistor 200 Fig. 4 Simulación lectura y visualización de datos en un display
Network (x8) de 7 segmentos
Fuente de alimentación 5V
Botón- pulsador 2 switch
Display de 7 Segmentos Cátodo común
Logic State Indicator
Tabla 2 Lista de materiales implementados.

Ilustraciones de materiales implementados


PROCEDIMIENTOS Y ; Rutina de
inicio
RESULTADOS
Inicio:
bs STATUS, ; Establece el bit
del fregistro
RP0STATUS para seleccionar
RP0 el Banco
1 de
Ejercicio 1: Control de Leds con Interruptores registros
clrfPORTB ; Limpia el
PORTB (pone todos los pines deregistro
PORTB
Objetivo: Diseñar un circuito que permita en 0)
controlar cuatro Leds de forma independiente movlw0x0F ; Carga el valor
0x0F
en(W)paraconfigurarlospinesRA0-RA3como
mediante cuatro interruptores. entradasy RA4-RA7 como salidas

movwfTRISA ; Mueve el valor de


Desarrollo: a TRISA para configurar los Wpines de PORTA:
RA0-RA3
Código: Se desarrolló un código en lenguaje como entradas y RA4-RA7 como salidas
bc STATUS, ; Borra el bit RP0
ensamblador (.asm) utilizando MPLAB X-IDE. f
registro RP0 para volverdel
STATUS al Banco 0 de
registros
; Bucle principal EncenderLed:
El microcontrolador lee continuamente el estado
de los interruptores conectados a PORTA.
Luego, utiliza el valor leído para encender o movfPORTA, W ; Mueve el valor
apagar los Leds conectados a PORTB. Cada registro PORTA a (W). Estedelvalor representa
el
interruptor controla un LED específico. estado de las entradas RA0-RA3
andlw0x0F ; Realiza una
AND lógica entre el valor operación
en W y [Link]
; Configuración del microcontrolador los
4 bits menos significativos (RA0-RA3)
list P=16F84A ;Especificael movwfPORTB ; Mueve el
microcontrolador PIC16F84A para el ensamblador resultante de W a PORTB. Esto valor
actualiza los
pines
include <[Link]> ; Incluye el archivo de definición RB0-RB3 con el estado para
del microcontrolador de RA0-RA3
acceder a las configuraciones esp
gotoEncenderLed ; Salta a la
; configuración de los fusibles 'EncenderLed' para repetir eletiqueta
ciclo
config _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
end
; Definición de pines

org 0x00 ; Establece la dirección de


inicio del código en 0x00 (dirección de reset) Simulación: Se utilizó el software Proteus para
simular el circuito y verificar el funcionamiento
gotoInicio; Salta a la etiqueta 'Inicio' para comenzar delejecución
la [Link] programa

Al cambiar el estado de los interruptores (de ON


a OFF y viceversa), LEDs se deberían encender o
apagar de acuerdo con el estado de los
interruptores.
En la simulación podemos observar que el ; Configuración inicial
microcontrolador PIC16F84A correctamente lee org 0x00 ; Define la dirección de inicio del programa bsf S
registros
el estado de los interruptores y controla los Leds
en función de dicho estado. Cualquier cambio en
los interruptores se refleja inmediatamente en los
Leds, demostrando que el sistema funciona según movlw 0x00 ; Carga 0x00 en el registro W

lo diseñado. movwf TRISB ; Mueve el valor de W al


registro TRISB (configura PORTB como salida)
Ejercicio 2: Contador Decimal con Display de 7 movlw 0x01 ; Carga 0x01 en el registro W
Segmentos
movwf TRISA; Mueve el valor de W al registro
TRISA (configura RA0 como entrada)
Objetivo: Implementar un contador que cuente
del 0 al 9 cada vez que se presiona una tecla. bcf STATUS, RP0 ; Regresa al Banco 0 de registros
clrf Contador ; Limpia la variable Contador
(inicializa a 0)
Desarrollo:
clrf PORTB; Limpia PORTB (apaga todos
los LEDs del display)
Código: Se desarrolló un código en lenguaje
ensamblador (.asm) utilizando MPLAB X-IDE. Inicio:
btfsc PORTA, RA0 ; Verifica si botón está
Este código en ensamblador configura el presionado. Si está presionado, sigue el código. Si
no salta la siguiente instrucción.
PIC16F84A para contar del 0 al 9 cada vez que se
presiona un botón. El valor del contador se goto Inicio ; Si el botón no está
muestra en un display de 7 segmentos. Cuando el presionado, regresa a la etiqueta Inicio para seguir
verificando
contador llega a 10, se reinicia a 0. La subrutina
display convierte el valor del contador a un movf Contador, W; Mueve el valor de Contador al registro W
código adecuado para el display.
call display ; Llama a display para
convertir el valor en el código para el display de
7 segmentos
; Definir el microcontrolador
movwf PORTB ; Mueve el valor de W a PORTB
; Especifica el (actualiza el display de 7 segmentos con el valor
list p=16F84A microcontrolador PIC16F84A
del contador)

; Incluir la librería incf Contador, F; Incrementa el valor de Contador en 1

#include <[Link]>; Incluye el archivo de definición para el PIC16F84A


movlw .10 ; Carga el valor 10 en el
registro W
; Definición de variables
subwf Contador, W; Resta 10 del valor de
cblock 0x0C ; Define un bloque de memoria Contador y guarda el resultado en W
para variables a partir de la dirección 0x0C
; btfss STATUS, Z ; Verifica si el resultado
Contador ; Variable para almacenar el valor del contador de resta es 0 Contador=[Link] es 0, sigue el código.
Si no salta la siguiente instrucción
endc goto Inicio ; Si el contador no es 10,
regresa a la etiqueta Inicio para seguir verificando
y mostrando el valor

clrf Contador ; Limpia la variable Contador


(reinicia a 0) si el valor es 10

goto Inicio ; Regresa a la etiqueta


Inicio para seguir verificando y mostrando el valor
list p=16F84A
display:
#include <[Link]>

addwf PCL, F ; Usa el valor en W como


__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON &
índice para acceder a la tabla de códigos de display _XT_OSC
de 7 segmentos (añade W al contador de programa)
ORG 0
dt 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F
START:
BSF STATUS,
; Tabla de códigos para los números del 0 al 9 en el display de 7 segmentos. RP0valor
Cada ; Cambiar a banco
corresponde 1 dígito.
a un
CLRF TRISA ; Configurar todos los
pines de PORTA como salida
END MOVLW B'00001111' ; Configurar RB0-RB3
como salidas (0),
RB4-RB7 como entradas (1)
MOVWF TRISB
BCF STATUS, RP0 ; Volver a banco 0
CLRF PORTA ; Limpiar PORTA
Simulación: Se utilizó el software Proteus para CLRF PORTB ; Limpiar PORTB
simular el circuito y el funcionamiento del
MAIN_LOOP:
contador. CALL SCAN_KEYPAD ; Leer el teclado
CALL DISPLAY_NUMBER ; Mostrar el
número en el display de 7 segmentos
GOTO MAIN_LOOP ; Repetir el bucle
principal

SCAN_KEYPAD:
MOVLW B'00000001' ; Seleccionar la primera
fila
MOVWF PORTB
CALL CHECK_COLUMN ; Verificar las
columnas
MOVLW B'00000010' ; Seleccionar la segunda
fila
MOVWF PORTB
CALL CHECK_COLUMN
MOVLW B'00000100' ; Seleccionar la tercera
El programa detectará cuando se presiona la fila
MOVWF PORTB
tecla, cada vez que se detecta una pulsación, CALL CHECK_COLUMN
incrementará el contador en 1 y convertirá el MOVLW B'00001000' ; Seleccionar la cuarta
fila
valor del contador a un código para el display de MOVWF PORTB
7 segmentos y lo mostrará en el display. CALL CHECK_COLUMN
RETURN

CHECK_COLUMN:
Ejercicio 3: Lectura y visualización de datos en BTFSC PORTB, 4 ; Verificar si la
un display de 7 segmentos columna 1 tiene un botón presionado
GOTO KEY_1
BTFSC PORTB, 5 ; Verificar si la
Objetivo: Diseñar y programar un sistema que columna 2 tiene un botón presionado
GOTO KEY_2
permita leer un dato numérico desde un teclado BTFSC PORTB, 6 ; Verificar si la
matricial 4x4 y mostrarlo en un display de 7 columna 3 tiene un botón presionado
segmentos. El objetivo es que el estudiante adquiera GOTO KEY_3
BTFSC PORTB, 7 ; Verificar si la
destrezas en la interacción con periféricos de columna 4 tiene un botón presionado
entrada y salida utilizando un microcontrolador, así GOTO KEY_4
RETURN ; Ninguna tecla
como en la implementación de rutinas de lectura y presionada
visualización en lenguaje ensamblador. KEY_1:
; Asignar valor a WREG basado en la
fila y columna
MOVLW 0x01 ; Ejemplo: valor de la
tecla 1
Desarrollo: RETURN
KEY_2:
MOVLW 0x02 ; Ejemplo: valor de la
Código: Se desarrolló un código en lenguaje tecla 2
ensamblador (.asm) utilizando MPLAB X-IDE. RETURN
KEY_3:
MOVLW 0x03 ; Ejemplo: valor de la
tecla 3
RETURN
KEY_4:
MOVLW 0x0A ; Ejemplo: valor de la
ANALISIS Y DISCUSIONES
Análisis del Control de Leds con Interruptores
Simulación: Se simulo el circuito con el teclado
4x4 y el display de 7 segmentos en Proteus para En el control de LEDs con interruptores, el
verificar el correcto funcionamiento del sistema. análisis se centra en cómo la correcta
configuración de los pines del microcontrolador
permite encender y apagar LEDs en respuesta a
la interacción del usuario. La discusión se basa
en la importancia de asegurar que los
interruptores estén debidamente configurados
para evitar rebotes, lo que podría causar un
comportamiento errático en los LEDs. Además,
se reflexiona sobre la relevancia de una
programación eficiente en ensamblador, que
garantice una respuesta rápida y precisa a las
entradas del usuario, mejorando la fiabilidad y
usabilidad del sistema.
Durante la simulación, se conectaron
virtualmente el teclado y el display al Contador Decimal con Display de 7 Segmentos
microcontrolador, permitiendo observar cómo el
El análisis del contador decimal con display de 7
sistema responde a la interacción del usuario.
segmentos se enfoca en la sincronización entre el
Esto incluye verificar la lectura correcta de las
software y el hardware para actualizar correctamente
teclas, la conversión del dato a código BCD, y la
los números en el display en respuesta a las entradas
visualización precisa en el display de 7
del usuario. La discusión aborda los desafíos de
segmentos. La simulación también permitió
implementar una lógica de conteo precisa en lenguaje
identificar y corregir posibles errores en el
ensamblador, asegurando que cada dígito se muestre
código ensamblador o en la configuración del
sin errores. Además, se considera la importancia de
hardware, asegurando que el diseño final
gestionar adecuadamente el multiplexado del display
funcione según lo esperado.
para evitar problemas como el parpadeo o la falta de
visibilidad, subrayando la necesidad de una
programación cuidadosa y una correcta temporización
en la manipulación de los registros del
microcontrolador
.Errores solucionados
Durante la simulación, se identificaron
problemas menores en la visualización del
display de 7 segmentos. Se recomendó verificar
las conexiones del display y la tabla de códigos
para asegurar la correcta visualización de los
números.
CONCLUSIONES

En conclusión, la implementación de sistemas de


control de LEDs con interruptores y contadores
decimales con displays de 7 segmentos en
microcontroladores proporciona una experiencia
integral en la interacción con periféricos de
entrada y salida. Estos proyectos permiten al
estudiante desarrollar habilidades clave en
programación en lenguaje ensamblador,
incluyendo la manipulación precisa de registros y
la gestión eficiente de hardware. A través del
control de LEDs, se subraya la importancia de
una correcta configuración del hardware y la
mitigación de problemas como el rebote de
interruptores, mientras que en el caso del
contador decimal, se destaca la necesidad de una
lógica robusta y sincronizada para asegurar un
despliegue correcto de los números. Estos
ejercicios prácticos no solo refuerzan la
comprensión de la arquitectura del
microcontrolador, sino que también fomentan un
enfoque riguroso en el diseño y la depuración de
sistemas electrónicos, habilidades fundamentales
para el desarrollo de soluciones eficientes y
fiables en la ingeniería electrónica..

REFERENCIAS BIBLIOGRAFICAS

 Microchip Technology Inc. (n.d.). PIC16F84A


data sheet: 18/14/8-Pin, 8-Bit CMOS
Microcontroller with 1K x 14 EEPROM/64 x
14 RAM/1K x 14 Program Memory [Data
sheet]. Microchip Technology Inc. Retrieved
from
[Link]
en/PIC16F84A
 J. (2009). Instrucciones básicas del PIC 16-
F84A [Presentación de diapositivas].
SlideShare.
[Link]
10instrucciones-basicas-del-pic-16-
f84a/5755457
 ElectroCiencia. (2021, 18 de noviembre).
Programación PIC16F84A en ensamblador
[Video]. YouTube.
[Link]
cU2m4

También podría gustarte