TODOPIC
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
20 de Agosto de 2014, 19:22:58

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
347415 Mensajes en 38982 Temas por 40575 Usuarios
Último usuario: Picahielo
* Inicio Ayuda Buscar Calendario Ingresar Registrarse
Buscar en TodoPIC
+  TODOPIC
|-+  Microcontroladores PIC
| |-+  Lenguaje Basic para microcontroladores PIC (Moderadores: dogflu66, doppel, jansuini, Marioguillote, aitopes)
| | |-+  Display controlador por registro desplazamiento 74hc164
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Marcar como favorito Imprimir
Autor Tema: Display controlador por registro desplazamiento 74hc164  (Leído 6428 veces)
Trust
PIC16
***
Desconectado Desconectado

Mensajes: 121


« : 27 de Diciembre de 2006, 21:40:03 »

Hola a todos. Se controlar un display de 7 segmentos directamente desde el pic o usando un integrado 4511. Ahora necesito saber controlar el display usando un 74hc164, he leido el codigo que puso Aitopes hace pocos meses pero no lo entiendo. Tambien he leido el codigo de Josepino pero tampoco entiendo como funciona. He buscado mas codigos y he encontrado pocas cosas y no se utilizarlas por eso me gustaria que me echaran una mano con un codigo lo mas breve posible, no pido un codigo que controle un display de 7 segmentos por completo, solo quiero saber como hacer que se encienda algun led por separado o al mismo tiempo que otro y a partir de ahi ya me buscare yo la vida.

El esquema lo saque de un tema de Aitopes que creo que es el mismo que uno de Josepino. Solo tengo montado un display y cuando sepa programar el pic con el 74hc164 ya le pondre otro display para contar de 1 a 99.

Muchas gracias de antemano.
Saludos.
En línea
aitopes
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5102


Ariel Palazzesi www.ucontrol.com.ar


WWW
« Respuesta #1 : 27 de Diciembre de 2006, 21:46:05 »

Hola amigo!

Cuentanos mas especificamente que parte no entiendes....

Por las dudas, te cuento: el 164N funciona como una cola de banco: a medida que vas "metiendo" datos por un extremo de la cola, los datos presentes en las salidas van avanzando una posicion, y cuando llegan a la ultima (la patilla 13 si mal no recuerdo), se "caen" fuera y se pierden. De esta manera, si tengo los segmentos conectados a las 8 salidas del 164N (alcanza justo para a,b,c,d,e,f,g y el punto) solo tengo que mandar los "0" y "1" en el orden correcto para que se iluminen los segmentos que quiero en cada momento, yluego me olvido de ellos hasta que necesite mostrar otro valor, ya que las salidas del 164N permanecen sin cambios hasta hacerle un RESET o hasta meter mas datos....

Saludos!
En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
Trust
PIC16
***
Desconectado Desconectado

Mensajes: 121


« Respuesta #2 : 27 de Diciembre de 2006, 22:02:12 »

Hola Aitopes, muchas gracias por la explicacion. Aqui pongo un codigo breve para que me digan donde estan los fallos, creo que tambien haria falta poner delays.

Código:
program display

main:
while true

setbit(portb,6) 'clock
setbit(portb,5) 'data - enciende led a
clearbit(portb,5) 'data - apaga led b
setbit(portb,5) 'data - enciende led c
setbit(portb,5) 'data - enciende led d
clearbit(portb,5) 'data - apaga led e
clearbit(portb,5) 'data - apaga led f
setbit(portb,5) 'data - enciende led g
end


end.

Muchas gracias.
Saludos.
En línea
aitopes
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5102


Ariel Palazzesi www.ucontrol.com.ar


WWW
« Respuesta #3 : 27 de Diciembre de 2006, 22:09:51 »

El primer error que veo es que el pulso de clock debe ir en cada bit que envias....el proceso es mas o menos asi:

- Pones el clock en alto
- Pones el bit que queres escribir en data
- pones el clock en bajo.

