Ir ao conteúdo

Programação Pic


SamuelFreitas

Posts recomendados

Postado

Olá amigos, eu sou estudante de eletrônica, não manjo muito de programação..

Mas estou executando um projeto com pic 18f4520 e display 16x02, a simulação no proteus é "quase" que normal, pois o display liga, mas não aparece uma mensagem pré definida na programação... Vocês poderiam, por favor corrigir essa programação, compilada pelo mikro C?

// Conexões LCD
sbit LCD_EN at RD0_bit;
sbit LCD_RS at RD1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD1_bit;
sbit LCD_EN_Direction at TRISD0_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
// End LCD module connections
char txt1[] = "Microcontrolador";
char txt2[] = "18F452";
char txt3[] = "LCD 4 bits";
char txt4[] = "Exemplo";
char i; // Variável de Loop29
void Move_Delay() { // Função usada para movimento do Texto
Delay_ms(500); // Velocidade do Movimento
}
void main(){
trisd=0;
Lcd_Init(); // Initializa LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,5,txt3); // Escreve texto na 1° linha
Lcd_Out(2,6,txt4); // Escreve texto na 2° linha
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Out(1,1,txt1); // Escreve texto na 1° linha
Lcd_Out(2,6,txt2); // Escreve texto na 2° linha
Delay_ms(2000);
// Movimento do Texto
for(i=0; i<4; i++) { // Move o texto para a direita 4x
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
while(1) { // loop
for(i=0; i<8; i++) { // Move o texto para a esquerda 7x
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}
for(i=0; i<8; i++) { // Move o texto para a direita 7x
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
}
}

Desde já obrigado a todos!

Postado

Para utilizar display com o 18F, deve-se utilizar os Latchs.

O endereçamento correto seria:

sbit LCD_RS at LATD0_bit; // for writing to output pin always use latch (PIC18 family)

sbit LCD_EN at LATD1_bit; // for writing to output pin always use latch (PIC18 family)

sbit LCD_D4 at LATD4_bit; // for writing to output pin always use latch (PIC18 family)

sbit LCD_D5 at LATD5_bit; // for writing to output pin always use latch (PIC18 family)

sbit LCD_D6 at LATD6_bit; // for writing to output pin always use latch (PIC18 family)

sbit LCD_D7 at LATD7_bit; // for writing to output pin always use latch (PIC18 family)

sbit LCD_RS_Direction at TRISD0_bit;

sbit LCD_EN_Direction at TRISD1_bit;

sbit LCD_D4_Direction at TRISD4_bit;

sbit LCD_D5_Direction at TRISD5_bit;

sbit LCD_D6_Direction at TRISD6_bit;

sbit LCD_D7_Direction at TRISD7_bit;

Poste o resultado. :D

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!