Sie sind auf Seite 1von 37

FORMATO DE INFORME DE PRÁCTICA DE LABORATORIO /

TALLERES / CENTROS DE SIMULACIÓN – PARA ESTUDIANTES

CARRERA: INGENIERÍA ELÉCTRICA ASIGNATURA: SISTEMAS MICROPROCESADOS


NRO. PRÁCTICA: 5 TÍTULO PRÁCTICA: MANEJO DE ADC—MULTIPLEXACIÓN--LCD
OBJETIVO ALCANZADO:
Objetivo General:
 Programar el PIC16F877A mediante un ensamblador software MPLAB X IDE V4.15 utilizando el manejo de ADC,
multiplicación y LCD.
Objetivos Específicos:
 Conocer el uso y el manejo del programa MPLABX IDE que se llevara a cabo en las practicas con ciertas interrupciones.
 Conocer la programación del PIC16F877A mediante la utilización de la hoja de Datasheet y los puertos.
 Ejecutamos o quemamos el proyecto y lo programamos en el PIC mediante un PICKT 2.
 Entender y programar ADC (ADRESL y ADRESH)
 Enterder el manejo del sensor LM35 Y el funcionamiento del LCD
 Entender el manejo de la multiplexacion con el sensor de LM35

DESCRIPCIÓN DEL PROGRAMA POR FASES:

MANEJO DEL ADC

BUCLE. - Es una sentencia que ejecuta repetidas veces un trozo de código, hasta que la condición asignada a dicho bucle deja de
cumplirse.

INICIO
#DEFINE K 0XFF
#DEFINE K1 D'255'

CBLOCK 0X020
CONTA1
CONTA2
ENDC

Definimos el convertidor que genere un resultado binario de 10 bits utilizando el método de aproximaciones sucesivas y almacena los
resultados de conversión en los registros ADC (ADRESL y ADRESH) el convertidor A/D convertira una señal de entrada analógica
en un número binario de 10 bits.

BSF STATUS,RP0
MOVLW B'10001110'
MOVWF ADCON1
MOVLW B'11111'
MOVWF TRISA
CLRF TRISB
CLRF TRISD

Resolución CS N° 076-04-2016-04-20
BCF STATUS,RP0
CLRF PORTB
CLRF PORTD

CLRF ADCON0; LEE EL DATO AN-0


BSF ADCON0,0

PRINCIPAL
CALL TIEMPO ;50US
BSF ADCON0,2

MAIN
BTFSC ADCON0,2
GOTO MAIN
MOVF ADRESH,0
MOVWF PORTB
BSF STATUS,RP0
MOVF ADRESL,0
BCF STATUS,RP0
MOVWF PORTD

GOTO PRINCIPAL

Al tener este código van a ser nuestras entradas y el CLRF TRISD van a ser todas nuestras salidas en el PIC. Y finalmente el MOVLW
va ser mi entrada para el código binario en un registro, y el MOVWF cargo los valores en MOVLW y las interrupciones que nos indican
en el código para la realización del circuito en el PIC16F877A.

TIEMPO

MOVLW K1
MOVWF CONTA2
B2
MOVLW K
MOVWF CONTA1
B1
NOP
DECFSZ CONTA1,F
GOTO B1
DECFSZ CONTA2,F
GOTO B2
RETURN

END

Resolución CS N° 076-04-2016-04-20
MEDICION DE TEMPERATURA LM35-LCD

BUCLE. - Es una sentencia que ejecuta repetidas veces un trozo de código, hasta que la condición asignada a dicho bucle deja de
cumplirse.

;Variable para el DELAY del ADC


val equ h'20'

;Variables para el DELAY del ENABLE LCD


val2 equ 0x30
val1 equ 0x31

;Variables para separar el resultado de ADC


; en valor BCD
Unidades equ 0x32
Decenas equ 0x33
Centenas equ 0x34
Resto equ 0x35

org 0h
goto INICIO
org 05h

DEFINIMOS LOS PUERTOS

INICIO:
clrf PORTA ;Limpia el puerto A
clrf PORTB ;Limpia el puerto B
clrf PORTC ;Limpia el puerto C
clrf PORTD ;Limpia el puerto D
bsf STATUS,RP0
bcf STATUS,RP1 ;Cambio al banco 1

clrf TRISC ;Configura PORTC como salida


clrf TRISD ;Configura PORTD como salida

Configuramos los puertos para el LCD

movlw 00h
movwf ADCON1
movlw 3fh
movwf TRISA
movlw h'0'
movwf TRISB
bcf STATUS,RP0

LCD

START_LCD:
Resolución CS N° 076-04-2016-04-20
bcf PORTC,0
movlw 0x01
movwf PORTD
call COMANDO
movlw 0x0C
movwf PORTD
call COMANDO
movlw 0x3C
movwf PORTD
call COMANDO
bsf PORTC, 0
return

VALOR DE LA TEMPERATURA

clrf Centenas
clrf Decenas
clrf Unidades

movf ADRESH,W
addwf ADRESH,W ;Dupilca el valor de ADRESH para
;obtener un valor de temperatura real aprox
movwf Resto ;Guarda el valor de ADRESH en Resto

;Comienza el proceso de otenci?n de valores BCD


;para Centenas, Decenas y unidades atraves de restas
;sucesivas.
CENTENAS1
movlw d'100' ;W=d'100'
subwf Resto,W ;Resto - d'100' (W)
btfss STATUS,C ;Resto menor que d'100'?
goto DECENAS1 ;SI
movwf Resto ;NO, Salva el resto
incf Centenas,1 ;Incrementa el contador de centenas BCD
goto CENTENAS1 ;Realiza otra resta
DECENAS1
movlw d'10' ;W=d'10'
subwf Resto,W ;Resto - d'10' (W)
btfss STATUS,C ;Resto menor que d'10'?
goto UNIDADES1 ;Si
movwf Resto ;No, Salva el resto
incf Decenas,1 ;Incrementa el contador de centenas BCD
goto DECENAS1 ;Realiza otra resta
UNIDADES1
movf Resto,W ;El resto son la Unidades BCD
movwf Unidades
;clrf Resto

OBTEN_ASCII
Resolución CS N° 076-04-2016-04-20
movlw h'30'
iorwf Unidades,f
iorwf Decenas,f
iorwf Centenas,f
return

DELAY 20 microSeg

DELAY1:
movlw h'30'
movwf val
Loop decfsz val,1
goto Loop
return

DELAY2:
movlw 0xFF
movwf val1
Loop1:
movlw 0xFF
movwf val2
Loop2:
decfsz val2,1
goto Loop2
decfsz val1,1
goto Loop1
return
end

MULTIPLEXACION

BUCLE. - Es una sentencia que ejecuta repetidas veces un trozo de código, hasta que la condición asignada a dicho bucle deja de
cumplirse.

ORG 0X00
GOTO INICIO
INICIO
#DEFINE K1 D'255'
#DEFINE K2 D'255'
CBLOCK 0X20
CONTA
CONTA2
UNIDADES
DECENAS
CENTENAS
NUMERO
ENDC

BSF STATUS,5; ACCESO AL BANCO 1


Resolución CS N° 076-04-2016-04-20
BCF INTCON,7; GIE = 0
BCF PIE1,6 ; ADIE = 0
MOVLW B'10001110'
MOVWF ADCON1
BSF TRISA,0
CLRF TRISD
CLRF TRISB
CLRF TRISC
BCF STATUS,5
CLRF ADCON0

BSF ADCON0,0

PRINCIPAL
CALL TIEMPO ; 50us
BSF ADCON0,2

MAIN
BTFSC ADCON0,2
GOTO MAIN
MOVF ADRESH,0

BSF STATUS,5; ACESSO BACNO 1


MOVF ADRESL,0
BCF STATUS,5; ACCESO BANCO 0
MOVWF NUMERO

CONVERSION ; 8 BITS A TRABAJAR

CLRF CENTENAS ; CARGA LOS REGISTROS CON EL RESULTADO INICIAL.


CLRF DECENAS ; EN PRINCIPIO (CENTENAS)=0 Y (DECENAS)=0.
MOVF NUMERO,W
MOVWF UNIDADES ; SE CARGA EL NÚMERO BINARIO A CONVERTIR.
BCD_RESTA10
MOVLW .10 ; A LAS UNIDADES SE LES VA RESTANDO 10 EN CADA
SUBWF UNIDADES,W ; PASADA. (W)=(UNIDADES)-10.
BTFSS STATUS,C ; ¿(C)=1?, ¿(W) POSITIVO?, ¿(UNIDADES)>=10?.
GOTO BIN_BCD_FIN ; NO, ES MENOR DE 10. SE ACABÓ.
BCD_INCREMENTADECENAS
MOVWF UNIDADES ; RECUPERA LO QUE QUEDA POR RESTAR.
INCF DECENAS,F ; INCREMENTA LAS DECENAS Y COMPRUEBA SI LLEGA A
MOVLW .10 ; 10. LO HACE MEDIANTE UNA RESTA.
SUBWF DECENAS,W ; (W)= (DECENAS)-10.
BTFSS STATUS,C ; ¿(C)=1?, ¿(W) POSITIVO?, ¿(DECENAS)>=10?.
GOTO BCD_RESTA10 ; NO. VUELVE A DAR OTRA PASADA, RESTÁNDOLE 10.
BCD_INCREMENTACENTENAS
CLRF DECENAS ; PONE A CERO LAS DECENAS
INCF CENTENAS,F ; E INCREMENTA LAS CENTENAS.
GOTO BCD_RESTA10 ; OTRA PASADA, RESTA 10 AL NÚMERO A CONVERTIR.
Resolución CS N° 076-04-2016-04-20
BIN_BCD_FIN
SWAPF DECENAS,W ; EN EL NIBBLE ALTO DE W TAMBIÉN LAS DECENAS.
ADDWF UNIDADES,W ; EN EL NIBBLE BAJO DE W LAS UNIDADES.

CONFIGURAMOS EL DISPLAY

MOVF CENTENAS,W
CALL TABLA
MOVWF PORTD
; MOSTRAR DECENA DISPLAY;
MOVF DECENAS,W
CALL TABLA
MOVWF PORTC
; MOSTRAR UNIDAD DISPLAY
MOVF UNIDADES,W
CALL TABLA
MOVWF PORTB
GOTO PRINCIPAL

TIEMPO
MOVLW K1
MOVWF CONTA
F2
MOVLW K2
MOVWF CONTA2
F1
NOP
DECFSZ CONTA2,1
GOTO F1
DECFSZ CONTA,1
GOTO F2
RETURN

TABLA

ADDWF PCL,F ;SUMAMOS W CON PCL / PCL = W + PCL / CON F INDICAMOS QUE GUARDE EL
RESULTADO EN EL MISMO REGISTRO
RETLW D'63' ;NUMER 0
RETLW D'6' ;NUMER 1
RETLW D'91' ;NUMER 2
RETLW D'79' ;NUMER 3
RETLW D'102' ;NUMER 4
RETLW D'109' ;NUMER 5
RETLW D'125' ;NUMER 6
RETLW D'7' ;NUMER 7
RETLW D'127' ;NUMER 8
RETLW D'111' ;NUMER 9

END
Resolución CS N° 076-04-2016-04-20
ACTIVIDADES DESARROLLADAS
1. MARCO TEORICO

1.1 PIC 16F877A


Los microcontroladores PIC desarrollados por Microchip Technology son probablemente la mejor opción si es principiante. Hay varias
razones por lo que esto es verdadero... El nombre verdadero de este microcontrolador es PICmicro (Peripheral Interface Controller),
conocido bajo el nombre PIC. Su primer antecesor fue creado en 1975 por la compañía General Instruments. Todos los
microcontroladores PIC utilizan una arquitectura Harvard, lo que quiere decir que su memoria de programa está conectada a la CPU
por más de 8 líneas.

El microcontrolador PIC16F877 pertenece a la gama media, se le añaden nuevas prestaciones a las que poseían los de la gama baja,
haciéndolos más adecuados en las aplicaciones complejas, los mismos admiten interrupciones, poseen comparadores de magnitudes
analógicas, Convertidores A/D, puerto serie, diversos temporizadores, memorias OTP y EEPROM (Electrical Erasable Programmable
Read OnIy Memory) y 35 instrucciones de 14 bits de ancho.

Características principales del PIC 16F877A

Fig1. Características del PIC16F877A

Resolución CS N° 076-04-2016-04-20
Fig2. Datashet del PIC16F877A

1.2 MPLAB X IDE

MPLAB es un software profesional implementado por la empresa Microchip, compatible con XP, Vista y Windows 7 y con versiones
recientes disponibles para MAC y Linux. MPLAB IDE es utilizado como un poderoso auxiliar para el desarrollo de sistemas basados
en los microcontroladores PIC.
MPLAB incorpora todas las herramientas necesarias para la realización de cualquier proyecto, ya que además de un editor de textos
cuenta con un simulador en el que se puede ejecutar el código paso a paso para ver así su evolución y el estado en el que se encuentran
sus registros en cada momento además de ensamblarlo y simularlo en pantalla, pudiendo ejecutarlo posteriormente en modo paso a
paso y ver como evolucionarían de forma real tanto sus registros internos, la memoria RAM y/o EEPROM de usuario como la memoria
de programa, según se fueran ejecutando las instrucciones. Además el entorno que se utiliza es el mismo que si se estuviera utilizando
un emulador.

Fig. 3 Estructura en un programa ejemplo

Resolución CS N° 076-04-2016-04-20
Fig4. Software MPLAB X IDE

1.3 OSCILADOR DE CRISTAL 4MHZ


El oscilador de cristal se caracteriza por su estabilidad de frecuencia y pureza de fase, dada por el resonador. La frecuencia es estable
frente a variaciones de la tensión de alimentación. La dependencia con la temperatura depende del resonador, pero un valor típico
para cristales de cuarzo es de 0' 005% del valor a 25 °C, en el margen de 0 a 70 °C.

Los modos LP, XT y HS utilizan un oscilador externo como una fuente de reloj cuya frecuencia está determinada por un cristal de
cuarzo o por resonadores cerámicos conectados a los pines OSC1 y OSC2.

Dependiendo de las características de los componentes utilizados, seleccione uno de los siguientes modos:
Modo LP - (Baja potencia) se utiliza sólo para cristal de cuarzo de baja frecuencia. Este modo está destinado para trabajar con cristales
de 32.768 KHz normalmente embebidos en los relojes de cristal. Es fácil de reconocerlos por sus dimensiones pequeñas y una forma
cilíndrica. Al utilizar este modo el consumo de corriente será menor que en los demás modos.

Modo XT se utiliza para cristales de cuarzo de frecuencias intermedias hasta 8 MHz. El consumo de corriente es media en comparación
con los demás modos.

Modo HS - (Alta velocidad) se utiliza para cristales de reloj de frecuencia más alta de 8 MHz. Al utilizar este modo el consumo de
corriente será mayor que en los demás modos.

Fig5. Oscilador de cristal de 4MHz.

1.4 PROTEUS

Es una herramienta para diseñar y configurar los dispositivos electrónicos, que están basadas en los diversos microcontrolador de
diferentes familias. El software permite introducir el circuito en el editor gráfico, modelar su funcionamiento y el desarrollo de la placa
de circuito impreso, incluyendo la visualización tridimensional. Proteus ofrece el apoyo de SPICE-modelos, que a menudo se dan por
los fabricantes de componentes electrónicos. El software también es compatible con un gran número de modelos de dispositivos
digitales y analógicos. Proteus permite realizar las pruebas de los posibles errores en el final de los trabajos sobre el tablero.

Resolución CS N° 076-04-2016-04-20
Fig. 6 Proteus 8.6 Profesional

PRINCIPALES CARACTERÍSTICAS:

 Crea las listas en un editor de gráficos


 Soporta los modelos SPICE
 Compatible con un gran número de dispositivos
 Las pruebas para detectar posibles errores

1.5 PICKIT 2

PICkit 2 permite la depuración en circuito en las unidades de microcontroladores PICmicro seleccionados ( MCU). En el circuito de
depuración permite al diseñador para funcionar, examinar y modificar el programa, mientras que el PIC MCU está incrustado en el
hardware, ayudando así al diseñador en la depuración del firmware y hardware juntos.

El PICkit 2 interactúa con el software MPLAB IDE. Un punto de corte se puede ajustar y el procesador se puede restablecer. La
inscripción contenidos se pueden examinar y modificar cuando se detiene el procesador.

Fig7. Software PICKIT2, Programador USB de PIC

1.6 TRANSFORMADOR Y FUENTE DE 5 VOLTIOS


El transformador para una alimentación estabilizada debe ser, un transformador separador, esto quiere decir, que ha de disponer por
seguridad, de dos devanados separados galvánicamente (eléctricamente), no es conveniente utilizar los llamados auto-transformadores
los cuales como se sabe están construidos por una única bobina o devanado, el cual está provisto de diferentes tomas para obtener varias
tensiones de salida, la verdad es que este tipo de ‘transfo’ actualmente no se ve muy a menudo. Dependiendo de la aplicación a la que
se destine la fuente de energía, deben tenerse en cuenta unos puntos concretos a la hora de decidir las características del transformador.

Resolución CS N° 076-04-2016-04-20
En realidad, construir una fuente de alimentación de baja potencia es, hoy en día, un verdadero juego de niños. Gracias a los reguladores
de tensión integrados, es muy fácil (y económico) armar un circuito que a partir de la tensión disponible en la red domiciliaria, ya sea
110V o 220V de corriente alterna, obtener 5V de corriente continua perfectamente regulados.

Fig. 7 Fuente de 5 voltios

1.6 ADC
Convertidor analógico a digital (ADC) es un dispositivo que convierte una cantidad analógica (voltaje continuo) en
valores digitales discretos. Esto es muy útil cuando queremos hacer algún procesamiento en cantidades físicas, que
normalmente son de naturaleza analógica. La mayoría de los microcontroladores PIC han incorporado un módulo ADC.
Los microcontroladores ADC de PIC tienen 5 entradas para dispositivos de 28 pines y 8 entradas para dispositivos de 40/44
pines. Es un ADC de 10 bits, es decir, la conversión de la señal analógica da como resultado el número digital correspondiente de
10 bits. El voltaje de referencia positivo y negativo (+ Vref y -Vref) de PIC ADC es seleccionable por software, que puede ser
VDD, VSS, voltaje en RA2 o RA3. Este módulo convertidor A / D también puede operar en modo reposo en el cual el reloj se
deriva de su oscilador RC interno.

Registros

PIC ADC tiene 4 registros:

 ADCON0 - Registro de control ADC 0


 ADCON1 - Registro de control ADC 1
 ADRESH - ADC Result High Register
 ADRESL - ADC Result Low Register

ADCON0 REGISTRARSE

 ADCS1 y ADCS2 se utilizan para seleccionar el reloj de conversión A / D. Se debe seleccionar de acuerdo con el reloj
del dispositivo.
 CH2, CH1 y CH0 se utilizan para seleccionar uno de los canales de entrada analógica de los ocho canales.
 GO / DONE es el bit de estado de conversión A / D. La configuración de este bit inicializa la Conversión A / D y se
borrará automáticamente cuando se complete la conversión.
 ADON se usa para activar / desactivar el Módulo ADC. Cuando es 1, el Módulo ADC se ENCIENDE y cuando es 0, el
Módulo ADC estará APAGADO.

Resolución CS N° 076-04-2016-04-20
ADCON1 REGISTRARSE

 ADFM es el bit de selección del formato de resultado ADC. Se proporcionan dos registros de 8 bits (ADRESH y
ADRESL) para almacenar el resultado de 10 bits de la Conversión A / D, por lo que no es necesario usar 6 bits. Cuando
ADFM es 1, el resultado estará justificado a la derecha, es decir, los bits más significativos de ADRESH se leerán como
0. Cuando ADFM es 0, el resultado se justificará a la izquierda, es decir, los bits menos significativos de ADRESL se
leerán como cero.
 ADCS2 se utiliza para seleccionar el reloj de conversión A / D en asociación con ADCS1 y ADC2 del registro ADCON0.
 PCFG3 - PCFG0 son los bits de control de configuración de puerto A / D. Cada pin entre AN0 - AN7 se configura como
entradas analógicas, digitales o de tensión de referencia de acuerdo con el estado de estos bits de configuración como se
indica a continuación.

Los registros TRIS de las entradas analógicas deben configurarse como entrada para la operación adecuada.

DIAGRAMA DE BLOQUES ADC

Fig8. Diagrama de bloques ADC PIC16F877A

SELECCIÓN DEL RELOJ DE CONVERSIÓN A / D

El tiempo para la conversión A / D por bit se define como T AD y requiere un mínimo de 12T AD para generar el resultado de 10
bits. El tiempo T AD está determinado por el reloj de conversión A / D, que es seleccionable por software para las siguientes
opciones.

 T OSC
 T OSC
 8 T OSC
 16 T OSC
Resolución CS N° 076-04-2016-04-20
 32 T OSC
 64 T OSC

Oscilador RC interno del Módulo ADC

T OSC es el período de tiempo del reloj del dispositivo generalmente proporcionado por el oscilador de cristal.
Se debe tener cuidado al seleccionar el Reloj de conversión A / D, de modo que el reloj proporcione el T AD mínimo (1,6 μS)
requerido para la Conversión A / D correcta. Consulte la siguiente tabla antes de configurar el reloj ADC.

Fig9. Uso del módulo ADC interno del microcontrolador PIC

LM35

El LM35 es un sensor analógico que devuelve la temperatura en forma de tensión esta tensión devuelta es proporcional a la
temperatura, Su rango comprende desde -55º hasta 150 ºC y el valor devuelto es el equivalente a la temperatura dividida por 10.
Entonces es su salida se obtiene valores como estos: 1000mv=100 ºC 240mv=24 ºC -300mv=-30 ºC.

PRINCIPALES CARACTERÍSTICAS

 La tensión de salida es proporcional a la temperatura.


 Tiene una precisión garantizada de 0.5°C a 25°C.
 Opera entre 4 y 30 voltios de alimentación con fuente doble o simple.
 Baja impedancia de salida 0,1Ω para 1mA.
 Baja corriente de alimentación 60µA.
 Adecuado para aplicaciones remotas.

Resolución CS N° 076-04-2016-04-20
Fig10. Sensor LM.35

LCD
El LCD (Liquid Crystal Dysplay) o pantalla de cristal líquido es un dispositivo empleado para la visualización de contenidos o
información de una forma gráfica, mediante caracteres, símbolos o pequeños dibujos dependiendo del modelo. Está gobernado por
un microcontrolador el cual dirige todo su funcionamiento.

En este caso vamos a emplear un LCD de 16x2, esto quiere decir que dispone de 2 filas de 16 caracteres cada una. Los píxeles de
cada símbolo o carácter, varían en función de cada modelo.

PINES DE ALIMENTACIÓN

Vss: Gnd
Vdd: +5 voltios
Vee: corresponde al pin de contraste, lo regularemos con un potenciómetro de 10K conectado a Vdd .

PINES DE CONTROL

RS: Corresponde al pin de selección de registro de control de datos (0) o registro de datos(1). Es decir el pin RS funciona
paralelamente a los pines del bus de datos. Cuando RS es 0 el dato presente en el bus pertenece a un registro de control/instrucción.
y cuando RS es 1 el dato presente en el bus de datos pertenece a un registro de datos o un carácter.
RW: Corresponde al pin de Escritura(0) o de Lectura(1). Nos permite escribir un dato en la pantalla o leer un dato desde la pantalla.
E: Corresponde al pin Enable o de habilitación. Si E(0) esto quiere decir que el LCD no esta activado para recibir datos, pero si
E(1) se encuentra activo y podemos escribir o leer desde el LCD.

PINES DE BUS DE DATOS

El Bus de datos bidireccional comprende desde los pines D0 a D7. Para realizar la comunicación con el LCD podemos
hacerlo utilizando los 8 bits del bus de datos (D0 a D7) o empleando los 4 bits más significativos del bus de datos(D4
a D7). En este caso vamos a explicar la comunicación con el bus de 4 bits.

Resolución CS N° 076-04-2016-04-20
Fig11. LCD 16x2

MULTIPLEXADOR
En esencia, la función de multiplexar, consiste en enviar por un solo canal las informaciones presentes en varias lineas. El
multiplexador o multiplexor se utiliza como un dispositivo que puede recibir varias entradas y transferirlas por un medio de
transmisión en modo conmutado o compartido. Es decir, la información de las entradas se transmite, a la única línea de salida de
forma simultanea, mediante la selección de las entradas de control. Para lo cual, lo que se hace es, dividir el medio de transmisión
en múltiples canales, de manera que, varias entradas puedan comunicarse simultaneamente con otro dispositivo distante en el otro
extremo mediante el uso de un demultiplexor, que se encarga de restituir el estado inicial de los datos, como ya se describirá luego.

Fig13 Multiplexor 3 display

1 LISTA DE MATERIALES Y HERRAMIENTAS


 Grabador de PICKIT2
 MPLAB X IDE
 Proteus 8.6 profesional
 PIC16F877A
 Pulsante
 10-LEDS
 10- resistencia de 300ohm
 Potenciómetro de 5K
 1 Cristal de 4MHZ
 2 Capacitores de 22pF
 Fuente de 5 voltios
Resolución CS N° 076-04-2016-04-20
 LM35
 LCD
 Multiplexor de 3 display 7 segmentos
 Cable multipar
2 DESARROLLO DE LA PRACTICA
3.1 Elaboración del programa en MPLAB X IDE

1) Se abre el programa MPLAB X IDE v4.15

Fig9. MPLAB X IDE v4.15

2) Luego se crea un nuevo proyecto en File y luego en New Proyect

Fig. 10 Crear un nuevo proyecto

3) Seleccionar el microchip Embedded, marcar la opción Standalone Project y luego dar clic en Next.

Fig11. Opción Stanlone Project.

4) Se selecciona la familia del PIC en el que se trabajara en las prácticas en este caso sería el PIC16F877A

Resolución CS N° 076-04-2016-04-20
Fig12. Selección del PIC16F877A

5) Se elige la opción Simulator

Fig13. Opción Simulator

6) Luego de haber seleccionado la opción simulator se muestra una ventana en donde se escoge la opción de mpasm
(v5.77) [C:\Program Files (x86)\ Microchip\MPLABX\ v4.15\mpasmx].

Fig14. Compiler Toolchains

7) Se escribe el nombre del proyecto y la ubicación en donde se guardara.

Fig15. Nombre y ubicación del proyecto

8) Luego en la carpeta Source Files damos clic Derecho en New y luego seleccionamos cualquiera de las opciones en este caso
seleccionaremos la opción pic_8b_general.asm
Resolución CS N° 076-04-2016-04-20
Fig16. Opción pic_8b_general.asm

9) Se dará un nombre del nuevo archivo

Fig17. Nuevo archivo .asm

10) En la opción Producción seleccionamos el Set Configuration Bits para el proyecto que se desea realizar.

Fig18. Set Configuration Bits

11) Se crea el siguiente cuadro de configuración Bits y se configura el tipo de oscilador en este caso utilizaremos el
oscilador XT.

Fig19. Configuration Bits

12) Luego de haberse generado el código copiamos a nuestro archivo .asm y lo compilamos
Resolución CS N° 076-04-2016-04-20
Fig20. Código generado en el archivo asm.

13) Abrimos el datasheet del PIC 16F877A en donde revisaremos los puertos que deseamos habilitar para el desarrollo de
nuestra práctica:

PARTE DEL MANEJO ADC

; PIC16F877A Configuration Bit Settings

; Assembly source line config statements

#include "p16f877a.inc"

; CONFIG
; __config 0xFF39
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF &
_CP_OFF

ORG 0X00
GOTO INICIO

INICIO
#DEFINE K 0XFF
#DEFINE K1 D'255'

CBLOCK 0X020
CONTA1
CONTA2
ENDC

BSF STATUS,RP0
Resolución CS N° 076-04-2016-04-20
MOVLW B'10001110'
MOVWF ADCON1
MOVLW B'11111'
MOVWF TRISA
CLRF TRISB
CLRF TRISD
BCF STATUS,RP0
CLRF PORTB
CLRF PORTD

CLRF ADCON0; LEE EL DATO AN-0


BSF ADCON0,0

PRINCIPAL
CALL TIEMPO ;50US
BSF ADCON0,2

MAIN
BTFSC ADCON0,2
GOTO MAIN
MOVF ADRESH,0
MOVWF PORTB
BSF STATUS,RP0
MOVF ADRESL,0
BCF STATUS,RP0
MOVWF PORTD

GOTO PRINCIPAL

TIEMPO
MOVLW K1
MOVWF CONTA2
B2
MOVLW K
MOVWF CONTA1
B1
NOP
DECFSZ CONTA1,F
GOTO B1
DECFSZ CONTA2,F
GOTO B2
RETURN

END

Resolución CS N° 076-04-2016-04-20
PARTE DEL LM35 CON EL LCD

; PIC16F877A Configuration Bit Settings

; Assembly source line config statements

#include "p16f877a.inc"

; CONFIG
; __config 0xFF39
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF &
_CP_OFF

;Variable para el DELAY del ADC


val equ h'20'

;Variables para el DELAY del ENABLE LCD


val2 equ 0x30
val1 equ 0x31

;Variables para separar el resultado de ADC


; en valor BCD
Unidades equ 0x32
Decenas equ 0x33
Centenas equ 0x34
Resto equ 0x35

org 0h
goto INICIO
org 05h

INICIO:
clrf PORTA ;Limpia el puerto A
clrf PORTB ;Limpia el puerto B
clrf PORTC ;Limpia el puerto C
clrf PORTD ;Limpia el puerto D
bsf STATUS,RP0
bcf STATUS,RP1 ;Cambio al banco 1

;Configuraci?n de puertos C-D para el LCD


clrf TRISC ;Configura PORTC como salida
clrf TRISD ;Configura PORTD como salida

;Configuraci?n del puerto A para ADC


movlw 00h
movwf ADCON1 ;Configura puerto A y E como anal?gicos
movlw 3fh
movwf TRISA ;Configura el puerto A como entrada
Resolución CS N° 076-04-2016-04-20
movlw h'0'

;Configuraci?n del puerto B para mostrar el resultado ADC


movwf TRISB ;Configura puerto B como salida
bcf STATUS,RP0 ;Regresa al banco 0

;Inicio del programa


START
call START_LCD ;Inicializa LCD
goto START_ADC ;Comienza la lectura del Conv. A/D

;Inicia LCD
START_LCD:
bcf PORTC,0 ; RS=0 MODO INSTRUCCION
movlw 0x01 ; 0x01 limpia la pantalla en el LCD
movwf PORTD
call COMANDO ; Se da de alta el comando
movlw 0x0C ; Selecciona la primera l?nea
movwf PORTD
call COMANDO ; Se da de alta el comando
movlw 0x3C ; Se configura el cursor
movwf PORTD
call COMANDO ; Se da de alta el comando
bsf PORTC, 0 ; Rs=1 MODO DATO
return

;Rutina para enviar un dato


ENVIA:
bsf PORTC, 0 ; RS=1 MODO DATO
call COMANDO ; Se da de alta el comando
return

;Rutina para enviar comandos


COMANDO:
bsf PORTC, 1 ; Pone la se?al ENABLE en 1
call DELAY2 ; Tiempo de espera
call DELAY2
bcf PORTC, 1 ; ENABLE=0
call DELAY2
return

;Rutina para limpar pantalla LCD


ERASE_LCD
bcf PORTC,0 ; RS=0 MODO INSTRUCCION
movlw 0x01 ; 0x01 limpia la pantalla en el LCD
movwf PORTD
call COMANDO ; Se da de alta el comando
bsf PORTC, 0 ; Rs=1 MODO DATO
return
Resolución CS N° 076-04-2016-04-20
;Configuraci?n Convertidor A/D
START_ADC
movlw b'11000001' ;Configuración ADCON0
movwf ADCON0 ;ADCS1=1 ADCS0=1 CHS2=0 CHS1=0
;CHS0=0 GO/DONE=0 - ADON=1

CICLO: bsf ADCON0,2 ;Conversi?n en progreso GO=1


call DELAY1 ;Espera que termine la conversi?n
ESPERA btfsc ADCON0,2 ;Pregunta por DONE=0?(Termin? conversi?n)
goto ESPERA ;No, vuelve a preguntar
movf ADRESH,0 ;Si
movwf PORTB ;Muestra el resultado en PORTB

;Rutina que muestra temperatura


PRINT_TEMP
call ERASE_LCD ;Limpia LCD
movlw 'T'
movwf PORTD
call ENVIA
movlw '='
movwf PORTD
call ENVIA

call READ_TEMP ;Llamada a rutina que obtine el


;valor de la temperatura a partir
;del resultado del Conv a/D

movf Centenas,W ;Imprime el d?gito de las centenas


movwf PORTD
call ENVIA
movf Decenas,W ;Imprime el d?gito de las decenas
movwf PORTD
call ENVIA
movf Unidades,W ;Imprime el d?gito de las unidades
movwf PORTD
call ENVIA
movlw ' '
movwf PORTD
call ENVIA
movlw h'DF' ;Imprime el simbolo "?"
movwf PORTD
call ENVIA
movlw 'C'
movwf PORTD
call ENVIA

goto CICLO ;Repite el ciclo de lectura ADC

Resolución CS N° 076-04-2016-04-20
;Rutina que obtine el valor de la temperatura
;a partir del resultado del Conv a/D
READ_TEMP:
clrf Centenas
clrf Decenas
clrf Unidades

movf ADRESH,W
addwf ADRESH,W ;Dupilca el valor de ADRESH para
;obtener un valor de temperatura real aprox
movwf Resto ;Guarda el valor de ADRESH en Resto

;Comienza el proceso de otenci?n de valores BCD


;para Centenas, Decenas y unidades atraves de restas
;sucesivas.
CENTENAS1
movlw d'100' ;W=d'100'
subwf Resto,W ;Resto - d'100' (W)
btfss STATUS,C ;Resto menor que d'100'?
goto DECENAS1 ;SI
movwf Resto ;NO, Salva el resto
incf Centenas,1 ;Incrementa el contador de centenas BCD
goto CENTENAS1 ;Realiza otra resta
DECENAS1
movlw d'10' ;W=d'10'
subwf Resto,W ;Resto - d'10' (W)
btfss STATUS,C ;Resto menor que d'10'?
goto UNIDADES1 ;Si
movwf Resto ;No, Salva el resto
incf Decenas,1 ;Incrementa el contador de centenas BCD
goto DECENAS1 ;Realiza otra resta
UNIDADES1
movf Resto,W ;El resto son la Unidades BCD
movwf Unidades
;clrf Resto

;Rutina que obtiene el equivalente en ASCII


OBTEN_ASCII
movlw h'30'
iorwf Unidades,f
iorwf Decenas,f
iorwf Centenas,f
return

;Rutina que genera un Delay de 20 microSeg aprox.


;para el Conv. A/D
DELAY1:
movlw h'30'
movwf val
Resolución CS N° 076-04-2016-04-20
Loop decfsz val,1
goto Loop
return

;Subrutina de retardo para ENABLE_LCD


DELAY2:
movlw 0xFF
movwf val1
Loop1:
movlw 0xFF
movwf val2
Loop2:
decfsz val2,1
goto Loop2
decfsz val1,1
goto Loop1
return

END

PARTE DE LA MULTIPLEXACION

; PIC16F877A Configuration Bit Settings

; Assembly source line config statements

#include "p16f877a.inc"

; CONFIG
; __config 0xFF39
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF &
_CP_OFF

ORG 0X00
GOTO INICIO
INICIO
#DEFINE K1 D'255'
#DEFINE K2 D'255'
CBLOCK 0X20
CONTA
CONTA2
UNIDADES
DECENAS
CENTENAS
NUMERO
ENDC
BSF STATUS,5; ACCESO AL BANCO 1
BCF INTCON,7; GIE = 0
Resolución CS N° 076-04-2016-04-20
BCF PIE1,6 ; ADIE = 0
MOVLW B'10001110'; JUSTIFICACION DERECHA, AN0 PIN DE LECTURA
MOVWF ADCON1
BSF TRISA,0
CLRF TRISD
CLRF TRISB
CLRF TRISC
BCF STATUS,5
CLRF ADCON0; 0 TODOS LOS BITS DE ADCON0

BSF ADCON0,0

PRINCIPAL
CALL TIEMPO ; 50us
BSF ADCON0,2

MAIN
BTFSC ADCON0,2
GOTO MAIN
MOVF ADRESH,0

BSF STATUS,5; ACESSO BACNO 1


MOVF ADRESL,0
BCF STATUS,5; ACCESO BANCO 0
MOVWF NUMERO
;CONVERSION ; 8 BITS A TRABAJAR
CLRF CENTENAS ; CARGA LOS REGISTROS CON EL RESULTADO INICIAL.
CLRF DECENAS ; EN PRINCIPIO (CENTENAS)=0 Y (DECENAS)=0.
MOVF NUMERO,W
MOVWF UNIDADES ; SE CARGA EL NÚMERO BINARIO A CONVERTIR.
BCD_RESTA10
MOVLW .10 ; A LAS UNIDADES SE LES VA RESTANDO 10 EN CADA
SUBWF UNIDADES,W ; PASADA. (W)=(UNIDADES)-10.
BTFSS STATUS,C ; ¿(C)=1?, ¿(W) POSITIVO?, ¿(UNIDADES)>=10?.
GOTO BIN_BCD_FIN ; NO, ES MENOR DE 10. SE ACABÓ.
BCD_INCREMENTADECENAS
MOVWF UNIDADES ; RECUPERA LO QUE QUEDA POR RESTAR.
INCF DECENAS,F ; INCREMENTA LAS DECENAS Y COMPRUEBA SI LLEGA A
MOVLW .10 ; 10. LO HACE MEDIANTE UNA RESTA.
SUBWF DECENAS,W ; (W)= (DECENAS)-10.
BTFSS STATUS,C ; ¿(C)=1?, ¿(W) POSITIVO?, ¿(DECENAS)>=10?.
GOTO BCD_RESTA10 ; NO. VUELVE A DAR OTRA PASADA, RESTÁNDOLE 10.
BCD_INCREMENTACENTENAS
CLRF DECENAS ; PONE A CERO LAS DECENAS
INCF CENTENAS,F ; E INCREMENTA LAS CENTENAS.
GOTO BCD_RESTA10 ; OTRA PASADA, RESTA 10 AL NÚMERO A CONVERTIR.
BIN_BCD_FIN
SWAPF DECENAS,W ; EN EL NIBBLE ALTO DE W TAMBIÉN LAS DECENAS.
ADDWF UNIDADES,W ; EN EL NIBBLE BAJO DE W LAS UNIDADES.
Resolución CS N° 076-04-2016-04-20
;DISPLAY
MOVF CENTENAS,W
CALL TABLA
MOVWF PORTD
; MOSTRAR DECENA DISPLAY;
MOVF DECENAS,W
CALL TABLA
MOVWF PORTC
; MOSTRAR UNIDAD DISPLAY
MOVF UNIDADES,W
CALL TABLA
MOVWF PORTB
GOTO PRINCIPAL

TIEMPO
MOVLW K1
MOVWF CONTA
F2
MOVLW K2
MOVWF CONTA2
F1
NOP
DECFSZ CONTA2,1
GOTO F1
DECFSZ CONTA,1
GOTO F2
RETURN

TABLA
ADDWF PCL,F ;SUMAMOS W CON PCL / PCL = W + PCL / CON F INDICAMOS QUE GUARDE EL
RESULTADO EN EL MISMO REGISTRO
RETLW D'63' ;NUMER 0
RETLW D'6' ;NUMER 1
RETLW D'91' ;NUMER 2
RETLW D'79' ;NUMER 3
RETLW D'102' ;NUMER 4
RETLW D'109' ;NUMER 5
RETLW D'125' ;NUMER 6
RETLW D'7' ;NUMER 7
RETLW D'127' ;NUMER 8
RETLW D'111' ;NUMER 9

END

1) Luego una vez definido nuestras entradas y salidas en la programación compilamos y procedemos a diseñar nuestro
circuito en el software Proteus en donde le cargamos nuestro archivo .hex al software.

Resolución CS N° 076-04-2016-04-20
Fig22. Archivo. hex

2) Una vez cargado el archivo del ensamblador en la simulación procedemos a verificar el funcionamiento correctamente
para luego proceder a armar en nuestro Protoboard.

PARTE DEL MANEJO DEL ADC

Fig23. Simulación del circuito Manejo del ADC

PARTE DEL LM35 CON EL LCD

Simulación del circuito temperatura con el sensor LM35 mediante LCD

Resolución CS N° 076-04-2016-04-20
PARTE DE LA MULTIPLEXACION

Simulación del circuito de la multiplexacion

3) Para que el PIC funcione se necesitara un software PicKit 2, programa que nos ayudara a quemar el PIC. Luego
establecemos conexión de la PC al PIC en la opción Tools – Check Comunication.
4) Después de haber establecido conexión borramos el programa que se a cargador anteriormente en el PIC
5) Luego procedemos a importar nuestro archivo. hex que ya lo creamos anteriormente.
6) Una vez importado damos clic en Write para grabar el programa.

RESULTADO(S) OBTENIDO(S):

MANEJO DEL ADC


Los voltajes de referencia de ADC se configuran en VDD (5V) y VSS (GND) a través del software (el código se
proporciona a continuación). La entrada analógica se da al Canal 0 usando un potenciómetro, por lo tanto, podemos variar
el voltaje de entrada del ADC de VSS a VDD. El resultado de 10 bits de ADC se muestra con 10 LED, y las resistencias
de 330 Ω se utilizan para limitar la corriente a través de ellos.

LM35 CON EL LCD


Se muestra el resultado final de esta practica a través de un vídeo donde se comprueba que en la pantalla se muestra la
temperatura ambiente del lugar donde se realizo la practica, cabe señalar que tiene un botón de reset y que manipulando el
potenciometro de precisión, la pantalla aumenta o disminuye la claridad.

MULTIPLEXACION
Se hace uso de los puertos A, D y C de nuestro microcontrolador, destacando que los puertos A y C están
configurados como entradas digitales y el puerto D como salidas. Lo más común es compartir las fases de
digitalización (conversión analógica-digital). El control del multiplexor se puede realizar con una selección directa por
parte del usuario o con una secuencia que le de a cada entrada un tiempo determinado para que el ADC la procese.

Resolución CS N° 076-04-2016-04-20
CONCLUSIONES:

El software MPLAB es una herramienta de programación muy útil para los microcontroladores, ya que puede se puede crear algunos
proyectos mediante un PIC, lo creamos y simulamos para evitar ciertos errores, al revisar el datasheet del microcontrolador nos facilitó
bastante para la programación en el ensamblador.
Para el desarrollo de la parte física del circuito debe tenerse en cuenta, la parte del oscilador debe tener una frecuencia adecuada, el
cual se ha visto afectado en la velocidad con la cual se realiza la secuencia.
Con la realización de esta práctica se comprendió como es que se convierte de analógico a digital un numero, también se observo como
se mueve el valor de F a los registros ADRESH y ADRESL, cosa que no se había hecho antes y de lo cual se comprendió que estas son
los registros que varían al momento de variar el potenciometro de precisión.
La intención del ADC es poder digitalizar la señal, ofreciendo un conjunto de bits, lo más similar posible y a la señal de entrada según
las necesidades. La arquitectura descrita en este trabajo, vislumbra las aproximaciones sucesivas de calibración, que fueron necesarias
tener en cuenta para el desarrollo del circuito.
Se logró adquirir suficiente destreza en el uso y conocimiento del manejo de un sensorde temperatura, en este caso del
LM35. Con la realización de esta practica se comprendió como es que funciona un sensor de temperatura en conjunto con
un amplificador operacional el cual ocupaba diferente voltaje al que estábamos acostumbrados a trabajar y como mostrarlo
en la pantalla LCD.

RECOMENDACIONES:
Se recomienda como usar el datasheet del PIC 16F877A, es decir, la hoja de datos, esto nos permite en la parte de la programación,
desarrollar el trabajo eficientemente y rápidamente, y esto facilita los controles del microcontrolador utilizar en el programa. También
revisar el Display que sea el correcto según nuestra programación para evitar fallos en el circuito.
Se recomienda en la programación colocar PORT ó en su defecto TRIS ya sea entrada o salida en el cual nos representa registros La
eleccion del uso XT oscilador es muy recomendable para un circuito y configuracion del PIC en la cual se debe utilizer un cristal máx
de 4MHz.

ANEXO1

FLUJOGRAMA
MANEJO ADC

Fig. 29 diagrama de flujo

Resolución CS N° 076-04-2016-04-20
FLUJOGRAMA
MEDICIÓN DE TEMPERATURA CON LM35

Diagrama de flujo temperatura LM35 Y LCD


FLUJOGRAMA
MULTIPLEXACION

Diagrama de flujo de la multiplexacion

Resolución CS N° 076-04-2016-04-20
ESQUEMA ELÉCTRICO DEL MANEJO ADC

Simulación del circuito en general del manejo ADC

Esquema de la simulación mediante un potenciómetro variando el voltaje en un porcentaje de y dando


41% señal por medio de los leds

Resolución CS N° 076-04-2016-04-20
Esquema de la simulación mediante un potenciómetro variando el voltaje en un porcentaje de y dando
80% señal por medio de los leds

Esquema de la simulación mediante un potenciómetro variando el voltaje en un porcentaje del 100% de


la señal por medio de los leds

ESQUEMA ELÉCTRICO DE LA MEDICION DE LA TEMPERATURA LM35-LCD

Simulación del circuito en general de la medición de la temperatura LM35-LCD


Resolución CS N° 076-04-2016-04-20
Simulación del circuito en general de la medición de temperatura 12°C con LM35-LCD

Simulación del circuito en general de la medición de temperature 40°Ccon LM35-LCD

ESQUEMA ELÉCTRICO DE LA MULTIPLEXACION

Simulación del circuito en general de la Multiplexacion.

Resolución CS N° 076-04-2016-04-20
ARMADO EL ESQUEMA ELECTRICO MANEJO ADC

Resolución CS N° 076-04-2016-04-20
ARMADO EL ESQUEMA ELECTRICO MEDICIÓN DE TEMPERATURA CON LM35-LCD

ARMADO EL ESQUEMA ELECTRICO MULTIPLEXOR

NOMBRE DEL ESTUDIANTE: Jonathan Alexander Pintado Yunga


Resolución CS N° 076-04-2016-04-20

Das könnte Ihnen auch gefallen