He diseñado y construido el siguiente circuito de conducción de 7 segmentos utilizando un Arduino Micro para intentar comprender mejor el diseño del circuito electrónico:
Al encenderlo y aplicar una tensión HIGH
a las entradas \ $ \ text {LT} \ $ y \ $ \ text {BI} \ $ y una tensión LOW
a la \ $ \ text {LE } \ $ input, independientemente del código BCD que suministre al CD4511BE BCD al controlador de pantalla de 7 segmentos, la pantalla LED parpadea mientras se muestra \ $ 0 \ $. Si configuro la entrada \ $ \ text {LE} \ $ en HIGH
, entonces la pantalla LED ya no parpadea, sino que solo muestra \ $ 0 \ $.
Aquí está el código de prueba para el Arduino que estoy usando:
void setup()
{
pinMode( 2, OUTPUT );
pinMode( 3, OUTPUT );
pinMode( 4, OUTPUT );
pinMode( 5, OUTPUT );
pinMode( 6, OUTPUT );
pinMode( 7, OUTPUT );
pinMode( 8, OUTPUT );
}
void loop()
{
digitalWrite( 6, HIGH );
digitalWrite( 7, HIGH );
for( int i = 0; i < 10; ++i )
{
digitalWrite( 8, LOW );
digitalWrite( 2, i & 0x0001 != 0 ? HIGH : LOW );
digitalWrite( 3, i & 0x0002 != 0 ? HIGH : LOW );
digitalWrite( 4, i & 0x0004 != 0 ? HIGH : LOW );
digitalWrite( 5, i & 0x0008 != 0 ? HIGH : LOW );
digitalWrite( 8, HIGH );
delay( 1000 );
}
}
Más información: el siguiente código funciona como se esperaba:
void setup()
{
pinMode( 2, OUTPUT );
pinMode( 3, OUTPUT );
pinMode( 4, OUTPUT );
pinMode( 5, OUTPUT );
pinMode( 6, OUTPUT );
pinMode( 7, OUTPUT );
pinMode( 8, OUTPUT );
}
void loop()
{
digitalWrite( 6, HIGH );
digitalWrite( 7, HIGH );
digitalWrite( 2, HIGH );
digitalWrite( 3, HIGH );
digitalWrite( 4, LOW );
digitalWrite( 5, LOW );
digitalWrite( 8, HIGH );
delay( 1000 );
digitalWrite( 8, LOW );
digitalWrite( 2, HIGH );
digitalWrite( 3, LOW );
digitalWrite( 4, HIGH );
digitalWrite( 5, LOW );
digitalWrite( 8, HIGH );
delay( 1000 );
}