Conf Co nfiigu gura rac ción de la bi bibl blio iottec eca a Ahora que estamos listos para la programación, abrir AVR Studio 5 y crear nuevo proy pr oyec ecto to.. Si eres nue uev vo en AVR Stu tud dio 5, ver er est esta a pág página ina pa para ra em empe peza zar. r. Ah Ahor ora, a, en
el
panel
de
la
derecha,
se
encuentra
el Ex Exp plo lora rado dorr
de
soluciones ve vent ntan ana. a. Al Allí lí,, ha haga ga cl clic ic de dere rec cho so sobr bre e el no nomb mbre re de dell pr proy oyec ecto to,, va vaya ya a Agregar Agregar y y lu lue ego el ele egir elemento existente .... Ahora vaya a la carpeta donde ha de desc scar arga gado do la las s bi bibl blio iote teca cas s y se sele lecc ccio iona na lcd.c lcd.c y lc lcd. d.h. h.
Adición de Bibliotecas
Archivos Añadido 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 configu con figurar rar la bib biblio liotec teca. a. •
Haga doble clic en el archivo ’lcd.h’ (en el Explorador de soluciones) para abri ab rirl rla. a. Ah Ahor ora a as aseg egúr úres ese e de qu que e se de desp spla laza za ha haci cia a ab abaj ajo o muy lentamente o de lo co cont ntra rari rio o se pe perd rder erá á en al algu guno nos s de deta tall lles es im impo port rtan ante tes. s.
•
Al comenzar a desplazarse hacia abajo, usted encontrará un texto comentado que describe la biblioteca. Observe la línea 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 más abajo y encontrarás una línea pidiendo que fija su XTAL (o F_CPU). Por
defecto
es
8
MHz. Reemplazar
con
su
propio
F_CPU
exacta.Asegúrese de que esto es correcto o de lo contrario no habrá falta de coincidencia en los tiempos de retardo. •
Desplácese hacia abajo hasta el lugar donde tiene que configurar su LCD_IO_MODE. Asegúrese 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 operación 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 través de un puerto, o distribuido a través 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 más hacia abajo, se puede encontrar una lista de los diferentes comandos que se pueden pasar a la pantalla LCD utilizando la función lcd_command ().
•
Ahora, si usted continúa para desplazarse, usted encontrará una lista de todas las funciones definidas en la biblioteca junto con su descripción. 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 descripción se adjunta alongwith la declaración.
Codificación Ahora que ya ha pasado por las diferentes funciones disponibles, vamos a escribir un código de ejemplo para él. No te olvides de incluir "lcd.h" archivo de cabecera. #include
#include #include "lcd.h" int main(void)
{ lcd_init(LCD_DISP_ON_CURSOR); /* initialize lcd, display on, cursor on */ /* for more options for /* lcd_init(), view lcd.h file while(1)
/* run continuously */
{ lcd_clrscr();
/* clear screen of lcd */
lcd_home();
/* bring cursor to 0,0 */
lcd_puts("hello");
/* type something random */
lcd_gotoxy(0,1);
/* go to 2nd row 1st col */
lcd_puts("maxEmbedded");
/* type something random */
_delay_ms(50);
/* wait 50ms */
} }
Después de construir el proyecto y la quema de su código, verá "hola" escrito en la primera fila y "maxEmbedded" escrita en la segunda fila. Este fue un ejemplo básico. Ahora le toca a usted sobre cómo explotar los recursos de la biblioteca. Bueno, trate de éste hacia fuera por ti mismo. La pantalla LCD debe mostrar su en la primera línea, 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 más 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 laminación. El texto debe rodar en la vista y luego salir de ella. He encontrado un tal código aquí.
Displaying ‘int and ‘float values Uno de los inconvenientes de la biblioteca de Fleury es que la hay ninguna función que puede mostrar directamente un valor entero o de punto flotante en la pantalla LCD. Para ello, podemos utilizar lcd_puts () sí, en combinación con itoa () y sprintf () los funtions. Para la visualización de valores enteros, se requiere la siguiente modificación. char buffer[10]; int n = 12345; itoa(n, buffer, 10); lcd_puts(buffer);
Para mostrar los valores de punto flotante, se requiere la siguiente modificación. char buffer[10]; float f = 3.1415926; sprintf(buffer, "%f", f); lcd_puts(buffer);
Descripción detallada Rutinas básicas para interactuar con una pantalla LCD de caracteres basado en HD44780U. #include
Pantallas LCD de caracteres se pueden encontrar en muchos dispositivos, como las máquinas de café espresso, impresoras láser. El controlador Hitachi HD44780 y sus controladores compatibles como Samsung KS0066U han convertido en un estándar de la industria para este tipo de pantallas. Esta biblioteca permite una fácil interconexión 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 inclusión 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 también es compatible con la generación de la señal R / W a través de línea de dirección A8. Ver también El capítulo Interfaz LCD HD44780 En base a un AVR en mi página de inicio, que muestra los circuitos de ejemplo de cómo conectar un LCD a un controlador AVR. Autor Peter Fleury pfleu ry @ g mx.ch http://tinyurl.com/peterfleury Versión 2.0 Derechos de autor (C) 2015 Peter Fleury, GNU General Public License versión 3
Definición de tipo de controlador LCD Utilice 0 para el controlador HD44780, cambie a 1 para pantallas con controlador KS0073. #define LCD_CONTROLLER_KS0073
0
Definiciones para Tamaño de pantalla Cambiar estas definiciones para adaptarse a su entorno de visualización Estas definiciones pueden ser definidas en un archivo separado incluyen lcd_definitions.h en lugar de modificar este archivo añadiendo D_LCD_DEFINITIONS_FILE a la sección CDEFS en el Makefile. Todas las definiciones añadidas a la lcd_definitions.h archivo anularán las definiciones por defecto de lcd.h #define LCD_LINES
2
#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
0
Definiciones para el modo IO 4 bits Las líneas de datos de cuatro LCD y las tres líneas 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 líneas de control en puertos diferentes.
Normalmente las cuatro líneas de datos deben ser asignadas a bits 0..3 en un puerto, pero es posible conectar estas líneas 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 añadiendoD_LCD_DEFINITIONS_FILE al CDEFS sección en el Makefile. Todas las definiciones añadidas a la lcd_definitions.h archivo anularán las definiciones por defecto de lcd.h #define LCD_IO_MODE
#define LCD_PORT
1
PORTA
#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
0
#define LCD_DATA1_PIN
1
#define LCD_DATA2_PIN
2
#define LCD_DATA3_PIN
3
#define
LCD_RS_PORT
#define LCD_RS_PIN
#define
LCD_PORT
4
LCD_RW_PORT
#define LCD_RW_PIN
5
LCD_PORT
#define
LCD_E_PORT
#define LCD_E_PIN
LCD_PORT
6
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 inclusión separada lcd_definitions.h en lugar de modificar este archivo añadiendo D_LCD_DEFINITIONS_FILE al CDEFS sección en el Makefile. Todas las definiciones añadidas a la lcd_definitions.h archivo anularán las definiciones por defecto de lcd.h #define LCD_DELAY_BOOTUP
#define LCD_DELAY_INIT
16000
5000
#define LCD_DELAY_INIT_REP
64
#define LCD_DELAY_INIT_4BIT
64
#define LCD_DELAY_BUSY_FLAG
4
#define LCD_DELAY_ENABLE_PULSE
1
Definiciones para instrucciones de comando LCD Las constantes definen las diversas instrucciones del controlador LCD que se pueden pasar a la función lcd_command (), consulte la hoja de datos HD44780 para una descripción completa. #define LCD_CLR
#define LCD_HOME
0 / * DB0: clara pantalla * /
1 / * DB1: retorno a la posición inicial * /
#define LCD_ENTRY_MODE
2 / * DB2: establecer el modo de entrada * /
#define LCD_ENTRY_INC
1 / * DB1: 1 = incremento, 0 = decremento * /
#define LCD_ENTRY_SHIFT
#define LCD_ON
0 / * DB2: turno 1 = visualización en * /
3 / * DB3: convertir lcd / cursor en * /
#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
0 / * DB0: cursor parpadeante? * /
4 / * DB4: mover el cursor / pantalla * /
#define LCD_MOVE_DISP
pantalla move (0-> cursor): 3 / * DB3? * /
#define LCD_MOVE_RIGHT
#define LCD_FUNCTION
2 / * DB2: mover a la derecha (0-> izquierda)? * /
5 / * DB5: conjunto de funciones * /
#define LCD_FUNCTION_8BIT
4 / * DB4: establecer el modo 8BIT (0-> Modo
4BIT) * /
#define LCD_FUNCTION_2LINES
#define LCD_FUNCTION_10DOTS
3 / * DB3: dos líneas (0-> una línea) * /
2 / * DB2: 5x10 fuente (0-> fuente 5x7) * /
#define LCD_CGRAM
6 / * DB6: establecer la dirección RAM CG * /
#define LCD_DDRAM
7 / * DB7: establecer la dirección RAM DD * /
#define LCD_BUSY
7 / * DB7: LCD está ocupado * /
#define LCD_ENTRY_DEC cursor dir * /
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
#define LCD_DISP_ON
0x08 / * mostrar apagado * /
0x0C * Pantalla / on, cursor fuera * /
#define LCD_DISP_ON_BLINK
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
(disminución) * /
#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 línea,
#define LCD_FUNCTION_4BIT_2LINES
0x28 / * interfaz de 4 bits, dos líneas,
puntos 5x7 * /
#define LCD_FUNCTION_8BIT_1LINE
interfaz 0x30 / * 8 bits, de una sola línea,
puntos 5x7 * /
#define LCD_FUNCTION_8BIT_2LINES
0x38 / * interfaz de 8 bits, dos líneas,
puntos 5x7 * /
#define LCD_MODE_DEFAULT
((1 << LCD_ENTRY_MODE) | (1 <<
LCD_ENTRY_INC))
Funciones vacío lcd_init (dispAttr uint8_t) Inicializar pantalla y seleccione el tipo de cursor. Más ...
vacío lcd_clrscr (void) Borrar pantalla y ajustar el cursor a la posición inicial. Más ...
vacío lcd_home (void) Establecer cursor a la posición inicial. Más ...
vacío lcd_gotoxy (uint8_t x, uint8_t y) Establecer cursor a la posición especificada. Más ...
vacío lcd_putc (char c) Carácter pantalla en la posición actual del cursor. Más ...
vacío lcd_puts (const char * s) Pantalla cadena sin salto de línea automático. Más ...
vacío lcd_puts_p (const char * progmem_s)
Pantalla cadena a partir de la memoria de programa y sin salto de línea automático. Más ...
vacío lcd_command (cmd uint8_t) Enviar comando de instrucciones del controlador LCD. Más ...
vacío lcd_data (datos uint8_t) Enviar byte de datos al controlador LCD. Más ...
#define lcd_puts_P (__s) lcd_puts_p (PSTR (__ s)) macros para almacenar de forma automática cadena constante en la memoria del programa
Macro Definición Documentación #define LCD_CONTROLLER_KS0073 0 Utilice 0 para el controlador HD44780, 1 para el controlador KS0073 #define LCD_LINES 2 número de líneas visibles de la pantalla #define LCD_DISP_LENGTH 16 Visibles caracteres por línea de la pantalla #define LCD_LINE_LENGTH 0x40 longitud de la línea interna de la pantalla #define LCD_START_LINE1 0x00 Dirección DDRAM del primer carácter de la línea 1 #define LCD_START_LINE2 0x40
Dirección DDRAM del primer carácter de la línea 2 #define LCD_START_LINE3 0x14 Dirección DDRAM del primer carácter de la línea 3 #define LCD_START_LINE4 0x54 Dirección DDRAM del primer carácter de la línea 4 #define LCD_WRAP_LINES 0 0: sin envoltura, 1: envolver al final de la línea de visibile #define LCD_IO_MODE 1 0: memoria de modo asignada, 1: modo de puerto IO #define LCD_PORT PORTA puerto para las líneas 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 LCD_PORT puerto de datos de 4 bits bit 3 #define LCD_DATA0_PIN 0 pin para los datos de 4 bits bit 0
#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 línea RS #define LCD_RS_PIN 4 pines para RS línea LCD_RW_PORT #define LCD_PORT puerto para la línea RW #define LCD_RW_PIN 5 pin para la línea RW LCD_E_PORT #define LCD_PORT puerto para Habilitar línea #define LCD_E_PIN 6 pines para habilitar la línea #define LCD_DELAY_BOOTUP 16000 retraso en micro segundos después del encendido LCD_DELAY_INIT #define 5000
demora en micro segundos después de un comando de inicialización enviada #define LCD_DELAY_INIT_REP 64 demora en micro segundos después repitió comando de inicialización #define LCD_DELAY_INIT_4BIT 64 demora en micro segundos después de ajustar el modo de 4 bits #define LCD_DELAY_BUSY_FLAG 4 vez en micro segundos, el contador de direcciones se actualiza después de ocupados de la bandera se borra #define LCD_DELAY_ENABLE_PULSE 1 permitir ancho de pulso de la señal en m icro segundos
Documentación de las funciones void lcd_init ( uint8_t dispAttr ) Inicializar pantalla y seleccione el tipo de cursor. Parámetros dispAttr LCD_DISP_OFF pantalla apagada LCD_DISP_ON visualización en, cursor fuera LCD_DISP_ON_CURSORvisualización en, cursor en LCD_DISP_ON_CURSOR_BLINK visualización en, cursor en intermitente
Devoluciones ninguno void lcd_clrscr ( vacío ) Borrar pantalla y ajustar el cursor a la posición inicial. Devoluciones ninguno
void lcd_home ( vacío ) Establecer cursor a la posición inicial. Devoluciones ninguno void lcd_gotoxy ( uint8_t x, uint8_t y ) Establecer cursor a la posición especificada. Parámetros X posición horizontal (0: dejó la mayor parte de posición) y posición vertical (0: primera línea) Devoluciones ninguno void lcd_putc ( Char c ) Carácter pantalla en la posición actual del cursor. Parámetros c carácter a visualizar Devoluciones ninguno lcd_puts void ( const char * s ) Pantalla cadena sin salto de línea automático. Parámetros 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 línea automático. Parámetros progmem_s se mostrará la cadena de memoria de programa Devoluciones ninguno Ver también lcd_puts_P void lcd_command ( uint8_t cmd ) Enviar comando LCD de instrucciones del controlador. Parámetros cmd instrucción 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 Parámetros datos byte a enviar a un controlador de LCD, consulte la hoja de datos HD44780 Devoluciones ninguno