-
Posts
6 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que carrer postou
-
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.
-
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.
-
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
-
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); } }
-
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
-
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