Librería para Display de Nokia 3310 con C30 y dsPIC
Saturday, 28 April 2007 09:58
Proyecto realizado con un dsPIC y C30. Se proveen funciones para Texto, Puntos, Líneas, Cuadrados, Círculos y Bitmaps. Con Buffer de memoria para la composición de la pantalla en segundo plano.
Los displays gráficos de los teléfonos Nokia 3310 se caracterizan por tener una magnífica relación calidad / precio, ya que por un módico precio puedes disfrutar de una resolución de 84 x 48 pixels, con controlador integrado, y con un contraste y velocidad de respuesta bastante aceptables. Además, para usarlos sólo son necesarios 5 pines del microcontrolador, incluso menos que los LCD tradicionales de modo texto.
En vista de todas estas virtudes, y utilizando como base la librería escrita por mi amigo Cucaracha para manejar un display de Nokia 3310 con PIC, me dispuse a escribir una librería para dsPIC en C30. Y una vez puestos, he implementado diversas funciones que la completan y facilitan bastante la realización de todo tipo de gráficos.
CONEXIONES
Recomiendo visitar la web de Cucaracha ( http://webs.ono.com/usr008/cucaracha/ ) y descargar el zócalo que él diseñó para conectar el display cómodamente, sin necesidad de soldar sobre sus pequeñas pistas.
En cualquier caso, las patillas de conexión del display con el micro son:
sclk
sda
dc
cs
res
Las otras tres son de alimentación:
Vdd a 5V
Vss a GND
Vo con un condensador de 10uF a GND
FUNCIONES
Función de inicialización
void lcd_init(void)
Esta función debe ser llamada en el main() de tu programa, en la fase de arranque, para que configure los parámetros básicos del Display.
Funciones internas
int write(int handle, void *buffer, unsigned int len) void nokia_envia_bits(char byte_dato) void nokia_envia_dato(char byte_dato) void nokia_envia_comando(char byte_comando) float arcocoseno (perimetro,radio)
Estas cinco funciones son necesarias para el funcionamiento interno de la librería y no son útiles para el usuario.
Este grupo de funciones permite escribir directamente sobre la pantalla, sin usar ningún buffer intermedio. Para ello, pondremos el cursor en la posición donde queremos escribir (nokia_gotoxy) y luego enviamos la cadena de caracteres (nokia_imprime_caracter). También podemos borrar la pantalla (nokia_borra_pantalla).
Funciones de escritura a través de memoria de video
Este grupo de funciones permite realizar distintas actividades gráficas sobre una memoria de video, que posteriormente puede ser volcada al display de una tacada.
Para la gestión de dicha memoria de vídeo se utilizan las funciones nokia_borra_memoria() y nokia_imprime_memoria(). Cabe destacar que la segunda no vacía la memoria, por lo que si seguimos dibujando, en la siguiente impresión que se haga seguirá estando lo que había; es como si se dibuja encima.
El resto de funciones no tiene mucha historia:
nokia_punto: dibuja un punto en las coordenadas x,y de color NEGRO o BLANCO.
nokia_linea: dibuja una línea desde x1,y1 hasta x2,y2 de color NEGRO o BLANCO.
nokia_rectangulo: dibuja un rectángulo desde el vértice x1,y1 hasta el vértice x2,y2 de color NEGRO o BLANCO. Si el estilo es TRANSPARENTE sólo se dibujará el perímetro; si es OPACO se dibujará completamente.
nokia_circulo: dibuja un círculo con centro en x,y con un radio determinado, de color BLANCO o NEGRO, y con estilo TRANSPARENTE u OPACO.
nokia_bitmap: dibuja el bitmap que se envíe en un string en las coordenadas x e y. Hay que indicar el ancho y el alto. Los bytes que formen el bitmap tienen que estár orientados en vertical y barriendo de izquierda a derecha.
nokia_texto: escribe la frase que se envíe en las coordenadas x,y usando la fuente NORMAL , NEGRITA o COMPRIMIDA.
Os dejo aquí un video del resultado, y en el área de Descargas encontraréis la librería junto con un programa de pruebas: