Diseño De Turno De Un Banco Con Ticket Para Clientes Con PIC 16F877A

viernes, 16 de septiembre de 2011

Diseño De Turno De Un Banco Con Ticket Para Clientes Con PIC 16F877A



Diseño De Turno De Un Banco Con Ticket Para Clientes Con PIC 16F877A

Este Es El Codigo Realizado En Proton. Ud Le Puden Diseñar Como Quieran Ya Que Se Los Pongo Para Darles Unas Ideas En Sus Diseños.

Device 16F877
XTAL 20
HSERIAL_BAUD=9600
ALL_DIGITAL= true
TRISA=000000
TRISB=000000
TRISD=000000
TRISC=000000
PORTC=000000
PORTB=000000
PORTD=000000
PORTA=000000

pulso  var PORTA.4
pulso1 var PORTA.5
pulso2 var PORTC.5
pulso3 var PORTD.4
pulso4 var PORTD.5
pulso5 var PORTD.7
pulso6 var PORTB.4
pulso7 var PORTC.4
pulso8 var PORTD.6
pulso9 var PORTB.7

HRSOut "                                  Universidad                                       ",13
HRSOut "                   Integrantes: NOMBRES                                             ",13
HRSOut "                                   Practica # 2                                     ",13
HRSOut "                   Sistema De Apartado De Turnos En Un Banco X                      ",13
HRSOut "                                                                                    ",13
HRSOut "--------------------  Bienvenidos A Su Banco Sisco Y Asociados  --------------------",13
HRSOut "                                                                                    ",13
HRSOut "-----------------  PorFavor Elija Su Turno De lo Que Va A Realizar  ----------------",13
HRSOut "                                                                                    ",13
HRSOut "                                                                                    ",13
HRSOut "1.- Depositos Turnos Del 00 al 33",10,13
HRSOut "                                                                                    ",13
HRSOut "2.- Chequeras Turnos Del 33 al 66",10,13
HRSOut "                                                                                    ",13
HRSOut "3.- Promotor  Turnos Del 67 al 99",10,13
HRSOut "                                                                                    ",13

High PORTE.2

Dim x As Byte
Dim y As Byte
Dim m As Byte
Dim n As Byte
Dim a As Byte
Dim b As Byte
Dim p As Byte
Dim l As Byte
Dim e As Byte
Dim f As Byte
Dim aa As Byte
Dim ee As Byte
Dim pe As Byte
Dim ca As Byte
Dim ce As Byte
Dim dirx As Byte
Dim diry As Byte
Dim dirm As Byte
Dim dirn As Byte
Dim dira As Byte
Dim dirb As Byte
Dim dire As Byte
Dim dirf As Byte
Dim dirp As Byte
Dim con1 As Byte
Dim con2 As Byte
Dim fe As Byte
Dim fa As Byte
Dim ta As Byte
Dim ta1 As Byte
Dim ta2 As Byte


dirx=$00
diry=$01
dirm=$02
dirn=$03
dira=$04
dirb=$05
dire=$06
dirf=$07
dirp=$08
ta = 1
ta1 = 2
ta2 = 3

aa=0
ee=32
con1=33
con2=67
pe=66


e = 1
f = 3
p = 1


comienzo:
If pulso =1  Then pulsar
If pulso1=1  Then yene
If pulso2=1  Then luye
If pulso6=1  Then uno
If pulso7=1 Then dos
If pulso8=1 Then tres
If pulso9=1 Then cuatro

If pulso3=1 Then
aa=aa+1
pause 300
ca= aa - ce
pause 300
If ca < 0 Then
ca=00
EndIf
If aa>32 Then
aa=1
EndIf

HRSOut "                                                                                    ",10,13
HRSOut "      ticke        ",13
HRSOut "Su Turno Es      : "
HRSOut SDEC2 aa,10,13
HRSOut "Turnos En Espera : "
HRSOut SDEC2 ca,10,13
HRSOut "Cajero           : "
HRSOut SDEC2 ta,13
HRSOut "                                                                                    ",10,13
EndIf

If pulso4=1 Then
ee=ee + 1
pause 300
fa =  ee - con1
pause 300
If fa < 0 Then
fa = 0
EndIf
pause 300
If ee>66 Then
ee=32
EndIf
HRSOut "                                                                                    ",10,13
HRSOut "      ticke        ",13
HRSOut "Su Turno Es      : "
HRSOut SDEC2 ee,13
HRSOut "Turnos En Espera : "
HRSOut SDEC2 fa,13
HRSOut "Cajero           : "
HRSOut SDEC2 ta1,13
HRSOut "                                                                                    ",10,13
EndIf

If pulso5=1 Then
pe = pe + 1
pause 300
fe = pe - con2
pause 300
If fe < 0 Then
fe=00
EndIf
If pe>99 Then
pe=67
EndIf
HRSOut "                                                                                    ",10,13
HRSOut "      ticke        ",13
HRSOut "Su Turno Es      : "
HRSOut SDEC2 pe,13
HRSOut "Turnos En Espera : "
HRSOut SDEC2 fe,13
HRSOut "Cajero           : "
HRSOut SDEC2 ta2,13
HRSOut "                                                                                    ",10,13
EndIf
GoTo comienzo


mago:
If pulso6=1 Then mago
x = ERead dirx
PORTB=x
y = ERead diry
PORTD=y
p = ERead dirp
PORTA=p
pause 1000
m = ERead dirm
PORTB=m
n = ERead dirn
PORTD=n
PORTC=l
e = ERead dire
PORTA=e
PORTC=l
pause 1000
a = ERead dira
PORTB=a
b = ERead dirb
PORTD=b
PORTC=l
f = ERead dirf
PORTA=f
pause 1000
x = ERead dirx
PORTB=x
y = ERead diry
PORTD=y
p = ERead dirp
PORTA=p
pause 1000
x = x +1
pause 500
If x>9 Then
x=0
y=y+1
EndIf
If y>3 Then
y=0
EndIf
If x=3 And y=3 Then
x=1
y=0
EndIf
m = m + 1
pause 300
a = a + 1
pause 300
GoTo comienzo

mago1:
If pulso7=1 Then mago
x = ERead dirx
PORTB=x
y = ERead diry
PORTD=y
p = ERead dirp
PORTA=p
pause 1000
m = ERead dirm
PORTB=m
n = ERead dirn
PORTD=n
PORTC=l
e = ERead dire
PORTA=e
PORTC=l
pause 1000
a = ERead dira
PORTB=a
b = ERead dirb
PORTD=b
PORTC=l
f = ERead dirf
PORTA=f
pause 1000
m = ERead dirm
PORTB=m
n = ERead dirn
PORTD=n
PORTC=l
e = ERead dire
PORTA=e
PORTC=l
pause 1000
x = x + 1
pause 300
m = m + 1
pause 300
If m>9 Then
m=0
n=n+1
pause 300
EndIf
If n=6 And m=7 Then
m=3
n=3
EndIf
a = a + 1
pause 300
GoTo comienzo

mago2:
If pulso8=1 Then mago
x = ERead dirx
PORTB=x
y = ERead diry
PORTD=y
p = ERead dirp
PORTA=p
pause 1000
m = ERead dirm
PORTB=m
n = ERead dirn
PORTD=n
PORTC=l
e = ERead dire
PORTA=e
PORTC=l
pause 1000
a = ERead dira
PORTB=a
b = ERead dirb
PORTD=b
PORTC=l
f = ERead dirf
PORTA=f
pause 1000
x = x + 1
pause 300
m = m + 1
pause 300
a = a + 1
pause 300
If a>9 Then
a=0
b=b+1
pause 300
EndIf
If b>9 Then
a=7
b=6
EndIf
GoTo comienzo

cuatro:
If pulso9=1 Then cuatro
e=2
f=3
l=10
p=1
m=0

n=0
x=0
y=0
a=0
b=0
ce=1
EWrite dira,[a]
EWrite dirb,[b]
EWrite dirm,[m]
EWrite dirn,[n]
EWrite dirx,[x]
EWrite diry,[y]
EWrite dire,[e]
EWrite dirf,[f]
e=2
f=3
l=10
p=1
m=0
n=0
x=0
y=0
a=0
b=0
ce=1
GoTo comienzo

tres:
e=2
f=3
l=10
p=1
a=7
b=6
ce=1
EWrite dira,[a]
EWrite dirb,[b]
EWrite dire,[e]
EWrite dirf,[f]
e=2
f=3
l=10
p=1
a=7
b=6
ce=1
GoTo comienzo


dos:

e=2
f=3
l=10
p=1
m=3
n=3
ce=1
EWrite dirn,[n]
EWrite dirm,[m]
EWrite dire,[e]
EWrite dirf,[f]
e=2
f=3
l=10
p=1
m=3
n=3
ce=1

