PDF de programación - Tema: Utilización del módulo ADC en los microcontroladores PIC

Imágen de pdf Tema: Utilización del módulo ADC en los microcontroladores PIC

Tema: Utilización del módulo ADC en los microcontroladores PICgráfica de visualizaciones

Publicado el 10 de Junio del 2020
636 visualizaciones desde el 10 de Junio del 2020
100,5 KB
8 paginas
Creado hace 12a (18/07/2011)
Microcontroladores. Guía 4

1

Facultad: Ingeniería
Escuela: Electrónica
Asignatura: Microcontroladores
Lugar de ejecución: Laboratorio de
microprocesadores, Edif. 3 Electrónica.

Tema: Utilización del módulo ADC en los
microcontroladores PIC.

Objetivo general
• Utilizar el módulo ADC de los microcontroladores PIC para diseñar

sistemas que interactúen con componentes analógicos.

Objetivos específicos
• Conocer la forma de inicialización del módulo ADC así como la
forma en que se inician las conversiones y se verifica su
finalización.

• Utilizar la técnica de alineación a la izquierda para realizar

lecturas de 8 bits.

• Utilizar display de 7 segmentos para representar cantidades en

hexadecimal.

Materiales y equipo
• Computadora personal con puerto paralelo, sistema operativo

Windows XP, software MPLAB y WinPic800.

• Tarjeta de entrenamiento CP-PIC877 V1.0 R1.
• Programador ET-CAB10PIN V2.
• Fuente de poder de 12V con borne redondo de 5mm.
• Cable de cinta plana de 28 pines con conector para breadboard.
• Breadboard.
• 2 display de 7 segmentos de ánodo común.
• 7 resistencias limitadoras de 330 .Ω
• 2 transistores 2N3904 (NPN).
• 2 resistencias de 2.2K .Ω
• Potenciómetro de 1K .Ω
• Multímetro digital.
• Cable UTP categoría 5.

Microcontroladores. Guía 4

2

Procedimiento
1. Construya el circuito que se le presenta en la figura 1. Dicho
circuito se conectará a la tarjeta de entrenamiento con el
diagrama de pines que aparece en la figura 2.

Figura 1 – Diagrama de conexión para el circuito en la breadboard.

Figura 2 – Organización de los pines de I/O de la tarjeta entrenadora.

Microcontroladores. Guía 4

3

2. Una vez ensamblado el circuito, conecte el cable plano a la
tarjeta entrenadora. Solicite a su instructor de laboratorio que
verifique su circuito (el circuito se encenderá más adelante).

3. A continuación ejecute el programa MPLAB. Cree un nuevo proyecto

con el PIC16F877.

4. Agregue un nuevo archivo de código fuente llamado “Principal.asm”
(no olvide agregar la extensión .asm cuando lo guarde). Y copie el
siguiente programa en el archivo:

;Programa de ejemplo para utilización de ADC con display de 7 segmentos
list p=16f877 ;Definición del microcontrolador a usar
#include <p16f877.inc> ;Cabecera que define los registros del MCU

;Bits de configuración del MCU
cfg1 equ _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_ON
cfg2 equ _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
__config cfg1 & cfg2

;Declaracion de constantes
CatodoDig0 equ d'1' ;Se definen las constantes a 1 y 2 para indicar que
CatodoDig1 equ d'2' ;los catodos comunes se controlan con RA1 y RA2

;Declaracion de datos en memoria
Mis_Variables udata
Valor_ADC res 1 ;Variable que guarda el resultado de la conversion
ConteoRetardo res 1 ;Variable que guarda el conteo de retardo

PROG1 code
;========================================================================
;Rutina principal
;----------------
;Esta rutina se encuentra en la direccion 0x00000 (vector de arranque)
clrf PORTA ;Se coloca el valor de los puertos a 0 antes de
clrf PORTC ;establecerlos como salida

bsf STATUS, RP0 ;Se selecciona el banco 1

;Se inicializa el registro ADCON1 del ADC
movlw 0x0E ;Configura los canales para usar solo RA0/AN0 y
movwf ADCON1 ;selecciona la justificacion a la izquierda

movlw 0x01 ;Se coloca RA0 como entrada (analoga). El resto son
movwf TRISA ;salidas (incluyendo a RA1 y RA2).
clrf TRISC ;Todo el puerto C se establece como salidas

bcf STATUS, RP0 ;Selecciona el banco 0 nuevamente

Microcontroladores. Guía 4

4

;Se inicaliza ahora el registro ADCON0 del ADC. Notese que se usa
;el reloj interno del ADC debido a que la velocidad no es critica y
;la aplicacion no requiere exactitud en la velocidad de conversion.
movlw 0xC1 ;Selecciona el reloj interno, selecciona tambien el
movwf ADCON0 ;canal cero del ADC (AN0) y activa el ADC.
;Nota: en caso de usar varios canales, puede modificarse este registro
;para intercambiarlos.

clrf Valor_ADC ;Limpia la variable

Rutina:
bsf ADCON0, GO_DONE ;Inicia la conversion del ADC
btfsc ADCON0, GO_DONE ;Espera a que la conversion termine por
goto $-1 ;medio de verificar el mismo bit

movf ADRESH, w ;Toma el resultado del ADC y lo guarda
movwf Valor_ADC
;Nota: Dado que se utilizo la justificacion a la izquierda, se pueden
;tomar solo los 8 bits mas significativos y usarlos como resultado.
;Esto puede realizarse si solo se necesitan 8 bits de resolucion y no
;los 10 que provee el ADC.

;Se actualiza el primer display
movlw 0x0F ;Alista los 4 LSB
andwf Valor_ADC, w
call Tabla_Display ;Se determina la combinacion de segmentos
movwf PORTC ;Coloca el resultado en el puerto C
bsf PORTA, CatodoDig0 ;Activa el catodo del display
movlw d'5' ;Espera durante 5ms
call Retardo
bcf PORTA, CatodoDig0 ;Desactiva el catodo del display

;Actualiza el segundo display
swapf Valor_ADC, w ;Alista los 4 MSB
andlw 0x0F
call Tabla_Display ;Se determina la combinacion de segmentos
movwf PORTC ;Coloca el resultado en el puerto C
bsf PORTA, CatodoDig1 ;Activa el catodo del display
movlw d'5' ;Espera durante 5ms
call Retardo
bcf PORTA, CatodoDig1 ;Desactiva el catodo del display

goto Rutina ;Repite el proceso

;========================================================================
;Rutina de retardo variable
;--------------------------
;Esta rutina genera un retardo segun la cantidad de milisegundos indicada
;en el acumulador. Si el acumulador vale 0, el retardo es de 256ms.
Retardo:
movwf ConteoRetardo ;Guarda la cuenta de milisegundos en memoria

Microcontroladores. Guía 4

5

Nuevo_Retardo:
movlw d'250'
Retardo_1ms:
addlw -d'1' ;Resta uno a la cuenta en el acumulador - 1 clock
btfss STATUS, Z ;Verifica si la cuenta llego a cero - 1 clock
goto Retardo_1ms ;Continua iterando mientras no termina - 2 clock
;Calculo para el retardo interno:
;T = 4 x Numero de iteraciones x Intrucciones por iteracion
; ------------------------------------------------------
; frecuencia de oscilador
;T = 4 x 250 x 4
; -----------
; 4MHz
;T = 1ms

decfsz ConteoRetardo, f ;Decrementa la cuenta de milisegundos
goto Nuevo_Retardo ;Mientras no sea cero, repite
return ;Cuando llega a cero, retorna

;========================================================================
;Rutina de tabla de conversion para display de 7 segmentos.
;----------------------------------------------------------
;Esta rutina toma el valor de un digito hexadecimal en W, y lo convierte
;al valor que activa los segmentos del display para desplegarlo.
Tabla_Display:
addwf PCL, f
;Distribucion de los segmentos
; gfedcba Digito
retlw b'00111111' ;0
retlw b'00000110' ;1
retlw b'01011011' ;2
retlw b'01001111' ;3
retlw b'01100110' ;4
retlw b'01101101' ;5
retlw b'01111101' ;6
retlw b'00000111' ;7
retlw b'01111111' ;8
retlw b'01101111' ;9
retlw b'01110111' ;A
retlw b'01111100' ;b
retlw b'00111001' ;C
retlw b'01011110' ;d
retlw b'01111001' ;E
retlw b'01110001' ;F

end ;Fin del programa

Listado 2 – Código fuente de la librería a implementar.

5. Agregue al proyecto el archivo de de guión de enlace (linker

script) con el nombre “16f877.lkr”.

Microcontroladores. Guía 4

6

6. Compile el programa y verifique que no se generen errores.

7. Prepare el programador conectando primero la cincha plana al
último conector del extremo del tablero, a continuación conecte el
programador al puerto paralelo de su PC. Prepare la tarjeta
conectando el cable de poder a la misma y luego conectando la
cincha que viene del programador al conector amarillo. Finalmente
encienda la fuente.

8. Ejecute a continuación el programa WinPic800. Asegúrese de que
está elegido el programador “ETT-LOW VPP ICSP” en el puerto
paralelo correcto. Ejecute la rutina de detección automática de
dispositivo para que el software quede configurado.

9. Cargue el archivo .hex generado al compilar el programa y
descárguelo en el PIC. Una vez terminado, corrobore que el
programa fue programado correctamente con la rutina de
comprobación del WinPic800.

10. En estos momentos los display deberían estar mostrando una

cantidad en hexadecimal. ¿Que cantidad presentan?

11. Ajuste la perilla del potenciómetro y verifique que la lectura

del display cambia conforme la mueve.

12. Ajuste la tensión en el pin RA0 a 0V ayudándose del multímetro.

¿Que valor se presenta en los display? Anótelo:_________

13. Ahora ajuste la tensión en RA0 a 5V y anote el resultado: _______

14. Finalmente, ajuste la tensión a 2.5V y anote el resultado: ______

15. Con la ayuda de su instructor modifique el programa de manera que
el microcontrolador muestre el mensaje “HI” en los display en caso
que el voltaje exceda los 4V, y que muestre el mensaje “LO” en
caso que se reduzca por debajo de 1V. Una vez realizados los
cambios, compile su programa y descárguelo a su tarjeta de
entrenamiento para verificar su funcionamiento.

16. Apague la tarjeta de entrenamiento, desconecte el programador de
la tarjeta y la
  • Links de descarga
http://lwp-l.com/pdf17745

Comentarios de: Tema: Utilización del módulo ADC en los microcontroladores PIC (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad