Está en la página 1de 14

JUEGO SIMON DICE

Sernaque Alata Aron


e-mail: aron_gb12@hotmail.com
Herrera Luis
e-mail: HerreraLuis@hotmail.com
Sernaque Alata Aron
e-mail: diego_31_1994@gmail.com
Universidad Ricardo Palma
Escuela Profesional de Ingeniera Electrnica

RESUMEN:
Este proyecto pretende aplicar los
conocimientos
aprendidos en taller y tambin de los cursos
dispositivos electrnicos,
microprocesadores, circuitos digitales,
circuitos elctricos, programacin. El
proyecto est basado en el juego Simon Dice
el cual trata de reproducir una secuencia
aleatoria de colores apretando las teclas
correspondientes de manera incremental.
Si la secuencia es correcta se prendera el
led color verde, caso contrario, se prendera
el led color rojo indicando que es incorrecto.
Un display indicara cuantas veces ya hemos
perdido.

ABSTRACT:
This project tries to apply the knowledge
learned in workshop and also of the courses
electronic devices, microprocessors, digital
circuits, electrical circuits, programming. The
project is based on the Simon Says game
which tries to play a random sequence of
colors by pressing the corresponding keys
incrementally.
If the sequence is correct will led green
color, but, the led will turn red indicating that
it is wrong.
A display will show how many times we have

INTRODUCCIN
El proyecto de este juego electrnico utiliza
un microcontrolador at89c52. Tambin
utiliza interruptores para activar los
LEDS.Para iniciar/reiniciar el juego se tendr
que pulsar el interruptor.
Luego se debe elegir una codificacin para
cada uno de los colores, y la salida debe
representar el
color presionado por el usuario.
Deber definir la forma de indicar al
microcontrolador que hay un dato valido
para leer (elegir entre
polling e interrupciones) y la forma de
enterarse que el microcontrolador ha
procesado ese datos y est listo
para recibir otro desde el pulsador (por
ejemplo usando uno de los cables del micro
destinadas
a entrada/salida).
La parte correspondiente a la salida se
deber decodificar el valor entregado por el
microcontrolador y enceder el LED
correspondiente (usar una codificacin
consistente entre los pulsadores y los
LEDs). Se deber tener en cuenta que hay
un valor especial de salida que indica que se

perdi el juego caso en el que hay que


encender todos los LEDS.
FUNDAMENTO TEORICO
Este proyecto llamado SIMON DICE posee
diversos componentes tales como
microcontrolador AT89C52, display 7
segmentos, resistencias, condensadores,
entre otros.
Este AT89C52 es un microcontrolador de 8
bits con 8 Kbytes de memoria flash de bajo
consumo y gran desempeo (PEROM). Este
dispositivo es fabricado usando la
tecnologa de memoria no voltil de ATMEL
y es compatible con el estndar, muy
usado en la industria, 80C51 y 80C52, en
cuanto a sus pines de conexin y a su set
de instrucciones. La memoria flash
contenida internamente permite que el
programa contenido pueda ser modificado
en el sistema o por cualquier
convencional programador. Combinando la
verstil CPU de 8 bits y la memoria Flash
en un solo chip. El programa deber hacer
lo siguiente:
Inicialmente se quedara esperando hasta
que el usuario presione el botn de
start/restart.Si este botn es presionado
durante el transcurso de un juego,
provocara que se vuelva a empezar (hint:
usar una de las interrupciones externas).
El juego comienza con el microcontrolador
reproduciendo el primer elemento de la
secuencia. Es decir, deber prender el LED
correspondiente a la codificacin elegida.
Tener en cuenta que si bien la velocidad de
funcionamiento del micro es bastante baja
(12Mhz), sigue siendo mucho ms alta que
lo que nuestros ojos pueden leer, por lo
tanto, el programa deber mantener
el LED encendido durante medio segundo
(hint: pueden usar uno de los timers).

Una vez hecho esto, deber esperar


durante una cantidad de segundos definida
en el programa que el usuario presione un
pulsador. Si el pulsador elegido es el
correcto, la maquina reproduce toda la
secuencia con un elemento
Mas y vuelve a esperar la entrada del
usuario (que debe ser, a su vez, toda la
secuencia anterior ms el elemento
nuevo).
Si el usuario se equivoca o tarda
demasiado, pierde. Este estado se denota
prendiendo los cuatro LEDs. De este
estado solo se sale apretando el botn de
start/restart.
CARACTERSTICAS GENERALES
Este microcontrolador permite soluciones
flexibles y de bajo precio a muchas
aplicaciones de control.
Entre sus caractersticas ms relevantes
tenemos:
Compatibilidad con los productos de la
familia MCS-51
8K bytes de memoria reprogramable
flash interna
Hasta 1000 ciclos de escritura/lectura
Operacin completamente esttica,
desde 0 HZ hasta 24 MHZ
Tres niveles de seguridad para la
proteccin de cdigo
Memoria interna RAM de 256 x 8-bit
32 lneas de entrada/salida programables
Tres Timers/Contadores de 16 bits
8 fuentes de interrupcin con 2 niveles
de prioridad
1 puerto de comunicacin serial

