“Conversión analógico/digital”
“Conversión Analógico/Digital”
OBJETIVO
Implementar un algoritmo para medición de un voltaje analógico y despliegue de su magnitud en 2 dígitos con indicadores luminosos de 7 segmentos.
MATERIAL Y EQUIPO:
• PIC16F873
• Fuente de voltaje
• Display 7 segmentos
• Transistor NPN (2222A)
• Resistencias (1K, 330, 100)
DESARROLLO
Configuración de puertosdigitales de salida
Configuración de entrada analógica y convertidor A/D
Configuración de TMR0 para interrupción periódica
Almacenamiento del resultado de la conversión A/D
Interrupción TMR0
Despliegue de unidades o decenas
Inicio de conversión A/D
Configuración de la conversión A/D
ADCON0:
Pin RA0/AN0 Como entrada
Reloj del ADC: Fosc/2 (ADSC1-ADSC0 =0)
Habilitación delcanal analógico
Módulo ADC activo
ADCON1
Entrada analógica en RA0/AN0, el resto del puerto A son E/S digitales
Valor de la conversión justificada a la izquierda
El resultado de cada conversión se almacena en 10 bits de los registros ADRESH y ADRESL, con 1024 niveles posibles de conversión. Los display’s desplegarán los valores de la señal de entrada en el rango 0.0 a 5.0 V, con unaresolución de 0.1V (51 niveles diferentes), por lo que necesariamente el resultado de la conversión será truncado.
Con la conversión justificada a la izquierda y tomando el valor de ADRESH, las conversiones se truncan a 8 bits sin afecta l resolución de salida deseada.
CÓDIGO FUENTE:
;PRACTICA 4
LIST P=16F873
#include "P16F873.INC"
COCIENTE EQU 21h
DATO_L EQU 22hDATO_D EQU 23h
DATO_H EQU 24h
DATO EQU 27h
ORG 00h
GOTO INICIO
INICIO
BSF STATUS,RP0 ;Banco 1 de registros
BSF TRISA,0 ;RA0 como entrada
BCF TRISA,1 ;RA2 como salida
BCF TRISA,2 ;RA2 como salida
CLRF TRISC
BSF ADCON1,PCFG3 ;Poner el pin PCFG3 a 1 para seleccionar la configuración de control del puerto A/D
BSF ADCON1,PCFG2;Poner el pin PCFG2 a 1 para seleccionar la configuración de control del puerto A/D
BSF ADCON1,PCFG1 ;Poner el pin PCFG1 a 1 para seleccionar la configuración de control del puerto A/D
BCF ADCON1,PCFG0 ;Poner el pin PCFG0 a 0 para seleccionar la configuración de control del puerto A/D
BCF STATUS,RP0 ;Banco 0 de memoria
BCF ADCON0,ADCS1 ;Seleccionar la velocidad deConversión máx. FOSC/2
BCF ADCON0,ADCS0 ;Seleccionar la velocidad de Conversión máx. FOSC/2
BCF ADCON0,CHS2 ;Selección del canal cero (RA0/AN0) para conversión A/D del registro ADCON0
BCF ADCON0,CHS1 ;Selección del canal cero para conversión A/D del registro ADCON0
BCF ADCON0,CHS0 ;Selección del canal cero para conversión A/D del registro ADCON0
BSF ADCON0,ADON ;El modulo delconvertidor A/D está operando
CALL WRT_TABLE ;Llama a la subrutina WRT_TABLE para escribir la tabla.
AS
BSF ADCON0,GO_DONE ;Conversión A/D está en progreso, activar p' empezar la conversión A/D
CICLO
BTFSC ADCON0,GO_DONE
GOTO CICLO
MOVF ADRESH,0 ;Respalda en W el resultado de la conversión
MOVWF DATO_D ;y lo guarda en DATO_D
MOVLW 05h ;W=5CALL DIVISION ;Llama a la subrutina de división
MOVF COCIENTE,0 ;W=COCIENTE
MOVWF DATO_D ;DATO_D=W=COCIENTE
MOVLW 0Ah ;W=10
CALL DIVISION ;DATO_D/10
MOVF COCIENTE,0
MOVWF DATO_H ;Decenas del número a mostrar
MOVF DATO_D,0
MOVWF DATO_L ;Unidades del número a mostrar
BTFSS PORTA,1
GOTO UNIDADES ;Si RA=0 salta a desplegar unidades
BCF PORTA,1;RA1=0
MOVF DATO_H,0
MOVWF DATO
CALL CONVERT
MOVWF PORTC ;Despliega decenas (DATO_H)
BSF PORTA,2 ;RA2=1, encendido del display
GOTO AS
UNIDADES
BCF PORTA,2 ;RA2=0
MOVF DATO_L,0 ;Despliegue de la unidades (DATO_L)
MOVWF DATO
CALL CONVERT
MOVWF PORTC
BSF PORTA,1 ;RA1=1,encendido del display
GOTO AS
DIVISION
CLRF COCIENTE...
Regístrate para leer el documento completo.