Handmades</center>
 
*
Bem-vindo, Visitante. Por favor faça o Login ou Registro. 25 de Novembro de 2024, as 16:20:11


Login com nome de usuário, senha e duração da sessão


Páginas: [1]   Ir para o Fundo
  Imprimir  
Autor Tópico: Projeto com encorde PIC16F877A e BCD - AJUDA  (Lida 7219 vezes)
otton
Freqüente
**
Offline Offline

Sexo: Masculino
Mensagens: 362

Obrigado
-Dado: 258
-Recebido: 45


rock in roll


« : 12 de Dezembro de 2013, as 20:02:07 »

Pessoal Legal!

Meu professor de sistemas digitais me passou um trabalho utilizando encoder.
O problema é o seguinte: quando eu girar o encoder no sentido horário tenho que incrementar uma variável e se girar no sentido anti-horário tenho que decrementar a mesma. Se o valor da variável for maior que 100 ou menor que 0 tenho que acender um led de aviso.

Até aqui já fiz o programa e o professor disse que está beleza mas ai que surge o problema: ele quer que eu mostre o valor da variável utilizando os BCD's da bancada, mas não tenho ideia de como vou fazer isso  Batendo Cabeça Batendo Cabeça.
Se vocês puderem ajudar fico grato.

Estou utilizando o programa MPLAB, o compilador HI-TECH e o PIC16F877A para fazer o código fonte, que seque abaixo:
Spoiler (clique para mostrar ou esconder)
« Última modificação: 12 de Dezembro de 2013, as 20:16:29 por Plautz » Registrado
xformer
Administrator
DIY Freak
******
Offline Offline

Sexo: Masculino
Mensagens: 6.287

Obrigado
-Dado: 71
-Recebido: 2049


e^(i x pi)+1=0


WWW
« Responder #1 : 12 de Dezembro de 2013, as 20:30:05 »

O que você quer dizer com "BCD´s da bancada" ?
Registrado

O que se escreve com "facilidade" costuma ser lido com dificuldade pelos outros. Se quiser ajuda em alguma coisa, escreva com cuidado e clareza. Releia sua mensagem postada e corrija os erros.
otton
Freqüente
**
Offline Offline

Sexo: Masculino
Mensagens: 362

Obrigado
-Dado: 258
-Recebido: 45


rock in roll


« Responder #2 : 12 de Dezembro de 2013, as 20:51:42 »

xformer BCD's sao aqueles Displays que tem aqui na bancada do laboratório
são displays que mostram números de 0 a 9 cada um então vou ter que utilizar 3
mas não sei implementar isso no programa

http://en.wikipedia.org/wiki/Binary-coded_decimal
http://img2.mlstatic.com/display-led-7-segmentos-vermelho-anodo-comum-23-polegadas_MLB-O-237299430_3488.jpg
Registrado
Dexter
Visitante
« Responder #3 : 12 de Dezembro de 2013, as 20:59:22 »

http://www.pictronics.com.br/inicio/36-projetos/76-multiplexando-displays-de-7-segmentos-com-pic16f877a.html

Isso?
Registrado
otton
Freqüente
**
Offline Offline

Sexo: Masculino
Mensagens: 362

Obrigado
-Dado: 258
-Recebido: 45


rock in roll


« Responder #4 : 12 de Dezembro de 2013, as 21:12:18 »

Dexter não tive exito ao acessar o site fui direcionada pra pagina principal
quanto ao bcd e esse mesmo de 7 seguimentos na bancada só tem os 4 pinos
para ligar uma saída digital de 8 bits, a parte de conversão de binário pra decimal
já ta tudo embutido na bancada.

eu quero saber como faço no programa (os codigos que tenho que usar) para mostrar
o numero da variável no bcd pois vou ligar alguma porta de saida do pic nesse display
abraços
   
Registrado
xformer
Administrator
DIY Freak
******
Offline Offline

Sexo: Masculino
Mensagens: 6.287

Obrigado
-Dado: 71
-Recebido: 2049


e^(i x pi)+1=0


WWW
« Responder #5 : 12 de Dezembro de 2013, as 21:48:47 »

Ok. O que você tem na sua bancada são conjuntos de displays acionados por decodificadores BCD para 7 segmentos (provavelmente CD4511).

BCD quer dizer Binary Coded Decimal. ou decimal codificado para binário.  Pra representar números decimais de 0 a 9 precisa de 4 bits, de 0000 a 1001.  Cada conjunto display-decodificador precisa então de 4 bits da dados.  O seu PIC vai precisar fornecer então 12 bits para 3 conjuntos display-decoder.

Sua variável RODA pode variar de 0 a 100, então o que você tem que fazer é criar 3 outras variáveis: CENTENA, DEZENA e UNIDADE e retirar da variável RODA quantas centenas inteiras ela tem, do resto das centenas, quantas dezenas inteiras e o restante vai para as unidades. Você sabe fazer isso né ?  (basta dividir RODA por 100, pegar a parte inteira e jogar na CENTENA, do resto dividir por 10, jogar a parte inteira e jogar na DEZENA e o resto jogar na UNIDADE).  Isso é básico e faz parte da teoria das bases numéricas.
Cada variável CENTENA, DEZENA e UNIDADE deve ser repassada para 4 bits de uma porta qualquer do PIC que serão ligadas aos conjuntos display-decoder, por ex. jogue a variável UNIDADE nas portas B0 a B3, DEZENA nas portas B4 a B7 e por fim CENTENA nas portas C0 a C3 (na verdade, só precisa de um bit, pois a centena não vai passar de 1, e aterrar os outros 3 bits do decoder BCD).

Só isso.
« Última modificação: 12 de Dezembro de 2013, as 21:53:54 por xformer » Registrado

O que se escreve com "facilidade" costuma ser lido com dificuldade pelos outros. Se quiser ajuda em alguma coisa, escreva com cuidado e clareza. Releia sua mensagem postada e corrija os erros.
Dexter
Visitante
« Responder #6 : 12 de Dezembro de 2013, as 21:54:32 »

O principio de funcionamento é o mesmo, a diferença é que você vai conectar somente 4 pinos do uC. Com 4 pinos/bits temos valores de 0 a 15 (0  a F), mas o BCD só reconhece os dez primeiros valores, portanto somente números.

Os "valores" são ligados aos pinos de entrada do BCD, você deve ligar (através de software) cada um dos dígitos por vez em alta velocidade (10 ms, por exemplo) assim você terá a impressão de estarem todos ligados.

Outra forma é você usar 4 bits menos significativos para representar a unidade e os 4 bits mais significativos para representar a dezena.
Nos dois casos converta o valor hexa para decimal de 2 bytes, mostre um valor por vez se usar o primeiro tipo de conexão (alternar os valores do display), ou rotacione 4 bits para esquerda o valor da dezena e faça lógica OU com a unidade e jogue para a porta, se estiver usando os 8 pinos de uma porta para ligar os BCDs.

A rotina de conversão Hexa/Decimal já existe por aí.

Esquema

http://www.cheers4all.com/2012/02/dsiplaying-two-bcd-on-one-port-of-pic16f877-2/


Rotina

http://www.piclist.com/techref/microchip/math/radix/index.htm
Registrado
otton
Freqüente
**
Offline Offline

Sexo: Masculino
Mensagens: 362

Obrigado
-Dado: 258
-Recebido: 45


rock in roll


« Responder #7 : 13 de Dezembro de 2013, as 08:42:33 »

valeu Dexter Legal!
vou tentar aqui o trabalho e pra ser entregue na terça
ate la eu consigo vou ver se consigo gravar e mostra aqui
abraços
Registrado
otton
Freqüente
**
Offline Offline

Sexo: Masculino
Mensagens: 362

Obrigado
-Dado: 258
-Recebido: 45


rock in roll


« Responder #8 : 23 de Dezembro de 2013, as 22:45:45 »

Salve salve galera
venho informar que o projeto funcionou  Palmas
obrigado a todos que me ajudaram
Registrado
Páginas: [1]   Ir para o Topo
  Imprimir  
 
Ir para:  


Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines

XHTML 1.0 Válido! CSS Válido! Dilber MC Theme by HarzeM
Página criada em 0.039 segundos com 23 procedimentos.
SimplePortal 2.3.3 © 2008-2010, SimplePortal