Ajuda com código C para Display 20x4 - Mikroc ver.8.2

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Ajuda com código C para Display 20x4 - Mikroc ver.8.2

Mensagempor bruno_eletronica » 17 Out 2014 23:00

Sou ultra novo neste fórum assim também como em programação de PICs, percebi que aqui em comparação a outros fóruns o conhecimento na área de programação é muito grande, diante disso realizei meu cadastro afim de aprender sobre programação e também para ajudar quando souber de algo. Pois bem, meu problema é:

• Não consigo de forma alguma escrever na segunda linha do display 20x4.

Escrevi o seguinte código Compilador Mikroc versão 8.2 : (Sim é o mais visto por todos que tem o mesmo problema que eu) tenso
cpp code
void main ()
{
trisd = 0; // Configura todos os pinos do portd como saida
trise = 0; // Configura todos os pinos do portd como saida
ADCON1 = 0x06; // Configura todos os pinos de A/D como I/O de uso Digital
lcd8_config (&porte, &portd,2,1,0,7,6,5,4,3,2,1,0);
lcd8_cmd (lcd_clear);
lcd8_cmd (lcd_cursor_off);
lcd8_out (1,1, "Primeiro Prog");
delay_ms(10);
lcd8_out(2,1,"No LCD");
while(1);
}


Encontrei muito material bom explicando como resolver este problema, mas todos usando comandos em C que são diferentes do que meu compilador usa, (abaixo os link que encontrei mas não aprendi).

http://www.mcu.net.br/phpbb/viewtopic.p ... x4#p110600
http://www.mcu.net.br/phpbb/viewtopic.p ... 86&p=57691

Ou seja alguém poderia me explicar o que devo colocar no lugar do comando lcd8_out(2,1,"No LCD"); para que apareça o que eu quero nesta linha, se sim por favor me explique.

Obs.: Caso eu tenha feito alguma coisa de errado ao tentar realizar minha pergunta, adianto minhas desculpas, pois é a primeira vez que uso essa ferramenta de pesquisa e estudo.
bruno_eletronica
Bit
 
Mensagens: 10
Registrado em: 17 Out 2014 21:40

Re: Ajuda com código C para Display 20x4 - Mikroc ver.8.2

Mensagempor andre_luis » 18 Out 2014 12:14

Olá Bruno,


Olha, a primeira dica que te passo é tentar saber fuçando na biblioteca do programa, qual é o controlador do LCD usado. Acredito que seja o HD44780 que é o mais comum. E se for esse, realmente eles fazem algo esquisito no mapeamento da posição dos caracteres.

A propósito, voce não está inicializando o display, que deve ser feito executando a função Lcd_Init() antes das demais.
Também não encontrei esses comandos lcd8_xxx na biblioteca LCD do MikroC:

http://www.mikroe.com/download/eng/docu ... ibrary.htm
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Ajuda com código C para Display 20x4 - Mikroc ver.8.2

Mensagempor bruno_eletronica » 18 Out 2014 12:45

André, boa tarde.

Obrigado pela sua atenção.

Bom estou desde ontem lendo tudo sobre este mikroc (e de um amigo ele me emprestou o not para eu começar a aprender, e como não tenho dimdim no momento para comprar uma licença estou usando o compilador dele). :cry:

Mas voltando a falha, depois de ler muitas coisas aki conseguir resolver a falha usando o seguinte código:

cpp code
void main() {
TRISB = 0;
Lcd_Init(&PORTB);
Lcd_Cmd(Lcd_CLEAR);
Lcd_Cmd(Lcd_CURSOR_OFF);
Lcd_Out(1, 1, "teste");
Lcd_Out(2, 1, "teste");
Lcd_Out(3, 1, "teste");
Lcd_Out(4, 1, "teste");
}


Mas agora estou com outro problema, :x o alinhamento, conforme escrito acima era para a palavra teste ficar uma abaixo da outra mas isso so ocorre nas linhas 1 e 2, a 3 e 4 ficam quase centralizadas.

Ex:
*/teste/////////////////*
*/teste/////////////////*
*///////teste///////////*
*///////teste///////////*


Você já viu isso ocorrer?
bruno_eletronica
Bit
 
Mensagens: 10
Registrado em: 17 Out 2014 21:40

Re: Ajuda com código C para Display 20x4 - Mikroc ver.8.2

Mensagempor bruno_eletronica » 18 Out 2014 13:00

André, esqueci de dizer sobre esta biblioteca.

Bom ela existe mas como este compilador é antigo, acredito que nas versões mais novas do mikroc a biblioteca deva ter sido modificada.

Link do manual mikroc falando deste comando:

Da um Ctrl+f e cole isso:

Lcd8 library (8-bit interface)

http://www.mikroe.com/pdf/mikroc/mikroc_manual.pdf
bruno_eletronica
Bit
 
Mensagens: 10
Registrado em: 17 Out 2014 21:40

Re: Ajuda com código C para Display 20x4 - Mikroc ver.8.2

Mensagempor andre_luis » 18 Out 2014 14:11

Bruno,


Pra ser franco, não sei o motivo, mas deve ter algo haver com a esquisitiçe do mapeamento do LCD que comentei mais acima. Pode ser que o Display que voce tá usando tenha alguma diferença. Também pode estar relacionado ao fato de que após escrito o texto teste, o cursor teria avançado 5 posições, sendo a próxima a 6a posição, e pra retornar teria de retroceder 6 posições.

De qualquer modo, baseado no link do MikroC dessa biblioteca, eu tentaria resolver da seguinte forma:

cpp code
Lcd_Out(1, 1, "teste");
Lcd_Out(2, 1, "teste");
/////////////////////////////////////////////////////////////////
char i;
for (i=0; i<7; i++) {
Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
Delay_ms(500);
}
/////////////////////////////////////////////////////////////////
Lcd_Out(3, 1, "teste");
Lcd_Out(4, 1, "teste");
}

Ou então algo assim:

cpp code
Lcd_Out(1, 1, "teste");
Lcd_Out(2, 1, "teste");
/////////////////////////////////////////////////////////////////
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR); // Clear display
/////////////////////////////////////////////////////////////////
Lcd_Out(3, 1, "teste");
Lcd_Out(4, 1, "teste");
}
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Ajuda com código C para Display 20x4 - Mikroc ver.8.2

Mensagempor bruno_eletronica » 18 Out 2014 15:35

André, boa tarde.

Obrigado por sua atenção.

Graças ao seu retorno, consegui resolver o problema :D :D :D :D .

O problema de alinhamento era o display não o código , não sei porque cargas d'agua, esse trem tava assim. Troquei o display e funcionou. (Pelo mesmo modelo)

Obs.: Fiz um teste usando as linhas de comando que vc descreveu ai, e vi que as bibliotecas que uso são um pouco diferentes, tipo:

Para que eu possa usar o comando "Lcd_Cmd(_LCD_CLEAR);" tenho que tirar o underline, ficando assim: Lcd_Cmd(LCD_CLEAR);. :? :D

Bom de qualquer forma foi bom pois vi muita coisa nova e que tenho que aprender muitoooooooooooo.

Valeu pela força.

Problema resolvido
bruno_eletronica
Bit
 
Mensagens: 10
Registrado em: 17 Out 2014 21:40

Re: Ajuda com código C para Display 20x4 - Mikroc ver.8.2

Mensagempor andre_luis » 18 Out 2014 15:43

Fico feliz que tenha conseguido resolver, e tenha ajudado de alguma forma...
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Ajuda com código C para Display 20x4 - Mikroc ver.8.2

Mensagempor Silvio51 » 22 Out 2014 17:43

Bruno...sei que você já esolveu a questão...porém verificar no cód. que postou abaixo, você escreve no LCD na mesma função (Main) que configura pinos e LCD.
Ou seja, você limpa o LCD aí escreve nele...em seguida (microsegundos) o loop main se encarrega de fazer tudo de novo...nada vai aparever no Lcd.

Código: Selecionar todos
void main() {
  TRISB = 0;
  Lcd_Init(&PORTB);
  Lcd_Cmd(Lcd_CLEAR);
  Lcd_Cmd(Lcd_CURSOR_OFF);
  Lcd_Out(1, 1, "teste");
  Lcd_Out(2, 1, "teste");
  Lcd_Out(3, 1, "teste");
  Lcd_Out(4, 1, "teste");
  }


Coloca os Cód. de escrita em outro loop...ou então inicia o loop após a configuração do Lcd...algo como isto abaixo:

Código: Selecionar todos
void main() {
  TRISB = 0;
  Lcd_Init(&PORTB);
  Lcd_Cmd(Lcd_CLEAR);
  Lcd_Cmd(Lcd_CURSOR_OFF);
 for (;;) {
  Lcd_Out(1, 1, "teste");
  Lcd_Out(2, 1, "teste");
  Lcd_Out(3, 1, "teste");
  Lcd_Out(4, 1, "teste");
           }
  }


É calro que seria só um teste, pois do contrário o loop fica escrevendo infinitamente nos mesmos endereços do Lcd.
Silvio51
Byte
 
Mensagens: 383
Registrado em: 02 Nov 2006 14:04
Localização: Brasil


Voltar para PIC

Quem está online

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

x