You are on page 1of 20

INSTITUTO JUAN DE LA CIERVA

LCD CON ARDUINO


PROGRAMACION DE UN LCD
SANTIAGO AREVALO PAZ
2 ARI

Comunicaciones Industriales
MICROCONTROLADOR ARDUINO
Sencillamente se trata de un microcontrolador que, gracias a su
condición de sistema libre, ha provocado multitud de modalidades,
existiendo tantas configuraciones posibles como nuestra imaginación
sea capaz de crear. Los límites los fijas uno mismo. Gracias a las
modificaciones que lleva a cabo en su configuración, que será el
encargado de definir qué hará ese microcontrolador.

Funciones basicas
Existe tres funciones básicas:

1-. Tenemos una interfaz de entrada que puede estar conectada


directamente a periféricos o bien conectarse a través de puertos a
estos.

2-. Con la primera parte conseguiremos trasladar la información hasta


nuestro microcontrolador (este será diferente en función de las
necesidades de nuestro proyecto).

3-. La interfaz de salida llevará la información hasta los periféricos que


harán uso de ella (otra placa, un altavoz, una pantalla…)

Al igual que un Pc en el que tenemos diversos componentes como son


el microprocesador, placa base o memoria RAM, Arduino no es sólo
una placa sino que se trata de un sistema completo que, podrá ofrecer
multitud de variaciones.
SOFTWARE PARA PROGRAMACION EN LENGUAJE C
El entorno de desarrollo integrado (IDE) se puede bajar desde la
página de Arduino y se puede distingue las partes que lo constituyen.
El área de edición de código es donde se escribirá el código del
software que se requiere. Es sencillo visualmente y tiene ciertas
características que usted debe descubrir mediante su uso.
Normalmente, en la jerga de Arduino, aquí se crea el “sketch” (código
fuente).

Una sección importante es el área de mensajes, en donde el compilador


le informa posibles errores en el código. Además, en esta área, la placa
arduino puede enviar información acerca de su estado, según como sea
programado.
CONEXIÓN DE LA PLACA AL COMPUTADOR
Cada kit Sparkfun dispone de un cable USB para poder conectar la
placa a un computador, tal como se muestra en la figuras.

Cuando conecte ambos elementos, el sistema operativo del


computador le puede solicitar los drivers para poder acceder a la placa.
Si el menú Herramientas - Puerta Serial, no está habilitada, debe seguir
las instrucciones de la página
https://learn.sparkfun.com/tutorials/how-to-installftdi-drivers.

FORMA DE PROGRAMAR ARDUINO


El código que se debe escribir en el IDE de arduino debe tener cierta estructura, la que se
indica en la figura.

En la primera sección (Declaraciones Globales), se deben poner las


bibliotecas específicas que se utilizarán (ninguna en el código de
ejemplo) y las variables globales que se utilizarán (pinLed en este
caso). Este bloque se ejecuta una sola vez y bajo cualquier de los
siguientes eventos:

 Encendido de la placa.
 Después de un reset.
 Después de cargar un programa desde el computador.
La función setup(): se ejecuta después de la sección anterior y por
una sola vez. Se utiliza para configurar el hardware que se utilizará. En
el ejemplo, se inicializa el pin 10 como salida.

La función loop(): por otro lado, se ejecuta después de la función


anterior, de forma “perpetua”, a una tasa de repetición muy cercana a
la velocidad de trabajo de la placa, dependiendo de la cantidad de
instrucciones que tenga.

PRACTICA LCD

PROGRAMACION EN LENGUAJE C DE UNA LCD POR MEDIO


DEL MICROCONTROLADOR ARDUINO

INTRODUCCION

Pantalla LCD (Liquid Crystal Display) es un módulo de visualización


electrónica y encontrar una amplia gama de aplicaciones. Una pantalla
LCD de 16x2 es un módulo muy básico y es muy utilizado en diversos
dispositivos y circuitos. Estos módulos se prefieren más de siete
segmentos y otro segmento de múltiples LED s. Las razones son: las
pantallas LCD son económicos; fácilmente programables; no tienen
limitación de visualización especiales y aun personajes personalizados
(a diferencia de en siete segmentos), animaciones y demás.

Un LCD 16x2 significa que puede mostrar 16 caracteres por línea y hay
2 tales líneas. En este LCD cada personaje se muestra en la matriz de
píxeles 5x7. Este LCD tiene dos registros, es decir, del sistema y de
datos.

El registro de comando almacena las instrucciones de comandos dados


a la pantalla LCD. Un comando es una instrucción dada a LCD para
hacer una tarea predefinida como inicializarlo, despejando su pantalla,
ajustar la posición del cursor, el control de pantalla, etc. Las tiendas de
registro de datos los datos que se muestran en la pantalla LCD. Los
datos son el valor ASCII del carácter que se mostrará en la pantalla
LCD.
DESCRIPCION
Este apartado está destinado a una breve descripción del
funcionamiento del módulo LCD incluido en el sistema de evaluación
EasyPIC.

Las pantallas de cristal líquido LCD o display LCD para mensajes


(Liquid Cristal Display) tienen la capacidad de mostrar cualquier
carácter alfanumérico, permitiendo representar la información que
genera cualquier equipo electrónico de una forma fácil y económica.

La pantalla consta de una matriz de caracteres (normalmente de 5x7 o


5x8 puntos) distribuidos en una, dos, tres o cuatro líneas de 16 hasta
40 caracteres cada línea.

El proceso de visualización es gobernado por un microcontrolador


incorporado a la pantalla, siendo el Hitachi 44780 el modelo de
controlador más utilizado.

Figura 1. LCD 2x16: está compuesto por 2 líneas de 16 caracteres

Figura 2. LCD 4x40: está compuesto por 4 líneas de 40 caracteres


A continuación se presenta la descripción de señales empleadas por el
módulo LCD así como el número de patilla a la que corresponden.

CARACTERISTICAS

Las características generales de un módulo LCD 16x2 son las


siguientes:

 Consumo muy reducido, del orden de 7.5Mw


 Pantalla de caracteres ASCII, además de los caracteres japoneses
Kanji, caracteres griegos y símbolos matemáticos.
 Desplazamiento de los caracteres hacia la izquierda o a la
derecha
 Memoria de 40 caracteres por línea de pantalla, visualizándose
16 caracteres por línea
 Movimiento del cursor y cambio de su aspecto
 Permite que el usuario pueda programar 8 caracteres
 Pueden ser gobernados de 2 formas principales:
o Conexión con bus de 4 bits
o Conexión con bus de 8 bits

El módulo LCD posee una zona de memoria RAM llamada DDRAM


(Data Display RAM) donde se almacenan los caracteres que se van a
mostrar en la pantalla. Tiene una capacidad de 80 bytes, 40 por cada
línea, de los cuales sólo 32 se pueden visualizar a la vez (16 bytes por
línea).

De las 80 posibles, las dos direcciones más importantes de la DDRAM


son:

 Dirección 00h, que es el comienzo de la primera línea


 Dirección 40h, que el comienzo de la segunda línea

FUNCIONAMIENTO

El LCD tiene 3 modos de funcionamiento principales:

 Modo Comando
 Modo Carácter o Dato
 Modo de lectura del Busy Flag o LCD Ocupada

DIAGRAMA DE CONECCION

Consisten en diferentes códigos que se introducen a través del bus de


datos del módulo LCD.
DATASHEET
CROQUIS DE LAS CONECCIONES DE LA PRACTICAº

INSTRUCCIONES DE LA PROGRAMACION

librería LiquidCrystal()

Lo primero que debemos hacer para poder utilizar las pantallas LCD
compatibles con la librería "liquidcrystal" es declarar una variable
global de tipo -liquidcrystal- La cuál representará dentro de nuestro
skeecht el objeto LCD que queremos controlar. La declaración se ha de
realizar con la siguiente sintaxsis:

Nombre de la pantalla (LCD)

1º rs

2º rw

3º enable desde d0 a d7
Donde todos los parámetros específicados en realidad son valores
numéricos que representan

RS el nº de la placa de arduino conectado al pin RS de la LCD

RW es el pin rw de la LCD

Enable de la LCD se conecta a Enable de la placa

Desde d0 a d7 son los números de los pines de la placa arduino


conectados a los pines de datos de la LCD.

lcd.begin () Especifica las dimensiones de la pantalla (16 columnas y 2


filas)

lcd.write () escribe un caracter en la pantalla

lcd.print () escribe un dato de cualquier tipo en la pantalla

lcd.clear () borra la pantalla y posiciona el cursor en la posición


superior izquierda para escribir el próximo texto.

lcd.home () posiciona el cursor en la esquina sup. izq.

lcd.setCursor () posiciona el cursor en las posiciones designadas

lcd.scrolldisplay () desplaza el contenido de la pantalla hacia la


izquierda o la derecha

lcd.autoscroll () activa el desplazamiento automático del texto en la


pantalla

