Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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)
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=84H NO
SI
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;
LECTURA PUERTO B
SI AUX1==12H
NO
SI RESETEO AUX1==81H
NO
PROGRAMA EN ENSAMBLADOR
subwf horizontal,0
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
vertical3 btfsc 0 inicio 5 goto btfsc goto btfsc goto btfsc goto
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
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
goto
pex
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
end varrido
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 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.