Autor Tema: [Ayuda]Display 2 Digitos Multiplexado con 74HC595  (Leído 2078 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado robo_z

  • PIC10
  • *
  • Mensajes: 16
[Ayuda]Display 2 Digitos Multiplexado con 74HC595
« en: 27 de Marzo de 2017, 11:29:40 »
Hola Amigos

Me he propuesto hacer un Contador con un Integrado 74HC595 este tambien Multiplexa el Display de 2 Digitos, pero viendo mi simulacion no me funciona bien.

El Problema es que en la simulacion se Sobrepone un Numero Sobre el Otro, El punto es que ya lo habia simulado antes (lo hice con arduino) y funcionaba bien; pero al pasarlo al PIC12F675 sucede este problema.

Ojala Alguno de Uds. Pueda Ayudarme, Aqui dejo el Codigo y Una Imagen de la Simulacion:

Código: [Seleccionar]
#include <12F675.h>
#device ADC=10

#FUSES PUT                      //Power Up Timer
#FUSES NOMCLR                   //Master Clear pin enabled
#FUSES NOBROWNOUT               //No brownout reset
#FUSES PROTECT                  //Code protected from reads
#FUSES CPD                      //Data EEPROM Code Protected

#use delay(internal=4MHz)
#use FIXED_IO( A_outputs=PIN_A3,PIN_A2,PIN_A1,PIN_A0 )
#define DATA   PIN_A0
#define CLOCK  PIN_A1
#define LOAD   PIN_A2
#define LED_1  PIN_A3
#define BTN_1  PIN_A4
#define BTN_2  PIN_A5

const int TiempoEspera = 5;

const byte NumAnodo[10]  = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

void shiftOut(int dataPin, int clockPin, int val);
void MuestraEnShift(int Decena, int Unidad);

void main()
{
setup_comparator( NC_NC_NC_NC ); // disable comparators
setup_adc_ports( NO_ANALOGS ); // disable analog inputs
setup_adc( ADC_OFF ); // disable A2D
output_bit(DATA, 0);
output_bit(CLOCK, 0);
output_bit(LOAD, 0);

   while(TRUE)
   {
   MuestraEnShift(1, 2);
   //delay_ms(100);
     


      //TODO: User Code
   }

}

void shiftOut(int dataPin, int clockPin, int val)
{
   for (int i = 0; i < 8; i++)
   {     
      output_bit(dataPin, !!(val & (1 << (7 - i))));
      output_bit(clockPin, 0);
      output_bit(clockPin, 1);     
   }
}

void MuestraEnShift(int Decena, int Unidad)
{
   const int DispDigit[2]={DATA, CLOCK};
   int DispNum[2]={};
   DispNum[0]=Unidad;
   DispNum[1]=Decena;   
     
   //for(int k=0; k<2; k++)
   //{
      for(int m=0; m<2; m++)
      {
         shiftOut(DATA, CLOCK, NumAnodo[DispNum[m]]);
         output_bit(LOAD, 0);
         output_bit(LOAD, 1);
         
         //delay_ms(TiempoEspera);
         output_bit(DispDigit[m], 1);
         delay_ms(TiempoEspera);
         output_bit(DispDigit[m], 0);
         delay_ms(TiempoEspera);
         //output_bit(LOAD, 1);
      }
   //}   
}

De Antemano se Agradece Su Ayuda :)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:[Ayuda]Display 2 Digitos Multiplexado con 74HC595
« Respuesta #1 en: 27 de Marzo de 2017, 17:26:58 »
Seguramente algun error en la simulacion del Proteus.

Todo parece casi correcto.

Desconectado robo_z

  • PIC10
  • *
  • Mensajes: 16
Re:[Ayuda]Display 2 Digitos Multiplexado con 74HC595
« Respuesta #2 en: 28 de Marzo de 2017, 12:14:58 »
Muchas Gracias por Revisarlo KILLERJC

Lo Armaré en Fisico, Probablemente sea Como Dices. Yo Tampoco le Encuentro Error. Lo Raro es que cuando lo hice con Arduino me funciono normal en el Proteus, la unica diferencia que se me ocurre es la velocidad del Clock, Arduino Tiene 16Mhz y con este PIC le configure a 4Mhz (Interno).

Bueno Muchas Gracias Nuevamente.

Desconectado aprendiz67

  • PIC10
  • *
  • Mensajes: 7
Re:[Ayuda]Display 2 Digitos Multiplexado con 74HC595
« Respuesta #3 en: 28 de Marzo de 2017, 15:31:01 »
Hola ,no programo en C y no puedo comprender tu programa pero te comento mi experiencia cuando use en su momento este CI ,lo configure uniendo las dos entradas de clock SHCP/STCP ,esto hace que con un pulso de clock el dato se desplaza hasta la salida directamente (no podes usar el estado de alta impedancia) y tuve que iniciar el envio con dos pulsos de clock ,el primer pulso de clock que envias hace ingresar el dato y el segundo lo pone a la salida ,luego envias normal con cada pulso de clock ,si recuerdo bien era de esta manera que me funciono ,bueno espero te ayude el comentario . Saludos!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:[Ayuda]Display 2 Digitos Multiplexado con 74HC595
« Respuesta #4 en: 28 de Marzo de 2017, 15:51:02 »
El problema que el usa el pin de Clock para comandar los comunes de los displays tambien. De unirlos haria que desplaze una ves mas ( segun el flanco de reloj )


 

anything