PROCEDIMIENTO
Basndonos en las caractersticas tcnicas
(data sheet) de los componentes,
especficamente del procesador Atmel
89C52, se realiz el software que hace de
interface entre estos componentes.
La programacin se hizo en lenguaje
assembler de acuerdo a los requerimientos
del proyecto, configurando los puertos de
entrada y salida del 89C52, de la
activacin de los pines y de la
configuracin del display 7 segmentos.
Luego de la programacin y teniendo el
cdigo respectivo se hizo la simulacin en
Proteus 8.1 (ISIS), el cual consisti en
conectar los componentes de acuerdo a la
Imagen que se muestra y hacer la
simulacin respectiva el cual nos tiene que
dar como resultado la secuencia aleatoria
de los leds.
Luego de verificar el buen funcionamiento
del en un protoboard, probando en varias
ocasiones, procedimos a llevar el diseo a
un circuito impreso el cual se realiz
tambin con Proteus (ARES).
Teniendo el circuito ya impreso en fibra de
vidrio, se procede a insertar y soldar los
componentes en la placa teniendo cuidado
de la polaridad de los componentes
(condensadores electrolticos y fuente de
alimentacin principalmente del
componente microprocesador Atmel
89C52).
Con el circuito ya armado se procede a su
prueba final el cual nos permiti observar
que hubo una realizacin exitosa.
Se utiliz una fuente de voltaje digital el
cual nos garantiz un voltaje de 5 voltios
en continua en su salida.

APLICACIONES

Es perfecto para los nios, ya que les


permitir que se entretengan de
manera dinmica adems de
desarrollar sus habilidades.

Programacin del Proyecto:

Imagen 1: SIMON DICE

Imagen 2: CIRCUITO DE SIMON DICE EN PROTEUS

;
=======================
=======================
======================
; Main.asm file generated by New
Project wizard
;
; Created: mi may 10 2015
; Processor: 89C52
; Compiler: ASEM-52 (Proteus)
;
=======================
=======================
======================
$NOMOD51
$INCLUDE (8951.MCU)
;
=======================
=======================
======================
; VARIABLES
;
=======================
=======================
======================

SECUENCIA EQU 30H


AUX
EQU 31H
CONTADOR EQU 32H
SEC
EQU 33H
;
=======================
=======================
======================
; RESET and INTERRUPT VECTORS
;
=======================
=======================
======================
; Reset Vector
org 0000h
jmp INICIO
;
=======================
=======================
======================
; CODE SEGMENT
;
=======================
=======================
======================
org 030h
INICIO:
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV SECUENCIA,#0
MOV CONTADOR,#0
Start:
JNB
P3.3,START
MOV P3,#0FFH
CLR
P3.0
ESPERA:
CPL
P0.4
CALL TIEMPO500MS
JNB
P2.4,NIVEL1
JNB
P3.3,START2
INC
SECUENCIA
MOV
A,#5

CJNE
MOV
JMP
START2:
JNB
MOV
CLR
ESPERA1:
CPL
CALL
JNB
JNB
INC
MOV
CJNE
MOV
JMP
START3:
JNB
MOV
CLR
ESPERA2:
CPL
CALL
JNB
JNB
INC
MOV
CJNE
MOV
JMP

A,SECUENCIA,ESPERA
SECUENCIA,#0
ESPERA
P3.3,START2
P3,#0FFH
P3.1
P0.4
TIEMPO500MS
P2.4,NIVEL2
P3.3,START3
SECUENCIA
A,#5
A,SECUENCIA,ESPERA1
SECUENCIA,#0
ESPERA1
P3.3,START3
P3,#0FFH
P3.2
P0.4
TIEMPO500MS
P2.4,NIVEL3
P3.3,START
SECUENCIA
A,#5
A,SECUENCIA,ESPERA2
SECUENCIA,#0
ESPERA2

NIVEL1:
CALL GUARDAR
CALL DISPLAY
MOV R0,#40H
NIVEL11:
CALL LEDS1
CALL COMPROBAR1
CLR
P0.5
CALL TIEMPO1S
SETB P0.5
INC R0
MOV A,R0
SUBB A,#40H
CJNE A,#6D,NIVEL11
CLR P3.1

SETB P3.0
JMP NIVEL22
NIVEL2:
CALL GUARDAR
CALL DISPLAY
MOV
R0,#46H
NIVEL22:
CALL LEDS2
CALL COMPROBAR2
CLR
P0.5
CALL TIEMPO1S
SETB P0.5
INC R0
MOV A,R0
SUBB A,#46H
CJNE A,#6D,NIVEL22
CLR P3.2
SETB P3.1
JMP NIVEL33
NIVEL3:
CALL GUARDAR
CALL DISPLAY
MOV R0,#4BH
NIVEL33:
CALL LEDS3
CALL COMPROBAR3
CLR
P0.5
CALL TIEMPO1S
SETB P0.5
INC R0
MOV A,R0
SUBB A,#4BH
CJNE A,#6D,NIVEL33
MOV P0,#0
CALL TIEMPO1S
MOV P0,#0FFH
CALL TIEMPO1S
MOV P0,#0
CALL TIEMPO1S
MOV P0,#0FFH
JMP INICIO
LEDS1:
MOV R1,#3FH
LEDS11:
INC R1
MOV P0,@R1

CALL
MOV
CALL
MOV
MOV
CJNE
RET
LEDS2:
LEDS22:
MOV
CALL
MOV
CALL
MOV
MOV
CJNE
RET
LEDS3:
LEDS33:
MOV
CALL
MOV
CALL
MOV
MOV
CJNE
RET
TECLA:
JNB
JNB
JNB
JNB
JMP
S1:
MOV
MOV
MOV
S2: CJNE
MOV
MOV
RET

TIEMPO1S
P0,#0FFH
TIEMPO1S
AUX,R0
A,R1
A,AUX,LEDS11
MOV R1,#45H
INC R1
P0,@R1
TIEMPO500MS
P0,#0FFH
TIEMPO500MS
AUX,R0
A,R1
A,AUX,LEDS22
MOV R1,#4AH
INC R1
P0,@R1
TIEMPO300MS
P0,#0FFH
TIEMPO300MS
AUX,R0
A,R1
A,AUX,LEDS33

P2.0,S1
P2.1,S1
P2.2,S1
P2.3,S1
TECLA
P0,P2
B,P2
A,#0FFH
A,P2,S2
A,B
P0,P2

COMPROBAR1:
MOV R1,#3FH
COMPR1: INC R1
CALL TECLA

MOV
CJNE
MOV
MOV
CJNE
RET
PERDIO1:
INC
MOV
CJNE
JMP
SSS1:
CLR
CALL
SETB
CALL
INC
MOV
CJNE
MOV
ss1:
MOV
call
MOV
JMP
PERDIO2:
INC
MOV
CJNE
JMP
SSS2:
CLR
CALL
SETB
CALL
INC
MOV
CJNE
MOV
ss2:
MOV
call
MOV
JMP
PERDIO3:
INC
MOV

AUX,@R1
A,AUX,PERDIO1
AUX,R0
A,R1
A,AUX,COMPR1

CJNE A,#4,SSS3
JMP INICIO
SSS3:
CLR
CALL
SETB
CALL
INC
MOV
CJNE
MOV

CONTADOR
A,CONTADOR
A,#4,SSS1
INICIO

P0.6
TIEMPO1S
P0.6
DISPLAY
SEC
A,#5
A,SEC,ss3
SEC,#0

ss3:
P0.6
TIEMPO1S
P0.6
DISPLAY
SEC
A,#5D
A,SEC,ss1
SEC,#0
R0,#40H
guardar
R0,#40H
NIVEL11
CONTADOR
A,CONTADOR
A,#4,SSS2
INICIO
P0.6
TIEMPO1S
P0.6
DISPLAY
SEC
A,#5
A,SEC,ss2
SEC,#0
R0,#40H
guardar
R0,#46H
NIVEL22
CONTADOR
A,CONTADOR

MOV
R0,#40H
call guardar
MOV
R0,#4BH
JMP NIVEL33
DISPLAY:
MOV DPTR,#TABLA
MOV A,CONTADOR
MOVC
A,@A+DPTR
MOV P1,A
RET
TABLA:
DB 01000000B ;0
DB 01111001B ;1
DB 00100100B ;2
DB 00110000B ;3
DB 00011001B ;4
DB 00010010B ;5
DB 00000010B ;6
DB 01111000B ;7
DB 00000000B ;8
DB 00010000B ;9
COMPROBAR2:
MOV R1,#45H
COMPR2: INC R1
CALL TECLA
MOV AUX,@R1
CJNE A,AUX,PERDIO2
MOV AUX,R0
MOV A,R1
CJNE A,AUX,COMPR2
RET
COMPROBAR3:
MOV R1,#4AH

COMPR3:
CALL
MOV
CJNE
MOV
MOV
CJNE
RET

INC R1
TECLA
AUX,@R1
A,AUX,PERDIO3
AUX,R0
A,R1
A,AUX,COMPR3

DD2:
CJNE A,#2,DD3
MOV DPTR,#SECUENCIA3
JMP GUARDAR1
DD3:
CJNE A,#3,DD4
MOV DPTR,#SECUENCIA4
JMP GUARDAR1
DD4:
MOV DPTR,#SECUENCIA5

TIEMPO1S:
MOV
RE3: MOV
RE2: MOV
RE1: DJNZ
DJNZ
DJNZ
RET

R7,#36
R6,#50
R5,#254
R5,RE1
R6,RE2
R7,RE3

TIEMPO500MS:
MOV R7,#10
RE33:MOV R6,#50
RE22:MOV R5,#254
RE11:DJNZ R5,RE11
DJNZ R6,RE22
DJNZ R7,RE33
RET

;1 seg.

;500 Mseg.

TIEMPO300MS:
MOV R7,#5
;300 Mseg.
RE333:
MOV R6,#50
RE222:
MOV R5,#254
RE111:
DJNZ R5,RE111
DJNZ R6,RE222
DJNZ R7,RE333
RET
GUARDAR:
MOV
CJNE
MOV
JMP
DD1:
CJNE
MOV
JMP

A,SEC
A,#0,DD1
DPTR,#SECUENCIA1
GUARDAR1
A,#1,DD2
DPTR,#SECUENCIA2
GUARDAR1

GUARDAR1:
MOV SECUENCIA,#18D
MOV R0,#40H
LOOP1:
MOV A,#0
MOVC
A,@A+DPTR
CJNE A,#1,DD5
MOV @R0,#11111110B
JMP SIGUIENTE
DD5:CJNE A,#2,DD6
MOV @R0,#11111101B
JMP SIGUIENTE
DD6:CJNE A,#3,DD7
MOV @R0,#11111011B
JMP SIGUIENTE
DD7:MOV @R0,#11110111B
SIGUIENTE:
INC DPTR
INC R0
DJNZ SECUENCIA,LOOP1
RET
Loop:
jmp Loop
SECUENCIA1:
DB
1,2,3,1,4,3,2,4,1,3,4,2,4,1,3,3,2,4
SECUENCIA2:
DB
2,1,4,2,4,2,4,2,3,2,4,1,3,1,1,4,3,2
SECUENCIA3:
DB
4,2,1,4,2,1,3,1,1,3,2,4,2,2,3,1,4,2
SECUENCIA4:

DB
1,3,1,3,4,2,1,3,2,4,4,2,1,2,1,3,2,1
SECUENCIA5:
DB
3,2,3,1,4,3,2,3,1,2,1,3,4,2,1,1,2,4
;
=======================
=======================
======================
END

(S/5.00)
1 zocalo
(S/4.00)
1 display 7 segmentos
(S/3.00)
1 cristal 11.056mhz
(S/6.00)
4 Pulsadores para PCB de dos patas 4 Diodos
Leds de 3 milmetros Colores Verde, Rojo, Azul y
Amarillo

Plaqueta pcb de 5 cm por 5 cm

Componentes y Costos
15 resistencias 10k
(S/1.00)
4 condensadores 22Uf (S/1.00)
1 microcontrolador at89c52
(S/10.00)
1 placa
DIAGRAMA DE FLUJO

CONCLUSIONES

La alimentacin del circuito es de 5


voltios, ya que aumentando as
poda haber generado una falla en el
integrado.
Comprobamos que pulsar sigue un
correcto funcionamiento de los leds.
Cabe mencionar que para el
integrado AT89C52 se utiliz un
cristal de 11.5 MHz.
Para la programacin incluimos
puertos seriales y
paralelos(direccionamientos
inmediatos, por registros, directos e
indirectos .

REFERENCIAS

http://es.slideshare.net/elson225/ssi
modice.

http://www.programmersheaven.

http://developer.intel.com/
design/mcs51/aplnots/01a01.

http://developer.intel.com/design/mc
s51/manuals/272383.htm

Ensamblador para el 8051 (multiplataforma):


http://plit.de/asem-51

http://www.micromundo.com.co/rad
ares-de-velocidad

http://8051a.garciacuervo.com/Proy
ectos_AUX_SRF04.htm

http://bohr.inf.um.es/miembros/moo/
p-ult.pd

También podría gustarte