Ir ao conteúdo
  • Cadastre-se

carrer

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

  1. ola pessoal. Eu estava programando parte a parte o meu projeto e copilando e testanto no proteus cada uma dessas partes. De repente o proteus nao respondeu como o esperado, então comecei a procurar o erro no meu programa e me deparei com isso no final da copilaçao: "Warning: C:/Users/Aluno/Desktop/carrer/testeLCD/myproduction.X/dist/default/production/myproduction.X.production.hex contains code that is located at addresses that do not exist on the PIC18F2550." Pra ser franco eu nao sei se isso ja estava la antes e eu so reparei agora porque estava procurando um erro, mas talvez esteja relacionado com meu problema. Alguem sabe possiveis erros que podem ter causado isso? Detalhe: o MPLABX (copilador que eu estou usando) nao esta acusando nada! ele apenas diz isso no final do programa como se fosse um aviso, mas nao um erro.
  2. bom, se alguem encontrar esse topico e quiser outra resposta, consegui outra solução que foi mais simples do que inverter o codigo. Eu criei 3 variaveis (meu meu numero chegaria no maximo ate a casa das centenas, se não eu poderia criar mais) para associar a variavel "teclado" a cada uma num dado momento, para determinar quando a variavel seria associada a cada uma eu criei mais uma variavel (agora estamos lidando com 5 variaveis. tecla, as 3 para as casas decimais e mais uma que sera implementada.) que sera implementada toda vez que ocorrer a varredura, desta forma na primeira varredura "tecla" sera adicionada a casa das centenas, na segunda a casa das dezenas e na terceira a casa das unidades. no programa eu chamei as variaveis das casas de centena, dezena e unidade respectivamente de "frst", "scnd" e "thrd" e a variavel que sera implementada de "imp". aqui esta o final da varredura: imp = imp + 1; if(imp == 1) { frst == tecla; } else { if(imp == 2) { scnd = tecla; } else { if(imp == 3) { thrd = tecla; } else { if(imp > 3); { imp = 0; } } } } depois disso as variaveis frst, scnd e thrd devem ser associadas a cada casa decimal de uma nova variavel, isso pode ser feito utilizando multiplicaçao com base 10. segue o exemplo: frst = 6(centena) scnd = 9(dezena) thrd = 5(unidade) processo: variavel = frst x 10^2 variavel = variavel + scnd x 10^1 variavel = variavel + thrd x 10^0 //variavel passará a valer 695 (numero escolhido aleatoriamente glr) "variavel" então sera o conjunto dos numeros colocados em suas determinadas casas decimais, ou seja, o mesmo número que apareceu no meu LCD. Se alguem mais tinha essa duvida e estava procurando uma solução mais simples que inverter o codigo, ai esta. Desculpa ter feito uma resposta estão longa, mas acho que ficou bem explicadinho, qualquer duvida só perguntar! obrigado de novo Isadora por fornecer a outra solução.
  3. obrigado! depois da sua primeira resposta comecei a pensar em fazer o contrario. Acho que vou mudar minha varredura, é bom que já exploro e aprendo um pouco mais. Se tiver mais alguma duvida eu pergunto. E se alguem mais souber outra maneira de armazenar a variavel completa, pode falar que eu ainda to curioso! haha obrigado Isadora, foi de grande ajuda
  4. acho que entendi o que voce disse. Vou mandar a parte de varredura do teclado, no caso, a variável associada ao numero se chama "tecla", porém ela serve apenas para a digitaçao do numero, ou seja, no momento em que eu teclo um número ele sera associado a essa variavel para que apareça no LCD, mas quando teclo um novo numero este novo fica associado a variavel para aparecer no LCD. O que eu preciso é de uma variavel que contenha o conjunto dos numeros, ou seja, se eu teclar "123" a variavel "tecla" estara associada a cada um apos a digitaçao apenas para que apareça no LCD, mas nçao há variavel associada aos tres numeros juntos "123". A proposito, esta em C haha void varreduraTeclado() { // varredura da primeira coluna E = 0; F = 1; G = 1; // varredura das linhas if (A == 0) { tecla = '1'; escreveLCD(tecla, 1); } else { if(B == 0) { tecla = '4'; escreveLCD(tecla, 1); } else { if(C == 0) { tecla = '7'; escreveLCD(tecla, 1); } else { if(D == 0) { tecla = '*'; escreveLCD(tecla, 1); } } } } // varredura da segunda coluna E = 1; F = 0; G = 1; // varredura das linhas if (A == 0) { tecla = '2'; escreveLCD(tecla, 1); } else { if(B == 0) { tecla = '5'; escreveLCD(tecla, 1); } else { if(C == 0) { tecla = '8'; escreveLCD(tecla, 1); } else { if(D == 0) { tecla = '0'; escreveLCD(tecla, 1); } } } } // varredura da terceira coluna E = 1; F = 1; G = 0; // varredura das linhas if (A == 0) { tecla = '3'; escreveLCD(tecla, 1); } else { if(B == 0) { tecla = '6'; escreveLCD(tecla, 1); } else { if(C == 0) { tecla = '9'; escreveLCD(tecla, 1); } else { if(D == 0) { tecla = '#'; escreveLCD(tecla, 1); escreveLCD(0x01, 0); } } } } // debouncing for(unsigned char i = 0; i < 5; i++) { __delay_ms(50); } }
  5. hoje me deparei com um problema na programaçao do meu PIC que eu acho que é bem simples, por isso até não há topicos sobre ele... Preciso digitar num teclado matricial 3x4, o numero digitado aparece num lcd 16x2 e tambem tem que ficar salvo no pic. O numero ja esta aparecendo no lcd, o que acho que é a parte mais difícil, mas não sei como salvar ele em uma variavel para utilizar no resto do programa. Estou usando PIC 18F2550 copilador MPLABX. Agradeço desde já, e se quiser posso mandar partes da programaçao ja feita. Grato
  6. bom, eu sei que é meio tarde mas talvez outra pessoa esteja interessada nisso e encontre esse topico vazio. Aqui vai um link que pode ajudar, o cara usou o mesmo pic para mostrar as teclas apertadas em um teclado matricial num LCD. http://pk2lab.blogspot.com.br/2012/04/teclado-matricial.html

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!