P.D.: Os dejo el enlace a la página oficial


https://www.arduino.cc/en/Reference/LiquidCrystal para que
consultéis por si no os fiáis de lo que nos da él.
PROGRAMACIÓN EN C PARA UNA LCD
EJERCICIO 1
UBICACIÓN DEL CURSOR
// FILA 1: QUE TAL

// FILa 2: milSEGUNDOS DESDE INICIO DEL PROGRAMAS;5016

// ESPERA 2S (DELAY 2000) Y SE BORRA.

// Y SE VUELVE A ENVIAR UNA NUEVA PALABRA.

// FUNCIONA BIEN. JUGAR CON LA LIBRERIA

// APARECEN 2 COLUMNAS Y 2 FILAS

#include <LiquidCrystal.h>

LiquidCrystal lcd (12,11,5,4,3,2);

int luzfondo= 13;

void setup() {

// put your setup code here, to run once:

pinMode (luzfondo, OUTPUT);

digitalWrite (luzfondo, HIGH);

lcd.begin (16,2);

lcd.setCursor (8,0); // SITUA EN COLUMNA: 8 Y FILA:0 LA 1ª


lcd.print ("QUE TAL");

delay (5000);

lcd.setCursor (0,1); // SITUA EN COLUMNA: 0 Y FILA:1 LA 2ª

lcd.print (millis ());

void loop()

// put your main code here, to run repeatedly:

EJERCICIO 2
UBICACIÓN DEL CURSOR
// EN SERIAL MUESTRA DISTANCIA 0 CM

//POSICION SENSOR: FIJO Y HORIZONTAL LETRAS SE LEEN


NORMAL.

// SI SE QUITA LA TIERRA MIDE 173 CM EN SERIAL

// 5 V: VCC

// GND: GND

// 3: TRIG

//2: ECHO
// 9: led

// SERIAL DA DISTANCIA CUANDO SE ENCIENDE O APAGA


INTERRUPTOR DE TIERRA.

// LED SE ENCIENDE Y APAGA.

#include <LiquidCrystal.h>

const int nLecturas = 10;

int lecturas [nLecturas];

int indice= 0;

int total= 0;

int media= 0;

unsigned long tiempo=0;

unsigned long distancia=0;

LiquidCrystal lcd (12,11,5,4,3,2);

int luzfondo= 13;

void setup() {

// put your setup code here, to run once:

pinMode (luzfondo, OUTPUT);

digitalWrite (luzfondo, HIGH);


lcd.begin (16,2);

pinMode (6, OUTPUT); //led

pinMode (7, INPUT); //echo

pinMode (8, OUTPUT); //trigger

for(int i=0; i<nLecturas; i++)

lecturas [nLecturas]= 0;

Serial.begin (9600);

void loop() {

// put your main code here, to run repeatedly:

lcd.setCursor (0,0);

lcd.print ("Distancia");

lcd.print (distancia);

lcd.print ("cm");

digitalWrite (8,LOW);
delayMicroseconds (5);

digitalWrite (8,HIGH);

delayMicroseconds (10);

digitalWrite (8,LOW);

tiempo = pulseIn (7, HIGH);

distancia= 0.017*tiempo;

Serial.print ("Distancia: ");

Serial.print (distancia);

Serial.println ("cm");

total= total - lecturas [indice];

lecturas [indice]= distancia;

indice= indice+1;

if (indice >= nLecturas)

indice=0;

media = total/ nLecturas;

if (media<255)
{

analogWrite (6, 255-media);

delay (100);

EJERCICIO 3
UBICACIÓN DEL CURSOR
// LAS PALABRAS QUE SE ENVIAN DESDE EL SERIAL SE LEEN EN LA
LCD.

// ESPERA 2S (DELAY 2000) Y SE BORRA.

// Y SE VUELVE A ENVIAR UNA NUEVA PALABRA.

// FUNCIONA BIEN. JUGAR CON LA LIBRERIA

// APARECEN 2 COLUMNAS Y 2 FILAS

#include <LiquidCrystal.h>

LiquidCrystal lcd (12,11,5,4,3,2);

int luzfondo= 13;

void setup() {

// put your setup code here, to run once:

pinMode (luzfondo, OUTPUT);

digitalWrite (luzfondo, HIGH);


lcd.begin (20,4);

Serial.begin (9600);

void loop() {

// put your main code here, to run repeatedly:

if (Serial.available ()>0);

delay (2000);

lcd.clear ();

while (Serial.available ()>0)

lcd.write (Serial.read());