Esto lo repetis bit por bit (necesitas 8 "bloques" como el de arriba por cada digito que vayas a mostrar).

Estoy armando una guia con esto, pero no se si la termino antes de enero... Sad

Saludos!

PD: A mi me resulto muy util la hoja de datos del 74LS164N, para ver como era el tema del clock, los tiempos,etc.
En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
Trust
PIC16
***
Desconectado Desconectado

Mensajes: 121


« Respuesta #4 : 27 de Diciembre de 2006, 22:21:58 »

Hola Aitopes, muchas gracias. Aqui pongo otro codigo. ¿Seria asi?

Código:
program display

main:
while true

setbit(portb,6) 'clock  alto
setbit(portb,5) 'data - enciende led a
clearbit(portb,6) 'clock bajo

setbit(portb,6) 'clock alto
clearbit(portb,5) 'data - apaga led b
clearbit(portb,6) 'clock bajo

setbit(portb,6) 'clock alto
setbit(portb,5) 'data - enciende led c
clearbit(portb,6) 'clock bajo

setbit(portb,6) 'clock alto
setbit(portb,5) 'data - enciende led d
clearbit(portb,6) 'clock bajo


wend
end.

He visto que tambien se puede configurar las salidas del 74hc164 en una linea como se haria con el tris, trisb=%000111011.
¿Como se haria para hacerlo todo en una linea?

Muchas gracias.
Saludos.
En línea
aitopes
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5102


Ariel Palazzesi www.ucontrol.com.ar


WWW
« Respuesta #5 : 28 de Diciembre de 2006, 01:09:06 »

Citar
He visto que tambien se puede configurar las salidas del 74hc164 en una linea como se haria con el tris, trisb=%000111011.
¿Como se haria para hacerlo todo en una linea?

Hasta donde yo se, es imposible...el 74LS164N tiene entrada SERIE y salida PARALELO, por lo que es imposible en un solo ciclo "meter" todos los valores....hay que hacerlo como en el codigo que postesteaste, que seguramente te va a funcionar. Saludos!
En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
Chaly29
Moderador Global
PIC24H
*****
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 2372



« Respuesta #6 : 28 de Diciembre de 2006, 05:02:57 »

el 164N funciona como una cola de banco:

Ahora tenemos largas esperas asta con la electrónica Sad lol

Un saludo.
En línea
Trust
PIC16
***
Desconectado Desconectado

Mensajes: 121


« Respuesta #7 : 28 de Diciembre de 2006, 14:36:35 »

Hola.

He probado este codigo que voy a poner aqui y se me encienden todos los segmentos del display, y yo no quiero eso.

Código:

program display
main:
trisb=0
while true

setbit(portb,6) 'clock  alto
setbit(portb,5) 'data - enciende led a
clearbit(portb,6) 'clock bajo

setbit(portb,6) 'clock alto
clearbit(portb,5) 'data - apaga led b
clearbit(portb,6) 'clock bajo

setbit(portb,6) 'clock alto
setbit(portb,5) 'data - enciende led c
clearbit(portb,6) 'clock bajo

setbit(portb,6) 'clock alto
setbit(portb,5) 'data - enciende led d
clearbit(portb,6) 'clock bajo

setbit(portb,6) 'clock  alto
setbit(portb,5) 'data - enciende led e
clearbit(portb,6) 'clock bajo

setbit(portb,6) 'clock alto
clearbit(portb,5) 'data - apaga led f
clearbit(portb,6) 'clock bajo

setbit(portb,6) 'clock alto
setbit(portb,5) 'data - enciende led g
clearbit(portb,6) 'clock bajo

setbit(portb,6) 'clock alto
setbit(portb,5) 'data - enciende led h
clearbit(portb,6) 'clock bajo

 


wend

end.


He probado a ponerle pausas con delay_us, pero no he conseguido hacer lo que yo quiero.
¿Que le falta al codigo para que me funcione?

Muchas gracias de antemano.
Saludos.
« Última modificación: 28 de Diciembre de 2006, 14:39:20 por Trust » En línea
Trust
PIC16
***
Desconectado Desconectado

