LIGAÇÃO DE DISPLAY SETE SEGMENTOS DE 4 DIGITOS COM ATMEGA8

Software e Hardware para ATMEL

Moderadores: 51, guest2003, brasilma

Mensagempor ejupiter » 15 Jun 2010 10:20

Francesco escreveu:Xultz e Barboza, é meio doido, mas funciona bem. Fiz essa ligação com um 8051, e um teclado de 4x4.

Ejupiter, faz o seguinte... antes de fazer o software completo tente acender só um segmento. No esquema que te mandei você colocaria:

Código: Selecionar todos
PC0 <- 0 ; Para ativar a saída.
PC1 <- 1 ; Para desativar as outras saídas.
PC2 <- 1
PC3 <- 1
to bem
PD <- 0xHH ; Valor em hexa com cada segmento.


Se você conseguir acender assim, te ajudamos em seguida com a multiplexação.

Francesco[/code]


Francesco bom dia!!!

Desculpa a demora para responder, é que quanto mais velho ficamos mais problemas arrumamos.
Me escareça uma duvida, estas setas acima são ponteiros, funciona no BASCOM "BASIC", já não me lembro muito bem e ainda não programo em "C" que seria a melhor linguagem de programação por sua portabilidade.
Estou tentando separar um tempo para dar continuidade a este projeto, que será utilizado para controle de condutividade, hoje funciona com componentes discretos, e já a algum tempo desejo eliminar a placa de controle com componentes discretos para utilizar um microcontrolador para indicar e controlar a condutividade água e produtos em laboratórios e industria.
Trabalho em industria quimica em horario de revesamento e sobra pouco tempo para me dedicar a eletronica, mas vamos dibrando a falta de tempo.
ejupiter
Bit
 
Mensagens: 15
Registrado em: 24 Fev 2007 03:47

Mensagempor barboza » 15 Jun 2010 10:28

Francesco escreveu:Xultz e Barboza, é meio doido, mas funciona bem. Fiz essa ligação com um 8051, e um teclado de 4x4.

Francesco[/code]


brasilma escreveu:Nada que uns diodinhos não resolvam...


Revendo o sch, da pra ver que funciona mesmo sem os diodos. Neste caso as portas b0 a b2 ficam como entradas e lêem as teclas no acionamento dos displays, varrem os display e o teclado na mesma base de tempo.
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

Mensagempor Francesco » 15 Jun 2010 10:36

Olá...
Na verdade, acho que compliquei em vez de facilitar. O que eu queria dizer é que você coloca 1 ou 0 na saída... vou colocar um código mais real:

Vamos supor que você ligou o os displays no PB0, PB1, PB2 e PB3, e os segmentos de 'a' até 'g' no PC0 até PC6. Logo, para acender o primeiro display, você coloca o seguinte código.

Código: Selecionar todos
PORTB = 0xFE ; // 1111.1110
PORTC = 0x7F ; // 0111.1111


Lembre-se que o BC559 conforme está montado vai conduzir com 0. Também lembre-se que cada bit acende um segmento, logo escrever 0x7F vai acender todos os 7 segmentos.

Para acender o segundo display você escreve:

Código: Selecionar todos
PORTB = 0xFD ; // 1111.1101
PORTC = 0x7F ; // 0111.1111


Repare que apenas alterei o 0 de posição. Não se pode acender mais de um display por vez, pois isso causaria um surto de corrente, e não seria legal.

Com criatividade, você poderá usar rotação ao invés de escrever cada um dos displays que deverá acender, por exemplo.

Código: Selecionar todos
void selecionaDisplay( char selectDisp )
{
     PORTB = ~( 1 << selectDisp ) ;
}


Boa sorte.

Francesco
Avatar do usuário
Francesco
Word
 
Mensagens: 699
Registrado em: 04 Mar 2008 00:22
Localização: São Paulo - SP

Anterior

Voltar para AVR

Quem está online

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

x