Mostrando entradas con la etiqueta LCD. Mostrar todas las entradas
Mostrando entradas con la etiqueta LCD. Mostrar todas las entradas

sábado, 23 de diciembre de 2017

Arduino Ejemplos: Reloj para coche con RTC DS1307, LCD y DHT11

Hola a todos y todas!!!

Hace un tiempo se me rompió el reloj del coche, un viejito Clio de 2004. Estuve mirando el repuesto y estaba entre 20 y 40€ y su función en mi coche era solamente dar la hora, el sensor de temperatura era un extra que no puse en su momento.

Bueno después de muchos años el reloj del coche paso a mejor vida...

Arduino ha sido una solución original y económica para este problema. Con menos de 10€ he montado un reloj con 2 sensores de temperatura/humedad DHT11 un LCD a juego con la iluminación interior de coche (rojo) y un modulo RTC D1307 i2C.

Este programa es una variación de otro que publique en este articulo Arduino: Reloj calendario con RTC DS1307 i2C.


Componentes necesarios:

  • 1 x Arduino NANO.
  • 1 x LCD 16x2.
  • 2 x DHT11.
  • 3 x Pulsadores
  • 1 x Divisor de tensión.

Arduino_RTC, DHT11 and voltmeter
Arduino Reloj RTC para coche.

viernes, 10 de noviembre de 2017

Arduino Ejemplos: Mando RC XboxRC24 con NRF24L01 – Software y pestañas (Parte 2)

Buenas a todos y todas Ardublogeros!!!

La primera versión del software ya esta lista así que en esta entrada voy a explicar el código ya que esta vez he optado por estructurar el software por pestañas como vimos en la entrada anterior: Ejemplos Arduino: Trabajando con pestañas en el Sketch.

Es algo que ya había visto en algún proyecto y no le había hecho mucho caso, pero en programas donde hay muchas lineas y funciones se ha convertido en algo fundamental para poder organizar el programa.

Otra de las ventajas es que podemos reutilizar el código para otros proyectos solo importando el *.ino y añadiéndolo al proyecto.


Estructura de archivos

XboxRC24 Transmitter esta estructurado en 8 pestañas y son las siguientes:

  1. Transmisor_XboxRC.ino
  2. Calibracion.ino
  3. Caracteres.ino
  4. Comunicacion.ino
  5. LCD.ino
  6. Memoria.ino
  7. Menu.ino
  8. Modo_tanque.ino

viernes, 3 de noviembre de 2017

Arduino Ejemplos: Mando RC XboxRC24 con NRF24L01 – Transmisor (Parte 1)

Buenas a todos y todas los fanáticos y fanáticas de Arduino!!!

Desde siempre me ha gustado el radio control, coches, aviones, barcos... todo lo que se pueda controlar remotamente, simplemente me encanta.

Arduino ha hecho un gran trabajo con esto, ha puesto a disposición del consumidor muchos módulos con un coste realmente bajo y un efectividad realmente alta.

Ya no solo por que puedas construir tu propio emisor/receptor (como va a ser este caso) si no por la cantidad de información que puedes enviar y recibir (Temperatura, GPS, imagen, etc..)

Después de estar hablando con un amigo bastante "gamer" y fan de Xbox de siempre, me recomendó que si hacia algo así lo hiciera con un mando de Xbox, sobre todo por los gatillos y la comodidad de agarre.

Aunque como todos sabemos esto es muy subjetivo, no quiero crear un debate sobre que mando de video consola es mejor o peor.

En resumen, elegí este mando por los consejos de mi amigo y por el tamaño del mismo, en el se pueden meter todas las piezas, aunque lamentablemente la batería que tendrá que quedarse fuera.


¿Que vamos a utilizar?





Esquema RCXbox LCD Infotronikblog
Esquema RCXbox LCD

jueves, 26 de octubre de 2017

Arduino Ejemplos: Pantalla LCD 16x2 con módulo I2C

Buenas a todos Arduineros y Arduineras!!!

Si ya vimos antes como utilizar un LCD 16x02, Arduino: El LCD 16x2 y
Arduino: Diferentes efectos en un LCD 16x2
directamente conectando a Arduino usando en total un mínimo de 6 líneas, esto puede que no sea un problema si tú proyecto no utiliza muchos sensores, pero si es necesario usar el máximo de pines disponibles existe una solución que puedes usar, el módulo I2c para LCD.
Con este dispositivo conseguiremos un ahorro en los pines de nuestro Arduino pudiendo, además, conectar más dispositivos I2c a las mismas líneas de control.

El bus TWI/i2c:


El bus serie i2c fue creado por Philips en 1982 para la comunicación entre microcontroladores y periféricos.

El TWI (Two Wired Interface) es idéntico a nivel técnico pero Atmel tuvo que cambiar las siglas por motivos de licencias, pero a efectos prácticos es lo mismo.

I2c está diseñado como un bus de comunicación Maestro-Esclavo, con esto uno de los dispositivos (maestro) regula la comunicación y los demás dispositivos (esclavos) que atienden sus peticiones.

Este bus está formado por dos líneas, SLK y SDA.

  • SLK (Serial Clock) marca la velocidad de comunicación y marca los tiempos para la lectura/escritura en el bus.
  • SDA (Serial Data) es la línea por donde se transmite la información.

Cada dispositivo conectado al bus tiene una dirección, así que para conectarnos con el debemos saber dicha dirección, con este programa podréis saber cual es la dirección de vuestro dispositivo:

leer dirección de un dispositivo i2C

Conexión Arduino modulo i2C:
Conexión Arduino UNO con LCD i2C
Conexión Arduino UNO con LCD i2C

martes, 3 de febrero de 2015

Arduino Ejemplos: Reloj digital simple sin módulo RTC

Saludos a todos y todas!!!

Siguiendo con Arduino y el LCD, este ejemplo es algo más practico que los que hemos visto hasta ahora. Se trata de un reloj, un reloj simple, pero un reloj al fin y al cabo.

Esta programado de tal manera que no sea necesario un modulo RTC DS1307.

En realidad es un reloj que solo funciona mientras Arduino esta conectado, en el momento que deje de recibir corriente, el reloj volverá a estar a cero.
Puede no parecer muy practico, pero va muy bien para practicar con variables, el "if", y diferentes funciones como millis(), imprescindible en este proyecto.



También le pondremos dos pulsadores para poder ponerlo en hora, uno para los minutos y otro para las horas.

También se le puede añadir una alarma por ejemplo o que ponga la fecha, pero eso os lo dejo a vuestra imaginación.


Conexiones

La pantalla LCD lo conectaremos como ya se explico en los ejemplos anteriores, y los pulsadores en modo pull-up en los pines 6 y 7.



viernes, 16 de enero de 2015

Arduino Ejemplos: Efectos en LCD 16x2 (autoscroll, blink, customChar)

Como ya anunciaba en el post anterior Arduino: El LCD 16x2, con la librería liquidCrystal.h podemos crear diferentes efectos como parpadeos, desplazamientos, visualizar variables y efectos en cursores.

Algunos de estos efectos están en los mismos ejemplos que proporciona el mismo IDE de Arduino, y es una muy buena manera para empezar a trastear con el LCD.

Como quedaría un vídeo muy largo he decidido hacer dos partes.

En esta primera parte podréis ver como actúan las funciones:


  • autoscroll()

  • blink()

  • cursor()

  • customCharacter()

  • display()

Parte 1


Parte 2


Arduino Ejemplos: Pantalla LCD 16x2 – Guía de conexión y funciones

Después de ver como funcionan los pulsadores le toca el turno a las parntallas de tipo LCD.

El LCD (Liquid Crystal Display por sus siglas en ingles) es una pantalla delgada y plana formada por pixeles.

Una de las mejores cualidades de este tipo de pantallas es su bajo consumo, pero también podemos destacar su facilidad de uso, su gran disponibilidad y fiabilidad

Este tipo de pantallas se utilizan en gran variedad de aparatos electrónicos dada su simplicidad tanto en conexiones como en su utilización. En ella se pueden reflejar desde un simple texto tipo "hello World", coordenadas GPS o cualquier tipo de variable que quepa en sus 16 caracteres.

También las hay de diferentes tipos y medidas como LCDs gráficas o LCDs a color, de 16x2 caracteres, 20x4 o incluso más.

En este ejemplo en particular usaremos la típica pantalla LCD de 16x2 caracteres.



Primero hablemos sobre sus pines y cuales son sus conexiones.

Listado de conexiones del LCD 16x02

  • VSS o GND: Este pin del LCD es el pin conectado a masa (-)

  • VDD: Este pin es la alimentación del LCD y se conecta a +5V

  • Vo: Es el pin del contraste, este pin no esta siempre presente, pero si tu LCD lo tuviera, hay que conectarlo a un potenciómetro para poder regular el contraste, si lo conectas directamente a GND la pantalla no se vera correctamente.

  • RS: Es el pin de selección de registros que controla en que parte de la memoria del LCD esta escribiendo los datos.

  • R/W: Modo de lectura o escritura. Este pin va conectado normalmente a masa (GND)

  • E: Este pin habilita los registros. (Enable)

  • DB0...DB7: Son los 8 pines de datos.

  • A: Ánodo del LED de iluminación del LCD (+)

  • K: Cátodo del LED de iluminacion del LCD (-)

Su conexión con Arduino seria la siguiente:

Para facilitar el uso del LCD Arduino tiene una libreria llamada "LiquidCrystal.h" que hará mucho más fácil la comunicación entre el Arduino y la pantalla LCD.

Dentro de esta librería están las siguientes funciones:

domingo, 6 de febrero de 2011

Pantalla LCD 16x2 para PC conectada al puerto LPT1

LCD 16x2 para PC por puerto LPT1

Muy buenas a todos y todas!!

Este es un proyecto que llevaba tiempo en el tintero para darle añadir un pequeño gadgets que es muy sencillo y puede estar listo y funcionando en el ordenador en menos de un par de horas.

Bueno lo primero es tener los materiales, todos fáciles de conseguir y que no superan los 15€ (a mi me ha salido por unos casi 0€ ya que menos la pantalla (y el ordenador) todo lo demás es reciclado y la pantalla ya la tenia y me salio por unos 3€ o 4€.

Materiales:

  • Pantalla LCD 16x2 compatible HD44780
  • Conector DB25 Macho
  • Resistencia variable 10K
  • Resistencia variable 100 ohm
  • Conector tipo molex para fuente de PC

Bien una vez que tenemos todo lo necesario, toca ponerse manos a la obra con las conexiones, el esquema que he seguido es el siguiente:



El original lo saque de Neoteo pero le he modificado la patilla de R/W conectándola directamente a masa, ya que esta patilla se utiliza para la lectura/escritura del LCD.

Cuando la conectamos a GND ponemos el LCD directamente lo habilitamos para escritura. En el original va conectado a la patilla 14 del DB25.

Fotos del Montaje:

Esta es la pantalla LCD 16x02 compatible con HD44780 que he utilizado


Primero recorte el frontal de plástico del PC con unos orificios para meter los potenciómetros, yo utilice de los pequeñitos que no llevan "mango" no por nada en especial solo que era lo que tenia a mano.

Después de recortar comprobar que todo encaja bien y que esta bien centrado, di por terminada esta pieza que es casi la mitad del trabajo.


Este es el aspecto del LCD con sus soldaduras hechas, 11 lineas en total para el puerto LPT1 y 2 para alimentación (+5V y GND)

Aquí ya esta todos los componentes montados, el conector DB25 y el conector tipo molex para la alimentación a +5V (en mi fuente el cable de color ROJO) y la toma de GND.

Solo falta de ponerle un adhesivo para que quede mas bonito.

LCD 16x2 para PC por puerto LPT1


Y este es su aspecto una vez terminado y puesto en su sitio.

Bueno después de montarlo necesitamos el software para hacerlo funcionar junto con el sistema operativo, para esto estoy utilizando el programa LCD Smartie 5.4.1 con soporte para para Windows 7.

También sigo investigando que más hay por ahí más programas para el LCD y pongo una lista de programas y plugins.

Saludos!!!!

viernes, 8 de enero de 2010

Cerradura electrónica con LCD y teclado 3x4 usando PIC 16F628A

Muy buenas a todos y todas los fanáticos de los microcontroladores!!!

Aquí les dejo un vídeo de una cerradura electrónica con el microcontrolador PIC 16f628A una pantalla LCD 16x2 y un teclado 4x4. También el esquema y el código en Pic Basic Pro (pbp).



Componentes necesarios:

Lista de componentes para una cerradura electrónica controlada por PIC,

  • Microcontrolador PIC 16F628A

  • Pantalla LCD 16x2

  • Teclado 4x4

  • 3 Resistencias 4K7 (4700Ohm)

  • Rele (Lo podemos sustituir por un Led para hacer pruebas)

  • Programador Micro JDM 16f628 y 16f84

🛠️ Componentes necesarios
PIC16F628A-I/P
PIC16F628A-I/P PIC16F628A-I/P .
LCD1602 16x2 HD44780 para Arduino
Pantalla LCD 16x2 HD44780 para Arduino" LCD1602 16x2 HD44780 para Arduino.
Módulo de relé de 1 canal
Módulo de relé de 1 canal Módulo de relé de 1 canal 5V.
Módulo de teclado de matriz 3x4
Módulo de teclado de matriz 3x4 Módulo de teclado de matriz 3x4.
Cables Dupont hembra hembra
Cables Dupont h/h Kit de 40pin 10cm 2,54mm 1pin hembra a hembra .

Esquema en Proteus para 16F628A y LCD 16x02:


Como no tenía reles a mano he puesto un led en su lugar, pero a efectos es lo mismo poniendo un transistor podremos controlar cargas mayores.


En la siguiente imagen tenemos el mapa de los pines del microcontrolador PIC 16F628A:

Después de una pequeña revisión, me he dado cuenta que si se ponemos RS en el pin A4 no funciona la simulación, pero solo en la simulación. De todas maneras he cambiado la foto del esquema y el código para que todo funcione correctamente.

Solucionado el problema, os dejo los archivos para Proteus y los archivos de PBP en la sección de descargas de este blog.


Funciones del programa:

  • Bienvenida: Muestra un mensaje de bienvenida en la pantalla.

  • Inicio:

  • Menú: tenemos dos opciones:
    • Abrir puerta: Función "Abrir".
    • Cambiar clave: Función "Nueva_clave".

  • Teclado: Lee las pulsaciones del teclado.

  • Clave: Imprime en la pantalla dígito a dígito.

  • Grabar_clave Almacena los dígitos en la memoria EEPROM

  • Nueva_clave Imprime en pantalla los dígitos llamando a la función "Grabar_clave" con la nueva clave.


Y este es el código para la programación en PBP:



; Cerradura  Electrónica con teclado 3x4,Lcd 16x2,
; y clave de 4 dígitos que queda grabada aun cuando el Pic
; deje de tener corriente.
; utiliza el microcontrolador 16f628a prescidiendo del cristal de cuarzo
; externo y usando el reloj interno

@ DEVICE PIC16F628A, WDT_OFF
@ DEVICE PIC16F628A, PWRT_ON
@ DEVICE PIC16F628A, BOD_ON
@ DEVICE PIC16F628A, PROTECT_OFF
@ DEVICE PIC16F628A, CPD_OFF
@ DEVICE PIC16F628A, MCLR_OFF
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT
@ DEVICE PIC16F628A, LVP_OFF

DEFINE LCD_DREG PORTA  ; Puerto de datos LCD
DEFINE LCD_DBIT 0      ; datos LCD comenzando en BIT 0 o 4 "estos deben estar consecutivos"
DEFINE LCD_EREG PORTB  ; cambiamos Enable del portb.3
DEFINE LCD_EBIT 7      ; al portb.7
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 7



; Definicion de variables
a var word
tecla var word
n1 var byte
n2 var byte
n3 var byte
n4 var byte
eprom1 var byte

; Definiendo puertos
LA    var portb.0 ; Linea A
LB    var portb.1 ; Linea B
LC    var portb.2 ; Linea C
LD    var portb.3 ; Linea D
Funo  var portb.4 ; Columna 1
Fdos  var portb.5 ; Columna 2
Ftres var portb.6 ; Columna 3
rele  var porta.6 ; Rele

n1 = "1" ; asigno valor a las variables
n2 = "1" ; el valor es equivalente en ascII
n3 = "1" ; esta sera la combinación predefinida
n4 = "1" ; recuerda cambiarla!!

eprom1 = "0"

PAUSE 100 ; Inicio del programa
read 0, eprom1
if eprom1 = 255 then Grabar_clave
  goto Bienvenida

Grabar_clave:

  WRITe 0, n1
  WRITe 1, n2
  WRITe 2, n3
  WRITe 3, n4

  LCDOUT $FE,1, $FE, 2 , " CLAVE GRABADA "
  PAUSE 1500
  GOTO Bienvenida

Bienvenida:
  pause 500 ; Mensaje de Bienvenida
  LCDOUT $FE,1, $FE, 2, " Infotronikblog"
  LCDOUT $FE, $C0, "  Presenta: "

Inicio:
  pause 500
  LOW LA
  LOW LB
  HIGH LC
  LOW lD  ; Activamos la linea del asterisco
  IF fUNO = 0 then goto Clave
  pause 500 ; LEE EL TECLADO A VER SI ES "*" SI NO ES CONTINUA MOSTRANDO MENSAJE
goto Inicio

; Función para leer el teclado
Teclado:

  low la
  if funo  = 0 then uno
  if fdos  = 0 then dos
  if ftres = 0 then tres

  high la
  low  lb
  if funo  = 0 then cuatro
  if fdos  = 0 then cinco
  if ftres = 0 then seis

  high lb
  low  lc
  if funo  = 0 then siete
  if fdos  = 0 then ocho
  if ftres = 0 then nueve

  high lc
  low ld
  if funo  = 0 then asterisco
  if fdos  = 0 then cero
  if ftres = 0 then numeral
  high ld
  pause 10
goto Teclado

asterisco:
  tecla ="*"
  return

siete:
  tecla = "7"
  return

cuatro:
  tecla = "4"
  return

uno:
  tecla = "1"
  return

dos:
  tecla = "2"
  return

cinco:
  tecla = "5"
  return

ocho:
  tecla = "8"
  return

cero:
  tecla = "0"
  return

tres:
  tecla = "3"
  return

seis:
  tecla = "6"
  return

nueve:
  tecla = "9"
  return

numeral:
  tecla = "#"
  return

Clave:
  LCDOUT $FE,1, $FE,2, "Escribe la Clave"
  pause 1000
  gosub Teclado
  SWAP tecla, n1

  LCDOUT $FE, $C5, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n2
  
  LCDOUT $FE, $C6, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n3
  
  LCDOUT $FE, $C7, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n4

  LCDOUT $FE, $C8, "*"
  pause 500

  READ 0,EPROM1
  IF eprom1 = n1 then miro_dos

Error:
  LCDOUT $FE, 1, $FE, 2, "Clave Incorrecta"
  pause 500
goto Bienvenida

miro_dos:
  READ 1, eprom1
  IF eprom1 = n2 then miro_tres
goto error

miro_tres:
  READ 2, eprom1
  IF eprom1 = n3 then miro_cuatro
goto error

miro_cuatro:
  READ 3, eprom1
  IF eprom1 = n4 then goto menu
goto error


menu:
  LCDOUT $FE, 1, "  Elige una "
  LCDOUT $FE, $C0, "  Opcion: "

  pause 1500

  LCDOUT $FE, 1, "1 Abrir Puerta"
  pause 300

  LCDOUT $FE, $C0, "2 Cambiar Clave"
  gosub Teclado

  if tecla = "1" THEN goto Abrir
  if tecla = "2" then goto Nueva_clave
  if tecla != "1" and tecla!= "2" then LCDOUT $FE,1, $FE,2, "TECLA INCORRECTA" ; Si pulsamos una 

  LCDOUT $FE, 1, $FE, 2, "TECLA INCORRECTA "  ;que no es ni 1 ni 2 muestra tecla incorrecta
  pause 700
goto menu

Abrir:
  high rele
  LCDOUT $FE, 1, $FE, 2, "   Bienvenido "
  pause 3000
  low rele
goto Bienvenida


Nueva_clave:
  LCDOUT $FE,1, $FE,2, "Escribe tu nueva"
  LCDOUT $FE, $C0, "Clave:"
  pause 500
  gosub Teclado
  SWAP tecla, n1
  LCDOUT $FE, $C8, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n2
  LCDOUT $FE, $C9, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n3
  LCDOUT $FE, $C9+1, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n4
  LCDOUT $FE, $C9+2, "*"
  pause 500
goto Grabar_clave

*NOTA: En la simulación la clave esta cambiada a 2580 *

Otros enlaces sobre información o proyectos con microcontroladores PIC:


Saludos!!!


lunes, 30 de noviembre de 2009

Caracteres personalizados en LCD 16x2 con PIC 16F628A

Caracteres personalizados LCD 16x02Muy buenas a todos y todas!!

Aquí tenéis un sencillo tutorial sobre la creación de nuevos caracteres o símbolos en Displays alfanuméricos.

Estos LCDs tienen normalmente un controlador HD44780 (Character Generator RAM) o compatible y se componen de una matriz de 5 píxeles horizontales por 8 verticales por carácter. En su memoria CGRAM puede almacenar hasta 8 nuevos caracteres.

La aplicación de símbolos es muy utilizada para crear animaciones o en indicadores de estado, como podría ser el triángulo para Play, cuadrado para Stop, símbolo de batería, etc...

⚠️ Esta memoria tiene algunas limitaciones como son:

  • Volatilidad: La CGRAM se borra al perder alimentación.
  • Uso simultáneo: Solo 8 caracteres personalizados activos a la vez.
  • Compatibilidad: Displays 5x10 usan 10 bytes/patrón → máximo 4 caracteres.

Calculando los bytes del carácter

Esta matriz con cuadros nos ayudara a calcular los Bytes necesarios para crear un carácter o símbolo nuevo.



Los cuadrados coloreados en negro se suman de manera horizontal para formar una linea y cada linea se suma independientemente.

Ahora solo nos falta enviar la información al microcontrolador y lo haremos de la siguiente manera:



LCDOUT 254, 64, 30, 18, 18, 28, 20, 18, 17, 0


Donde LCDOUT es la instrucción que controla el LCD.

  • Enviando 254 o $FE le indicamos al LCD que va a recibir un comando.

  • El comando 64 indica al LCD que es el primer carácter de la memoria CGRAM.

  • Los datos 30, 18, 18, 28, 20, 18, 17, 0 representan los Bytes del nuevo carácter.


Una vez hecho esto, el nuevo carácter ya está almacenado en la memoria CGRAM del LCD, pero no se visualizara hasta que lo utilicemos de la siguiente manera:



LCDOUT 0

Donde LCDOUT es la instrucción que controla el LCD.

Y 0 es la posición del primer carácter de la memoria CGRAM que previamente habíamos grabado en el comando 64.

Para añadir más caracteres a la memoria CGRAM tenemos que sumarle 8 al comando, en ese caso es 64 + 8 = 72 y así sucesivamente.

En este ejemplo podemos observar los 8 comandos ya calculados con los Bytes de los nuevos caracteres.



LCDOUT 254, 64, 4,10,10,4,4,6,4,6         ; Llave POSICION "0"
LCDOUT 254, 72, 4,14,31,21,31,31,27,27 ; Casa POSICION "1"
LCDOUT 254, 80, 4,14,10,10,10,10,10,14 ; Bateria POSICION "2"
LCDOUT 254, 88, 0,10,31,31,31,14,4,0 ; Corazón POSICION "3"
LCDOUT 254, 96, 10,21,0,10,0,21,17,14 ; Sonrisa POSICION "4"
LCDOUT 254, 104,0,0,0,4,2,31,2,4 ; Flecha derecha POSICION "5"
LCDOUT 254, 112,4,14,14,14,14,14,21,21 ; Cohete POSICION "6"
LCDOUT 254, 120,0,14,21,21,23,17,14,0 ; Reloj POSICION "7"

Una vez echo esto, para poder visualizarlos solo es necesario escribir la posición de memoria donde se almacenaron anteriormente.


LCDOUT 0, 1, 2, 3, 4, 5, 6, 7

Donde LCDOUT es la instrucción que controla el LCD.

Y 0 corresponde a la posición del carácter guardado en el comando 64.

El 1 corresponde a la posición del carácter en el comando 72.

El 2 corresponde a la posición del carácter en el comando 80 y así sucesivamente.

Para este tutorial se ha utilizado un microcontrolador PIC 16F628A y un lcd Powertip1602-G alfanumérico de 2 filas con 16 caracteres cada una de ellas.

Para la configuración de los pines del LCD a 4bits usaremos la predefinida por el compilador pbp
es decir los puertos A1, A2, A3, A4 del microcontrolador seran los datos e iran conectados al los pines del LCD D4, D5, D6, D7.

El puerto A4 corresponde a pin R/S del LCD y el puerto B3 al pin E. Igual que en la siguiente figura:



El programa esta escrito en Lenguaje Basic, concretamente el PicBasic Pro 2.46C (PBP).


PAUSE 500 ; Tiempo para iniciar el LCD

LCDOUT 254,64, 4 ,10 ,10 , 4 , 4 , 6 , 4 , 6 ; Posición 0(llave)
LCDOUT 254,72, 4 ,14 ,31 ,21 ,31 ,31 ,27 ,27 ; Posición 1 (casa)
LCDOUT 254,80, 0 ,14 ,27, 31 , 3 ,31 ,14 , 0 ; Posición 2 (Batería)
LCDOUT 254,88, 0 ,10 ,31, 31 ,31 ,14 , 4 , 0 ; Posición 3 (corazón)

PAUSE 200

LCDOUT $FE,1 ; Borrar la pantalla
LCDOUT " Infotronikblog" ; Imprime en pantalla los caracteres
LCDOUT $FE, $C0," ",0,1,2,3 ; grabados en la CGRAM del LCD

END



Tabla con caracteres normales en LCD.


Puedes encontrar más información sobre la memoria CGRAM en el  datasheet del controlador HD44780

Otro enlace que seguro te interesa es este generador de caracteres donde ademas de crear el carácter nos proporciona el código pero en este caso para Arduino, se llama LCD Custom Character Generator

Un saludo a todos y todas!!