Вы находитесь на странице: 1из 9

ESCUELA POLITCNICA NACIONAL FACULTAD DE INGENIERA ELCTRICA Y ELCTRNICA LABORATORIO DE SISTEMAS MICROPROCESADOS PRACTICA N~7

DECODIFICADOR DE MATRIZ DE LEDS DE 7x5 UTILIZANDO MICROCONTROLADOR MEGA16.

Nombre: Csar Augusto Astudillo Muoz Trabajo Preparatorio

1. Consulte la distribucin de pines del arreglo de led 7x5.

2.

A d q ui er a

una matriz de led de 7x5 (de bajo costo). 3. Disee un circuito decodificador con el microcontrolador MEGA16 y los circuitos que considere necesarios para manejar una matriz de led. (tomar en cuenta la capacidad de corriente de salida de los pines del microcontrolador para no excederla) Para el diseo se toma en cuenta que no se debe exceder el mximo de corriente que puede soportar el micro controlador en general para los puertos entrada-salida que de acuerdo al fabricante nos dice que es de 200mA, y que por cada pin no se exceda los 20 mA, entonces dado que la matriz de leds no se puede conectar directamente al micro porque la

corriente que necesita la matriz es superior a la que soporta como mximo el microcontrolador, se procede con el siguiente diseo para evitar quemar el atmega 16 Dado que la matriz de leds adquirida es de ctodo comn en la columna y de nodo comn en la fila, se tiene: -Con transistores NPN se controlar las columnas, y la resistencia de base calcula de la siguiente manera:

-Con transistores PNP se controlar las filas, y la resistencia de base calcula de la siguiente manera:

Y la resistencia de colector con los siguientes valores:

4. Escriba un programa que permita mostrar una de 6 letras de acuerdo a la tabla siguiente, que sern seleccionadas mediante un dip switch de 3 posiciones, Las letras se deben formar con la tcnica de barrido). Cada una de las letras est almacenada como una tabla separada en la memoria FLASH y con los interruptores se selecciona cual tabla se debe mostrar en la matriz.

LUNES: las tres primeras letras de los primeros nombres de dos de los integrantes del grupo
.include"m16def.inc" .def .def .def .def .def .def .def tempo1=R16 tempo2=R17 aux=R18 aux2=R19 aux3=R20 aux4=R21 aux5=R22

.org 0x0 clr tempo1 out DDRB,tempo1 out DDRD,tempo1 ; pongo en cero la entrada que no voy a utilizar ldi tempo1,0x1f out DDRA,tempo1 ldi tempo1,0x7f out DDRC,tempo1 clr tempo1 ; activar el pull-up interno de la entrada in tempo1,sfior andi tempo1,0b11111011 out sfior,tempo1 ser tempo1 out PORTB,tempo1 out PORTD,tempo1 ; desactivar la matriz de leds clr tempo1 out PORTA,tempo1 out PORTC,tempo1 ; inicializo el stack ldi tempo1,high(ramend) out sph,tempo1 ldi tempo1,low(ramend) out spl,tempo1 ; entrada de datos: lazo: in tempo1,PINB andi tempo1,0x7 ldi aux,0x5 clr aux3 clr aux4 clr zl clr zh ;compara con los numeros que tengo para las tablas subi tempo1,0x0 breq lazo mov tempo2,tempo1 subi tempo1,0x1 breq letra_C mov aux2,tempo2 subi tempo2,0x2 breq letra_E mov aux3,aux2 subi aux2,0x3 breq let_S

mov aux4,aux3 subi aux3,0x4 breq let_M mov aux5,aux4 subi aux4,0x5 breq let_A subi aux5,0x6 breq let_U clr tempo1 rjmp lazo letra_C: ldi aux4,0x80 ldi aux5,0x40 clr tempo1 ;cargo la columna correspondiente rep: ldi zl,low(tabla1*2) ldi zh,high(tabla1*2) add zl,tempo1 clr aux3 adc zh,aux3 lpm aux3,z out PORTC,aux3 clr zl clr zh ;activo la columna n cpse aux4,aux5 lsl aux4 rol aux4 lsl aux5 cpse aux4,aux5 rol aux5 cpse aux4,aux5 rol aux5 out PORTA,aux4 clc ;barrido rcall retardo ;apagado de la columna n clr aux2 out PORTA,aux2 inc tempo1 cpse tempo1,aux rjmp rep rjmp lazo let_S: rjmp letra_S let_M: rjmp letra_M let_A: rjmp letra_A ; salto relativo

; salto relativo

letra_E: ldi aux4,0x80 ldi aux5,0x40 clr tempo1 ;cargo la columna correspondiente rep2: ldi zl,low(tabla2*2) ldi zh,high(tabla2*2) add zl,tempo1 clr aux3 adc zh,aux3 lpm aux3,z out PORTC,aux3 clr zl

