Preparatorio 7

January 2, 2018 | Author: Alejandra Basantes | Category: Transistor, Electronic Engineering, Electrical Engineering, Computer Engineering, Electronics
Share Embed Donate


Short Description

Download Preparatorio 7...

Description

PRÁCTICA 7

BARRIDO DE DISPLAY

OBJETIVO:

Diseñar un circuito, y el software asociado para manejar 4 display de 7 segmentos usando la técnica de barrido.

TRABAJO PREPARATORIO 1. Consulte la distribución de pines de los display de 7 segmentos a ser utilizados

2. Diseñe un circuito de barrido de 4 display con el micro controlador MEGA164p usando solamente dos puertos, pues los otros dos puertos son usados para el ingreso de los datos. El circuito a construir debe obligatoriamente incorporar los elementos que considere necesarios para manejar los display (tomar en cuenta la capacidad de corriente de salida de los pines del micro controlador para no excederla, e incorporar los transistores o amplificadores de corriente para proveer la suficiente corriente a los display), y además nunca debe olvidar las resistencias limitadoras de corriente para cada uno de los segmentos. Como referencia se incluye un circuito con los elementos adicionales más comunes. Cabe indicar que dado que los segmentos van a trabajar solamente 1/4 del tiempo, se debe hacer pasar por ellos pulsos de corriente de mayor valor para obtener una corriente media suficiente; esta es la razón por la que no se recomienda manejar directamente los segmentos desde los puertos del ATMega164p. En el caso del diseño de ejemplo se ha colocado un arreglo de transistores darlington NPN (el ULN2003), pero puede ser reemplazado por 7 transistores NPN. Los transistores PNP del diseño sirven para activar cada uno de los dígitos. En el peor de los casos pueden estar encendidos todos los segmentos y la suma de estas corrientes entra por el terminal del ánodo común del display; por lo que de ninguna manera puede ser conectado directamente a una salida del microcontrolador. Conviene recordar que la corriente que puede manejar cada pin del miocrocontrolador está alrededor de 20mA, y que hay otras limitantes como la que la suma total de corriente que puede manejar un puerto no debería sobrepasar de unos 100 mA, además de otras limitantes que se pueden ver en el manual en la parte de "Características Eléctricas". 3. Escribir una rutina para convertir de binario a BCD. Con 4 dígitos decimales el número más grande a convertir es el 9999, ese dato requiere 14 bits en binario para ser almacenado, esto debe tomarse en consideración en su rutina. ; Rutina de Binario a BCD hasta para 16 bits BIN_BCD: PUSH r16 PUSH r17

PUSH r18 PUSH r19 LDS LDS CLR BIN_BCD_0:

SUBI

BIN_BCD_CEN:LDI

BIN_BCD_1:

SUBI

BIN_BCD_DEC:SUBI

BIN_BCD_2:

SUBI

BIN_BCD_UNI:SUBI

r16,BINARIO r18,BINARIO+1 r17

r16,232 ; SBCI r18,3 BRCS BIN_BCD_CEN INC r17 RJMP BIN_BCD_0 r19,232 ADD r16,r19 LDI r19,3 ADC r18,r19 STS BCD0+3,r17 CLR r17 r16,100 SBCI r18,0 BRCS BIN_BCD_DEC INC r17 RJMP BIN_BCD_1 r16,-100 STS BCD0+2,r17 CLR r17 r16,10 BRCS BIN_BCD_UNI INC r17 RJMP BIN_BCD_2 r16,-10 STS BCD0+1,r17 STS BCD0,r16 POP POP POP POP RET

r19 r18 r17 r16

4. Escribir un programa para convertir de pies a pulgadas (1 pie = 12 pulgadas). Por uno de los puertos entra el número de pies en binario ( el rango es de 0 a 255 pies), y por un pin adicional entra la señal de un interruptor que tiene la siguiente función: en una posición los display deben indicar en base diez el número de pies que se ha ingresado mientras que un led permanece apagado. Si el interruptor está en la otra posición, los display deben indicar en base diez el número de pulgadas que corresponde mientras se mantiene el led está encendido.

.include "m164pdef.inc" ;definicion de variables .def tempo=r16 .def contador=r17 .defconver=r18

.dseg BINARIO: BCD0: DIG0:

.BYTE 2 .BYTE 4 .BYTE 4

.cseg .org 0x0 ;configuracion de puertos

LAZO: IN

LDI OUT LDI OUT LDI OUT OUT LDI OUT LDI OUT LDI OUT LDI OUT IN ANDI OUT

tempo,0b00000000 DDRB,tempo tempo,0b10000000 DDRD,tempo tempo,0b01111111 DDRA,tempo PORTD,tempo tempo,0b11111111 PORTC,tempo tempo,0b11111111 PORTB,tempo tempo,0b00001111 DDRC,tempo tempo,0b10000000 PORTA,tempo tempo,MCUCR tempo,0b11101111 MCUCR,tempo

LDI OUT LDI OUT

tempo,HIGH(RAMEND) SPH,tempo tempo,LOW(RAMEND) SPL,tempo

tempo,PINB STS BINARIO,tempo CLR r1 STS BINARIO+1,r1 LDI tempo,0b01111111 OUT PORTD,tempo IN tempo,PIND SBRC tempo,0 CALL MULTIPLICACION CALL CALL

BIN_BCD BCD_7SEG

CALL BARRIDO RJMP LAZO MULTIPLICACION: PUSH r16 PUSH r17 LDS LDI MUL STS STS LDI OUT POP POP RET

r16,BINARIO r17,12 r16,r17 BINARIO,r0 BINARIO+1,r1 r16,0b11111111 PORTD,r16 r17 r16

; Subrutina de Binario a BCD para 16 bits BIN_BCD: PUSH PUSH PUSH PUSH LDS LDS CLR BIN_BCD_0:

SUBI

BIN_BCD_CEN:LDI

BIN_BCD_1:

SUBI

BIN_BCD_DEC:SUBI

BIN_BCD_2:

SUBI

r16 r17 r18 r19 r16,BINARIO r18,BINARIO+1 r17

r16,232 ; SBCI r18,3 BRCS BIN_BCD_CEN INC r17 RJMP BIN_BCD_0 r19,232 ADD r16,r19 LDI r19,3 ADC r18,r19 STS BCD0+3,r17 CLR r17 r16,100 SBCI r18,0 BRCS BIN_BCD_DEC INC r17 RJMP BIN_BCD_1 r16,-100 STS BCD0+2,r17 CLR r17 r16,10

BIN_BCD_UNI:SUBI

BRCS BIN_BCD_UNI INC r17 RJMP BIN_BCD_2 r16,-10 STS BCD0+1,r17 STS BCD0,r16 POP POP POP POP RET

r19 r18 r17 r16

;Subrutina de BCD a 7 Segmentos BCD_7SEG: PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH

ZH ZL YH YL XH XL r16 r17

LDI LDI LDI LDI LDI

XH,HIGH(BCD0) XL,LOW(BCD0) YH,HIGH(DIG0) YL,LOW(DIG0) r17,4 ZH,HIGH(Tabla_BCD_7SEG
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF