Preparatorio_7.docx

January 2, 2018 | Author: Víctor Renato Díaz Cajas | Category: N/A
Share Embed Donate


Short Description

Download Preparatorio_7.docx...

Description

ESCUELA POLITÉCNICA NACIONAL DEPARTAMENTO DE CONTROL Y AUTOMATIZACIÓN

LABORATORIO DE SISTEMAS MICROPROCESADOS PREPARATORIO

TEMA: BARRIDO DE DISPLAY PRACTICA: 7

REALIZADO POR: GRUPO:

Bryan Olmos

GR13

HORARIO: VIERNES DE 14 - 16 FECHA DE ENTREGA: 03/10/2013

Preparatorio 7 Objetivo: DISEÑAR UN CIRCUITO, Y EL SOFTWARE ASOCIADO PARA MANEJAR 4 DISPLAY DE 7 SEGMENTOS USANDO LA TÉCNICA DE BARRIDO. Consulte la distribución de pines de los display de 7 segmentos a ser utilizados Por facilidad en esta práctica usaremos un display de 7 segmentos de 4 digitos

Diagrama de conexión:

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. 1 R4

R3

R2

R1

1K

1K

1K

1K

Q4

R8

2N3906 1K

Q3

R7

2N3906 1K

Q2

R6

2N3906 1K

Q1

R5

2N3906 1K

U1

U2

0 0 0 0 0 0 0

37 36 35 34 33 32 31 30

0 0 0 0 0 0 0 0

8 7

19 20 21 22 23 24 25 26

PA0/ADC0/PCINT0 PA1/ADC1/PCINT1 PA2/ADC2/PCINT2 PA3/ADC3/PCINT3 PA4/ADC4/PCINT4 PA5/ADC5/PCINT5 PA6/ADC6/PCINT6 PA7/ADC7/PCINT7 PC0/SCL/PCINT16 PC1/SDA/PCINT17 PC2/TCK/PCINT18 PC3/TMS/PCINT19 PC4/TDO/PCINT20 PC5/TDI/PCINT21 PC6/TOSC1/PCINT22 PC7/TOSC2/PCINT23 XTAL1 XTAL2

PB0/XCK0/T0/PCINT8 PB1/T1/CLKO/PCINT9 PB2/AIN0/INT2/PCINT10 PB3/AIN1/OC0A/PCINT11 PB4/SS/OC0B/PCINT12 PB5/MOSI/PCINT13 PB6/MISO/PCINT14 PB7/SCK/PCINT15 PD0/RXD0/PCINT24 PD1/TXD0/PCINT25 PD2/INT0/RXD1/PCINT26 PD3/INT1/TXD1/PCINT27 PD4/OC1B/XCK1/PCINT28 PD5/OC1A/PCINT29 PD6/ICP/OC2B/PCINT30 PD7/OC2A/PCINT31 AREF AVCC RESET

40 41 42 43 44 1 2 3

1 2 3 4 5 6 7

1B 2B 3B 4B 5B 6B 7B

COM 1C 2C 3C 4C 5C 6C 7C

9 16 15 14 13 12 11 10

RN1 1 2 3 4 5 6 7 8

16 15 14 13 12 11 10 9

ULN2003A 9 10 11 12 13 14 15 16

47

29 27 4

ATMEGA164P

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. barrido: push push push push push

lds r16,variable7 out portc, r16 ldi r16,0b11111101 out portd, r16 call rutinaretardo

r16 r17 r18 r19 r20

ldi r16,0b11111111 out portd, r16

ldi r16,0b11111111 out portd,r16 ;DIGITO2

;DIGITO0

lds r16,digito2 sts variablebcd,r16 call bcddisplay lds r16,variable7 out portc, r16 ldi r16,0b11111011 out portd, r16 call rutinaretardo

lds r16,digito0 sts variablebcd,r16 call bcddisplay lds r16,variable7 out portc, r16 ldi r16,0b11111110 out portd, r16 call rutinaretardo ldi r16,0b11111111 out portd,r16 ;DIGITO1 lds r16,digito1 sts variablebcd,r16 call bcddisplay

ldi r16,0b11111111 out portd,r16 ;DIGITO3 lds r16,digito3 sts variablebcd,r16 call bcddisplay lds r16,variable7

