Beruflich Dokumente
Kultur Dokumente
ADC-VOLTIMETRO
CURSO: MICROCONTROLADORES
AUTORES:
AREQUIPA
2017
ENTRENADOR PARA PIC 16F877A
1. OBJETIVOS
3. MATERIALES
Disponibles en el Laboratorio:
Entrenador para microcontroladores 16f877a
Pickit 2 (Grabador) y su respectivo cable a la PC
Alimentación del entrenador (Cargador a 12v)
Entrenador PIC
Pickit 2 (Grabador)
Es necesario comprar:
Microcontrolador 16F877A (precio aproximado 18 soles)
1 cristal oscilador 20 MHz (precio 1 sol)
2 bombillos a 12v (opcional)
4. MARCO TEÓRICO
1. ENTRENADOR PIC
El entrenador universal es una herramienta de ensayo que permite evaluar de forma
cómoda y rápida las aplicaciones desarrolladas por el usuario; mediante un sencillo
cableado sin soldadura, es posible conectar y asociar distintos periféricos en las
líneas de entradas y salidas de un microcontrolador pic o Arduino.
El presente entrenador es exclusivamente para PIC de 40 pines, es decir el
16F877A, pero en general es posible también hacer el uso de este para todos los
microcontroladores de la familia 16FXX o 18FXX haciendo las respectivas
conexiones de los pines.
El entrenador cuenta con diversos módulos, los módulos que posee el entrenador
están clasificados y son:
4 entradas digitales
8 salidas digitales
2 entradas analógicas
2 salidas a relay
1 sensor infrarrojo
1 módulo de ultrasonido
1 módulo bluetooth
Comunicación serial con MAX232 / Módulo USB a RS232
1 control de corriente continua de motor con driver L293D
1 sensor de temperatura analógico con LM35
1 sensor de temperatura digital DS18B20
1 control de potencia a corriente alterna con optocoplador
4 displays de 7 segmentos
1 Reloj en Tiempo Real con DS1307
1 comunicación con memoria EEPROM
1 módulo para Display de Cristal Líquido (LCD 16X2)
1 módulo para para LCD gráfico
1 módulo de comunicación USB
2 servomotores
1 buzzer
1 teclado matricial
Alimentación directa a 12v o usb 5v
En la presente práctica sólo se hará uso de una entrada digital por pulsador y las
salidas conectadas a 2 relay.
2. GRABADOR PICKIT 2
El pickit 2 clone es un diseño de la empresa GS ATEC - GRUPO SYNERGO de
igual manera que el entrenador anteriormente mencionado. El programador PicKit2,
es una herramienta de programación para desarrollo de bajo costo. Es capaz de
programar la mayoría de los microcontroladores y memorias seriales EEPROM de
Microchip. El programador PicKit2, es una herramienta de programación para
desarrollo de bajo costo. Es capaz de programar la mayoría de los
microcontroladores y memorias seriales EEPROM de Microchip. Sin este, no se
llevaría a cabo la programación de microcontroladores por lo cual es fundamental.
Actualmente existe en el mercado el pickit 3, el cual es una versión mejorada capaz
de grabar en una mayor cantidad de familias de microcontroladores de Microchip.
3. COMPILADOR CCS
Funciones
Ejemplos en
Compilador Entorno Lenguaje Pre-
la Red
determinadas
CCS Amigable c Bastantes Bastantes
MPLAB XC8 Normal c Muchos Muchas
MPLAB XIDE Normal asm Bastantes Pocas
MicroC Muy Amigable c Pocos Pocas
Demasiado Diagramas
Flow Code Muy pocos -
Amigable de Flujo
La facilidad que posee PIC C Compiler es que ya lo trae todo predefinido, tan sólo
accediendo al File del microcontrolador que se está usando durante la
programación; por lo cual no es de vital importancia tener el datasheet del
microcontrolador a la mano, como si lo es necesario al programar con MPASM,
MPLAB XIDE, MPLAB XC8 o PIC18.
La desventaja de CCS contra estos programas es que no se tiene acceso directo al
microcontrolador y por lo tanto no se realizan las instrucciones en el tiempo
establecido, debido a que debe primero transformarse a lenguaje de bajo nivel y eso
tardará algunos microsegundos que en aplicaciones específicas puede ser mucho. En
aplicaciones prácticas como la presente este pequeño retraso no es de importancia.
Por último, programas como MicroC o Flow Code son muy limitados con respecto a
la información en la red y limitados en cuanto a las funciones que ya tienen
preestablecidas. Sólo incluyen las funciones básicas, sin contar el tiempo que
tardarían en convertir sus instrucciones a bajo nivel.
4. PROGRAMA PICKIT 2
2. DESARROLLO
1. Abrir MPLAB
LIST P=16F877A
#INCLUDE "P16F877A.INC"
__CONFIG 0x3F39
ORG 0x00
M EQU 0x20
N EQU 0x21
O EQU 0x22
LECTURA_H EQU 0x23
CUENT_U EQU 0x24
CUENT_D EQU 0x25
CUENT_C EQU 0x26
CONTADOR_H EQU 0x27
DELAY1_F1 EQU 0x28
DELAY1_F2 EQU 0x29
DELAY2_F1 EQU 0x2A
DELAY2_F2 EQU 0x2B
DELAY2_F3 EQU 0x2C
CUENT_M EQU 0x2D
CONTADOR_L EQU 0x2E
LECTURA_L EQU 0x30
LIMITE_MUL EQU 0x31
LEC_MUL_H EQU 0x32
LEC_MUL_L EQU 0x33
BCF STATUS,RP1
BSF STATUS,RP0
BSF TRISA,0
CLRF TRISB
CLRF TRISC
BANKSEL ADCON0
MOVLW B'11000001'
MOVWF ADCON0
BANKSEL ADCON1
MOVLW B'10001110'
MOVWF ADCON1
BANKSEL PORTB
CLRF CUENT_U
CLRF CUENT_D
CLRF CUENT_C
CLRF CUENT_M
CLRF CONTADOR_L
CLRF CONTADOR_H
CLRF PORTC
CLRF PORTB
MOVLW D'1'
MOVWF DELAY2_F1
MOVLW D'200'
MOVWF DELAY2_F2
MOVLW D'200'
MOVWF DELAY2_F3
CALL DELAY2
CALL LCD_IN
PRINCIPAL
CALL LIMPIAR_LCD
CALL CURSOR_EN_INICIO
CLRF CUENT_U
CLRF CUENT_D
CLRF CUENT_C
CLRF CUENT_M
CLRF CONTADOR_H
CLRF CONTADOR_L
MOVLW D'5'
MOVWF LIMITE_MUL
BSF ADCON0,GO_DONE
BUCLE
BTFSC ADCON0, GO_DONE
GOTO BUCLE
BANKSEL ADRESL
MOVF ADRESL,0
BANKSEL ADRESH
MOVWF LECTURA_L
MOVF ADRESH,0
MOVWF LECTURA_H
MOVF LECTURA_H,0
MOVWF LEC_MUL_H
MOVF LECTURA_L,0
MOVWF LEC_MUL_L
CALL MULTIPLICACION_PROBE
CALL SEPARAR
CALL TEXTO_1
MOVLW D'1'
MOVWF DELAY2_F1
MOVLW D'200'
MOVWF DELAY2_F2
MOVLW D'200'
MOVWF DELAY2_F3
CALL DELAY2
GOTO PRINCIPAL
MULTIPLICACION_PROBE
MOVF LIMITE_MUL,0
BTFSC STATUS,2
GOTO MUL_CERO
MULTIPLICACION
DECF LIMITE_MUL,1
BANKSEL ADCON0
BCF STATUS,2
MOVF LIMITE_MUL,0
BTFSC STATUS,2
RETURN
MOVF LEC_MUL_H,0
ADDWF LECTURA_H,1
MOVF LEC_MUL_L,0
ADDWF LECTURA_L,0
MOVWF LECTURA_L
BTFSC STATUS,0
INCF LECTURA_H,1
GOTO MULTIPLICACION
MUL_CERO
CLRF LECTURA_L
CLRF LECTURA_H
RETURN
;///////////////////////////////////////////////
;/////////////////////IMPRIMIR//////////////////
;///////////////////////////////////////////////
TEXTO_1
MOVLW 'V'
MOVWF PORTB
CALL MANDAR
MOVLW 'O'
MOVWF PORTB
CALL MANDAR
MOVLW 'L'
MOVWF PORTB
CALL MANDAR
MOVLW 'T'
MOVWF PORTB
CALL MANDAR
MOVLW B'00111010'
MOVWF PORTB
CALL MANDAR
MOVF CUENT_M,0
CALL CAMBIA_FORMATO
MOVWF PORTB
CALL MANDAR
MOVLW B'00101100'
MOVWF PORTB
CALL MANDAR
MOVF CUENT_C,0
CALL CAMBIA_FORMATO
MOVWF PORTB
CALL MANDAR ;ENVIA LETRA
MOVF CUENT_D,0
CALL CAMBIA_FORMATO
MOVWF PORTB
CALL MANDAR
MOVF CUENT_U,0
CALL CAMBIA_FORMATO
MOVWF PORTB
CALL MANDAR
RETURN
;///////////////////////////////////////////////
;/////////////////////SEPARAR///////////////////
;///////////////////////////////////////////////
SEPARAR
CERO_TOTAL
MOVF CONTADOR_H,0
SUBWF LECTURA_H,0
BTFSS STATUS,2
RETLW B'00000001'
MOVF CONTADOR_L,0
SUBWF LECTURA_L,0
BTFSS STATUS,2
RETLW B'00000001'
RETLW B'00000000'
INCREMENTO
BCF STATUS,2
INCF CONTADOR_L,0
BTFSS STATUS,2
GOTO SIN_CARRY
GOTO CON_CARRY
CON_CARRY
BCF STATUS,2
CLRF CONTADOR_L
INCF CONTADOR_H,1
GOTO P_INCRE
SIN_CARRY
INCF CONTADOR_L,1
GOTO P_INCRE
;///////////////////////////////////////////////
;/////////////////////LIBRERIA-LCD///////////////////
;///////////////////////////////////////////////
LCD_IN
CALL LIMPIAR_LCD
CALL CURSOR_EN_INICIO
CALL MODO_FUNCIONAMIENTO
RETURN
LIMPIAR_LCD
BCF PORTC,0 ;RS=0
MOVLW 0X01
MOVWF PORTB ;LIMPIA LCD
CALL EJECUTA ;PULSO DE HABILITADOR (23010US)
CURSOR_EN_INICIO
BCF PORTC,0 ;RS=0
MOVLW 0X0C
MOVWF PORTB ;CURSOR EN INICIO
CALL EJECUTA ;PULSO DE HABILITACION
MODO_FUNCIONAMIENTO
BCF PORTC,0 ;RS=0
MOVLW 0X3C ;
MOVWF PORTB ;MODO DE FUNCIONAMIENTO 8BITS, 2LINEAS, 5X11
TAMAÑO
CALL EJECUTA ;PULSO DE HABILITACION
EJECUTA
BSF PORTC,1 ;E=1
MOVLW D'10'
MOVWF DELAY1_F1
MOVLW D'55'
MOVWF DELAY1_F2
CALL DELAY1 ;RETARDO+CALL=1695US
BCF PORTC,1 ;E=0
RETURN
MANDAR
BSF PORTC,0 ;RS=1 PARA ESCRITURA
CALL EJECUTA ;PULSO DE HABILITACION
RETURN
;///////////////////////////////////////////////
;///////////////////IMPRIMIR////////////////////
;///////////////////////////////////////////////
CAMBIA_FORMATO
ADDWF PCL,1
RETLW B'00110000'
RETLW B'00110001'
RETLW B'00110010'
RETLW B'00110011'
RETLW B'00110100'
RETLW B'00110101'
RETLW B'00110110'
RETLW B'00110111'
RETLW B'00111000'
RETLW B'00111001'
;///////////////////////////////////////////////
;///////////////RETARDO Y DEMORAS///////////////
;///////////////////////////////////////////////
5. Compilar el archivo
6. Conectar el PIC 16F877A en el respectivo slot de 40 pines del Pickit 2
Al compilar nuestro código, nos dará de resultado un código .hex el cual es usado
para nuestro pic , el botón programe file es donde tenemos que buscar nuestro
código para que el programa lo pueda simular
Podemos observar que al variar el potenciómetro igual que en la practica el voltaje
disminuye
Se adjuntó programas en ASM y en Proteous8.5, así como también un video de las
muestras realizadas en prácticas de laboratorio
4. INFORMACIÓN ADICIONAL
Contacto: