top of page

PIC 18f4550 con GLCD Nokia 5110 MikroC

Actualizado: 9 jun 2019


Figura 1: GLCD Nokia 5110

En este proyecto se utiliza un microcontrolador PIC18F4550 con la pantalla LCD gráfica Nokia 5110. En este proyecto se va a usar mikroC PRO para compilador PIC. El nombre Nokia 5110 proviene del teléfono móvil Nokia 5110. El Nokia 5110 LCD tiene un controlador llamado PCD8544, es similar al LCD del teléfono móvil Nokia 5110, utiliza el protocolo de comunicación SPI, requiere 5 pines de control (como máximo), es de bajo costo y fácil de usar.

La resolución de este LCD es de 84 x 48, lo que significa que tiene 4032 píxeles. Este módulo funciona solo con 3.3V y 5V.

Este módulo tiene 8 pines: RST (reinicio), CE (chip select), DC (o D / C: datos / comando), Din (datos en), Clk (reloj), VCC , BL (luz de fondo) y Gnd (tierra).


Los pines que pueden conectarse al microcontrolador son: RST, CE, DC, Din y Clk.


 

Controlador Nokia 5110 para el compilador mikroC:

Esta pequeña librería de controladores y gráficos nos permite imprimir textos, dibujar líneas, círculos y muchas otras funciones (enumeradas a continuación). Esta biblioteca es solo un archivo .C , su nombre completo (con extensión): NOKIA5110.C . Se puede instalar agregándolo a la carpeta del proyecto mikroC.


La conexión de la pantalla LCD al microcontrolador se define en el código principal antes de incluir el archivo fuente de la biblioteca.

  1. // Nokia 5110 LCD module connections

  2. // use software SPI

  3. #define LCD_RST RD0_bit // reset pin, optional!

  4. #define LCD_CS RD1_bit // chip select pin, optional!

  5. #define LCD_DC RD2_bit // data/command pin

  6. #define LCD_DAT RD3_bit // data-in pin (MOSI)

  7. #define LCD_CLK RD4_bit // clock pin

  8. // end LCD module connections


 

Funciones de la biblioteca del Nokia 5110:

Esta es una lista de las funciones de la biblioteca.


LCD_Begin (): esta función inicializa el Nokia 5110 LCD.


LCD_SetContrast (con): establece el contraste de la pantalla donde: 0 <= con <= 63.


LCD_Display (): imprime el búfer de datos en la pantalla, se debe llamar después de cualquier acción de dibujo.


LCD_Clear (): borra toda la pantalla LCD.


LCD_Fill (): llena toda la pantalla LCD (escribe todos los píxeles de la pantalla LCD).

LCD_SetRotation (rot): establece la configuración de rotación para la pantalla, pudrir puede estar en el rango [0, 3].


LCD_GetRotation (): devuelve la configuración de rotación de la pantalla (valor de 0 a 3).

LCD_GetWidth (): devuelve el ancho de la pantalla, tomando en cuenta la rotación actual.

LCD_GetHeight (): devuelve la altura de la pantalla, tomando en cuenta la rotación actual.


LCD_TextSize (t_size): establece el tamaño del texto.


LCD_TextColor (t_color, t_bg): establece el color del texto donde t_color es el color del texto y t_bg es el color de fondo. Ambas variables son de tipo bool (pueden ser 1 o 0). El color negro se define como 1 (verdadero) y el blanco se define como 0 (falso).


LCD_GotoXY (x, y): mueve el cursor a la posición (x, y), x e y están en píxeles.

LCD_TextWrap (w): establece el ajuste de texto, si w = 1 (verdadero) el ajuste de texto está habilitado (predeterminado), si w = 0 (falso) el ajuste de texto está deshabilitado.

LCD_PutC (c): imprime un solo carácter c en la pantalla LCD.


LCD_PutCustomC (* c): imprime un carácter personalizado cen la pantalla con dimensión 5 × 7 (igual que la dimensión de fuente incorporada), este carácter debe almacenarse en el espacio de la ROM.

LCD_Print (* s): imprime una cadena s (texto) en la pantalla LCD.


LCD_Invert (inv): invierte la pantalla, inv puede ser 1 o 0.


LCD_DrawPixel (x, y, color): dibuja un píxel en la pantalla, x e y son las coordenadas en píxeles.

LCD_DrawLine (x0, y0, x1, y1, color): dibuja una línea desde (x0, y0) a (x1, y1).

LCD_DrawHLine (x, y, w, color): dibuja una línea horizontal desde (x, y) con un ancho de w.

LCD_DrawVLine (x, y, h, color); dibuja una línea vertical desde (x, y) con la altura de h.


LCD_DrawRect (x, y, w, h, color): dibuja un rectángulo desde (x, y) con el ancho wy la altura h. LCD_FillRect (x, y, w, h, color): llena un rectángulo desde (x, y) con el ancho wy la altura h . LCD_DrawRoundRect (x, y, w, h, r, color): dibuja un rectángulo redondo de (x, y) con ancho w , altura h y radio r.


LCD_FillRoundRect (x, y, w, h, r, color): llena el rectángulo redondo desde (x, y) con el ancho w , la altura h y el radio r.


LCD_DrawTriangle (x0, y0, x1, y1, x2, y2, color): dibuja un triángulo con puntos (x0, y0), (x1, y1) y (x2, y2).


LCD_FillTriangle (x0, y0, x1, y1, x2, y2, color): llena un triángulo con puntos (x0, y0), (x1, y1) y (x2, y2).


LCD_DrawCircle (x0, y0, r, color): dibuja un círculo desde (x0, y0) con radio r.


LCD_FillCircle (x0, y0, r, color): llena un círculo desde (x0, y0) con radio r .


LCD_DrawCircleHelper (x0, y0, r, nombre de usuario, color): dibuja un ayudante de círculo de (x0, y0) con radio r y nombre de usuario.


LCD_FillCircleHelper (x0, y0, r, nombre de usuario, delta, color): llena un ayudante de círculo de (x0, y0) con radio r y nombre de usuario.


LCD_ROMBMP (x, y, * mapa de bits, w, h, color): dibuja un mapa de bits ubicado en la ROM.

LCD_RAMBMP (x, y, * mapa de bits, w, h, color): dibuja un mapa de bits ubicado en la RAM.


El color variable es de tipo bool (puede ser 1 o 0). El color negro se define como 1 (verdadero) y el blanco se define como 0 (falso).


 

Figura 2: Simulación en Proteus 8.8 SP1

Código y Simulación en Proteus 8.8 SP1: http://bit.ly/2WEefkt



 

Referencias:

De estas páginas tome la información presentada en esta entrada:


 

Descarga librería NOKIA5110 : http://bit.ly/2XzQV3C

Comments


© 2019 BY Cdno Didactic - Profesor Pablo Cedeño

bottom of page