Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

15/09/2010 #1


problemas al simular en proteus para un contador de 0 a 999 programacion
hola ps es que tengo una problema el pic que manejo es 16f876

aqui esta la programacion

#include <16f876.h>
#use delay (clock=4000000)
#byte porta=0x05
#byte portb=0x06
#bit ra0=0x05.0
#bit ra1=0x05.1
#bit ra2=0x05.2
#bit ra3=0x05.3

void main()
{
int i=0,j=0,m=0,k=0;
set_tris_a(0);
set_tris_b(0);
portb=0;
while(1)
{
porta=0;
for(i=0;i<10;i++)
{
ra0=1;
portb=i;
delay_ms(50);
ra0=0;
for(j=0;j<10;j++)
{
ra1=1;
portb=j;
delay_ms(50);
ra1=0;
for(k=0;k<10;k++)
{
ra2=1;
portb=k;
delay_ms(50);
ra2=0;
for(m=0;m<10;m++)
{
ra3=1;
portb=m;
delay_ms(50);
ra3=0;
}
}
}
}
portb=0;
porta=255;
delay_ms(1000);
}
}




aqui les dejo la imagen
15/09/2010 #2

Avatar de ByAxel

Respuesta: problemas al simular en proteus para un contador de 0 a 999 programacion
Hay dos tipos de display (ánodo común y cátodo común), usa el adecuado. Luego si solo estás probando vas bien pero si vas a mostrar números en los display tienes que convertir el conteo a un valor que se pueda representar en los display. Finalmente, el proteus no es bueno para simular animaciones o efectos como el multiplexado (hace muchos cálculos internos para el tiempo y usa bastante el CPU), para analizar eso mejor usa un ploter o simula paso a paso tu programa.

PD: Como una sugerencia usa la etiqueta [CODE] para postear tu código ya que así ocupa mucho espacio.

Un saludo.
15/09/2010 #3


Respuesta: problemas al simular en proteus para un contador de 0 a 999 programacion
aqui les dejo la imagen
ademas de lo que te sugiere ByAxel .... yo te sugiero que subas el archivo de proteus...
15/09/2010 #4

Avatar de Eduardo

Respuesta: problemas al simular en proteus para un contador de 0 a 999 programacion
La manera en que el 876 está manejando el display es cualquier cosa menos lo que necesita ese display.

Estás poniendo en portb un dato BCD en lugar de codificado a 7seg.
Porta tiene que barrer continuamente los 4 dig, no lo que estás haciendo.
16/09/2010 #5


Respuesta: problemas al simular en proteus para un contador de 0 a 999 programacion
aqui esta

http://www.megaupload.com/?d=EV3BN2PP

el programa en proteus
16/09/2010 #6


Respuesta: problemas al simular en proteus para un contador de 0 a 999 programacion
Leyenda:

porque no haces lo que te suguiere el compañero Eduardo de poner un codificador BCD de 7 segmentos tiene que ser asi como lo tienes,,, ????
16/09/2010 #7


Respuesta: problemas al simular en proteus para un contador de 0 a 999 programacion
amigo lubeck si es asi
16/09/2010 #8


Respuesta: problemas al simular en proteus para un contador de 0 a 999 programacion
si es asi
Mmmmmm.. Maaaaaas trabajo... deja practico mi C Jejeje....
No te garantizo nada

Ya logre poner los numeros....

Mira para poner los numeros utiliza este codigo intenta hacerlo tu... yo continuo...
Código:
#include <16F876.h>
#use  delay (clock=4000000)
#byte porta=0x05
#byte portb=0x06

Void Numero(int num)
{
 switch(num)
 {
  case 0:portb=192;
         break;
  case 1:portb=249;
         break;
  case 2:portb=164;
         break;
  case 3:portb=176;
         break;
  case 4:portb=153;
         break;
  case 5:portb=146;
         break;
  case 6:portb=130;
         break;
  case 7:portb=248;
         break;
  case 8:portb=128;
         break;
  case 9:portb=152;
         break;         
 }
}

void main()
{
 set_tris_a(0);
 set_tris_b(0);
 portb=0;
 porta=2; <-este es el digito a desplegar...

 while(1)
 {
  Numero(8); <---aqui pones el numero a desplegar
 } 
}
mira este codigo...
Código:
#include <16F876.h>
#use  delay (clock=4000000)
#byte porta=0x05
#byte portb=0x06

Void Numero(int num)
{
 switch(num)
 {
  case 0:portb=192;
         break;
  case 1:portb=249;
         break;
  case 2:portb=164;
         break;
  case 3:portb=176;
         break;
  case 4:portb=153;
         break;
  case 5:portb=146;
         break;
  case 6:portb=130;
         break;
  case 7:portb=248;
         break;
  case 8:portb=128;
         break;
  case 9:portb=152;
         break;         
 }
}

void main()
{
 int j;
 int k;
 set_tris_a(0);
 set_tris_b(0);
 portb=0;
 porta=2; 

 while(1)
 {
  for(J=0;j<=9999;j++)
  {
  
   for (k=0;k<=3;k++)
   {
    switch (k)
    {
     case 0:porta=0;
            numero(j/1000); <---no me acuerdo como se pone el entero osea j/1000 para sacar el digito...
            break;
     case 1:porta=2;
            numero(j/100);<-igual aqui pero entre 100
            break;
     case 2:porta=4;
            numero(j/10); <-igual aqui pero enttre 10
            break;
     case 3:porta=8; <-igual aqui pero el primero
            numero(j/1);
            break;
    }
    delay_ms(1000);

   }
  }
 } 
}
pero por ahi va la idea...
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.