out portc, r16 ldi r16,0b11110111 out portd, r16 call rutinaretardo

pop r18 pop r17 pop r16

pop r20 pop r19

ret

Escribir un programa que permita multiplicar dos números en binario que son ingresados por medio de interruptores a dos puertos; cada uno de los números puede variar de 0 a 99. Aumentar al circuito de barrido de display un interruptor, el que si está en 0L, debe mostrar en base 10 en los dos primeros display el primer número a multiplicar, en los dos restantes el otro número. Si el interruptor está en 1L debe mostrar el resultado de la multiplicación en base 10 ocupando los 4 diplay. .include "m164pdef.inc" .def aux=r16 .def valor=r17 .def valor2=r18 .def aux2=r18 .dseg .org 0x100 registroalto: .byte registrobajo: .byte digito3: .byte digito2: .byte digito1: .byte digito0: .byte variablebcd:.byte 1 variable7: .byte .cseg

1 1 1 1 1 1 1

.org 0x0 ldi aux,0b00000000 out ddra, aux ldi aux,0b00000000 out ddrc, aux ldi aux,0b00001111 out ddrd, aux ldi aux,0b11111111 out ddrc, aux in aux, mcucr andi aux, 0b11101111 out mcucr, aux ldi out ldi out

aux,high(ramend) sph, aux aux, low(ramend) spl, aux

Programa: in aux, pinc andi aux, 0b10000000 cpi aux, 0b10000000

breq multiplicacion in valor,pina ldi aux,0b11111111 out portb,aux ldi aux, 0 sts registroalto, aux sts registrobajo, valor mostrar: rcall conversionbinbcd rcall barrido rjmp Programa multiplicacion: in valor,pina andi valor,0b01111111 in valor2,pinb andi valor,0b01111111 andi valor2,0b01111111 mul valor,valor2 sts registroalto, r1 sts registrobajo, r0 rjmp mostrar

conversionbinbcd: push push push push push push Push push push

r16 r17 r18 r19 r20 r21 r22 r23 r24

lds r17, registroalto lds r16, registrobajo clr r19 salto_miles: inc r19 subi r16,0xE8 sbci r17,0x3 brcc salto_miles dec r19 ldi r23,0xE8 ldi r24,0x3 add r16,r23 adc r17,r24 clr r20 salto_centenas: inc r20 subi r16,0x64 sbci r17,0x00 brcc salto_centenas dec r20 ldi r23,0x64 ldi r24,0x00 add r16,r23 adc r17,r24 clr r21 salto_decenas:

inc r21 subi r16,0xA brcc salto_decenas dec r21 subi r16,-0xA mov r22,r16 sts sts sts sts

digito3, digito2, digito1, digito0,

pop pop pop pop pop pop pop pop pop

r24 r23 r22 r21 r20 r19 r18 r17 r16

r19 r20 r21 r22

ret barrido: push push push push push

r16 r17 r18 r19 r20

ldi r16,0b11111111 out portd, r16 ;DIGITO0 lds r16,digito0 sts variablebcd,r16 rcall bcddisplay lds r16,variable7 out portc, r16 ldi r16,0b11111110 out portd, r16 rcall rutinaretardo ldi r16,0b11111111 out portd,r16 ;DIGITO1 lds r16,digito1 sts variablebcd,r16 rcall bcddisplay lds r16,variable7 out portc, r16 ldi r16,0b11111101 out portd, r16 rcall rutinaretardo ldi r16,0b11111111 out portd,r16 ;DIGITO2 lds r16,digito2 sts variablebcd,r16 rcall bcddisplay lds r16,variable7

out portc, r16 ldi r16,0b11111011 out portd, r16 rcall rutinaretardo ldi r16,0b11111111 out portd,r16 ;DIGITO3 lds r16,digito3 sts variablebcd,r16 rcall bcddisplay lds r16,variable7 out portc, r16 ldi r16,0b11110111 out portd, r16 rcall rutinaretardo pop pop pop pop pop ret

r20 r19 r18 r17 r16

bcddisplay: push r16 push zh push zl ldi ldi lds add clr adc lpm sts

zh,high(tabla
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF