Google Búsqueda personalizada

Regístrate gratis para participar de los foros, o si ya estás registrado haz login.

contador de 5 digitos

comentario del autor Mie Abr 01, 2009 9:32 pm
   
hola, tengo un pic 16f628a y nececito hacer un contador de 5 digitos con 5 displays obviamente, mi duda es la siguiente, hice un programa para un contadr de 4 digitos usando todo el puerto b los bits mas bajos para indicar el numero a traves de un deco BCD a decimal y los bits mas altos para mostrarlo y un pin del puerto a como entrada para incrementar el conteo, mi duda es como hago para agregar un digito mas ya que cuanto los primero 4 pasen el valor 9999 me incremente en 1 el 5 display me explico, supongamos que yo setee para que cuente de 4000 en 4000 entonces hara 00000.....04000.......08000 y luego tendria que ser 12000 y asi sucesivamente pero como lo hago? yo uso microcode studio -picbasic pro para hacer y compilar el programa y lo simulo con proteus,
el programa que hice es el siguiente:

cmcon=7
trisa=00000001
trisb=0
puls var porta.0
suma var word
f var word
a var byte
b var byte
c var byte
d var byte
e var byte
suma=0
inicio:
a=suma dig 0
b=suma dig 1
c=suma dig 2
d=suma dig 3
if puls=1 then sumar
portb=224+a
pause 50
portb=208+b
pause 50
portb=176+c
pause 50
portb=112+d
pause 50
goto inicio
sumar:
if puls=1 then sumar
suma=suma+1000
if suma>9999 then
f=suma
e=e+1
porta=e
pause 50
endif
goto inicio
END

bueno este es lo que he estado probando pero como ven los primeros cuatro funcionan e incrementan bien pero el primer display no me encaja en el conteo, bueno ojala alguien pueda hecharme una mano

cristiancrgs2008

Reputación

sin valorar Jue Abr 02, 2009 2:41 pm
   
Ok.
1)-Estaria bueno que subas el diagrama.-
2)-Por lo que se lee en tu codigo no tenes salida para el 5 digito ya que usas los 4 nibbles bajos para el bcd y los otros cuatro para los 4 displays.
Aunque escribiste:
Código:if suma>9999 then
f=suma
e=e+1
porta=e <-- habias definido trisa=00000001

y a su vez no tenes ninguna conversion a bcd en esta parte.
3)-Otra cosa que esta mal es que una vez que pase por suma>9999 cada 1000 te va a incrementar el 5 digito.-
Bueno espero que se entienda y que subas el diagrama.-
Saludos.-

mammuky

Reputación

comentario del autor Vie Abr 03, 2009 4:09 pm
   
hola, mira aca te edejo el esquematico de conexion de los display, los primeros cuatro del puerto b los decodifico con un un 7447 y los 4 restantes los uso para activarlos, el quinto display lo conecto por medio de otro 7447 al puerto a desde el Ra1 RA4, pero lo de conexion no seria el problema, el problema esta en como hacer un SUMADOR que en lo que escribi anteriormente no lo aclare y pido mis disculpas. El sumador debe incrementar su valor cdo presiono el pulsador, el incremento esta dado por la linea
sumar:
if puls=1 then sumar
suma=suma+1000 ; aca va el valor con el que quiero que se realice la suma
ves lo demas
a esta parte no le den importancia ya que estaba probando distintos codigos para ver si lograba lo que necesito, es esta parte la que no sirve

if suma>9999 then
f=suma
e=e+1
porta=e
pause 50
endif

bueno ojala me puedas ayudar, aclaro que es un sumador de 5 digitos y lo quiero hacer con pic 16f628a, se podra me podras decir como mejorar mi programa o que agregarle a este para que funcione, desde ya muchas gracias por tu ayuda.

diagrama sumador 5 digitos.JPG  (52.71 KB)

diagrama sumador 5 digitos.JPG

esquematico de conexion de los digitos

cristiancrgs2008

Reputación

solución Vie Abr 03, 2009 6:26 pm
   
Ok.un par de modificaciones y anda al pelo.-
Ya esta solucionado. Ojo que yo use Proton Ide

Cita:Device 16F628A
XTAL =4
CMCON=7
TRISA=00000001
TRISB=0
puls var PORTA.0
suma var DWord <----Lo pase a Dword ya que con Word solo podes contar hasta 65535
f var Word
a var Byte
b var Byte
c var Byte
d var Byte
e var Byte
suma=0
inicio:
a= Dig suma,0
b= Dig suma,1
c= Dig suma,2
d= Dig suma,3
e= Dig suma,4 <----- Agregue este que es el 5to digito
If puls=1 Then sumar
PORTB=224 + a
PORTA=2
DelayMS 10
PORTB=208 + b
PORTA=2
DelayMS 10
PORTB=176 + c
PORTA=2
DelayMS 10
PORTB=112 + d
PORTA=2
DelayMS 10
PORTB=e
PORTA=0
DelayMS 10
GoTo inicio
sumar:
If puls=1 Then sumar
suma=suma+1000
DelayMS 10
GoTo inicio
End

El 5to digito lo maneja por Ra1 y ademas con un solo 7447 se puede hacer no es necesario colocar 2.-
Saludos.-

mammuky

Reputación

comentario del autor Vie Abr 03, 2009 9:47 pm
   
Gracias, sabes que esa opcion la probe y me desespere porque con microcode studio no me deja o no se como hacer una variable con mas de 16 bits por eso se me complico seguro que debe tener una forma pero no se la instruccion, en fin ... bueno amigo te agradezco y ahora cambio de compilador.
Muchas gracias por estar y por tu rapidez en la rpta.
Gracias

cristiancrgs2008

Reputación



Hacer una pregunta

Boletín de Noticias

Reciba noticias de tecnología, tips de reparación y ofertas exclusivas.



Reglamento / P+F

Foros

Miembros / Expertos