Proteus , 7 segmentos multiplexados . problemas

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Proteus , 7 segmentos multiplexados . problemas

Mensagempor geraldomelo » 05 Out 2009 04:06

Pessoal , estou com esse circuito funcionando aqui na minha frente , mas no
proteus não funfa nem com reza ... alguém poderia testar ai pra mim , ou
tentar “enxergar” oquê poderia estar errado ?

ps , nas propriedades do display , marque "edit all properties as text" e colocar : {NOINVERT=1,2,3,4} , pois o programa foi feito para acionar transistores que acionam cada display .


Imagem


Aqui vai o codigo em CCs , lembrando que aqui na bancada está funcionando , o problema eh com o proteus , e eu já testei com duas versões dele e dá na mesma ..

#include <16F819.h>
#device adc=10

#fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP,NOMCLR
#use delay(clock=20000000)
#include <d:\Projetos_CCS\devices\regs_16.h>

#byte adcon1 = 0x9f
#byte adcon0 = 0x1f
#use fast_io(a)
#use fast_io(b)


unsigned int16 valor , valor1;

unsigned int unidade=0,dezena=0,centena=0,milhar=0;



unsigned int const num [10] = {0b00111111, // número 0
0b00000110, // número 1
0b01011011, // número 2
0b01001111, // número 3
0b01100110, // número 4
0b01101101, // número 5
0b01111101, // número 6
0b00000111, // número 7
0b01111111, // número 8
0b01101111}; // número 9


void escreve_display (void)

{


portb= num [unidade];
porta =2;
delay_ms(4);

portb= num[dezena];
porta=4;
delay_ms(4);

portb= num[centena];
porta=8;
delay_ms(4);

portb= num[milhar];
porta=16;
delay_ms(4);
}

void separa_digitos (void)
{
unidade=valor1%10;
dezena=(valor1%100)/10;
centena=(valor1%1000)/100;
milhar = valor1/1000;}



void main (void)
{
trisa=1;
trisb=0;
portb=0;

setup_adc_ports( RA0_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL );
set_adc_channel(0);
delay_ms(100);

while (true)

{


valor=read_adc();
valor1=valor/5;
valor1=valor1*5;

separa_digitos();
escreve_display();


}
}

Abs
Geraldo
geraldomelo
Byte
 
Mensagens: 267
Registrado em: 14 Out 2006 16:53
Localização: Ribeirão preto - SP

Mensagempor turuna » 06 Out 2009 20:38

Desisti de fazer simulação no proteus multiplexado os frames não acompanham, deve estar relacionado com capacidade da placa de video, quando tenho de simlar utilizo um drive que desenvolvi para trabalhar com os displays bcd do proteus.

Turuna
turuna
Nibble
 
Mensagens: 97
Registrado em: 10 Mar 2008 12:50

Mensagempor geraldomelo » 06 Out 2009 23:13

então , mas engraçado eh que os exemplos que vem nele mesmo funcionam ..

abs

Geraldo
geraldomelo
Byte
 
Mensagens: 267
Registrado em: 14 Out 2006 16:53
Localização: Ribeirão preto - SP

Mensagempor barboza » 07 Out 2009 09:21

Em um exemplo que montei no Proteus, precisei trocar a propriedade do display "Minimum Trigger Time" para .25m.

Tente alguns valores de acordo o seu tempo de varredura.


p.s.

O ideal para atualização em display de 7 seg é fazer por interrupção para manter a base de tempo constante.

Como o seu programa esta montado, é possível o display "piscar", pois vai depender do tempo de conversao AD e contas entre cada atualização e o seu display de milhar deve ficar com maior brilho, pois ele permanece ligado enquanto a próxima conversao e contas são executadas.

De uma olhada aqui:

http://asm51.eng.br/phpbb/viewtopic.php ... ht=display
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x