Mensajes: 121


« Respuesta #8 : 28 de Diciembre de 2006, 17:20:28 »

He buscado mas informacion en Google y he probado cosas pero aun no me funciona. Al ponerlo en marcha lo que hace es encenderse un segmento y 1/4 de segundo despues se encienden los demas.  Confused

¿Los 2 data inputs del 74hc164 se conectan al mismo pin del pic?
He mirado el datasheet del 74hc164 y he visto en la tabla de la verdad que los data 1 y 2 pueden tener valores distintos (alto o bajo). ¿como puede ser eso si los data 1 y 2 he visto en un esquema que van conectados al mismo pin del pic?

Muchas gracias de antemano.
Saludos.
« Última modificación: 28 de Diciembre de 2006, 17:36:02 por Trust » En línea
aitopes
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5102


Ariel Palazzesi www.ucontrol.com.ar


WWW
« Respuesta #9 : 28 de Diciembre de 2006, 20:21:15 »

Hola!

1) Se te encienden todos seguramente por que dentro del bucle no hay una pausa para VER que se escribio...lo que ves es el "desfile" de bits por la cola....pone una pausa de un segundo dentro del bucle, y ya esta! Smile

2) Ambos pines de entrada ponelos juntos, y ya...

3) Pueden tener valores distintos en circuitos mas complejos, para usar por ejemplo el pin 1 de datos y el 2 como "enabled" o alguna cosa por el estilo. En tu proyecto, ponelos juntos y listo. Internamente, se hace un AND entre la entrada 1 y 2.

Saludos!
En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
Trust
PIC16
***
Desconectado Desconectado

Mensajes: 121


« Respuesta #10 : 28 de Diciembre de 2006, 21:26:27 »

Hola, voy por buen camino, ya voy comprendiendo el funcionamiento, muchas gracias.

He puesto una pausa de 2 milisegundos y ya me aparece como yo lo he programado. Ocurre una cosa que es que, dependiendo de donde ponga la pausa, los 2 segmentos que he puesto que esten apagados son diferente y no entiendo porque. Desde que pongo en marcha el circuito hasta que aparece algo en el display tarda unos 2 segundos y esto puede afectar negativamente ya que si uso 2 botones y los aprieto rapido, el display no mostrara los numero a la velocidad correcta.

Lo importante es que ya voy comprendiendo el registo de desplazamiento y ya hace tiempo que tenia ganas de saberlo.

Para mi proyecto que tienes 2 displays controlador por 2 botones para subir - bajar (0-99), ¿que creeis que es mas conveniente, usar un 74hc164 o un 4511?, es mas facil de usar, el inconveniente de este ultimo es que necesita 4 pines del pic.

Saludos.
En línea
aitopes
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5102


Ariel Palazzesi www.ucontrol.com.ar


WWW
« Respuesta #11 : 29 de Diciembre de 2006, 04:07:49 »

Hola!
Lo de los DOS SEGUNDOS era para probar....un valor mas razonable es unos 20 o 30 ms.... De esa manera no vas a tener parpadeos, y no se te van a escapar las pulsaciones de las teclas.

Saludos!
En línea

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert
Trust
PIC16
***
Desconectado Desconectado

Mensajes: 121


« Respuesta #12 : 29 de Diciembre de 2006, 12:08:01 »

Hola.
Al final voy a usar en vez del 74hc164 un TC4511BP por display porque, es mas facil y como uso un PIC16F876 voy sobrado de entradas/salidas.

Estoy haciendo las pruebas en una placa de inserccion rapida y me ocurren cosas que no entiendo, me parpadea el display cada tantos segundos pero si acerco la mano al circuito ya no parpadea.  Shocked

Saludos.
En línea
TODOPIC
   

 En línea
Páginas: [1] Imprimir 
« anterior próximo »
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines XHTML 1.0 válido! CSS válido!
Página creada en 0.156 segundos con 24 consultas.