Beruflich Dokumente
Kultur Dokumente
Dia 5
Lcd_Config
Descripcin: Inicializa LCD usando un bus de datos
de 4 bits. El puerto de Control (ctrlport) y Datos (dataport) tiene las asignaciones de terminales especificadas.
unsigned short *ctrl_data_port, unsigned short RS, unsigned short EN, unsigned short WR, unsigned short D7, unsigned short D6, unsigned short D5, unsigned short D4
void Lcd_Config(
);
Lcd_Config 2
Ejemplo: Lcd_Config(&PORTC,0,1,2,4,5,6,7);
Lcd_Init
Descripcin: Inicializa el LCD usando un bus de 4 bits. El puerto de Control (ctrlport) y Datos (dataport) tiene la siguiente asignacin de terminales.E ctrl_data_port.3 RS ctrl_data_port.2 D7 ctrl_data_port.7 D6 ctrl_data_port.6 D5 ctrl_data_port.5 D4 ctrl_data_port.4 void Lcd_Init(unsigned short *ctrl_data_port);
Lcd_Init 2
Ejemplo: Lcd_Init(&PORTB);
Lcd_Out
Descripcin: Imprime mensaje en el LCD en la fila y columna especificada (row y col). void Lcd_Out(
unsigned short row, unsigned short col, char *text );
Ejemplo:
-Imprime Hello! en el LCD en la lnea 1, columna 3
Lcd_Out(1, 3, "Hello!");
Lcd_Out_Cp
Descripcin: Imprime mensaje en el LCD en la posicin actual del cursor. void Lcd_Out_Cp(char *text); Ejemplo:
- Imprime Here! en la posicin actual del cursor
Lcd_Out_Cp("Here!");
Lcd_Chr
Descripcin: Imprime un caracter en el LCD en la fila y columna especificada (row y col). void Lcd_Chr(
unsigned short row, unsigned short col, char character );
Ejemplo:
- Imprime la letra i en el LCD en la lnea 2,y columna 3
Lcd_Chr(2, 3, 'i');
Lcd_Chr_Cp
Descripcin: Imprime un caracter en el LCD en la posicin actual del cursor. void Lcd_Chr_Cp(char character); Ejemplo:
- Imprime la letra e en la posicin actual del cursor
Lcd_Chr_Cp('e');
Lcd_Cmd
Descripcin: Enva un comando al LCD. Se puede
pasar a la funcin una de las constantes predefinidas. Los comandos son los mismos para ambos modos de manejo del LCD (bus 8 o 4 bits).
void Lcd_Cmd(unsigned short command); Ejemplo: - Apaga el cursor, no aparece en el LCD Lcd_Cmd(LCD_CURSOR_OFF);
Enva mensaje
ByteToStr
Descripcion: Crea una cadena de salida de un pequeo numero sin signo (valor numrico menos a 0x100). La cadena esta ajustada a un ancho de 3 caracteres; Las posiciones a la izquierda que no se usan en la conversin se rellenan con espacios. void ByteToStr(unsigned short number, char *output); Ejemplo: unsigned short t = 24; char txt[4]; //se inicializa un arreglo con 4 espacios ByteToStr(t, txt); // txt es " 24" (un espacio en blanco)
ShortToStr
Descripcin: Crea una cadena de salida de un numero pequeo con signo (valor numrico menor a 0x100). La cadena esta ajustada a un ancho de 4 caracteres; Las posiciones a la izquierda que no se usan en la conversin se rellenan con espacios.
WordToStr
Descripcin: Crea una cadena de salida de un numero sin signo (Valor numrico de una variable unsigned). La cadena esta ajustada a un ancho de 5 caracteres; Las posiciones a la izquierda que no se usan en la conversin se rellenan con espacios. void WordToStr(unsigned number, char *output);
Ejemplo: unsigned t = 437; char txt[6]; WordToStr(t, txt);
IntToStr
Descripcin: Crea una cadena de salida de un numero con signo (Valor numrico de una variable int). La cadena esta ajustada a un ancho de 6 caracteres; Las posiciones a la izquierda que no se usan en la conversin se rellenan con espacios.
// Inicializa un arreglo con 7 espacios // txt es " -4220" (un espacio en blanco)
LongToStr
Descripcin: Crea una cadena de salida de un numero largo con
signo (Valor numrico de una variable long). La cadena esta ajustada a un ancho de 11 caracteres; Las posiciones a la izquierda que no se usan en la conversin se rellenan con espacios.
FloatToStr
Descripcin: Crea una cadena de salida de un numero de punto flotante. La cadena contiene un formato normalizado de un numero (mantisa entre 0 y 1) con signo en la primera posicin. La mantisa esta ajustada a un formato de 6 dgitos, 0.ddddd; Hay siempre 5 dgitos a continuacin del punto decimal.
Contador 0 - 255 : 3
Contador 0 - 255 : 4
Contador 0 - 255 : 5
Contador 0 - 255 : 6
Ejercicio propuesto 8
1. El alumno diseara un programa en donde se muestre en un LCD los nmeros desde 00 hasta el 99. Con un intervalo de tiempo entre cambio igual a 500 milisegundos.
Ejercicio propuesto 8
Contador 00-99 cada 500 mseg 00 Contador 00-99 cada 500 mseg 01 Contador 00-99 cada 500 mseg 02
Ejercicio propuesto 9
1. Programa que utilice un LCD, configurado para usar un bus de 4 bits. En el LCD deben aparecer en forma secuencial, los nmeros de la secuencia 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 - 32768. Los numero deben ser generados por operaciones aritmticas. El desplegado debe utilizar la segunda fila, presentando hasta 3 numeros consecutivos( un numero a la izquierda, uno mas al centro y otro a la derecha ).
Ejercicio propuesto 9
Serie de numeros Serie de numeros 1 Serie de numeros 1 2
Serie de numeros 1 2
Serie de numeros 8
Serie de numeros 8 16
Serie de numeros 8 16
32
32768
Ejercicio propuesto 10
1. Programa que utilice un LCD, configurado para usar un bus de 4 bits. En el LCD debe aparecer un mensaje que se desplace en toda las filas del display. Considere un display de 4 lineas con 20 caracteres por lineas.
Ejercicio propuesto 10
Keypad_Init
Descripcin: Inicializa el puerto para trabajar con el teclado. Las terminales del teclado deben estar conectadas de la siguiente forma:
Keypad_Init 2
Ejemplo: Keypad_Init(&PORTB);
Keypad_Read
Descripcin: Verifica si alguna tecla fue presionada. La funcin
1 2 9 C * 0 # D 1 2 11 12 13 14 15 16
Keypad_Released
Descripcin: La llamada a la funcin Keypad_Released es
una funcin blocking call: La funcin espera hasta que cualquier tecla sea presionada y liberada. Cuando se libera, la funcin regresa de 1 a 16, dependiendo de la tecla presionada.
Convierte a ASCII
Enva a LCD
void main() { cnt = 0; Keypad_Init(&PORTD); Lcd8_Config(&PORTC, &PORTB, 0, 2, 1, 7, 6, 5, 4, 3, 2, 1, 0); // Inicializa LCD en puerto B y puerto C Lcd8_Cmd(LCD_CLEAR); // Limpia display Lcd8_Cmd(LCD_CURSOR_OFF); // Cursor apagado Lcd8_Out(1, 1, "Key :"); Lcd8_Out(2, 1, "Times:"); do { kp = 0; // Espera a que se presione una tecla pressed do kp = Keypad_Read(); while (!kp); // Prepara valor para salida switch (kp) { case 13: kp = *; //42; break; // '*' case 14: kp = 48; break; // '0' case 15: kp = 35; break; // '#' default: kp += 48; } cnt++; Lcd8_Chr(1, 10, kp); if (cnt == 255) { cnt = 0; Lcd8_Out(2, 10, " "); } // Imprime en LCD WordToStr(cnt, txt); Lcd8_Out(2, 10, txt); } while (1); }
unsigned short kp, cnt; char txt[5]= ; void main() { cnt = 0; Keypad_Init(&PORTD); Lcd_Init( &PORTB); // Inicializa LCD en puerto B y puerto C Lcd_Cmd(LCD_CURSOR_OFF); // Cursor apagado Lcd_Out(1, 1, "Key :"); do { kp = 0; // Espera a que se presione una tecla pressed do kp = Keypad_Read(); while (!kp); //
// Prepara valor para salida switch (kp) { case 1: case 2: case 3: kp=kp+48; break; case 5: case 6: case 7: kp=kp+47; break; case 9: case 10: case 11: kp=kp+46; break; case 13: kp = *; break; case 14: kp = 48; break; case 15: kp = 35; break; } Lcd_Chr(1, 10, kp); } while (1); }
Ejercicio propuesto 11
1. El alumno realizara un programa que tome 3 dgitos desde un teclado matricial, los guarde en un arreglo, los convierta a un numero que se guarde en una variable tipo entera. Con este numero el alumno deber proporcionar el producto por 2 y divisin entre 2 resultantes. Visualizando los resultados en un LCD.
Ejercicio propuesto 10
Cual es el numero de 3 cifras: Cual es el numero de 3 cifras: 025
Cual es el numero de 3 cifras: 025 El producto por 2 es: 050 La divisin entre 2 es: 012