Módulo VK16K33 – Matrices LED 8x8 mediante I2C
Para finalizar las prácticas con el controlador VK16K33, se ha desarrollado y probado una librería en PIC18 Basic para controlar dos matrices LED de 8x8, formando una superficie gráfica de 16x8 píxeles.
La comunicación se realiza mediante I2C y se utiliza un framebuffer de 16 bytes que permite realizar operaciones gráficas antes de actualizar la pantalla.
Funciones de la librería:
Comunicación y actualización:
- VK16K33_Init(): inicializa el controlador.
- VK16K33_Cmd(): envía un comando al controlador.
- VK16K33_Write_Byte(): escribe un byte en la memoria local y en el controlador.
- VK16K33_Update(): transfiere el framebuffer completo a la pantalla.
Configuración y control:
- VK16K33_Display_On(): enciende la pantalla.
- VK16K33_Display_Off(): apaga la pantalla.
- VK16K33_Set_Blink(): configura el parpadeo (desactivado, 0,5 Hz, 1 Hz o 2 Hz).
- VK16K33_Set_Brightness(): ajusta el brillo entre 0 y 15.
- VK16K33_SetRotation(): selecciona la orientación de 0° o 180°.
Funciones gráficas:
- VK16K33_Clear_RAM(): borra únicamente el framebuffer.
- VK16K33_Clear(): borra el framebuffer y actualiza la pantalla.
- VK16K33_Fill(): enciende o apaga todos los píxeles del framebuffer.
- VK16K33_Invert(): invierte el estado de los píxeles.
- VK16K33_Pixel(): controla individualmente cada píxel.
- VK16K33_Row(): escribe una fila completa.
- VK16K33_Column(): escribe una columna completa.
- VK16K33_Test(): enciende todos los píxeles para comprobar el funcionamiento de las matrices.
Caracteres y desplazamiento de texto:
- VK16K33_PutC(): dibuja un carácter en las coordenadas indicadas.
- VK16K33_Print(): escribe una cadena de caracteres.
- VK16K33_ScrollReset(): reinicia la posición del desplazamiento.
- VK16K33_ScrollLeft(): desplaza circularmente una cadena de texto, un píxel por llamada, sin pausas internas.
Las funciones de texto utilizan la fuente Font_01 de 5x7 píxeles, con una columna adicional de separación entre caracteres.
Funciones adicionales de desplazamiento gráfico:
- VK16K33_RotateLeft(): desplaza circularmente todo el framebuffer un píxel hacia la izquierda.
- VK16K33_RotateRight(): desplaza circularmente todo el framebuffer un píxel hacia la derecha.
Estas dos últimas funciones permiten desplazar cualquier contenido gráfico, incluidos textos, símbolos y bitmaps. Los píxeles que salen por un extremo reaparecen por el contrario.
A diferencia de las funciones de texto, trabajan directamente sobre el contenido del framebuffer, independientemente de cómo se haya generado.
Archivos adjuntos: