Está en la página 1de 13

DEPARTAMENTO DE ELECTRICA Y ELECTRONICA INGENIERIA ELECTRONICA INSTRUMENTACION Y SENSORES

INFORME DE PROYECTO 1 ING. DANNY SOTOMAYOR REALIZADO POR: AYALA MARIA JOSE CHICAIZA JUAN CARLOS 03 DE OCTUBRE DEL 2013 SANGOLQUI-ECUADOR

TEMA:

Manejo de entrada por teclado y salida por display de 7 segmentos de dos dgitos y decrementarlos. OBJETIVO GENERAL.

Realizar la implementacin del ingreso y salida de dos dgitos por teclado matricial y display 7 segmentos respectivamente OBJETIVOS ESPECIFICOS:

Realizar una aplicacin basada en el PIC 16F877 que permita ingreso de dos dgitos por teclado matricial Asignar primera tecla del teclado matricial para cargar los respectivos dgitos Asignar segunda tecla para proceder a decrementar los nmeros Mostrar el resultado del decremento en dos display de 7 segmentos Asignar tercera tecla para reseteo del sistema

RIALES Y EQUIPOS.

Fuentes regulables de voltaje. 2 display de 7 segmentos resistencias Teclado matricial Pic 16F877aA Cristal de 4Mhz

MARCO TERICO. El microcontrolador PIC 16f877A

Los microcontroladores PIC (Peripheral interface Controller), son fabricados por la empresa MICROCHIP Technology INC. Para la presente indagacin se utilizara el PIC16F877A el cual cuenta con las siguientes caractersticas:

Caractersticas Generales.
Procesador de arquitectura RISC avanzada Juego de solo 35 instrucciones con 14 bits de longitud. Todas ellas se ejecutan en un ciclo de instruccin, menos las de salto que tardan dos. Hasta 8K palabras de 14 bits para la Memoria de Programa, tipo FLASH en los modelos 16F876 y 16F877 y 4KB de memoria para los PIC 16F873 y 16F874. Hasta 368 Bytes de memoria de Datos RAM. Hasta 256 Bytes de memoria de Datos EEPROM. Pines de salida compatibles para el PIC 16C73/74/76/77. Hasta 14 fuentes de interrupcin internas y externas. Pila de 8 niveles. Modos de direccionamiento directo e indirecto. Power-on Reset (POP). Temporizador Power-on (POP) y Oscilador Temporizador StartUp. Perro Guardin (WDT). Cdigo de proteccin programable. Modo SLEEP de bajo consumo. Programacin serie en circuito con dos pines, solo necesita 5V para programarlo en este modo. Voltaje de alimentacin comprendido entre 2 y 5,5 V.

Diagrama de pines

TECLADO MATRICIAL
Teclado Matricial 4x4

Descripcin:
Un teclado matricial es un simple arreglo de botones conectados en filas y colmnas, de modo que se pueden leer varios botones con el mnimo nmero de pines requeridos. Un teclado matricial 44 solamente ocupa 4 lineas de un puerto para las filas y otras 4 lineas para las colmnas, de este modo se pueden leer 16 teclas utilizando solamente 8 lneas de un microcontrolador. Si asumimos que todas las columnas y filas inicialmente estn en alto (1 lgico), la pulsacin de un botn se puede detectar al poner cada fila a en bajo (0 lgico) y checar cada columna en busca de un cero, si ninguna columna est en bajo entonces el 0 de las filas se recorre hacia la siguiente y as secuencialmente.

DISPLAY DE 7 SEGMENTOS

El display de 7 segmentos o visualizador de 7 segmentos es un componente que se utiliza para la representacin de nmeros en muchos dispositivos electrnicos debido en gran medida a su simplicidad. Aunque externamente su forma difiere considerablemente de un diodo LED (diodos emisores de luz) tpico, internamente estn constituidos por una serie de diodos LED con unas determinadas conexiones internas, estratgicamente ubicados de tal forma que forme un nmero 8. A cada uno de los segmentos que forman el display se les denomina a, b, c, d, e, f y g y estn ensamblados de forma que se permita activar cada segmento por separado consiguiendo formar cualquier dgito numrico. Muchas veces aparece un octavo segmento denominado p.d. (punto decimal). Los diodos led trabajan a baja tensin y con pequea potencia, por tanto, podrn excitarse directamente con puertas lgicas. Normalmente se utiliza un codificador (en nuestro caso decimal/BCD) que activando un solo ping de la entrada del codificador, activa las salidas correspondientes mostrando el nmero deseado. Los hay de dos tipos: nodo comn y ctodo comn. Los nodos de los leds o segmentos estn unidos internamente a una patilla comn que debe ser conectada a potencial positivo (nivel 1). El encendido de cada segmento individual se realiza aplicando potencial negativo (nivel 0) por la patilla correspondiente a travs de una resistencia que lmite el paso de la corriente; para el de tipo ctodo comn es de forma inversa.

DIAGRAMA DE BLOQUES
1. Plantear una descripcin rpida de la configuracin del Pic

PC(8bits) 16F877A
Display de 7 segmentos

Teclado matricial

PB(8bits)

Directivas TRISC=b00000000 TRISB=b00000111

DIAGRAMA DE FLUJO

INICIO

CONFIGURACION PUERTOS PuertoB=entrada PuertoC=salida DECLARACION DE VARIABLES Contador=0 Contador1=0 Contador2=0 DECENA=0; UNIDAD=0; NUMERO=0; AUX1=0; AUX2=0; AUX3=10; AUX4=0; N=0; TECLADO LECTURA PUERTO B

PUERTOB==0

AUX1=PUERTOB SI AUX1=88H NO SI AUX2=1 N=N+1; N=1 N O AUX2=2 N=N+1; SI N=2 DECENA=AUX2*10

AUX1=84H NO

SI

UNIDAD=AUX2 NUMERO=DECENA +UNIDAD

AUX1=82H NO

SI

AUX2=3 N=N+1;

AUX1=48H NO

SI

AUX2=4 N=N+1;

AUX1=44H NO

SI

AUX2=5 N=N+1;

AUX1=42H NO

SI

AUX2=6 N=N+1;

AUX1=28H

SI

AUX2=7 N=N+1;

NO

AUX1=24H

SI

AUX2=8 N=N+1;

NO

AUX1=22H

SI

AUX2=9 N=N+1;

NO

AUX1=14H

SI

AUX2=0 N=N+1;

SI NO AUX1=18H ESCRITURA PUERTOC=NUMERO

LECTURA PUERTO B

INICIAR DECREMENTO DE NUMERO

SI AUX1==12H

NO

SI RESETEO AUX1==81H

NO

PROGRAMA EN ENSAMBLADOR
subwf horizontal,0

list P=16f877a include <P16F877a.INC>

btfsc STATUS, Z ;Pregunta si se oprimio una tecla goto corrimiento ;No se oprimio una tecla

cont1 EQU cont2 equ horizontal equ varrido equ retar equ UNIDAD equ 25 DECENA equ 26 AUX1 equ 27 AUX2 equ 28 AUX3 equ 29 AUX4 equ 2A NUMERO equ 2B N equ 2C M equ 2D org goto org

20 21 22 23 24

btfsc goto btfsc goto btfsc goto btfsc goto

horizontal,3 vertical3 horizontal,2 vertical2 horizontal,1 vertical1 horizontal,0 vertical0

vertical3 btfsc 0 inicio 5 goto btfsc goto btfsc goto btfsc goto

varrido,7 char1 varrido,6 char2 varrido,5 char3 varrido,4 char4

inicio

bsf

STATUS,RP0 movlw b'00000000' movwf TRISC movlw 0X0F movwf TRISB ;Input del teclado movlw 0x02 bcf STATUS,RP0 MOVLW 0H MOVWF N MOVLW 0H MOVWF M movlw 0x01 movwf varrido call retardo

vertical2 btfsc goto btfsc goto btfsc goto btfsc goto

varrido,7 char5 varrido,6 char6 varrido,5 char7 varrido,4 char8

vertical1 btfsc goto btfsc goto btfsc goto btfsc goto vertical0 btfsc goto btfsc goto btfsc goto btfsc goto

varrido,7 char9 varrido,6 charA varrido,5 charB varrido,4 charC varrido,7 charD varrido,6 charE varrido,5 charF varrido,4 char0

pex

MOVLW 0H MOVWF AUX1 MOVLW 0H MOVWF AUX2 MOVLW 0H MOVWF AUX3 MOVLW 0H MOVWF AUX4 movf PORTB,W andlw 0X0F ;Enmascaramiento movwf horizontal ;Son input bit0-bit3 del puertoB movlw 0x00

char1

movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto movlw call goto

'1' send push_on_off '2' send push_on_off '3' send push_on_off '4' send push_on_off '5' send push_on_off '6' send push_on_off '7' send push_on_off '8' send push_on_off '9' send push_on_off 'A' send push_on_off 'B' send push_on_off 'C' send push_on_off 'D' send push_on_off 'E' send push_on_off 'F' send push_on_off '0' send push_on_off

send MOVWF AUX1 MOVLW 31H ;valor para comparar si es igual a uno XORWF AUX1,0 BTFSS STATUS,2 ;pregunto si la abndera z es igual a 0 GOTO LAZO2 INCF N,1 MOVLW .1 MOVWF AUX2 GOTO DIGITO LAZO2 MOVLW 35H comparar si es igual a dos XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO3 INCF N,1 MOVLW .2 MOVWF AUX2 GOTO DIGITO ;valor para

char2

char3

char4

char5

char6

char7

char8

LAZO3 MOVLW 39H ;valor para comparar si es igual a tres XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO4 INCF N,1 MOVLW .3 MOVWF AUX2 GOTO DIGITO LAZO4 MOVLW 32H ;valor para comparar si es igual a cuatro XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO5 INCF N,1 MOVLW .4 MOVWF AUX2 GOTO DIGITO LAZO5 MOVLW 36H ;valor para comparar si es igual a cinco XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO6 INCF N,1 MOVLW .5 MOVWF AUX2 GOTO DIGITO LAZO6 MOVLW 41H ;valor para comparar si es igual a seis XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO7 INCF N,1 MOVLW .6 MOVWF AUX2 GOTO DIGITO LAZO7 MOVLW 33H ;valor para comparar si es igual a siete XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO8

