Iniciação ao LCD16X2 ( Parte 3)

Olá!

Ao programar micro-controladores vemos a necessidade de procurar o mais reduzido código para que a memoria seja suficiente, e mais rapidez de execução.

Construiu-se uma biblioteca com as funções principais de modo a se poder usar com LCD cujo chip é HD44780U.

display16x2

De sublinhar também a particularidade de se poder usar o LCD16x2 no mesmo PORTO, ocupando os 7 Bits ( 3 controlo + 4 dados ), conforme a demonstração no Vídeo.

Podemos fazer o download da biblioteca Aqui

  1. Configurar o Porto que vamos configurar e quais os bits que vamos utilizar(podemos manipular mediante o microcontrolador):

#define LCD_CONTROL_PORT PORTD // PORTD conectado ao LCD
#define LCD_CONTROL_DDR DDRD   //Configuração do PORTD

/**********************************************************/

#define LCD_RS                0             // Pino RS    do LCD no PINO 0 do PORTD

#define LCD_RW             1             // Pino RW  do LCD no PINO 1 do PORTD

#define LCD_E                  2             // Pino E      do LCD no PINO 2 do PORTD

/*********************************************************/

#define LCD_D4               4             // Pino D4 do LCD no PINO 4 do PORTD

#define LCD_D5               5             // Pino D5 do LCD no PINO 5 do PORTD

#define LCD_D6               6             // Pino D6 do LCD no PINO 6 do PORTD

#define LCD_D7               7             // Pino D7 do LCD no PINO 7 do PORTD

/********************************************************/

  1. As funções disponíveis para uso geral:

void LCDinit(void);                                                         //Inicia LCD

void LCDclr(void);                                                           //Limpa LCD

void LCDprint(const char*);                                       //escreve uma string LCD

void LCDprintXY(const char*,uint8_t, uint8_t);  //escreve uma flash string na posição X,Y

void LCDGotoXY(uint8_t, uint8_t);                          //posição X e Y

void LCDStringXY(const uint8_t*, uint8_t, uint8_t);//escreve uma string LCD na posição x,y

  1. Manipulação das funções e quais as suas aplicações praticas:

/*
* BasicLCD.c
* http://www.microelectronic.pt
* Created: 10-12-2016
* Author: Norlinux
*/
#include <avr/io.h>
#include <avr/pgmspace.h>
#include
#ifndef F_CPU
#define F_CPU 8000000UL
#endif
#include <util/delay.h>
#include "lcd.h"
void wait(void);
void counter (void);
//Strings stored in AVR Flash memory
const uint8_t LCDFlash[] PROGMEM="LOADING...\0";
int main(void)
{
LCDinit();
while(1)
{
LCDStringXY(LCDFlash,3,0);
wait();
LCDGotoXY(1,1);
LCDprint("MICROELECTRONIC");
wait();
counter();
LCDclr();
wait();
LCDprintXY("BASIC LCD",4,0);
wait();
LCDprintXY("HD44780U",5,1);
wait();
_delay_loop_2(20);
}
}
void counter (void)
{
char buf[3];
for (char i=0;i<10;i++)
{
itoa(i,buf,10);
LCDGotoXY(13,0);
LCDprint(buf);
wait();
}
}
void wait(void)
{
uint8_t i;
for(i=0;i<50;i++)
{
_delay_ms(20);
}
}

  1. Por fim o código e o vídeo demonstrativo:

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s