Documentos de Académico
Documentos de Profesional
Documentos de Cultura
N° 07 Conversión AD
PROGRAMACIÓN DE
MICROCONTROLADORES
IV CICLO
INFORME
Laboratorio N° 7
“CONVERSIÓN AD”
Integrantes:
BASURTO BERNAL, Candy Massiel
GUERREROS GUTIERREZ, Jose Jefferson
HUAMAN CHIPANA, Elio
YOPAN CUIPAL, Juber Antony
Profesor:
Ciriaco Martínez, Cesar Augusto
2017-1
1
Lab. N° 07 Conversión AD
Índice general
1. Introducción……………………………………………………………………………3
2. Objetivos generales…………………………………………………………………..4
3. Objetivos específicos.………………………………………………………………...4
4. Fundamento Teorico………………………………………………………………….4
4.1 Convertidores analógicos-digitales.…………………………………………….4
4.2 Registros……………....................................................................................4
4.3 ADRESH: ADRESL………………………………………………………….......5
4.4 Pasos para llevar a cabo una conversión:……………………………….........5
5. Procediminto…………………………………………………………………………....6
5.1 Copiar el siguiente programa, analiza.................................................................6
¿Qué sucede en el ADC?..............................................................................................7
¿En qué consiste el primer programa?........................................................7
¿Cuál es la fórmula que nos indica la resolución del adc de 8bits?...............7
¿Para un voltaje 2.8V, de cuánto es la conversión binaria?........................................7
¿Por qué utilizamos el puerto B?....................................................................7
Explicar brevemente la función de la librería adc.asm………………………...7
5.2 Copiar el siguiente programa, analiza……………………………………………...7
En qué consiste el segundo programa?.........................................................8
¿Hasta cuánto puede ser el valor cargado de W?..........................................8
¿Por qué se usan dos puertos de salida para este programa?.......................8
¿Cuáles es la ecuación para la resolución en el segundo programa? ………8
¿En qué canal del PIC se está ingresando las variaciones de voltaje dc? ....8
5.3 Mostrar evidencia de ejecución de los programas……………………………….9
Capturar ventanas que muestran el resultado del ensamble del proyecto....9
Capturar ventanas que muestren la simulación paso a paso........................9
Comentar la función de las instrucciones......................................................9
Tomar fotos a los módulos de trabajo ………………………………………….9
6. Aplicasion……………………………………………………………………………....9
7. Comcluiones………………………………………………………………………….10
8. Observaciones………………………………………………………………………10
9. Biblografias.………………………………………………………………………....10
2
Lab. N° 07 Conversión AD
1. Introducción:
El microcontrolador PIC16F877 de Microchip puede realizar una gran variedad de funciones, pero el que
vamos a estudiar es conversor analógico-digital. Antes de ingresar de lleno en el funcionamiento vamos
a comentar los elementos principales del convertidor análogo a digital. Las señales que se envían a través
de un medio guiado como un cable o no guiado como es el aire son de tipo continuo y pueden tomar
infinitos valores a lo largo del tiempo. El interés por digitalizar una señal puede surgir por varios motivos:
el hecho de querer guardar en un soporte digital o transmitirla digitalmente para poder reconstruirla,
poder tratar con programas. Acotando la señal en un intervalo de tiempo y unos valores mínimos y
máximos de tensión tenemos que tener en cuenta dos factores fundamentales a la hora de almacenar
dicha señal en un formato adecuado que pueda almacenarse digitalmente en unos y ceros se tiene que
muestrear y cuantificar. El muestreo implica que tenemos que coger una muestra de la señal cada tiempo
ya que no hay memoria suficiente capaz de almacenar los infinitos puntos de una señal en un intervalo
cualquiera de tiempo.
3
Lab. N° 07 Conversión AD
2. Objetivo General:
Convertidor analógico/digital del PIC16F877A utilizando registros tales como ADRESH, ADRESL,
ADCON0 y ADCON1.
3. Objetivos Específico:
4. Marco Teórico:
Los convertidores A/D son dispositivos electrónicos que establecen una relación biunívoca entre el
valor de la señal en su entrada y la palabra digital obtenida en su salida. La relación se establece en
la mayoría de los casos, con la ayuda de una tensión de referencia.
4.2. Registros
4
Lab. N° 07 Conversión AD
Estos registros contienen los 10 bits del resultado de la conversión A/D. Cada uno de estos registros
es de 8 bits por lo que entre los dos suman un total de 16 bits. El conversor A/D tiene flexibilidad para
ajustar a la derecha o a la izquierda los 10 bits que son el resultado de la conversión en los 16 bits de
los registros de resultado. El bit de selección de formato (ADFM; bit 7 del registro ADCON1) controla
esta justificación. Con el bit de selección de formato a 1 la justificación será a la derecha, y puesto a
0 la justificación será a la izquierda. Los bits sobrantes se guardan con ceros.
Cuando la conversión A/D esta desactivada estos registros son usados como dos registros de 8 bits
de uso general
*ADIF: bit interruptor del conversor A/D; 1 = conversión A/D completa (debe ser borrado en software), 0
= conversión A/D no completa.
**ADIE: bit de activación de la interrupción del convertidor A/D; 1 = activa la interrupción del convertidor,
0 = desactiva la interrupción del convertidor
5
Lab. N° 07 Conversión AD
5. Procedimiento:
;---------------------------------------------
; Ejemplo de conversión ADC: 8bits
; Curso PIC16F877
; --------------------------------------------
- list p=16f877a
include<p16f877a.inc>
include<macro16f877.inc>
Config 0x3f32
cblock 0x20
endc
org 0000h
;---------------------------------
banco 1
clrf trisb ;comentar:
banco 0
6
Lab. N° 07 Conversión AD
call ADC8Bits ;comentar:
movf RegADC1,0 ;comentar:
movwf portb ;comentar:
goto repite
;---------------------------------
include<electronicpic16f877.asm>
include<adc.asm> ;comentar:
end
;---------------------------------------------
list p=16f877a
include<p16f877a.inc>
include<macro16f877.inc>
__config 0x3f32
cblock 0x20
endc
org 0000h
;---------------------------------
banco 1
clrf trisb ;comentar:Definimos al Trisb como salidas
banco 0
clrf portb ;comentar:Ponemos al Portb en 0
movlw .0 ;comentar:Aqui escogemos en que canal entrará la señal análoga
call Inicio_ADC ;comentar:Llamamos a la subrutina para iniciar la conversión
repite
call ADC8Bits ;comentar:Empieza ka conversión a 8 bitsde una señal análoga
movf RegADC1,0 ;comentar:Los datos del registro RegADC1, se guardan en W
movwf portb ;comentar:Enviar los datos de W a los pines del PORTB
goto repite
;---------------------------------
include<electronicpic16f877.asm>
include<adc.asm> ;comentar:Lbrera para convertir una señal Análoga a Digital
end
7
Lab. N° 07 Conversión AD
Pasos a realizar:
Imagen 4. New proyecto se ejecutara de la creación de la nueva programación que se desea realizar.
8
Lab. N° 07 Conversión AD
Imagen 6. Habilitar el simulador del MPLAB, para esto damos click en Debugger.
9
Lab. N° 07 Conversión AD
Imagen 8. Ventana de Guardar como buscamos nuestra carpeta que hemos creado.
10
Lab. N° 07 Conversión AD
11
Lab. N° 07 Conversión AD
Cuestionario de la programación:
En convertidor de ADC solo toma los valores variables de las señales de entrada para luego convertirlo
en código binario.
Este programa nos permite convertir una señal análoga de 0 a 5 voltios en una señal digital de
8 bits de 00000000 a 11111111 (0 a 255).
La fórmula esta expresado entre la división de Vmax-entra entre dos elevado al número de bits.
Vref Vref
2n 1
Donde:
Se utilizó el puerto B porque este tiene 8 bits, también se pudo haber usado el puerto C y D.
Esta librería sirve para activar el registro ADCON0 y luego realizar una conversión de una señal análoga a
digital de 8 o 10 bits.
;------------------------------------------------------
;Ejemplo de conversión ADC:10bits
;Curso PIC16F877
12
Lab. N° 07 Conversión AD
; -----------------------------------------------------
- list p=16f877a
include<p16f877a.inc>
include<macro16f877.inc>
config 0x3f32
cblock 0x20
endc
org 0000h
; --------------------------------
- banco 1
clrf trisb ;comentar:
clrf trisc ;comentar:
banco 0
Imagen 11. En la ventana New Project tenemos que poner el nombre del proyecto.
14
Lab. N° 07 Conversión AD
Imagen 13. Habilitar el simulador del MPLAB, para esto damos click en Debugger.
15
Lab. N° 07 Conversión AD
16
Lab. N° 07 Conversión AD
Cuestionario de la programación:
Este programa es similar al programa anterior, con excepción que este funciona con 10 bits. Podemos
decir que este programa te da una mejor resolución-
Antes de hacer uso del INICIO ADC estaríamos utilizando todos los bits de ambos puertos B y C.
Debido a que en este programa se utilizar 10 bits y en cada puerto solo hay 8 bits, es necesario
compensar esto con 2 bits más del puerto C
¿En qué canal del PIC se está ingresando las variaciones de voltaje dc?
En este caso también se hizo uso del canal 0 para introducir la tensión variable.
6. Aplicación de lo aprendido
Deberá ser conciso y redactado con lenguaje propio. Estará basado en las lecturas recomendadas o
cualquier otra información relacionada con el tema. En cualquier caso no será mayor de tres (03) páginas
Programación:
;---------------------------------------------
;Ejemplo de conversión ADC:8bits
;Curso PIC16F877
;---------------------------------------------
list p=16f877a
include<p16f877a.inc>
include<macro16f877.inc>
__config 0x3f32
cblock 0x20
endc
org 0000h
;---------------------------------
banco 1
clrf trisb
banco 0
clrf portb
cursor off
17
Lab. N° 07 Conversión AD
call Inicio_lcd
repite
movlw .0 ; canal 0
call Inicio_ADC
call ADC8Bits
movf RegADC1,0
movwf NumMult1 ;coloco el numero convertidoa NumMult1
mensaje .10
desplazaderecha
call Mult8x8Bits
;------- primer numero DECENA DE MILLAR convertido y luego a ascci para enviarlo al LCD
movlw .48
addwf NumB2
putv NumB2
;------- segundo numero UNIDAD DE MILLAR convertido y luego a ascci para enviarlo al LCD
movlw .48
addwf NumB1
putv NumB1
;------- tercer numero CENTENA convertido y luego a ascci para enviarlo al LCD
movlw .48
addwf NumA3
putv NumA3
;------- cuarto numero DECENA convertido y luego a ascci para enviarlo al LCD
movlw .48
addwf NumA2
putv NumA2
;------- quinto numero UNIDAD convertido y luego a ascci para enviarlo al LCD
movlw .48
addwf NumA1
putv NumA1
;------no es necesario colocar los cursores "CURSOR 2", ya que ahora me voy a ir a la segunda linea
18
Lab. N° 07 Conversión AD
;----------ahora VOLTAJE---------------------
movlw .1 ; canal 1
call Inicio_ADC
call ADC8Bits
movf RegADC1,0
movwf NumMult1
mensaje .11
desplazaderecha
call Mult8x8Bits
;------- numero UNIDAD DE MILLAR convertido y luego a ascci para enviarlo al LCD
movlw .48
addwf NumB1
putv NumB1
ponerc' '
ponerc'V'
19
Lab. N° 07 Conversión AD
;---------------------------------
include<electronicpic16f877.asm>
include<adc.asm>
include<lcd.asm>
include<conversion.asm>
include<mult8x8.asm>
include<Mensaje.asm>
6. Conclusiones:
Los códigos convertidos a binario, son almacenados en los registros RegADC1 cuando se usan 8
bits (RB0-RB7) y RegADC2, cuando se usan 10 bits de datos (RB0-RB7,RC0 y RC1).
Antes de realizar la conversión, primero se debe elegir el canal por donde ingresará la señal
variable.
Para el primer programa la resolución es de 19.6mV porque tiene más bits, por otro lado para
el segundo programa la resolución es de 4.89mV por ser solo 8 bits.
La instrucción call nos va permitir llamar a las librerías en la programación.
Utilizamos la librería (adc.asm) para utilizar los pines análogos del PIC y botar los valores de la
conversión Análogo-Digital en las salidas RB y RC.
7. Observaciones:
A mayor cantidad de bits para el conversor ADC se tiene una mejor resolución en la conversión
digital, esto permite representar digitalmente de forma más exacta la señal analógica.
La programación en Assembler contiene la instrucción “include” que permiten ingresar a otra
hoja de programación de la misma carpeta donde se ha creado el proyecto.
El PIC 16f877a tiene 8 canales de conversión Análogo-Digital, los cuales van desde AN0 hasta
AN7.
20
Lab. N° 07 Conversión AD
Se logró convertir una señal variable (analógica) de 0 a 5 voltios a códigos binarios usando el
PIC 16F877A con la principal ayuda de la librería adc.asm.
En Assembler se pueden crear macros, el cual permite crear instrucciones que facilitan el
desarrollo y elaboración de una programación.
8. Bibliografías:
Recuperado de:
file:///C:/Users/User/Downloads/convertidor_anlogo_digital_pic_16f877a_448.pdf
Recuperado de: http://www.puntoflotante.net/CONVERTIDORAD.htm
Recuperado de:
http://grupovirtus.org/moodle/pluginfile.php/4494/mod_resource/content/1/SEMANA_6/material_2.pdf
Recuperado de: Microchip section 23: basic 10 bit A/D converter
Recuperado de: www.todopic.com.ar
21
Lab. N° 07 Conversión AD
pág. 8