Las siguientes Líneas de Código, configuran el funcionamiento de la LCD.}
Se muestran 5 Funciones definidas:
1. void LCD_ENVIAR (char a)
Esta función está diseñada para imprimir un carácter en la LCD con un bus de 4 Datos.
Primero Envía el Nibble mas Significativo y Luego envía el Nibble menos Significativo, para esto la función LCD_ENVIAR define un parámetro tipo Carácter "char a".
El caracter a enviar se guarda en dos variables: la Variable "a" y la Variable "temp", en la variable temp dejo los 4 bits mas significativo "Nibble Alto", y luego para enviar los 4 bits menos significativo, rotamos 4 veces la variable "a" a la izquierda.
2. void LCD_DATO (char a)
Esta función está diseñada para enviar un solo carácter, la misma define un parámetro para argumentar el carácter que queremos enviar.
Esta función establece mediante la linea RS=1 el envío de carácter.
3. void LCD_CMD (char a)
Esta función establece que el Dato a ser enviado será un COMANDO de CONFIGURACIÓN más no un Carácter. Mediante la Linea RS=0.
4. void LCD_IMPRIMIR (unsigned char *a)
La siguiente función envía una cadena de caracteres. Implementando la proposición for incrementa un contador (Variable "i") desde Cero "0" hasta que tome el Carácter nulo '\0' Cuando toma este carácter nulo termina de enviar caracteres.
5. void LCD_CONFIG ()
Esta función envía los comandos necesarios para imprimir un mensaje en la pantalla.
void LCD_ENVIAR (char a){
char temp=(a&0xF0); // PREPARO EL DATO PARA ESTABLECERLO EN EL BUS
LCD_BUS &=0x0F; // PREPARO EL PUERTO PARA ENVIAR EL DATO.
LCD_BUS |=temp; // ESTABLESCO EL DATO EN EL BUS DE LA LCD.
// SE HACE UNA SUMA LÓGICA ENTRE PORTD Y LA VARIABLE temp.
E = 1;
__delay_ms(1);
E = 0;
__delay_ms(1);
// envío del nibble menos significativo
a=a<<4; // ROTO LOS 4 BITS MENOS SIGNIFICATIVO A LA IZQUIERDA
LCD_BUS &=0x0F // PREPARO EL PUERTO PARA ENVIAR EL DATO.
LCD_BUS |=a; // ESTABLEZCO EL DATO EN EL BUS DE LA LCD.
E = 1; // ACTIVO LA LCD.
__delay_ms(1); // ESPERO 1 mili segundo.
E = 0; // DESACTIVO LA LCD
__delay_ms(1); // ESPERO 1 mili segundo.
}
//________________________________
void LCD_DATO (char a){
RS=1;
LCD_ENVIAR(a);
}
//________________________________
void LCD_CMD (char a){
RS=0;
LCD_ENVIAR(a);
}
//________________________________
void LCD_IMPRIMIR (unsigned char *a){
int i;
RS =1;
for(i=0;a[i]!='\0';i++)
LCD_ENVIAR(a[i]);
}
//________________________________
void LCD_CONFIG (){
LCD_CMD(0X02);
LCD_CMD(0x28);
LCD_CMD(0X0C);
LCD_CMD(0X06);
LCD_CMD(0X01);
}
Se muestran 5 Funciones definidas:
1. void LCD_ENVIAR (char a)
Esta función está diseñada para imprimir un carácter en la LCD con un bus de 4 Datos.
Primero Envía el Nibble mas Significativo y Luego envía el Nibble menos Significativo, para esto la función LCD_ENVIAR define un parámetro tipo Carácter "char a".
El caracter a enviar se guarda en dos variables: la Variable "a" y la Variable "temp", en la variable temp dejo los 4 bits mas significativo "Nibble Alto", y luego para enviar los 4 bits menos significativo, rotamos 4 veces la variable "a" a la izquierda.
2. void LCD_DATO (char a)
Esta función está diseñada para enviar un solo carácter, la misma define un parámetro para argumentar el carácter que queremos enviar.
Esta función establece mediante la linea RS=1 el envío de carácter.
3. void LCD_CMD (char a)
Esta función establece que el Dato a ser enviado será un COMANDO de CONFIGURACIÓN más no un Carácter. Mediante la Linea RS=0.
4. void LCD_IMPRIMIR (unsigned char *a)
La siguiente función envía una cadena de caracteres. Implementando la proposición for incrementa un contador (Variable "i") desde Cero "0" hasta que tome el Carácter nulo '\0' Cuando toma este carácter nulo termina de enviar caracteres.
5. void LCD_CONFIG ()
Esta función envía los comandos necesarios para imprimir un mensaje en la pantalla.
void LCD_ENVIAR (char a){
char temp=(a&0xF0); // PREPARO EL DATO PARA ESTABLECERLO EN EL BUS
LCD_BUS &=0x0F; // PREPARO EL PUERTO PARA ENVIAR EL DATO.
LCD_BUS |=temp; // ESTABLESCO EL DATO EN EL BUS DE LA LCD.
// SE HACE UNA SUMA LÓGICA ENTRE PORTD Y LA VARIABLE temp.
E = 1;
__delay_ms(1);
E = 0;
__delay_ms(1);
// envío del nibble menos significativo
a=a<<4; // ROTO LOS 4 BITS MENOS SIGNIFICATIVO A LA IZQUIERDA
LCD_BUS &=0x0F // PREPARO EL PUERTO PARA ENVIAR EL DATO.
LCD_BUS |=a; // ESTABLEZCO EL DATO EN EL BUS DE LA LCD.
E = 1; // ACTIVO LA LCD.
__delay_ms(1); // ESPERO 1 mili segundo.
E = 0; // DESACTIVO LA LCD
__delay_ms(1); // ESPERO 1 mili segundo.
}
//________________________________
void LCD_DATO (char a){
RS=1;
LCD_ENVIAR(a);
}
//________________________________
void LCD_CMD (char a){
RS=0;
LCD_ENVIAR(a);
}
//________________________________
void LCD_IMPRIMIR (unsigned char *a){
int i;
RS =1;
for(i=0;a[i]!='\0';i++)
LCD_ENVIAR(a[i]);
}
//________________________________
void LCD_CONFIG (){
LCD_CMD(0X02);
LCD_CMD(0x28);
LCD_CMD(0X0C);
LCD_CMD(0X06);
LCD_CMD(0X01);
}
Comentarios
Publicar un comentario