33
http://www.romanblack.com/shift1.htm http://microcontrolandos.blogspot.mx/2014/04/one-wire- com-74hc595.html#more http://dqsoft.blogspot.mx/ Controlar display de 7 segmentos con shift register Etiquetas: 74hc595 , 74xx595 , Circuito , Conexión , Diagrama , Display , Display 7 segmentos , Electrónica , Microcontrolador , PIC , Registro de desplazamiento , Robótica , Shift register Ya vimos lo que es y como se controla un shift register , ahora veremos una de las tantas utilidades que tiene. Aquí se explicará como utilizar un shift register para controlar un display de 7 segmentos. Para el que todavía no lo conozca, un display de 7 segmentos es un panel conformado por 7 LED que comparten entre si sus ánodos o cátodos según si sean de ánodo o cátodo común respectivamente. A un display de ánodo común deberemos aplicar tensión positiva al pin compartido y GND a cada uno de los pines correspondientes a los segmentos que se quieran iluminar, para un display de cátodo común deberemos invertir la polaridad. La mayoría de displais poseen también un octavo segmento que normalmente es un punto o dos. Hasta aquí una pequeña introducción para conocer un poco su funcionamiento, ahora bien, vimos que un shift register serial- paralelo “memoriza” el estado (0 o 1) de un pin (entrada) y va rotando esos valores por cada pulso de reloj para representar la secuencia completa, cuando se activa el pin Load, en unos pines asignados que tiene el integrado a tal fin.

Controlar Display de 7 Segmentos Con Shift Register

  • Upload
    pollo45

  • View
    626

  • Download
    4

Embed Size (px)

Citation preview

http://www.romanblack.com/shift1.htmhttp://microcontrolandos.blogspot.mx/2014/04/one-wire-com-74hc595.html#morehttp://dqsoft.blogspot.mx/

Controlar display de 7 segmentos con shift register Etiquetas: 74hc595, 74xx595, Circuito, Conexin, Diagrama, Display, Display 7 segmentos, Electrnica, Microcontrolador, PIC, Registro de desplazamiento, Robtica, Shift register Ya vimos lo que es y como se controla un shift register, ahora veremos una de las tantas utilidades que tiene. Aqu se explicar como utilizar un shift register para controlar un display de 7 segmentos.

Para el que todava no lo conozca, un display de 7 segmentos es un panel conformado por 7 LED que comparten entre si sus nodos o ctodos segn si sean de nodo o ctodo comn respectivamente.

A un display de nodo comn deberemos aplicar tensin positiva al pin compartido y GND a cada uno de los pines correspondientes a los segmentos que se quieran iluminar, para un display de ctodo comn deberemos invertir la polaridad. La mayora de displais poseen tambin un octavo segmento que normalmente es un punto o dos.

Hasta aqu una pequea introduccin para conocer un poco su funcionamiento, ahora bien, vimos que un shift register serial-paralelo memoriza el estado (0 o 1) de un pin (entrada) y va rotando esos valores por cada pulso de reloj para representar la secuencia completa, cuando se activa el pin Load, en unos pines asignados que tiene el integrado a tal fin.

Si a cada pin de salida (Q0-Q7) del integrado le conectamos un segmento del display, como en la figura 1, logramos encender y apagar dichos segmentos independientes unos de los otros. La principal utilidad es representar un nmero del 0 al 9 o una letra de la A a la F.

La ventaja de usar el shift register es que slo necesitaremos 3 pines del microcontrolador: Clock (Amarillo), Data out (Verde) y Load (Rojo).

Figura 1. Conexin de un display de 7 segmentos a un shift register.

Si en lugar de emplear un solo integrado usamos dos (Figura 2), podremos multiplexar los datos. Utilizando el segundo integrado para seleccionar el display que deseamos encender en determinado momento, aumentaremos el numero de displais de 1 a 8 con un integrado mas.

Figura 2. Conexin de 8 display de 7 segmentos a 2 shift register.

Si encendemos un display, lo apagamos y luego encendemos otro, y hacemos todo esto de manera muy rpida el cerebro humano lo interpreta como si en realidad todos los display permanecieran encendidos al mismo tiempo. Jugando con esto podemos ahorrarnos muchsimos pines de nuestro PIC, por ejemplo si quisiramos hacer un reloj que indique la hora, los minutos y los segundos, y conectramos cada segmento a cada pin de un microcontrolador necesitaramos uno con 42 pines solo para los displais.

Sin shift register tambin se puede multiplexar, pero aun as utilizaramos demasiados pines, 7 para los segmentos y 1 para cada display, para disear el mismo reloj del ejemplo anterior necesitaramos un total de 13 pines contra los 4 que se necesitan implementando los registros de desplazamiento.

Para usar los dos integrados, se conectan siguiendo el diagrama de la figura 2, el segmento A de todos los displais con la Q0 del primer integrado, los segmentos B con el Q1, los C con Q2 y as sucesivamente. La salida Q0 del segundo integrado se conecta al comn del primer display, el pin Q1 al segundo, el Q2 al tercero as hasta un mximo de 8 displais.

Para controlarlo enviaremos los bits que conforman el caracter del primer display al primer integrado y el bit correspondiente a dicho display en 0, a cada pulso de reloj, cuando hayamos enviado todos los bits se manda el pulso Load y es cuando aparece el caracter en el primer display, luego se repite la operacin pero con el bit del segundo display en 0, de esa forma, y si los displais son de ctodo comn, encendern de a uno. A una alta frecuencia esto crea la ilusin de estar todos encendidos.

Utilizando dos shift registers y 4 pines del microcontrolador tendremos capacidad para controlar 8 displais, y si utilizramos un integrado y un pin del microcontrolador ms, aumentaramos la cantidad de displais a 16.

SHIFT REGISTER que son y cmo se usan? Etiquetas: 74hc165, 74hc595, 74xx165, 74xx595, Diagrama, Electrnica, PIC, Registro de desplazamiento, Robtica, Shift register, SiLMuP Un registro de desplazamiento (shift register en ingls), es un integrado capaz de almacenar bits y presentarlos en sus pines.

Hay varios tipos pero los que aqu nos interesan son los del tipo Serial-Paralelo y Paralelo-Serial, esto significa que en el primer caso los bits "entran" en forma serial (uno a uno) y "salen" de forma paralela, en el segundo caso entrar en paralelo (todos juntos) y salen en serie.

Unos de los integrados que hacen esto, entre muchos otros, son el 74HC595 y el 74HC165, que son Serial/Paralelo y Paralelo/Serial respectivamente.

El pinout del 74HC595 es el siguiente:

Los pines marcados como Q0-Q7 son salidas y reflejan el estado interno de cada bit cuando es activado poniendo a nivel alto el pin 12 (STCP), los datos ingresan de forma serial por el pin 14(DS) cada vez que el pin SHCP pasa de estado bajo a alto ( de 0v a 5v).

Tambin se pueden enlazar varios integrados iguales de modo que ampliamos la cantidad de bits. para ello agregamos un segundo integrado y conectamos la patilla DS a la patilla Q7' del primero.

La secuencia seria la siguiente: 1.Se pone el pin DS en el estado del bit que se quiera ingresar 2.Pin SHCP en bajo3.Pin SHCP en alto 4.Se repite el proceso hasta enviar los 8 bits 5.Se coloca el pin STCP en bajo6.Se coloca el pin STCP en alto

y de esa forma aparece el byte en las salidas.

Pinout del 74HC165:

De manera similar funciona el 74HC165 solo que a los bit los "lee" todos juntos.

Aqu las entradas son D0 a D7 y la salida es Q7, PL es el Load y cuando pasa a estado bajo carga los valores de las patas D0-D7 en "memoria" y dandole pulsos altos y bajos a CP los datos van saliendo bit a bit.

Para encadenar varios basta con conectar Q7 de un integrado con DS del siguiente y leer la pata Q7 del ltimo.

Este es el diagrama de conexin para leer 16 bits (2bytes) con dos integrados enlazados:

La forma de proceder sera asi: Se pone en bajo el Load para tomar el estado de todas las entradas (b0 a b15) luego se envia la seal de reloj poniendo en bajo y luego en alto Clk y se lee el estado de DI (Data-In). Recordar que en DI aparecer primero el bit mas significativo (MSB).

Esta tcnica es vlida para controlar un display LCD, o multiplexar cualquier dato.

Aqu esta el cdigo en CSS C:#include

#define Clk Pin_A0 #define Load Pin_A1 #define DI Pin_A2

#use fast_io(a) #use fast_io(b) int Leer_Shift (void); void main(void){

set_tris_A(0b10100); set_tris_B(0b00000000);

do{ if (input(pin_a4)==true) output_b(leer_shift()); }while(true);

}int Leer_Shift (void){ int t; int Lectura=0; output_low (Load); // Pongo a low Load para "cargar" el estado de las output_high(Load); // entradas y paso a high para poder leerlas.

for(t=0;t