clr zh ;activo la columna n cpse aux4,aux5 lsl aux4 rol aux4 lsl aux5 cpse aux4,aux5 rol aux5 cpse aux4,aux5 rol aux5 out PORTA,aux4 clc ;barrido rcall retardo ;apagado de la columna n clr aux2 out PORTA,aux2 inc tempo1 cpse tempo1,aux rjmp rep2 rjmp lazo ; salto relativo let_U: rjmp letra_U ; salto relativo letra_S: ldi aux4,0x80 ldi aux5,0x40 clr tempo1 ;cargo la columna correspondiente rep3: ldi zl,low(tabla3*2) ldi zh,high(tabla3*2) add zl,tempo1 clr aux3 adc zh,aux3 lpm aux3,z out PORTC,aux3 clr zl clr zh ;activo la columna n cpse aux4,aux5 lsl aux4 rol aux4 lsl aux5 cpse aux4,aux5 rol aux5 cpse aux4,aux5 rol aux5 out PORTA,aux4 clc ;barrido rcall retardo ;apagado de la columna n clr aux2 out PORTA,aux2 inc tempo1 cpse tempo1,aux rjmp rep3 rjmp lazo letra_M: ldi aux4,0x80 ldi aux5,0x40 clr tempo1 ;cargo la columna correspondiente rep4: ldi zl,low(tabla4*2) ldi zh,high(tabla4*2)

add zl,tempo1 clr aux3 adc zh,aux3 lpm aux3,z out PORTC,aux3 clr zl clr zh ;activo la columna n cpse aux4,aux5 lsl aux4 rol aux4 lsl aux5 cpse aux4,aux5 rol aux5 cpse aux4,aux5 rol aux5 out PORTA,aux4 clc ;barrido rcall retardo ;apagado de la columna n clr aux2 out PORTA,aux2 inc tempo1 cpse tempo1,aux rjmp rep4 rjmp lazo letra_A: ldi aux4,0x80 ldi aux5,0x40 clr tempo1 ;cargo la columna correspondiente rep5: ldi zl,low(tabla5*2) ldi zh,high(tabla5*2) add zl,tempo1 clr aux3 adc zh,aux3 lpm aux3,z out PORTC,aux3 clr zl clr zh ;activo la columna n cpse aux4,aux5 lsl aux4 rol aux4 lsl aux5 cpse aux4,aux5 rol aux5 cpse aux4,aux5 rol aux5 out PORTA,aux4 clc ;barrido rcall retardo ;apagado de la columna n clr aux2 out PORTA,aux2 inc tempo1 cpse tempo1,aux rjmp rep5 rjmp lazo letra_U: ldi aux4,0x80 ldi aux5,0x40 clr tempo1 ;cargo la columna correspondiente

rep6: ldi zl,low(tabla6*2) ldi zh,high(tabla6*2) add zl,tempo1 clr aux3 adc zh,aux3 lpm aux3,z out PORTC,aux3 clr zl clr zh ;activo la columna n cpse aux4,aux5 lsl aux4 rol aux4 lsl aux5 cpse aux4,aux5 rol aux5 cpse aux4,aux5 rol aux5 out PORTA,aux4 clc ;barrido rcall retardo ;apagado de la columna n clr aux2 out PORTA,aux2 inc tempo1 cpse tempo1,aux rjmp rep6 rjmp lazo retardo: ldi tempo2,15 lazo_ret: nop dec tempo2 brne lazo_ret ret tabla1: .db 0b01000001,0b00111110 .db 0b00111110,0b00111110 .db 0b01011101,0b00000000 tabla2: .db 0b00000000,0b00110110 .db 0b00110110,0b00110110 .db 0b00110110,0b00000000 tabla3: .db 0b00000110,0b00110110 .db 0b00110110,0b00110110 .db 0b00110000,0b00000000 tabla4: .db 0b00000000,0b01011111 .db 0b01101111,0b01011111 .db 0b00000000,0b00000000 tabla5: .db 0b01100000,0b01010111 .db 0b00110111,0b01010111 .db 0b01100000,0b00000000 tabla6: .db 0b00000001,0b01111110 .db 0b01111110,0b01111110 .db 0b00000001,0b00000000

5. 6.

Construya el circuito diseado, el mismo que deber ser llevado al laboratorio el da de la prctica. Realice un modelo de simulacin en proteus del circuito pedido y pruebe el funcionamiento.

Q6 C1
27pF

Q7
2N3906

Q8
2N3906

Q9
2N3906

Q10
2N3906

Q11
2N3906

Q12
2N3906

C2
27pF

C3
10nF

2N3906

X1

R1
4.7k

U1
CRYSTAL 12MHz 9 13 12 40 39 38 37 36 35 34 33 1 2 3 1 2 3 4 5 6 7 8 RESET XTAL1 XTAL2 PA0/ADC0 PA1/ADC1 PA2/ADC2 PA3/ADC3 PA4/ADC4 PA5/ADC5 PA6/ADC6 PA7/ADC7 PB0/XCK/T0 PB1/T1 PB2/INT2/AIN0 PB3/OC0/AIN1 PB4/SS PB5/MOSI PB6/MISO PB7/SCK ATMEGA16 PC0/SCL PC1/SDA PC2/TCK PC3/TMS PC4/TDO PC5/TDI PC6/TOSC1 PC7/TOSC2 PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/OC1B PD5/OC1A PD6/ICP PD7/OC2 22 23 24 25 26 27 28 29 14 15 16 17 18 19 20 21

R12 R13 R14 6.2k R15 6.2k R16 6.2k R17 6.2k R18 6.2k
6.2k 6.2k

R19 39

R20
39

R21
39

R22
39

R23
39

R24
39

R25
39

DSW1
6 5 4
OFF ON

DIPSW_3

R3
820

R4
820

R5
820

R6
820

R2
820

AVCC AREF

30 32

Q1
2N3904

Q2
2N3904

Q3
2N3904

Q4
2N3904

Q5
2N3904

Вам также может понравиться