Autor Tema: consulta píc transistores y display 7 segmentos  (Leído 12538 veces)

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

Desconectado artemis

  • PIC10
  • *
  • Mensajes: 34
consulta píc transistores y display 7 segmentos
« en: 21 de Noviembre de 2019, 16:41:43 »
hola gente que tal?? soy nuevo en esto de programar PIC y no entiendo mucho
Adjunto el esquema que tengo en proteus.
Estoy utilizando display de 7 segmentos de ánodo común y quiero ir multiplexando entre los distintos dígitos del display pero no me funciona, vi varios ejemplos en internet pero al momento de correr la simulación sólo se apaga un display cuando el contador cuenta 4 veces y luego permanece encendido sin multiplexar con el otro..
EDIT: Estoy utilizando ccs compiler y proteus profesional versión 8.
Código: [Seleccionar]
#include <16F877A.h>
#fuses XT,NOWDT,PUT,NOLVP
#use delay (clock=800) // declaro el cristal
#use STANDARD_IO(B)

      VOID decimalBinario (int numero) ;

void main()
{
   INT i;
   SET_TRIS_A (0b11111111); //todas entradas
   SET_TRIS_B (0b00000000); //todas salidas
   SET_TRIS_C (0b00000000); //todas salidas
   WHILE (1)
   {
     
     
      FOR (i = 0; i < 10; i++)
      {
         decimalBinario (i);
         IF (!input (PIN_C0))
         {output_high (PIN_C0);
          output_low (PIN_C1);
         }
         ELSE
         {output_high(PIN_C1);
          output_low(PIN_C0);
         }
         delay_ms (2000);
      }
   }
}

void decimalBinario(INT numero)
{
   SWITCH (numero)
   {
      CASE 0:
      output_b (0b1000000);
      BREAK;

      CASE 1:
      output_b (0b11111001);
      BREAK;

      CASE 2:
      output_b (0b0100100);
      BREAK;

      CASE 3:
      output_b (0b0110000);
      BREAK;

      CASE 4:
      output_b (0b0011001);
      BREAK;

      CASE 5:
      output_b (0b0010010);
      BREAK;

      CASE 6:
      output_b (0b0000010);
      BREAK;

      CASE 7:
      output_b (0b1111000);
      BREAK;

      CASE 8:
      output_b (0b0000000);
      BREAK;

      CASE 9:
      output_b (0b0011000);
      BREAK;
   }
}
saludos
« Última modificación: 26 de Noviembre de 2019, 15:58:36 por artemis »

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:consulta píc transistores y display 7 segmentos
« Respuesta #1 en: 21 de Noviembre de 2019, 19:10:54 »
Que tal artemis,

Por lo que veo no hay delay entre un display y el otro, lo que significa que enciendes uno e inmediatamente lo apagas y enciendes el otro, como es tan rápido, la sensasión que te dará es que ambos displays están encendidos. De hecho esa es la idea cuando se usa la técnica de multiplexación. En realidad se usa un delay de 1ms aprox entre cada display de esa manera al final te da la sensación de que muestras diferentes valores en los displays.
Si lo que quieres es ver cuando se enciende un display y cuando se apaga el otro, coloca un delay de 1 segundo o mayor, para que puedas ver el efecto.

elreypic.

Desconectado artemis

  • PIC10
  • *
  • Mensajes: 34
Re:consulta píc transistores y display 7 segmentos
« Respuesta #2 en: 21 de Noviembre de 2019, 19:22:24 »
Que tal artemis,

Por lo que veo no hay delay entre un display y el otro, lo que significa que enciendes uno e inmediatamente lo apagas y enciendes el otro, como es tan rápido, la sensasión que te dará es que ambos displays están encendidos. De hecho esa es la idea cuando se usa la técnica de multiplexación. En realidad se usa un delay de 1ms aprox entre cada display de esa manera al final te da la sensación de que muestras diferentes valores en los displays.
Si lo que quieres es ver cuando se enciende un display y cuando se apaga el otro, coloca un delay de 1 segundo o mayor, para que puedas ver el efecto.

elreypic.
hola elreypic que tal? como se setea el delay?? vi en algunos lados que ponian delay_ms pero no se si requiere de alguna libreria en especial o como es?

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:consulta píc transistores y display 7 segmentos
« Respuesta #3 en: 21 de Noviembre de 2019, 19:37:01 »
Requiere usar el macro
#use delay (clock=8000000)  “la cifra es la velocidad del oscilador de tu pic)

 Luego la función la llamas:

delay_ms(10);    // genera retardo de 10 milisegundos.

O bien

 delay_us(10);     // genera retardo de 10 microsegundos.

  10,o 100, o 1000 , lo que quieras.

Desconectado artemis

  • PIC10
  • *
  • Mensajes: 34
Re:consulta píc transistores y display 7 segmentos
« Respuesta #4 en: 21 de Noviembre de 2019, 20:05:44 »
Requiere usar el macro
#use delay (clock=8000000)  “la cifra es la velocidad del oscilador de tu pic)

 Luego la función la llamas:

delay_ms(10);    // genera retardo de 10 milisegundos.

O bien

 delay_us(10);     // genera retardo de 10 microsegundos.

  10,o 100, o 1000 , lo que quieras.
mi compilador no me reconoce "#use", utilizo el hpdpic

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:consulta píc transistores y display 7 segmentos
« Respuesta #5 en: 21 de Noviembre de 2019, 21:19:02 »
Para el ya obsoleto compilador C de Hitech, la forma de hacerlo es:

_XTAL_FREQ  freq        //freq es el valor en hertz del oscilador, Ejemplo (4MHz): 4000000

__delay_ms(x);           //request a delay in miliseconds
__delay_us(x);            //request a delay in microseconds

elreypic

Desconectado artemis

  • PIC10
  • *
  • Mensajes: 34
Re:consulta píc transistores y display 7 segmentos
« Respuesta #6 en: 21 de Noviembre de 2019, 23:22:23 »
Para el ya obsoleto compilador C de Hitech, la forma de hacerlo es:

_XTAL_FREQ  freq        //freq es el valor en hertz del oscilador, Ejemplo (4MHz): 4000000

__delay_ms(x);           //request a delay in miliseconds
__delay_us(x);            //request a delay in microseconds

elreypic
Puse lo siguiente:
#define _XTAL_FREQ 1000
Pero cuando pongo __delay_ms(1000); no me reconoce la función y me lanza esta advertencia "function declared implicit int", sin generarse el hexa
Me falta alguna librería o algo??

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:consulta píc transistores y display 7 segmentos
« Respuesta #7 en: 22 de Noviembre de 2019, 11:22:56 »
¿Podrías especificar cuál compilador estas usando?
Parece que no es el compilador C de Hitech, ya que este ocupa que incluyas el archivo htc.h

#include <htc.h>

y no veo que lo tengas.

elreypic.

Desconectado artemis

  • PIC10
  • *
  • Mensajes: 34
Re:consulta píc transistores y display 7 segmentos
« Respuesta #8 en: 22 de Noviembre de 2019, 11:25:57 »
¿Podrías especificar cuál compilador estas usando?
Parece que no es el compilador C de Hitech, ya que este ocupa que incluyas el archivo htc.h

#include <htc.h>

y no veo que lo tengas.

elreypic.
utilizo el hi-tech pero en la carpeta "includes" no tengo el htc.h sino que tengo uno llamado hitech.h  pero no se si es lo mismo
saludos

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:consulta píc transistores y display 7 segmentos
« Respuesta #9 en: 22 de Noviembre de 2019, 15:14:33 »
Parece ser que la versión que estás usando es muy antigua y la verdad no estoy seguro si ambos archivos sean lo mismo.

¿Tienes el manual de usuario de esa versión en particular?
¿Podrías indicar cuál es la versión del compilador que estás usando?
Usa un command promt de windows y ejecuta el comando:

PICC --VER

Este te mostrará la versión del compilador qeu estás usando. Pero lo mejor sería que tuvieras el manual. Para buscar el uso de los delays. Este pudiera estar en la carpeta de instalación del compilador.

elreypic.

Desconectado artemis

  • PIC10
  • *
  • Mensajes: 34
Re:consulta píc transistores y display 7 segmentos
« Respuesta #10 en: 22 de Noviembre de 2019, 15:58:06 »
Parece ser que la versión que estás usando es muy antigua y la verdad no estoy seguro si ambos archivos sean lo mismo.

¿Tienes el manual de usuario de esa versión en particular?
¿Podrías indicar cuál es la versión del compilador que estás usando?
Usa un command promt de windows y ejecuta el comando:

PICC --VER

Este te mostrará la versión del compilador qeu estás usando. Pero lo mejor sería que tuvieras el manual. Para buscar el uso de los delays. Este pudiera estar en la carpeta de instalación del compilador.

elreypic.
adjunto el manual que tiene la carpeta donde está instalado el compilador, no encontré ninguna función delay yo
https://mega.nz/#!sVNQ2AiK!9u_NwLF7Z7DiW5mfK_CRONM8PBGfethAAjbLAAlJnFI
pd: lo tuve que subir a mega porque no deja adjuntar archivos de mas de 400kb

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:consulta píc transistores y display 7 segmentos
« Respuesta #11 en: 22 de Noviembre de 2019, 20:14:20 »
¿Me puedes decir que version de compilador tienes, usando el comando que te mencioné?

elreypic
« Última modificación: 22 de Noviembre de 2019, 20:19:43 por elreypic2 »

Desconectado artemis

  • PIC10
  • *
  • Mensajes: 34
Re:consulta píc transistores y display 7 segmentos
« Respuesta #12 en: 22 de Noviembre de 2019, 21:36:29 »
¿Me puedes decir que version de compilador tienes, usando el comando que te mencioné?

elreypic
hola acá adjunto la captura del cmd

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:consulta píc transistores y display 7 segmentos
« Respuesta #13 en: 22 de Noviembre de 2019, 22:23:18 »
Yo opino que no se de mas soporte a compiladores extremadamente viejos.

Considero que lo mejor es que baje XC8 y que haga el programa ahi, se terminarían los problemas para el y también para aquel que le quiere ayudar.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:consulta píc transistores y display 7 segmentos
« Respuesta #14 en: 23 de Noviembre de 2019, 00:47:34 »
Que tal artemis,

Desafortunadamente esa versión de C no tiene las rutinas de delay. Como bien te dice KILLERJC, va a ser mejor que descargues una version actual del XC de Microchip (la versión gratuita) y uses esa para tu proyecto. De esa manera te quitarás de cualquier problema.

O bien si puedes conseguir una versión más actualizada (creo que la última fue la 9.83).

elreypic.


 

anything