Vous êtes sur la page 1sur 16

Configuracin de la biblioteca

Ahora que estamos listos para la programacin, abrir AVR Studio 5 y crear nuevo
proyecto. Si eres nuevo en AVR Studio 5, ver esta pgina para empezar. Ahora,
en el panel de la derecha, se encuentra el Explorador de
soluciones ventana. All, haga clic derecho sobre el nombre del proyecto, vaya
a Agregar y luego elegirelemento existente .... Ahora vaya a la carpeta donde
ha descargado las bibliotecas y selecciona lcd.c y lcd.h.

Adicin de Bibliotecas

Archivos Aadido y encabezados

Ahora usted puede encontrar los dos archivos (el archivo c y el archivo de
cabecera) que figuran en el proyecto.Ahora siga los siguientes pasos para
configurar la biblioteca.

Haga doble clic en el archivo 'lcd.h' (en el Explorador de soluciones) para


abrirla. Ahora asegrese de que se desplaza hacia abajo muy lentamente o de
lo contrario se perder en algunos detalles importantes.

Al comenzar a desplazarse hacia abajo, usted encontrar un texto comentado


que describe la biblioteca. Observe la lnea donde dice LCD_IO_MODE = 0 para
el modo de memoria asignada, LCD_IO_MODE = 1 para 4 modo de bits,
mientras que el modo de 8 bits no es compatible.

Desplazarse ms abajo y encontrars una lnea pidiendo que fija su XTAL (o


F_CPU). Por

defecto

es

MHz. Reemplazar

con

su

propio

F_CPU

exacta.Asegrese de que esto es correcto o de lo contrario no habr falta de


coincidencia en los tiempos de retardo.

Desplcese hacia abajo hasta el lugar donde tiene que configurar su


LCD_IO_MODE. Asegrese de que est configurado / definida en (modo de 4
bits) 1.

Justo debajo se encuentra la mejor parte. Usted puede elegir su propio puerto
donde a la interfaz de la pantalla LCD con! Como he dicho antes, en la operacin
de 4 bits, habr pines 4 de datos (DB4 ... DB7) y 3 pines de control (RS, R / W,
EN). Usted puede elegir cualquiera de ellos para ser a travs de un puerto, o
distribuido a travs de diferentes puertos.Aqu es donde lo haces. Por defecto
est al otro lado PORTA. Elige ellos como por su disponibilidad pin.

Ahora, si se desplaza ms hacia abajo, se puede encontrar una lista de los


diferentes comandos que se pueden pasar a la pantalla LCD utilizando la funcin
lcd_command ().

Ahora, si usted contina para desplazarse, usted encontrar una lista de todas
las funciones definidas en la biblioteca junto con su descripcin. Usted
encontrar funciones como lcd_init (), lcd_clrscr (), lcd_home (), lcd_gotoxy (),
lcd_putc (), lcd_puts (), lcd_puts_p (), lcd_command (), lcd_data () y lcd_puts_P
(). Su descripcin se adjunta alongwith la declaracin.

Codificacin
Ahora que ya ha pasado por las diferentes funciones disponibles, vamos a
escribir un cdigo de ejemplo para l. No te olvides de incluir "lcd.h" archivo de
cabecera.
#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"
int main(void)

{
lcd_init(LCD_DISP_ON_CURSOR); /*
cursor on */
/*
/*
while(1)
/*
{
lcd_clrscr();
/*
lcd_home();
/*
lcd_puts("hello");
/*
lcd_gotoxy(0,1);
/*
lcd_puts("maxEmbedded"); /*
_delay_ms(50);
/*
}
}

initialize lcd, display on,


for more options for
lcd_init(), view lcd.h file
run continuously */
clear screen of lcd */
bring cursor to 0,0 */
type something random */
go to 2nd row 1st col */
type something random */
wait 50ms */

Despus de construir el proyecto y la quema de su cdigo, ver "hola" escrito en


la primera fila y "maxEmbedded" escrita en la segunda fila. Este fue un ejemplo
bsico. Ahora le toca a usted sobre cmo explotar los recursos de la
biblioteca. Bueno, trate de ste hacia fuera por ti mismo. La pantalla LCD debe
mostrar su en la primera lnea, y luego crear un efecto de rebote. Su nombre se
debe mover hacia la derecha hasta llegar a la esquina. Y entonces se debe
mover hacia la izquierda hasta que se alcanza una vez ms la otra esquina. Esto
debe continuar. Sugerencia: Utilice lcd_command () de ejemplo lcd_command
(LCD_MOVE_DISP_RIGHT), lcd_command (LCD_MOVE_DISP_LEFT), etc.
Ahora trata de crear un efecto de laminacin. El texto debe rodar en la vista y
luego salir de ella. He encontrado un tal cdigo aqu.

Displaying int and float values


Uno de los inconvenientes de la biblioteca de Fleury es que la hay ninguna
funcin que puede mostrar directamente un valor entero o de punto flotante en
la pantalla LCD. Para ello, podemos utilizar lcd_puts () s, en combinacin
con itoa () y sprintf () los funtions.
Para la visualizacin de valores enteros, se requiere la siguiente modificacin.
char buffer[10];
int n = 12345;
itoa(n, buffer, 10);
lcd_puts(buffer);

Para mostrar los valores de punto flotante, se requiere la siguiente modificacin.


char buffer[10];
float f = 3.1415926;
sprintf(buffer, "%f", f);
lcd_puts(buffer);

Descripcin detallada
Rutinas bsicas para interactuar con una pantalla LCD de caracteres basado en
HD44780U.
#include <lcd.h>

Pantallas LCD de caracteres se pueden encontrar en muchos dispositivos, como las


mquinas de caf espresso, impresoras lser. El controlador Hitachi HD44780 y sus
controladores compatibles como Samsung KS0066U han convertido en un estndar de la
industria para este tipo de pantallas.
Esta biblioteca permite una fcil interconexin con una pantalla compatible HD44780 y
puede ser operado en el modo de memoria asignada (LCD_IO_MODE definido como 0 en
el archivo de inclusin lcd.h.) O en modo de puerto IO 4 bits (LCD_IO_MODE definido
como 1). Modo de puerto IO 8 bits no es compatible.
Modo de mapeado de memoria es compatible con el kit de edad arranque Kanda STK200,
pero tambin es compatible con la generacin de la seal R / W a travs de lnea de
direccin A8.
Ver tambin
El captulo Interfaz LCD HD44780 En base a un AVR en mi pgina de inicio, que
muestra los circuitos de ejemplo de cmo conectar un LCD a un controlador
AVR.
Autor
Peter Fleury pfleu ry @ g mx.ch http://tinyurl.com/peterfleury
Versin
2.0
Derechos de autor
(C) 2015 Peter Fleury, GNU General Public License versin 3

Definicin de tipo de controlador LCD


Utilice 0 para el controlador HD44780, cambie a 1 para pantallas con controlador KS0073.
#define

LCD_CONTROLLER_KS0073

Definiciones para Tamao de pantalla


Cambiar estas definiciones para adaptarse a su entorno de visualizacin
Estas definiciones pueden ser definidas en un archivo separado
incluyen lcd_definitions.h en lugar de modificar este archivo aadiendo D_LCD_DEFINITIONS_FILE a la seccin CDEFS en el Makefile. Todas las definiciones
aadidas a la lcd_definitions.h archivo anularn las definiciones por defecto de lcd.h
#define

LCD_LINES

#define

LCD_DISP_LENGTH

16

#define

LCD_LINE_LENGTH

0x40

#define

LCD_START_LINE1

0x00

#define

LCD_START_LINE2

0x40

#define

LCD_START_LINE3

0x14

#define

LCD_START_LINE4

0x54

#define

LCD_WRAP_LINES

Definiciones para el modo IO 4 bits


Las lneas de datos de cuatro LCD y las tres lneas de control RS, RW, E pueden estar en
el mismo puerto o en puertos diferentes.Cambie LCD_RS_PORT, LCD_RW_PORT,
LCD_E_PORT si desea que las lneas de control en puertos diferentes.

Normalmente las cuatro lneas de datos deben ser asignadas a bits 0..3 en un puerto,
pero es posible conectar estas lneas de datos en un orden diferente o incluso en puertos
diferentes, adaptando las definiciones LCD_DATAx_PORT y LCD_DATAx_PIN.
Ajuste estas definiciones a tu objetivo.
Estas definiciones pueden ser definidos en un archivo separado
incluyen lcd_definitions.h en lugar de modificar este archivo aadiendoD_LCD_DEFINITIONS_FILE al CDEFS seccin en el Makefile. Todas las definiciones
aadidas a la lcd_definitions.h archivo anularn las definiciones por defecto de lcd.h
#define

LCD_IO_MODE

#define

LCD_PORT

#define

LCD_DATA0_PORT

LCD_PORT

#define

LCD_DATA1_PORT

LCD_PORT

#define

LCD_DATA2_PORT

LCD_PORT

#define

LCD_DATA3_PORT

LCD_PORT

#define

LCD_DATA0_PIN

#define

LCD_DATA1_PIN

#define

LCD_DATA2_PIN

#define

LCD_DATA3_PIN

#define

LCD_RS_PORT

#define

LCD_RS_PIN

#define

LCD_RW_PORT

#define

LCD_RW_PIN

PORTA

LCD_PORT

LCD_PORT

#define

LCD_E_PORT

#define

LCD_E_PIN

LCD_PORT

Las definiciones de los retrasos


Se utiliza para calcular temporizadores. Adaptar la F_CPU definen en el Makefile de la
frecuencia de reloj en Hz de su blanco
Estos tiempos de retardo se pueden ajustar, si algunas pantallas requieren diferentes
retrasos.
Estas definiciones pueden ser definidos en un archivo de inclusin
separada lcd_definitions.h en lugar de modificar este archivo aadiendo D_LCD_DEFINITIONS_FILE al CDEFS seccin en el Makefile. Todas las definiciones
aadidas a la lcd_definitions.h archivo anularn las definiciones por defecto de lcd.h
#define

LCD_DELAY_BOOTUP

16000

#define

LCD_DELAY_INIT

#define

LCD_DELAY_INIT_REP

64

#define

LCD_DELAY_INIT_4BIT

64

#define

LCD_DELAY_BUSY_FLAG

#define

LCD_DELAY_ENABLE_PULSE

5000

Definiciones para instrucciones de comando LCD


Las constantes definen las diversas instrucciones del controlador LCD que se pueden
pasar a la funcin lcd_command (), consulte la hoja de datos HD44780 para una
descripcin completa.
#define

LCD_CLR

0 / * DB0: clara pantalla * /

#define

LCD_HOME

#define

LCD_ENTRY_MODE

1 / * DB1: retorno a la posicin inicial * /

2 / * DB2: establecer el modo de entrada * /

#define

LCD_ENTRY_INC

1 / * DB1: 1 = incremento, 0 = decremento * /

#define

LCD_ENTRY_SHIFT

#define

LCD_ON

#define

LCD_ON_DISPLAY

2 / * DB2: girar la pantalla en * /

#define

LCD_ON_CURSOR

1 / * DB1: gire cursor en * /

#define

LCD_ON_BLINK

#define

LCD_MOVE

#define

LCD_MOVE_DISP

#define

LCD_MOVE_RIGHT

#define

LCD_FUNCTION

#define

LCD_FUNCTION_8BIT

0 / * DB2: turno 1 = visualizacin en * /

3 / * DB3: convertir lcd / cursor en * /

0 / * DB0: cursor parpadeante? * /

4 / * DB4: mover el cursor / pantalla * /

pantalla move (0-> cursor): 3 / * DB3? * /

2 / * DB2: mover a la derecha (0-> izquierda)? * /

5 / * DB5: conjunto de funciones * /

4 / * DB4: establecer el modo 8BIT (0-> Modo

4BIT) * /

#define

LCD_FUNCTION_2LINES

#define

LCD_FUNCTION_10DOTS

#define

LCD_CGRAM

6 / * DB6: establecer la direccin RAM CG * /

#define

LCD_DDRAM

7 / * DB7: establecer la direccin RAM DD * /

#define

LCD_BUSY

#define

LCD_ENTRY_DEC
cursor dir * /

3 / * DB3: dos lneas (0-> una lnea) * /

2 / * DB2: 5x10 fuente (0-> fuente 5x7) * /

7 / * DB7: LCD est ocupado * /

0x04 / * Pantalla desplazar fuera, diciembre mover el

#define

LCD_ENTRY_DEC_SHIFT

0x05 / * desplazamiento de pantalla en,

diciembre mover el cursor dir * /

#define

LCD_ENTRY_INC_

0x06 / * Pantalla desplazar fuera, cursor inc

movimiento dir * /

#define

LCD_ENTRY_INC_SHIFT

0x07 / * desplazamiento de pantalla en, inc

mover el cursor dir * /

#define

LCD_DISP_OFF

0x08 / * mostrar apagado * /

#define

LCD_DISP_ON

#define

LCD_DISP_ON_BLINK

0x0C * Pantalla / on, cursor fuera * /

0x0D / * mostrar en, cursor fuera, char parpadeo *

#define

LCD_DISP_ON_CURSOR

0x0E * Pantalla / on, cursor en * /

#define

LCD_DISP_ON_CURSOR_BLINK

0x0F / * Pantalla de, cursor sobre, char

parpadeo * /

#define

LCD_MOVE_CURSOR_LEFT

0x10 / * mover el cursor a la izquierda

(disminucin) * /

#define

LCD_MOVE_CURSOR_RIGHT

0x14 / * cursor derecho move (incremento)

*/

#define

LCD_MOVE_DISP_LEFT

0x18 / * Pantalla desplazamiento a la izquierda *

#define

LCD_MOVE_DISP_RIGHT

0x1C / * desplazamiento de pantalla derecha *

#define

LCD_FUNCTION_4BIT_1LINE
puntos 5x7 * /

interfaz 0x20 / * 4 bits, de una sola lnea,

#define

LCD_FUNCTION_4BIT_2LINES

0x28 / * interfaz de 4 bits, dos lneas,

puntos 5x7 * /

#define

LCD_FUNCTION_8BIT_1LINE

interfaz 0x30 / * 8 bits, de una sola lnea,

puntos 5x7 * /

#define

LCD_FUNCTION_8BIT_2LINES

0x38 / * interfaz de 8 bits, dos lneas,

puntos 5x7 * /

#define

LCD_MODE_DEFAULT

((1 << LCD_ENTRY_MODE) | (1 <<

LCD_ENTRY_INC))

Funciones
vaco

lcd_init (dispAttr uint8_t)


Inicializar pantalla y seleccione el tipo de cursor. Ms ...

vaco

lcd_clrscr (void)
Borrar pantalla y ajustar el cursor a la posicin inicial. Ms ...

vaco

lcd_home (void)
Establecer cursor a la posicin inicial. Ms ...

vaco

lcd_gotoxy (uint8_t x, uint8_t y)


Establecer cursor a la posicin especificada. Ms ...

vaco

lcd_putc (char c)
Carcter pantalla en la posicin actual del cursor. Ms ...

vaco

lcd_puts (const char * s)


Pantalla cadena sin salto de lnea automtico. Ms ...

vaco

lcd_puts_p (const char * progmem_s)

Pantalla cadena a partir de la memoria de programa y sin salto de lnea


automtico. Ms ...

vaco

lcd_command (cmd uint8_t)


Enviar comando de instrucciones del controlador LCD. Ms ...

vaco

lcd_data (datos uint8_t)


Enviar byte de datos al controlador LCD. Ms ...

#define

lcd_puts_P (__s)

lcd_puts_p (PSTR (__ s))

macros para almacenar de forma automtica cadena constante en la


memoria del programa

Macro Definicin Documentacin


#define LCD_CONTROLLER_KS0073 0
Utilice 0 para el controlador HD44780, 1 para el controlador KS0073
#define LCD_LINES 2
nmero de lneas visibles de la pantalla
#define LCD_DISP_LENGTH 16
Visibles caracteres por lnea de la pantalla
#define LCD_LINE_LENGTH 0x40
longitud de la lnea interna de la pantalla
#define LCD_START_LINE1 0x00
Direccin DDRAM del primer carcter de la lnea 1
#define LCD_START_LINE2 0x40

Direccin DDRAM del primer carcter de la lnea 2


#define LCD_START_LINE3 0x14
Direccin DDRAM del primer carcter de la lnea 3
#define LCD_START_LINE4 0x54
Direccin DDRAM del primer carcter de la lnea 4
#define LCD_WRAP_LINES 0
0: sin envoltura, 1: envolver al final de la lnea de visibile
#define LCD_IO_MODE 1
0: memoria de modo asignada, 1: modo de puerto IO
#define LCD_PORT PORTA
puerto para las lneas de LCD
LCD_DATA0_PORT #define

LCD_PORT

puerto de datos de 4 bits bit 0


LCD_DATA1_PORT #define

LCD_PORT

puerto de datos de 4 bits bit 1


LCD_DATA2_PORT #define

LCD_PORT

puerto de datos de 4 bits bit 2


LCD_DATA3_PORT #define
puerto de datos de 4 bits bit 3
#define LCD_DATA0_PIN 0
pin para los datos de 4 bits bit 0

LCD_PORT

#define LCD_DATA1_PIN 1
pin para los datos de 4 bits bit 1
#define LCD_DATA2_PIN 2
pin para los datos de 4 bits bit 2
#define LCD_DATA3_PIN 3
pin para los datos de 4 bits bit 3
LCD_RS_PORT #define

LCD_PORT

puerto para lnea RS


#define LCD_RS_PIN 4
pines para RS lnea
LCD_RW_PORT #define

LCD_PORT

puerto para la lnea RW


#define LCD_RW_PIN 5
pin para la lnea RW
LCD_E_PORT #define

LCD_PORT

puerto para Habilitar lnea


#define LCD_E_PIN 6
pines para habilitar la lnea
#define LCD_DELAY_BOOTUP 16000
retraso en micro segundos despus del encendido
LCD_DELAY_INIT #define 5000

demora en micro segundos despus de un comando de inicializacin enviada


#define LCD_DELAY_INIT_REP 64
demora en micro segundos despus repiti comando de inicializacin
#define LCD_DELAY_INIT_4BIT 64
demora en micro segundos despus de ajustar el modo de 4 bits
#define LCD_DELAY_BUSY_FLAG 4
vez en micro segundos, el contador de direcciones se actualiza despus de ocupados de
la bandera se borra
#define LCD_DELAY_ENABLE_PULSE 1
permitir ancho de pulso de la seal en micro segundos

Documentacin de las funciones


void lcd_init ( uint8_t dispAttr )
Inicializar pantalla y seleccione el tipo de cursor.
Parmetros
dispAttr LCD_DISP_OFF pantalla apagada LCD_DISP_ON visualizacin en,
cursor fuera LCD_DISP_ON_CURSORvisualizacin en, cursor
en LCD_DISP_ON_CURSOR_BLINK visualizacin en, cursor en
intermitente

Devoluciones
ninguno
void lcd_clrscr ( vaco )
Borrar pantalla y ajustar el cursor a la posicin inicial.
Devoluciones
ninguno

void lcd_home ( vaco )


Establecer cursor a la posicin inicial.
Devoluciones
ninguno
void lcd_gotoxy ( uint8_t x,
uint8_t y
)
Establecer cursor a la posicin especificada.
Parmetros
X posicin horizontal
(0: dej la mayor parte de posicin)
y posicin vertical
(0: primera lnea)
Devoluciones
ninguno
void lcd_putc ( Char c )
Carcter pantalla en la posicin actual del cursor.
Parmetros
c carcter a visualizar
Devoluciones
ninguno
lcd_puts void ( const char * s )
Pantalla cadena sin salto de lnea automtico.
Parmetros
s cadena se muestre
Devoluciones
ninguno
void lcd_puts_p ( const char * progmem_s )

Pantalla cadena a partir de la memoria de programa y sin salto de lnea automtico.


Parmetros
progmem_s se mostrar la cadena de memoria de programa
Devoluciones
ninguno
Ver tambin
lcd_puts_P
void lcd_command ( uint8_t cmd )
Enviar comando LCD de instrucciones del controlador.
Parmetros
cmd instruccin para enviar a un controlador de LCD, consulte la hoja de datos
HD44780
Devoluciones
ninguno
void lcd_data ( uint8_t datos )
Enviar byte de datos al controlador de LCD.
Similar a lcd_putc (), pero sin interpretar LF
Parmetros
datos byte a enviar a un controlador de LCD, consulte la hoja de datos HD44780
Devoluciones
ninguno