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.

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:
main.c
/*
 * BasicLCD.c
 *
 * Created: 10-12-2016 13:18:34
 *  Author: www.microelectronic.pt
 */ 


#include <avr/io.h>
#include <avr/pgmspace.h>
#include <stdlib.h>
#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 uma resposta

Your email address will not be published.

www.000webhost.com