Pesquisar

AFSmartRadio Tranceiver 915Mhz Lora

AFSmartRadio Tranceiver 915Mhz Lora Módulo AFsmart Lora V1.0 montado Arduino Pro-Mini e Rádio Rf4463PRO A Internet das coisas (...

Interface LCD16x2 com PIC18F4550 - AFSmart Board

AFSmart PIC 18F4550




Interface LCD16x2 com módulo AFSmart PIC18F4550
Introdução

LCDs (Liquid Crystal Displays) são usados ​​para exibir status ou parâmetros em sistemas embarcados.


O LCD 16x2 é uma dessas opções possui 16 pinos sendo que possui 8 pinos de dados (D0-D7) e 3 pinos de controle (RS, RW, EN). Os 5 pinos restantes são para fornecimento e luz de fundo para o LCD.

Os pinos de controle ajudam a configurar o LCD no modo de comando ou no modo de dados. Possibilitam também a configurar o modo de leitura ou modo de gravação e também quando ler ou gravar.

O LCD 16x2 pode ser usado no modo de 4 bits ou no modo de 8 bits, dependendo do requisito da aplicação. Para usá-lo, é necessário enviar certos comandos para o LCD no modo de comando e uma vez que o LCD é configurado de acordo com a nossa necessidade, podemos enviar os dados necessários no modo de dados.

Exemplo de Conexão Configuração 4 Bits:


Material Utilizado, clique no item para ser direcionado à loja:

Para desenvolvimento desta aplicação utilizamos o módulo AFSmartBoar com o Pic18F4550
O interessante deste módulo é que ele facilita muito o desenvolvimento de qualquer aplicação uma vez que ela possui bootloader integrado, ou seja você pode enviar sua aplicação para o módulo usando a entrada USB.

A placa possui entrada USB como mencionado para envio da aplicação.
Possui Entrada para fonte de até 12V e o interessante possui chaveamento automático, da alimentação USB/Fonte

Possui no barramento ainda 3v3 para alimentação de sensores do tipo acelerômetro,bussolas, etc. deve se tomar o cuidado somente com a corrente do que ligar neste pino pois a corrente fornecida é baixa, mas já é por si só uma excelente opção com relação aos módulos concorrentes.

É possível caso queira, mas não sendo necessário, utilizar gravadores externos um exemplo interessante são os PICKit2 ou PICKit3 sem fazer nenhum malabarismo pois possui entrada para conexão direta desses equipamentos de debug.

Há também no meio do módulo um footprint para se soldar um sensor de temperatura modelo DS18B20, ou seja é uma placa diferenciada devido à suas possibilidades.


Programação LCD16x2 com PIC18F4550 

Exemplo desenvolvido e compilado no IDE MickroC Versão 6.6.1
/****************************************************************
Placa Desenvolvimento AFSmartBoard PIC18F4550
Descrição: Mostra Mensagem no LCD 16x2 controlador padrão HD44780, comunicação com LCD no modo "4 bits" usando DB4 à DB7 p/ dados

Detalhes Importantes sobre a Placa e self programming USB:
  • devido ao Bootloader-self programming USB - ocupar do endereço 0x0000 ao 0x0FFF, o programa/ código
  • deverá começar sempre à partir do endereço 0x1000
  • Devido ao Uso com USB o Clock do PIC está em 48MHz, considerar este quando calculando baud, delays, etc.
  • Configurações de IOs e gerais de hardware estão na função AFSmartBoard_Init

Ligações: LCD no PORTB
Pino Placa        Pino LCD
RB0 ------------ 11 (DB4)
RB1 ------------ 12 (DB5)
RB2 ------------ 13 (DB6)
RB3 ------------ 14 (DB7)
RB4 ------------ 6  (EN)
RB5 ------------ 4  (RS)
GND----+         5
(RW)+            1  (Gnd)
+5V-----          2  (Vdd)
Trimpot--------- 3  (Vo)

REV.0 - ABR/2019

Notas: usando programa acima endereço 0x1000  - compatibilidade BootLoader USB
***********************************************************************************************************************************/

#pragma orgall 0x1000

#define  AFSmartBoard_str lcd_out


sbit LCD_RS at RB5_bit;
sbit LCD_EN at RB4_bit;      // CONFIGURAÇAO DOS PINOS DE LCD
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;

sbit LCD_RS_Direction at TRISB5_bit;              // DIREÇAO DOS PINOS DO LCD
sbit LCD_EN_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB0_bit;

char MsgWelcome1 [] = " AFSMARTBOARD   ";
char MsgWelcome2 [] = " PIC 18F4550    ";

char MsgWelcome3 [] = "  Iniciando...  ";
char MsgWelcome4 [] = "   - 2019 -     ";
char MsgWelcome5 [] = "    Teste       ";
void AFSmartBoard_Init (void);
void Delay_LED (void);
int i;

void main (void) org 0x1000
{

        AFSmartBoard_Init();                // inicia placa

       lcd_init ( );
       lcd_cmd (_LCD_CLEAR);
       lcd_cmd (_LCD_CURSOR_OFF);

       while (1)
       {
       AFSmartBoard_str (1,1, MsgWelcome3 );
       DELAY_MS (500);
       AFSmartBoard_str (2,1, MsgWelcome4 ) ;
       Delay_ms (500);
       LCD_cmd (_LCD_CLEAR);

       AFSmartBoard_str (1,1, MsgWelcome1 );
       DELAY_MS (500);
       AFSmartBoard_str (2,1, MsgWelcome2 ) ;
       Delay_ms (500);
       AFSmartBoard_str (3,1, MsgWelcome5 ) ;
       Delay_ms (500);


        PORTA.RA4 = 1;

        for (i=0;i<15;i++)
        {
                // alterna LEDs
                PORTA.RA4 ^= 1; // ALTERNA O LED CONECTADO AO PINO RA4
                PORTA.RA5 ^= 1; // ALTERNA O LED CONECTADO AO PINO RA5
                Delay_ms (120);
        }

        while (1)  // ficará preso aqui indefinidamente, a ideia foi mostrar a escrita no display
        {
                // alterna LEDs
                PORTA.RA4 ^= 1;  // ALTERNA O LED CONECTADO AO PINO RA4
                PORTA.RA5 ^= 1;  // ALTERNA O LED CONECTADO AO PINO RA5
                Delay_ms (500);

        }


}

}

void AFSmartBoard_Init (void)
{
        RCON = 0X80;                                // LIMPA REGISTRO DE RESET
        ADCON1 = 0x0F;                          // CONFIGURA TODAS AS PORTAS ANALOGICAS COMO I/O

        CMCON = 0x0F;                            // DESABILITA COMPARADOR

        T0CON = 0b11000101;                // timer ativo, 8 bits,clock interno, preescale 1:64

        TRISA = 0;
        TRISB = 0;                                  // todos Saida
        TRISC = 0;
        TRISD = 0;
        TRISE = 0;

        PORTA = 0;                                // nível 0 saída
        PORTB = 0;
        PORTC = 0;
        PORTD = 0;
        PORTE = 0;


}

Para baixar manual do Módulo AFSmart

Como enviar o código para o Módulo AFSmart
A forma de entrar no modo boot do módulo AFSmart é como se segue:
Segura os dois botões prescionados.
Solta o botão Reset
Solta o Botão RA3
Pronto o módulo irá se conectar ao programa de boot 
Pronto, agora basta enviar sua aplicação...

Assista ao vídeo para verificar o procedimento.