HOMENAGEM
† 12 de março de 2016
Quem está conectado?
Há 169 usuários online :: 0 registrados, 0 invisíveis e 169 visitantes :: 1 motor de buscaNenhum
O recorde de usuários online foi de 362 em Sex 9 Abr 2021 - 22:11
Últimos assuntos
Top dos mais postadores
Rafael Silveira (7816) | ||||
Caca Silva (6057) | ||||
renatoscp (3891) | ||||
CMeletronica (3234) | ||||
michel chagas (2791) | ||||
Railson (2119) | ||||
alexsandro rodrigues de a (1835) | ||||
naldo santos (1625) | ||||
ablacon64 (1222) | ||||
gilvantexas (1061) |
Tópicos semelhantes
Medidor de Velocidade
Conectando um Módulo lcd 16 X 2 ao PIC16F876A
2 participantes
Página 1 de 1
Conectando um Módulo lcd 16 X 2 ao PIC16F876A
Interface módulo lcd 16 X 2 utilizando o PIC16F876A:
Um tempo atrás um amigo do fórum fez uma sugestão por MP, como fazer uma interface utilizando um módulo 16 X 2 conectado ao PIC16F876A que seria o irmão do meio do PIC16F877A. Através do circuito montado fazer um exibição de mensagens personalizadas ao módulo lcd.
Então resolvi postar para todos uma esquemático seguido de quatro exemplos de códigos, cujo os códigos começam desde do mais simples até chegarmos ao mais complexo, tudo isso para uma melhor elucidação do assunto.
Configuração do circuito é 4 bits...
Esquemático em PDF:
Copie e cole no navegador...
TROCAR ** POR tt e TROCAR *** POR www
h**p://***.4shared.com/office/nnCjqWv0ce/LCD_MODULE_16_X_2_PIC16F876A.html
___________________________________________________________________
Não vou entrar em detalhes como criar um projeto no MikroC PRO, pois já foi bem detalhado no link abaixo.
https://eletronicasilveira.forumeiros.com/t5325-estudos-pwm-em-microcontroladores-parte-i
Abaixo seguem os quatro exemplos de código para serem compilados no MikroC PRO.
Exemplo - I:
Exemplo - II:
Exemplo - III:
Exemplo - IV:
Detalhes importante:
Não esqueçam de adicionar às nossas bibliotecas : LCD & LCD_CONSTANTS.
- Sem elas adicionadas o compilador não vai compilar o código.
- Para adicioná-las, clique em ( Library Manager ) que se localiza à direita, logo em seguida marque estas duas bibliotecas.
Não esqueçam também de configurar os ( fuses bits ) corretamente, caso contrário os códigos compilados não vão funcionar na prática.
Abaixo temos uma imagem com os parâmetros corretos em seus seletores, certifica-se que estar correto como exibido na imagem abaixo.
.
Caso o participante desejar optar por utilizar um cristal de clock de 8Mhz na prática, será necessário mudar na configuração dos ( fuses bits ). Para mudança você deverá clicar em ( Project > Edit Project ) localizado na aba superior do compilador.
- Logo em seguida aparecerá uma tela semelhante da imagem acima.
- Modifique o valor na caixa ( Oscillator Frequecy Mhz ) -> ( 4.000000 ) por ( 8.000000 ).
- Clique em OK.
- Logo em seguida faça uma nova compilação do código.
Com isso finalizamos o assunto, com modificações no código é possível uma adaptação em outros microcontroladores.
Qualquer coisa estou à disposição...
Boa sorte a todos...
Sds Anderson M
Um tempo atrás um amigo do fórum fez uma sugestão por MP, como fazer uma interface utilizando um módulo 16 X 2 conectado ao PIC16F876A que seria o irmão do meio do PIC16F877A. Através do circuito montado fazer um exibição de mensagens personalizadas ao módulo lcd.
Então resolvi postar para todos uma esquemático seguido de quatro exemplos de códigos, cujo os códigos começam desde do mais simples até chegarmos ao mais complexo, tudo isso para uma melhor elucidação do assunto.
Configuração do circuito é 4 bits...
Esquemático em PDF:
Copie e cole no navegador...
TROCAR ** POR tt e TROCAR *** POR www
h**p://***.4shared.com/office/nnCjqWv0ce/LCD_MODULE_16_X_2_PIC16F876A.html
___________________________________________________________________
Não vou entrar em detalhes como criar um projeto no MikroC PRO, pois já foi bem detalhado no link abaixo.
https://eletronicasilveira.forumeiros.com/t5325-estudos-pwm-em-microcontroladores-parte-i
Abaixo seguem os quatro exemplos de código para serem compilados no MikroC PRO.
Exemplo - I:
- Código:
/*
* Lcd Example I Project:
* MikroC v6.0.0
* Copyright (c) Anderson M, 01/02/2015.
* MCU: PIC 16F876A
* Cristal Oscilador Externo: 4.0 Mhz - Modo HS
* Power-up Timer (Habilitado), WDT OFF (Desabilitado)
* Bibliotecas adicionadas: LCD & LCD_CONSTANTS
*/
//******************************************************************************
// Definições de conexões do display LCD
sbit LCD_RS at RC6_bit;
sbit LCD_EN at RC7_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 TRISC6_bit;
sbit LCD_EN_Direction at TRISC7_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;
// Final definições de conexões do display LCD
//******************************************************************************
//******************************************************************************
// Início das definições de mensagens no módulo LCD...
char text1[] = "Hello World...";
char text2[] = "Lcd Example I";
// Final das definições de mensagens no módulo LCD...
void main() { // Função Principal....
//******************************************************************************
//*********** Início das configurações dos registradores TRIS do MCU ***********
//******************************************************************************
TRISB = 0x00; // Configura o PORTB como saída.
TRISC = 0x00; // Configura o PORTC como saída.
PORTB = 0x00; // Inicializa o PORTB em nível lógico ( Zero ).
PORTC = 0x00; // Inicializa o PORTC em nível lógico ( Zero ).
//******************************************************************************
//************ Final das configurações dos registradores TRIS do MCU ***********
//******************************************************************************
//******************************************************************************
//************* Configurações de impressão de mensagens no LCD *****************
//******************************************************************************
Lcd_Init(); // Inicializa o Display LCD.
Lcd_Cmd(_LCD_CLEAR); // Limpar o LCD.
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor desligado.
Lcd_Out(1,3,text1); // Escreve Texto (1) na 1ª fila e 3ª coluna.
Lcd_Out(2,3,text2); // Escreve Texto (2) na 2ª fila e 3ª coluna.
Delay_ms(500); // Aguarda 500 milisegundos.
//******************************************************************************
//********* Final de configurações de impressão de mensagens no LCD ************
//******************************************************************************
} // Final da função principal...
//******************************************************************************
//******************************************************************************
Exemplo - II:
- Código:
/*
* Lcd Example II Project:
* MikroC v6.0.0
* Copyright (c) Anderson M, 01/02/2015.
* MCU: PIC 16F876A
* Cristal Oscilador Externo: 4.0 Mhz - Modo HS
* Power-up Timer (Habilitado), WDT OFF (Desabilitado)
* Bibliotecas adicionadas: LCD & LCD_CONSTANTS
*/
//******************************************************************************
// Definições de conexões do display LCD
sbit LCD_RS at RC6_bit;
sbit LCD_EN at RC7_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 TRISC6_bit;
sbit LCD_EN_Direction at TRISC7_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;
// Final definições de conexões do display LCD
//******************************************************************************
void main() { // Função Principal...
//******************************************************************************
//*********** Início das configurações dos registradores TRIS do MCU ***********
//******************************************************************************
TRISB = 0x00; // Configura o PORTB como saída.
TRISC = 0x00; // Configura o PORTC como saída.
PORTB = 0x00; // Inicializa o PORTB em nível lógico ( Zero ).
PORTC = 0x00; // Inicializa o PORTC em nível lógico ( Zero ).
//******************************************************************************
//************ Final das configurações dos registradores TRIS do MCU ***********
//******************************************************************************
//******************************************************************************
//************* Configurações de impressão de mensagens no LCD *****************
//******************************************************************************
Lcd_Init(); // Inicializa o módulo LCD.
Lcd_Cmd(_LCD_CLEAR); // Limpa o display LCD.
Lcd_Cmd(_Lcd_Cursor_Off); // Desligar o cursor do display LCD.
Lcd_Out(1,1,"Inicializando..."); // Escreve mensagem na 1ª linha e 1ª coluna no módulo LCD.
Lcd_Out(2,1,"Microcontrolador..."); // Escreve mensagem na 2ª linha e 1ª coluna no módulo LCD.
Delay_ms(1000); // Aguardar 1 segundo...
Lcd_Cmd(_LCD_CLEAR); // Limpa o display LCD.
Delay_ms(500); // Aguarda 500 milisegundos...
//******************************************************************************
//********* Final de configurações de impressão de mensagens no LCD ************
//******************************************************************************
while(1) // LOOP Infinito...
{
Lcd_Out(1,1,"** Eletronica **"); // Escreve mensagem na 1ª linha e 1ª coluna no módulo LCD.
Lcd_Out(2,1,"*** Silveira ***"); // Escreve mensagem na 2ª linha e 1ª coluna no módulo LCD.
Delay_ms(1000); // Aguarda 1 segundo...
Lcd_Cmd(_LCD_CLEAR); // Limpa o display LCD.
Lcd_Out(1,3,"LCD MODULE II"); // Escreve mensagem na 1ª linha e 3ª coluna no módulo LCD.
Lcd_Out(2,1,"** Example II **"); // Escreve mensagem na 2ª linha e 1ª coluna no módulo LCD.
Delay_ms(1000); // Aguarda 1 segundo...
} // Final LOOP Infinito...
} // Final da Função Principal...
//******************************************************************************
//******************************************************************************
Exemplo - III:
- Código:
/*
* Lcd Example III Project:
* MikroC v6.0.0
* Copyright (c) Anderson M, 01/02/2015.
* MCU: PIC 16F876A
* Cristal Oscilador Externo: 4.0 Mhz - Modo HS
* Power-up Timer (Habilitado), WDT OFF (Desabilitado)
* Bibliotecas adicionadas: LCD & LCD_CONSTANTS
*/
//******************************************************************************
// Definições de conexões do display LCD
sbit LCD_RS at RC6_bit;
sbit LCD_EN at RC7_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 TRISC6_bit;
sbit LCD_EN_Direction at TRISC7_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;
// Final definições de conexões do display LCD
//******************************************************************************
// Declaração de variáveis globais...
// Definições de mensagens no módulo LCD...
char text1[] = "Inicializando...";
char text2[] = "Microcontrolador...";
char text3[] = "LCD MODULE III";
char text4[] = "** Example III **";
// Final das definições de mensagens no módulo LCD...
void main() { // Função Principal...
//******************************************************************************
//*********** Início das configurações dos registradores TRIS do MCU ***********
//******************************************************************************
TRISB = 0x00; // Configura o PORTB como saída.
TRISC = 0x00; // Configura o PORTC como saída.
PORTB = 0x00; // Inicializa o PORTB em nível lógico ( Zero ).
PORTC = 0x00; // Inicializa o PORTC em nível lógico ( Zero ).
//******************************************************************************
//************ Final das configurações dos registradores TRIS do MCU ***********
//******************************************************************************
//******************************************************************************
//************* Configurações de impressão de mensagens no LCD *****************
//******************************************************************************
Lcd_Init(); // Inicializa o módulo LCD.
Lcd_Cmd(_LCD_CLEAR); // Limpa o display LCD.
Lcd_Cmd(_Lcd_Cursor_Off); // Desligar o cursor do display LCD.
Lcd_Out(1,1,text1); // Escreve Texto (1) na 1ª fila e 1ª coluna.
Lcd_Out(2,1,text2); // Escreve Texto (2) na 2ª fila e 1ª coluna .
Delay_ms(1000); // Aguarda 1 segundo.
Lcd_Cmd(_LCD_CLEAR); // Limpa o display LCD.
Lcd_Out(1,3,text3); // Escreve Texto (3) na 1ª fila e 3ª coluna.
Lcd_Out(2,1,text4); // Escreve Texto (4) na 2ª fila e 1ª coluna.
Delay_ms(1000); // Aguarda 1 segundo.
//******************************************************************************
//********* Final de configurações de impressão de mensagens no LCD ************
//******************************************************************************
while(1) // LOOP Infinito...
{
Lcd_Out(1,1,"** Eletronica **"); // Escreve mensagem na 1ª linha e 1ª coluna no módulo LCD.
Lcd_Out(2,1,"*** Silveira ***"); // Escreve mensagem na 2ª linha e 1ª coluna no módulo LCD.
Delay_ms(1000); // Aguarda 1 segundo...
Lcd_Cmd(_LCD_TURN_OFF); // Apagamento das mensagens....
Delay_ms(1000); // Aguarda 1 segundo...
Lcd_Cmd(_LCD_TURN_ON); // Amostragem das mensagens....
Delay_ms(300); // Aguarda 300 milisegundos...
} // Final LOOP Infinito...
} // Final da Função Principal...
//******************************************************************************
//******************************************************************************
Exemplo - IV:
- Código:
/*
* Lcd Example IV Project:
* MikroC v6.0.0
* Copyright (c) Anderson M, 01/02/2015.
* MCU: PIC 16F876A
* Cristal Oscilador Externo: 4.0 Mhz - Modo HS
* Power-up Timer (Habilitado), WDT OFF (Desabilitado)
* Bibliotecas adicionadas: LCD & LCD_CONSTANTS
*/
//******************************************************************************
// Definições de conexões do display LCD
sbit LCD_RS at RC6_bit;
sbit LCD_EN at RC7_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 TRISC6_bit;
sbit LCD_EN_Direction at TRISC7_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;
// Final definições de conexões do display LCD
//******************************************************************************
// Declaração de variáveis globais...
unsigned char direction = 0; //
// Definições de mensagens no módulo LCD...
char text1[] = "Inicializando...";
char text2[] = "Microcontrolador...";
char text3[] = "LCD MODULE IV";
char text4[] = "** Example IV **";
char text5[] = "** Eletronica **";
char text6[] = "*** Silveira ***";
// Final das definições de mensagens no módulo LCD...
void main() { // Função Principal...
//******************************************************************************
//*********** Início das configurações dos registradores TRIS do MCU ***********
//******************************************************************************
TRISB = 0x00; // Configura o PORTB como saída.
TRISC = 0x00; // Configura o PORTC como saída.
PORTB = 0x00; // Inicializa o PORTB em nível lógico ( Zero ).
PORTC = 0x00; // Inicializa o PORTC em nível lógico ( Zero ).
//******************************************************************************
//************ Final das configurações dos registradores TRIS do MCU ***********
//******************************************************************************
//******************************************************************************
//************* Configurações de impressão de mensagens no LCD *****************
//******************************************************************************
Lcd_Init(); // Inicializa o módulo LCD.
Lcd_Cmd(_LCD_CLEAR); // Limpa o display LCD.
Lcd_Cmd(_Lcd_Cursor_Off); // Desligar o cursor do display LCD.
Lcd_Out(1,1,text1); // Escreve Texto (1) na 1ª fila e 1ª coluna.
Lcd_Out(2,1,text2); // Escreve Texto (2) na 2ª fila e 1ª coluna .
Delay_ms(1000); // Aguarda 1 segundo.
Lcd_Cmd(_LCD_CLEAR); // Limpa o display LCD.
Lcd_Out(1,3,text3); // Escreve Texto (3) na 1ª fila e 3ª coluna.
Lcd_Out(2,1,text4); // Escreve Texto (4) na 2ª fila e 1ª coluna.
Delay_ms(1000); // Aguarda 1 segundo.
Lcd_Cmd(_LCD_CLEAR); // Limpa o display LCD.
Lcd_Out(1,1,text5); // Escreve Texto (5) na 1ª fila e 1ª coluna.
Lcd_Out(2,1,text6); // Escreve Texto (6) na 2ª fila e 1ª coluna.
Delay_ms(1000); // Aguarda 1 segundo.
//******************************************************************************
//********* Final de configurações de impressão de mensagens no LCD ************
//******************************************************************************
while(1) { // LOOP Infinito...
//******************************************************************************
// Instruções para deslocamento da mensagem à direita...
for (direction = 0; direction < 16; direction++)
{
Lcd_Cmd(_LCD_SHIFT_RIGHT); // Deslocamento da mensagem à direita.
Delay_ms(500); // Aguarda 500 milisegundos.
}
//******************************************************************************
//******************************************************************************
// Instruções para deslocamento da mensagem à esquerda...
for (direction = 0; direction < 16; direction++)
{
Lcd_Cmd(_LCD_SHIFT_LEFT); // Deslocamento da mensagem à esquerda.
Delay_ms(500); // Aguarda 500 milisegundos.
}
Delay_ms(500); // Aguarda 500 milisegundo repetição do ciclo.
//******************************************************************************
} // Final LOOP Infinito...
} // Final da Função Principal...
//******************************************************************************
//******************************************************************************
Detalhes importante:
Não esqueçam de adicionar às nossas bibliotecas : LCD & LCD_CONSTANTS.
- Sem elas adicionadas o compilador não vai compilar o código.
- Para adicioná-las, clique em ( Library Manager ) que se localiza à direita, logo em seguida marque estas duas bibliotecas.
Não esqueçam também de configurar os ( fuses bits ) corretamente, caso contrário os códigos compilados não vão funcionar na prática.
Abaixo temos uma imagem com os parâmetros corretos em seus seletores, certifica-se que estar correto como exibido na imagem abaixo.
.
Caso o participante desejar optar por utilizar um cristal de clock de 8Mhz na prática, será necessário mudar na configuração dos ( fuses bits ). Para mudança você deverá clicar em ( Project > Edit Project ) localizado na aba superior do compilador.
- Logo em seguida aparecerá uma tela semelhante da imagem acima.
- Modifique o valor na caixa ( Oscillator Frequecy Mhz ) -> ( 4.000000 ) por ( 8.000000 ).
- Clique em OK.
- Logo em seguida faça uma nova compilação do código.
Com isso finalizamos o assunto, com modificações no código é possível uma adaptação em outros microcontroladores.
Qualquer coisa estou à disposição...
Boa sorte a todos...
Sds Anderson M
Anderson M- Avançado
- Mensagens : 401
Data de inscrição : 07/07/2011
Localização : São Paulo/SP
Re: Conectando um Módulo lcd 16 X 2 ao PIC16F876A
muito bom parabéns !!
maxm3s- Nível 2
- Mensagens : 133
Data de inscrição : 05/05/2012
Idade : 50
Localização : serrra Espirito Santo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|
Ter 23 Abr 2024 - 18:00 por ROLDAO
» LAYOUT DA TIME ONE E OS PDF
Sex 19 Abr 2024 - 20:01 por cristaltec
» PI ITALIANO 6V DETECTOR DE METAL
Qua 10 Abr 2024 - 19:10 por Fardin pezzhan
» DETECTOR DE METAIS IDX-PRO
Sex 5 Abr 2024 - 19:51 por Fardin pezzhan
» Fonte Chaveada 2000W SG3525 & IR2110
Qui 4 Abr 2024 - 12:55 por sandy silva de oliveira
» Todas as revistas CTA VOL 1 A 12 - aproveitem.
Ter 2 Abr 2024 - 22:28 por Rodrigo L Santos
» >>>>>>> Sobre a criação de novos tópicos<<<<<<<<<<<<<<<
Dom 24 Mar 2024 - 16:10 por crisnich
» Defeito intermitente amplificador Ciclotron TIP5000
Qua 20 Mar 2024 - 9:13 por fastaveira
» Esquema Amplificador Audio Leader AL 5.0
Qua 20 Mar 2024 - 9:01 por fastaveira
» MK4000 - FONTE CHAVEADA FULL BRIDGE
Dom 17 Mar 2024 - 18:43 por sandy silva de oliveira
» amplificador class h tailandes
Sex 15 Mar 2024 - 22:41 por mehuysal
» Amplificador Super Strong
Qui 14 Mar 2024 - 13:03 por Reginaldo Silva
» Amplificador Classe D UCD1500
Qua 13 Mar 2024 - 13:07 por Guille
» NS450 - FONTE CHAVEADA PARTE 2
Seg 11 Mar 2024 - 6:55 por ffernand3s
» Amplificador Fonte Simples em teia de aranha
Sex 1 Mar 2024 - 12:17 por Reginaldo Silva