MikroC

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

MikroC

Mensagempor DU, DUDU,EDU » 10 Jul 2011 12:18

Oi pessoal, estou tentando fazer uma programação para comunicação com LCD usando o MikroC mas não estou conseguindo, estou usando o exemplo que vem junto com a biblioteca do mikroC, mas não esta dando certo.
// LCD module connections
sbit LCD_RS at RB3_bit;
sbit LCD_EN at RB0_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB3_bit;
sbit LCD_EN_Direction at TRISB0_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End LCD module connections

char txt1[] = "mikroElektronika";
char txt2[] = "EasyPIC5";
char txt3[] = "Lcd4bit";
char txt4[] = "example";

char i; // Loop variable

void Move_Delay() { // Function used for text moving
Delay_ms(500); // You can change the moving speed here
}

void main(){
TRISB = 0;
PORTB = 0xFF;
TRISB = 0xff; // Configure AN pins as digital I/O
Lcd_Init(); // Initialize LCD

Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,6,txt3); // Write text in first row

Lcd_Out(2,6,txt4); // Write text in second row
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR); // Clear display

Lcd_Out(1,1,txt1); // Write text in first row
Lcd_Out(2,5,txt2); // Write text in second row

Delay_ms(2000);

// Moving text
for(i=0; i<4; i++) { // Move text to the right 4 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}

while(1) { // Endless loop
for(i=0; i<8; i++) { // Move text to the left 7 times
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}

for(i=0; i<8; i++) { // Move text to the right 7 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
}
}
se alguem puder me ajudar, vlww!!!
DU, DUDU,EDU
Bit
 
Mensagens: 19
Registrado em: 08 Jun 2011 16:13

Re: MikroC

Mensagempor andre_luis » 10 Jul 2011 12:49

Eduarrdo,


Coloca aqui também o circuito e diz qual é o erro que está ocorrendo.
Pra começar a tentar alguma coisa : Tentou ajustar a tensão no potenciometro ligado ao pino 3 do LCD para algo entre 0 e 0,7v ?



Dica : Quando postar o código, coloca entre cotas
Código: Selecionar todos
xxxxx



+++
"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: MikroC

Mensagempor DU, DUDU,EDU » 10 Jul 2011 14:28

Voltou te mandar o esquema q fiz no proteus pra simular.
O programa compila sem aparecer a mensagem de erro, mas na hora q rodo ele no proteus, não aparece nenhuma mensagem no display, qd compilei o arquivo hex. ficou com 3KB, como uso a versão demo, e esta suporta até 2KB, seria este o problema.[/img][/url][/code][/list]
DU, DUDU,EDU
Bit
 
Mensagens: 19
Registrado em: 08 Jun 2011 16:13

Mensagempor mastk » 10 Jul 2011 16:02

Pode ser limitacao do seu ambiente de desenvolvimento, mas 3K para um codigo desse tamanho eh muito, talvez as bibliotecas que vc esta usando sejam muito maiores do que vc precissa.

Nao sei se eh por causa do forum, mas identacao no codigo ajuda muito a leitura.

Nao sei o pq, desses moves "right" e "left", normalmente vc endereça uma possicao no display manda tudo os caracteres que deseja.[/code]
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Re: MikroC

Mensagempor andre_luis » 10 Jul 2011 18:51

O problema é que na versão Demo, a funcionalidade de otimização do código não existe, podendo gerar realmente arquivos Hexa extensos.
"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

Mensagempor Andre_Cruz » 11 Jul 2011 08:49

DU,DUDU,EDU

Seja vem bem vindo !

Eu também comecei mexer com mikroC agora, eu uso o mikroC 8.2 no help dele tem um exemplo de como usar a biblioteca do lcd comunicando em 4 vias, no exemplo ele segue uma sequência de passos:
Código: Selecionar todos
char *text = "mikroElektronika"; //TEXTO A SER EXIBIDO

void main() { //ROTINA PRINCIPAL
  TRISB = 0;                // CONFIGURA O PORTB TODO COMO SAÍDA
  Lcd_Init(&PORTB);         // INICIALIZA O LCD E INDICA PARA A FUNÇÃO QUE O LCD ESTA LIGADO NO PORTB
  Lcd_Cmd(Lcd_CLEAR);       // COMANDO PARA LIMPAR O LCD
  Lcd_Cmd(Lcd_CURSOR_OFF);  // COMANDO PARA DESLIGAR O CURSOR
  Lcd_Out(1, 1, text);      // ESCREVE O TEXTO "mikroElektronika" NA LINHA 1 E COLUNA 1
}//~!


No seu programa dei uma olhada rápida na chamada da função "Lcd_Init" você não passou o parâmetro pode ser o "pobrema", e a configuração do PORTB de seu programa esta um pouco confusa:

Código: Selecionar todos
void main(){ //ROTINA PRINCIPAL
TRISB = 0; //CONFIGURA O PORTB TODO COMO SAÍDA
PORTB = 0xFF; //LIGA TODOS OS PINOS DO PORTB
TRISB = 0xff; // CONFIGURA O PORTB TODO COMO ENTRADA
Lcd_Init(); // AQUI FALTA O PARÂMETRO !!! TENTE Lcd_Init(&PORTB);


Tente configurar o PORTB como saída e não como entrada, retire ou comente a linha //TRISB = 0xff; e deixe a linha TRISB = 0;

Mande notícia quando resolver ser de exemplo para outros usuários do fórum.

Abraço
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor DU, DUDU,EDU » 11 Jul 2011 17:55

Olá André,
fiz o que vc flo, mudei todo o portb para 0
no esquema que fiz no proteus tbm tinha um erro, esqueci de jogar o pino R/W para terra. Apos as mudanças, o programa rodou certinho!!
Agradeço muito a ajuda de vcs!!!
vlw!![/code]
DU, DUDU,EDU
Bit
 
Mensagens: 19
Registrado em: 08 Jun 2011 16:13


Voltar para PIC

Quem está online

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

x