GoTo comienzo

uno:
e=2
f=3
l=10
p=1
x=1
y=0
ce=1
EWrite dirx,[x]
EWrite diry,[y]
EWrite dire,[e]
EWrite dirf,[f]
e=2
f=3
l=10
p=1
a=0
b=0
x=1
y=0
ce=1

GoTo comienzo

pulsar:
PORTB=x
PORTD=y
PORTA=p
PORTC=l
If pulso=1 Then contar
GoTo comienzo

luye:
PORTB=a
PORTD=b
PORTC=l
PORTA=f
If pulso2=1 Then fer


GoTo comienzo

yene:
PORTB=m
PORTD=n
PORTC=l
PORTA=e
If pulso1=1 Then luis
GoTo comienzo

fer:
EWrite dira,[a]
EWrite dirb,[b]
EWrite dirf,[f]
If pulso2=1 Then fer
con2 = con2 + 1
pause 300
fe= pe - con2
pause 300
Low PORTE.2
pause 200
High PORTE.2
pause 200
Low PORTE.2
pause 200
High PORTE.2
pause 200
Low PORTE.2
pause 200
High PORTE.2
pause 200
l=10
f=3
a=a + 1
pause 200
If a>9 Then
a=0
b=b+1
pause 300
EndIf
If b>9 Then
a=7
b=6
EndIf
GoTo mago2


luis:
EWrite dirn,[n]
EWrite dirm,[m]
EWrite dire,[e]
If pulso1=1 Then luis
con1 = con1 + 1
pause 300
fa=   ee -  con1
pause 300
If ca=0 Then
ca=0
EndIf
Low PORTE.2
pause 200
High PORTE.2
pause 200
Low PORTE.2
pause 200
High PORTE.2
pause 200
Low PORTE.2
pause 200
High PORTE.2
pause 200
l=10
e=2
m=m + 1
pause 200
If m>9 Then
m=0
n=n+1
pause 300
EndIf
If n=6 And m=7 Then
m=3
n=3
EndIf
GoTo mago1
End

contar:
EWrite dirx,[x]
EWrite diry,[y]
EWrite dirp,[p]
If pulso=1 Then contar
ce=ce + 1
pause 300
ca=aa-ce
pause 300
If ca=0 Then
ca=0
EndIf
Low PORTE.2
pause 200
High PORTE.2
pause 200
Low PORTE.2
pause 200
High PORTE.2
pause 200
Low PORTE.2
pause 200
High PORTE.2
pause 200
l=10
p=1
x = x +1
pause 500
If x>9 Then
x=0
y=y+1
EndIf
If y>3 Then
y=0
EndIf
If x=3 And y=3 Then
x=1
y=0
EndIf
GoTo mago
End

Simulaciones En Proteus 7.4

Disculpen por los cables pero bueno explico. 
  • Para Dar Inicio a los Turnos De Los Cajeros.- Para que una persona que esta en taquilla para comenzar a llamar por turnos a los clientes primero debe presionar ese boton luego los que estan donde dice TURNOS PARA CAJEROS. las Taquillas corresponden al orden 1,2,3 de arriba hacia abajo. asi mismo si la taquilla o cajero numero 2 quiere comenzar a llamar por turnos a sus clientes primero tiene que precionar su boton de inicio que corresponde al boton dos y asi con la tercera taquilla.
  • Turnos Para Cajeros.- Esos seran los botones que utilizaran las personas que atenderan en las taquillas para llamar a los clientes.
  • Pantalla Virtual.- Aqui mostrara a los clientes el su ticket, es decir el turno que le toca, cuantas personas tienen en espera y en que caja le toca.
  • Reiniciar.- Para Reiniciar el contador.
Los Botones que estan alado de los numeros son sus corespondientes ejemplo. Si va hacer depositos presiona el boton que esta alado osea el boton uno, si quiere la segunda preciona el segundo boton y asi con el tercero

Descargar El Programa Proton

Descargar El Programa Proteus 7.4 Portable

Descargar Código

3 comentarios :

  1. Cual es la clave para descomprimir el libro de electronica practica microcontroladores

    ResponderEliminar
  2. no la sabra ni el cuando no contesta, jejejeje

    ResponderEliminar
  3. como se haría
    esto en lenguaje c?

    ResponderEliminar

Gracias por su comentario