Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Practica 13

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

INSTITUTO POLITÉCNICO NACIONAL

Escuela Superior de Ingeniería Mecánica y Eléctrica


“Plantel Azcapotzalco”

ESIME AZCAPOTZALCO

Interfaces, Periféricos y Programación 1


7RV2

Práctica 14

Vázquez Rosales Francisco Javier


2018360421
Introducción
El alumno realizará un circuito integrado será capaz de indicar cuanto voltaje entra del pin

Materiales utilizados
-Potenciómetro de 1k y 2k
-Protoboard
-pic16F887
-programador para PIC
-Resistencias
-Pantalla LCD
-Programa/código

Definiciones básicas
Comentarios
Sirve para documentar códigos, no se codifican en lenguaje máquina facilitando correcciones.

Dirección
Es cualquier dirección que permita identificar y/o comunicar entre sí los dispositivos informáticos o
las personas dentro de una red (por ejemplo, una red como Internet). No obstante, una dirección
electrónica puede tener varios contextos.

Etiquetas
Identifican una posición exacta en el programa.

Escritura
Estilo de escritura orientado

MPLab 8.92
Es una plataforma de desarrollo integrada por Windows con múltiples prestaciones que permite
escribir el programa para los pic en lenguaje ensamblado.

Lectura/Salida
Los datos deben introducirse en serie, es decir, bit a bit
por una única línea. La salida se obtendrá de la misma manera.

Display
Dispositivo de ciertos aparatos electrónicos que permite mostrar información al usuario de manera
visual o táctil. Un visualizador de una señal de vídeo se lo llama más comúnmente pantalla; los dos
ejemplos más comunes son el televisor y el Monitor de computadora.
Descripción de Funcionamiento
Se creará y utilizará un código en mplab que podrá realizar la función medidor de voltaje en un
pic16F887 a través de un programador.

Código utilizado
; Configuración del PIC
include "p16f887.inc" ; Incluye los registros específicos del PIC16F887
__CONFIG _CONFIG1, _FOSC_INTRCIO & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF &
_BOREN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF

; Definiciones de puertos y registros


cblock 0x20
contador ; Variable de trabajo
voltaje_low ; Parte baja del voltaje ADC
voltaje_high ; Parte alta del voltaje ADC
endc

; Direcciones de memoria
LCD_PORT equ 0x05 ; Puerto de datos para la LCD
LCD_RS equ 0x06 ; Registro selecto para la LCD
LCD_E equ 0x07 ; Habilitador de la LCD
ADC_RESULT equ 0x08 ; Registro de resultado del ADC
ADC_CONTROL equ 0x09 ; Registro de control del ADC

; Inicio del programa


org 0x00
goto Inicio

; Rutina de interrupción
org 0x04
retfie

; Rutina de inicio
Inicio:
; Configuración de puertos
bsf STATUS, RP0 ; Banco 1
movlw 0x00 ; Configura el puerto A como entrada para el ADC
movwf TRISA
movlw 0xFF ; Configura el puerto B como salida para la LCD
movwf TRISB
bcf STATUS, RP0 ; Regresa al banco 0

; Inicialización de la LCD
call InicializarLCD

; Configuración del ADC


bsf ADC_CONTROL, ADON ; Habilita el ADC
movlw 0x80 ; Configura la referencia de voltaje VDD y VSS
movwf ADC_CONTROL

MainLoop:
; Inicia una conversión ADC
bsf ADC_CONTROL, GO_DONE

; Espera a que la conversión termine


wait_adc:
btfsc ADC_CONTROL, GO_DONE
goto wait_adc

; Lee el resultado del ADC


movf ADRESH, W
movwf voltaje_high
movf ADRESL, W
movwf voltaje_low

; Muestra el valor en la LCD


call MostrarVoltajeLCD

goto MainLoop

; Subrutina para inicializar la LCD


InicializarLCD:
; Configuración inicial de la LCD
movlw 0x38 ; Modo de 2 líneas, 5x8 caracteres
call EnviarComandoLCD
movlw 0x0C ; Display ON, Cursor OFF, Blink OFF
call EnviarComandoLCD
movlw 0x01 ; Borra el display
call EnviarComandoLCD
movlw 0x06 ; Incremento del cursor
call EnviarComandoLCD
return

; Subrutina para enviar un comando a la LCD


EnviarComandoLCD:
bcf LCD_RS ; RS = 0 para comandos
movwf LCD_PORT ; Envía el comando al puerto de datos
bsf LCD_E ; Habilita el pulso de Enable
nop ; Pequeña demora
bcf LCD_E ; Deshabilita el pulso de Enable
call Retardo ; Espera un breve tiempo
return

; Subrutina para mostrar el voltaje en la LCD


MostrarVoltajeLCD:
movlw 'V'
call MostrarCaracterLCD
movlw 'o'
call MostrarCaracterLCD
movlw 'l'
call MostrarCaracterLCD
movlw 't'
call MostrarCaracterLCD
movlw 'a'
call MostrarCaracterLCD
movlw 'j'
call MostrarCaracterLCD
movlw 'e'
call MostrarCaracterLCD
movlw ':'
call MostrarCaracterLCD

; Convierte el valor del ADC a voltaje


movlw 0xFF
subwf voltaje_high, W
movwf contador
movlw 0xFF
subwf voltaje_low, W
addwf contador, F

; Muestra la parte entera del voltaje


movf voltaje_high, W
call MostrarDigitoLCD

; Muestra el punto decimal


movlw '.'
call MostrarCaracterLCD

; Muestra la parte decimal del voltaje


movf voltaje_low, W
call MostrarDigitoLCD

; Nueva línea
movlw 0xC0 ; Coloca el cursor en la segunda línea
call EnviarComandoLCD

return

; Subrutina para mostrar un dígito en la LCD


MostrarDigitoLCD:
andlw 0x0F ; Asegura que solo los 4 bits inferiores estén activados
addlw '0' ; Convierte el valor a ASCII
call MostrarCaracterLCD
return

; Subrutina para mostrar un carácter en la LCD


MostrarCaracterLCD:
bsf LCD_RS ; RS = 1 para datos
movwf LCD_PORT ; Envía el carácter al puerto de datos
bsf LCD_E ; Habilita el pulso de Enable
nop ; Pequeña demora
bcf LCD_E ; Deshabilita el pulso de Enable
call Retardo ; Espera un breve tiempo
return

; Subrutina de retardo
Retardo:
movlw 0xFF
movwf contador
ret_loop:
decfsz contador, F
goto ret_loop
return
Instrucciones de código
Registros

Simulación en Proteus

Conclusiones
Se logró realizar el circuito, esto fue de ayuda para la comprensión de la suma dentro del PIC, de las
entradas y salidas, así como se pudo adquirir la experiencia en esta materia, útil para otros proyectos
y en la programación en lenguaje ensamblador, es decir, esta práctica se completó de excelente
manera y fue muy satisfactoria.

También podría gustarte