0% encontró este documento útil (0 votos)
93 vistas15 páginas

Practica 06

Practica 6 Microcomputadoras UNAM
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
93 vistas15 páginas

Practica 06

Practica 6 Microcomputadoras UNAM
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 PDF, TXT o lee en línea desde Scribd

​​ ​ ​ ​ ​ ​

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO


FACULTAD DE INGENIERÍA

Laboratorio de Microcomputadoras

Profesor(a):
MOISES MELENDEZ REYES

EQUIPO 04

Nombre(s) Alumno(s) y Grupos de Teoría:

Fragoso Alarcón Alejandro Misael (02)


Lázaro Pérez Juan Carlos (04)
Rodriguez Vargas Jennifer (04)

Práctica No. 6
Convertidor Analógico/Digital

Semestre 2024-1

Fecha de entrega: 12/octubre/2023


Objetivo. Familiarizar al alumno con el uso y aplicación del Convertidor Analógico/Digital
de un microcontrolador.

Desarrollo

Código:
Este código está escrito en lenguaje ensamblador para el microcontrolador PIC16F877A y
se encarga de realizar una conversión analógico-digital (CAD) y mostrar el resultado en el
Puerto D del microcontrolador, el cual veremos representado en la tarjeta en los leds, Entre
cada conversión, hay un retardo generado por la subrutina retardo.

Simulación en Proteus
Código:
Este código configura el microcontrolador para realizar una conversión CAD y luego realiza
una serie de comparaciones basadas en el valor resultante para controlar el Puerto D, el
cual asignamos a una de las perillas reguladoras de voltaje de la tarjeta.

Limpiamos el registro ADCON1 para configurar los pines del Puerto A y E como canales de
entrada al CAD. Luego se establece el registro TRISD como cero para definir todos los
pines del Puerto D como salidas.

El programa entra en un bucle principal etiquetado como LOOP y se inicia la conversión


analógico-digital (CAD) mediante la instrucción BSF ADCON0,GO. Se compara el valor de
VALOR con varios umbrales y se realiza un salto condicional según el valor comparado para
saber qué número mostrar en el display de 7 segmentos.

Simulacion en Proteus:
El circuito empleado es el siguiente:
Propuesta Este programa funcionará de manera más o menos similar al anterior, solo que
esta vez en lugar de procesar una entrada analógica, serán 3, para ello analizaremos una
por una de manera subsecuente usando la herramienta integrada del propio
microcontrolador y configurándolo para que, una vez analice una, guarde su valor y pase a
analizar la siguiente, de tal forma que guarde los valores de los 3 potenciómetros, una vez
que ya los tengamos guardados, solo resta hacer una comparación entre estos 3 valores,
de esta forma obtendremos cual es el mayor y prenderemos el numero de les que
corresponden a la entrada de mayor voltaje.

Pseudocódigo

INICIO
CONFI PORTA,PORTB
EMPEZAR_
ANALISIS; recaudamos información de las entradas
ANALISIS ENTRADA 1;
Guardamos información en RAM
ANALISIS ENTRADA 2;
Guardamos información en RAM
ANALISIS ENTRADA 3;
Guardamos información en RAM
COMPROBACION DE ENTRADAS
¿Se recopilo toda información?
No: Espera
Si: Se comparan las entradas
Analisis E1, E2, E3:
¿E1 < E2?
Si: ¿E1 < E3?
Si → Call N1
NO→ Call N3
No: ¿E2< E3?
Si → Call N2
NO→Call N3
END

Código

processor 16f877
include<p16f877.inc>

val equ h'20'


analisis1 equ 0x21
analisis2 equ 0x22
analisis3 equ 0x23

org 0h
goto INICIO
​ org 05h
INICIO:
clrf PORTA ;Limpia el puerto A
clrf PORTB ;Limpia el puerto B
bsf STATUS,RP0
bcf STATUS,RP1 ;Cambio la banco de memoria 1
movlw 00h
movwf ADCON1 ;Configura puerto A y E como analogicos
movlw 3fh ; Valor para configurar los puertos A y E como
entrada
​ movwf TRISA ;Configura el puerto A como entrada
​ movlw h'0'
​ movwf TRISB ;Configura puerto B como salida
​ bcf STATUS,RP0 ;Regresa al banco 0
EMPEZARANALISIS:
movlw b'11000001' ;Configuracion ADCON0
​ movwf ADCON0 ; ADCS1:ADCS0 =Frecuencia interna del reloj del
A/C
;CHS2-0=000 (AN0)
;GO/DONE=0, es decir no ha empezado a

capturar
;bit vacio
; Encender convertidor.
call retardo
bsf ADCON0,2 ;Comenzamos la conversion

ESPERA:
btfsc ADCON0,2 ;Verificamos si ya se termino de retraer la
informacion
goto ESPERA ;No, seguimos esperando
movf ADRESH,w ;Si, pasamos la informacion al registro de
trabajo W.
​ movwf analisis1 ; la almacenamos temporalmente

movlw b'11001001'; ahora seleccionamos AN1 (canal 1)


movwf ADCON0 ; aplicamos el cambio
​ call retardo
bsf ADCON0,2; Empezamos la conversión
ESPERA1:
btfsc ADCON0,2 ; revisamos si ya terminó
goto ESPERA1
MOVF ADRESH,W ;Guardamos en RAM
MOVWF analisis2

movlw b'11001010'; ahora seleccionamos AN2 (canal 2)


movwf ADCON0
call retardo
bsf ADCON0,2; Empezamos la conversión

ESPERA2:
btfsc ADCON0,2 ; revisamos si ya terminó
GOTO ESPERA2
MOVF ADRESH,W ;Guardamos en RAM
MOVWF analisis3
;Comparamos ahora cual es la mayor
MOVF analisis1, w
subwf analisis2,w;
BTFSC STATUS, C ; se activó el carry?
GOTO l1Ml2;SI, por lo tanto, L2>L1
GOTO l2Ml1;NO L1>L2
l1Ml2:
movf analisis1,w
subwf analisis3,w
BTFSC STATUS, C; Se activó el carry?
GOTO n2;SI, por lo tanto L3>L1>L2
GOTO n0;NO, por lo tanto L1>L3>L2
l2Ml1:
movf analisis2,w
subwf analisis3,w
BTFSC STATUS,C
GOTO n2;L3>L2>L1
GOTO n1;L2>L3>L1
n0:
movlw 0X01 ;
movwf PORTB
GOTO EMPEZARANALISIS
n1:
movlw 0X03 ;
movwf PORTB
GOTO EMPEZARANALISIS
n2:
movlw 0X07 ;
movwf PORTB
GOTO EMPEZARANALISIS
retardo: ;Subrutina de retardo
movlw h'30'
movwf val
loop: ​ decfsz val
goto loop
return
end

Ejecución
El circuito que creamos para la simulación en Proteus es el siguiente:

El ejecutar el programa de modo que se cumplan las condiciones para prender los
leds como se indica, podemos ver cada uno de los 3 casos:

Caso 1
Ve1>Ve2 y Ve3
Caso 2
Ve2>Ve1 y Ve3
Caso 3
Ve3>Ve1 y Ve2

Al final podemos ver como se cumple que indica correctamente en el panel de leds
el numero de la entrada de corriente.

Conclusiones

Fragoso Alarcón Alejandro Misael:

El Convertidor Analógico/Digital (ADC) es una pieza clave que permite al microcontrolador


interpretar señales analógicas del entorno y convertirlas en datos digitales comprensibles.
Esta funcionalidad es esencial en numerosas aplicaciones, desde sistemas de monitoreo
ambiental hasta controladores de dispositivos electrónicos esto facilita la interfaz entre el
mundo analógico y digital, brindando al microcontrolador la capacidad de procesar
información del entorno real.

Lázaro Pérez Juan Carlos:

Basado en el objetivo de la práctica, puedo concluir que el convertidor Analógico/Digital


tiene bastantes aplicaciones útiles en el campo de la electrónica —y por ende, en la
computación, ya que se usa para construir hardware (como los microprocesadores)—.

Por otra parte, aprendí cómo usar los puertos paralelos para realizar conversiones
de señales analógicas a digitales. Así como, su programación en lenguaje ensamblador
aplicado al PIC16F877A.
Rodríguez Vargas Jennifer:

Con el desarrollo de esta práctica aprendimos a configurar el microcontrolador para que


pueda recibir información analógica, analizarla y convertirla a formato digital, ya que
actualmente se requiere, ya que, la mayoría de los dispositivos actuales son digitales.
Además del uso del CAD, el conversor y los valores discretos que se pueden producir en un
rango de voltaje.

También podría gustarte