char9

charA

charB

charC

charD

charE

charF

char0

INCF N,1 MOVLW .7 MOVWF AUX2 GOTO DIGITO LAZO8 MOVLW 37H ;valor para comparar si es igual a ocho XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO9 INCF N,1 MOVLW .8 MOVWF AUX2 GOTO DIGITO LAZO9 MOVLW 42H ;valor para comparar si es igual a nueve XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO10 INCF N,1 MOVLW .9 MOVWF AUX2 GOTO DIGITO LAZO10 MOVLW 38H ;valor para comparar si es igual a cero XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO11 INCF N,1 MOVLW .0 MOVWF AUX2 GOTO DIGITO LAZO11 MOVLW 81H ;valor para comparar si es igual a "A" XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO12 MOVLW .11 MOVWF AUX2 GOTO DIGITO LAZO12 MOVLW 41H ;valor para comparar si es igual a "B" XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO13 MOVLW .12 MOVWF AUX2 GOTO DIGITO LAZO13 MOVLW 21H ;valor para comparar si es igual a "C" XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO14 MOVLW .13 MOVWF AUX2 GOTO DIGITO LAZO14 MOVLW 11H ;valor para comparar si es igual a "D" XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO15 MOVLW .14 MOVWF AUX2 GOTO DIGITO LAZO15 MOVLW 34H ;valor para comparar si es igual a "asterisco" XORWF AUX1,0

BTFSS STATUS,2 GOTO LAZO16 MOVLW .3 MOVWF N MOVLW .15 MOVWF AUX2 GOTO DIGITO LAZO16 MOVLW 43H ;valor para comparar si es igual a "asterisco" XORWF AUX1,0 BTFSS STATUS,2 GOTO LAZO16 MOVLW .3 MOVWF N MOVLW .15 MOVWF AUX2 GOTO DIGITO DIGITO ;movf AUX2,0 MOVLW .1 XORWF N,0 BTFSS STATUS,2 GOTO DIGITO2 MOVLW .11 MOVWF AUX3 MULTI DECFSZ AUX3,1 GOTO SUMA MOVF AUX4,0 MOVWF NUMERO RETURN SUMA MOVF AUX2,0 ADDWF AUX4,1 GOTO MULTI

DIGITO2 MOVLW .2 XORWF N,0 BTFSS STATUS,2 GOTO DIGITO3 MOVF AUX2,0 ADDWF NUMERO,1 MOVF NUMERO,0 RETURN DIGITO3 MOVLW .3 XORWF N,0 BTFSS STATUS,2 GOTO DIGITO4 MOVF NUMERO,0 UNO MOVWF PORTC GOTO UNO RETURN DIGITO4 DECF NUMERO,1 MOVF NUMERO,0 MOVWF PORTC CALL retardo return

retardo

movlw movwf

0x1C cont2

decrementa2

decfsz goto goto 0xFF movwf decfsz goto goto return

cont2,1 continua salida cont1 cont1,1 decrementa1 decrementa2

goto

pex

continua movlw decrementa1

push_on_off

salida

movf PORTB,W andlw 0X0F ;Enmascaramiento movwf horizontal ;Son input bit0-bit3 del puertoB movlw 0x00 subwf horizontal,0 btfsc STATUS, Z ;Pregunta si todavia esta oprimido la

corrimiento

bcf rlf movf movwf btfss goto ;Si es cero C movlw ;No es cero C movwf

STATUS,C varrido,1 varrido,W PORTB STATUS,C pex 0x01

tecla (**) goto ;Ya se solto la tecla goto pex push_on_off

end varrido

CLCULO DE LA SUBRUTINA DE RETARDO n= retardo solicitado Ejemplo: n=10 obtenemos 1s ) ) ) ) ) )

SIMULACIN EN PROTEUS

Conclusiones. o Se logr programar el funcionamiento del micro controlador ante las diferentes pulsaciones del teclado o Se logr establecer ecuacin para obtener el intervalo de retardo solicitado en la ejecucin del programa

o Para poder configurar la palabra de configuracin, lo


podemos hacer de dos maneras, con el programa en el que vamos a grabar el pic, o directamente especificndola en el cdigo del programa.

o Para configurar un puerto con entrada o salida debemos asignar 1 o 0 respectivamente a los pines que deseamos configurar. o El PIC nos permite el manejo de una gran cantidad de memoria que utilizamos para los diferentes programas.

Recomendaciones. No exceder en el voltaje de polarizacin del pic ya que podemos averiarlo o quemarlo. Verificar las entradas y salidas si estn conectadas a sus respectivas funciones para evitar un mal funcionamiento.

Referencias Bibliogrfica. http://r-luis.xbot.es/pic1/pic04.html http://www.cursomicros.com/pic/arquitectura/configur acion-puertos.html

También podría gustarte