📄 lcd2.c
字号:
// LCD2.C
// Autor: Mikel Etxebarria
// (c) Ingenier韆 de Microsistemas Programados S.L.
// www.microcontroladores.com
// Bilbao 2006
//
// Funciones para la gesti髇 del display LCD, seg鷑 las siguientes conexiones:
//
// RB0-RB7 se conetcan con las l韓eas D0_D7 de datos del LCD
// RA1 se conecta con RS, RA2 con R/W y RA3 con E
//
// lcd_enviar(LCD_COMANDO/LCD_DATO,valor)
//
// Permite enviar un comando (LCD_COMANDO) o un dato (LCD_DATO)
// valor represeta el valor hex. a enviar
//
// lcd_init() Debe ser llamada antes que las otras funciones.
//
// lcd_putc(c) Visualiza c en la siguiente posici髇 del display.
// Caracteres especiales de control:
// \f Borrar display
// \n Saltar a la segunda linea
// \b Retroceder una posici髇.
//
// lcd_gotoxy(x,y) Selecciona la nueva posici髇 de escritura en el display.
// (la esquina superior izquierda es 1,1)
//
// lcd_getc(x,y) Devuelve el caracter de la posici髇 x,y del display.
#bit lcd_enable = 5.3 //RA3 --> Enable
#bit lcd_rw = 5.2 //RA2 --> R/W
#bit lcd_rs = 5.1 //RA1 --> RS
#byte lcd_a = 5 //Puerta A
#byte lcd_b = 6 //Puerta B
#define LCD_LINEA2 0x40 // Direcci髇 de memoria para la segunda l韓ea
#define LCD_DATO 1 // Modo dato
#define LCD_COMANDO 0 // Modo comando
//Definici髇 de los c骴igos de los comandos mas frecuentes
#define LCD_CLEAR 0x01
#define LCD_HOME 0x02
#define LCD_DISPLAY_OFF 0x08
#define LCD_DISPLAY_ON 0x0C
#define LCD_CURSOR_ON 0x0E
#define LCD_CURSOR_BLINK 0x0F
#define LCD_CURSOR_SHIFT_RIGHT 0x10
#define LCD_CURSOR_SHIFT_LEFT 0x14
#define LCD_DISPLAY_SHIFT_RIGHT 0x18
#define LCD_DISPLAY_SHIFT_LEFT 0x1C
//Realiza un ciclo de lectura de la pantalla LCD
int lcd_leer()
{
int valor;
set_tris_a(0x11); //RA1-RA3 se configuran como salidas
set_tris_b(0xFF); //RB0-RB7 se configuran como entradas
lcd_rw = 1; //Modo lectura
delay_cycles(1);
lcd_enable = 1; //Activaci髇 del LCD
delay_cycles(1);
valor = lcd_b; //Lectura de datos procedentes de LCD
lcd_enable = 0; //Desactivaci髇 del LCD
delay_cycles(1);
set_tris_b(0x00); //RB0-RB7 se configuran como salidas
return valor;
}
//Envia a la pantalla un comando (dir=1) o un dato (dir=0)
void lcd_enviar(int dir, int valor)
{
set_tris_a(0x00);
set_tris_b(0x00); //Puerta A y B salidas
lcd_rs = 0; //Modo comando
while( bit_test(lcd_leer(),7) ); // Lectura del biy bussy del LCD para saber si est
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -