31 may 2010

LCD ALFANUMERICA

CONEXION PREDETERMINADA DEL LCD  CON PROTON




PRINT

         La instruccion utilzada para el manejo de una pantalla LCD alfanumerica es PRINT y se usa segun la siguiente sintaxis:

     PRINT AT posicion_Y, posision_X, expresion1, expresion2,expresion3,....,

posicion_Y =>  corresponde a la linea donde se escribira
posicion_X => corresponde a la columna

        Luego de esto los datos a escribir separados por comas, estos pueden ser valores o expresiones matematicas, boleanas, y cadenas de texto.

       Las cadena de texto deben ser encerradas entre comillas, por ejemplo:

                PRINT AT 1,1, "HOLA MUNDO"
                PRINT AT 1,1 "HOLA","  ", "MUNDO"

      Tambien existen una serie de modificadores que permiten dar formato a los valores numericos que se desean visuaizar, son las siguientes:

     BIN          =>  Binario
     DEC        =>  Decimal
     HEX        =>  Hexadecimal
     SBIN       =>  Binario con signo
     SDEC      => Decimal con signo
     SHEX      =>  Hexadecimal con signo
     IBIN        =>  Binario con el caracter % al inicio
     IDEC       =>  Decimal con el caracter # al inicio
     IHEX       =>  Hexadecimal  con el caracter $ al inicio
     ISBIN     => Binario con signo y  con el caracter % al inicio
     ISDEC    => Decimal con signo y con el caracter # al inicio
     ISHEX    => Hexadecimal consigno y con el caracter $ al inicio
     REP c\n   = > Envia un caracter c, n veces
     STR array\n   = >  envia una parte de un arreglño
     CSTR cdata  0  =>   envia una cadena  definida en la instruccion cdata.

         Cuando utilizamos DEC, HEX O BIN, se puede determinar el numerpo de caracteres deseados colocandole un numero, si quisieramos 2 decimales seria, DEC2, cuatro decimales DEC4, si se omite este numero y simplemente se coloxca DEC, el po defecto es 3 decimales.

Ejemplo  1:

DIM VAR1 AS BYTE
   
VAR1 = 15


PRINT AT 1,1, "HOLA MUNDO"     'Muestra "HOLA MUNDO"
PRINT AT 2,1,  DEC VAR1                'Muestra 15
PRINT AT 2,1,  DEC4 VAR1             'Muestra 0015

PRINT AT 3,1, "VAR1 HEX = " , HEX VAR1  ' Muestra  "VAR1 HEX = F"
PRINT AT 4,1, "VAR1 BIN = " , BIN VAR1     '  Muestra "VAR1 BIN = 1111"
PRINT AT 6,1 ,"VAR1 HEX= " , HEX4 VAR1 '     Muestra "VAR1 HEX= 000F"

    Si es una variable punto flotante la que se quiere visualizar,  el digito que se le agrega a DEC, determina el numero de digitos  despues del punto decimal, por ejemplo:

       DIM FLT_VAR AS FLOAT
       FLT_VAR = 3.145

       PRINT DEC2 FLT_VAR            ' Muestra 3,14
       PRINT DEC4 FLT _VAR          ' Muestra 3,1400
       PRINT DEC1 FLT_VAR           ' Muestra 3,1

DECLARACIONES ASOCIADAS AL LCD

      Existen seis declaraciones para ser usadas con el LCD alfanumerico y la instruccion PRINT, y son :

DECLARE LCD_TYPE 1 or 0 , GRAPHIC or ALPHA

     Informa al compilador el tipo de LCD que se direccionara a traves de la instruccion PRINT,  1 es para Grafica y 0 para Alfanumerica, si esta declaracion no es usada, la configuracion por defecto es  del tipo Alfanumerico.


DECLARE LCD_INTERFACE 4 or 8


Informa al compilador cuantas lineas de datos seran usadas para el manejo del LCD, ocho o cuatro lineas.


DECLARE LCD_DTPIN PORT . PIN

     Asigna el puerto a ser usado por las lineas de datos del LCD,  esta puede ser conectada usando 8 lineas de datos ó cuatro lineas de datos, si se utilizan solo cuatro lineas, estas deben ser conectadas a los cuatro pines mas sgnificativos, o los cuatro menos significaivos, y esto puede ser configurado de la manera siguiente:


DECLARE LCD_DTPIN PORTB.0

' Usado para interface de cuatro lineas y deben ser conectadas desde RB0 hasta RB7

DECLARE LCD_DTPIN PORTB.4
' Usado para interface de cuatro lineas y deben ser conectadas desde RB4 hasta RB7

Si esta declaracion no es utilizada la configuracion por defecto es PORTB.4.


DECLARE LCD_LINES 1 , 2 , or 4


Informa al compilador el numero de lineas del LCD.

   Las LCD´s alfanumericas  vienen en un rango de medidas dadas por el numero de filas y columnas, el tipo mas popular es el de 16 columnas por dos fila (16X2),  aunque tamebien las de 16X4. Si esta declaracion no es usada la configuracion por defecto es de 2 lineas.


      Recomiendo en todo programa no obviar las declaraciones aunque se desee utilizar la configuiracion por defecto, el formato del codigo del programa lo desarrollo asi:


CODIGO DE EJEMPLO:

Device 16f877

XTAL 4

PORTB_PULLUPS = TRUE

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Configuracion del LCD'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
DECLARE LCD_TYPE 0 ' LCD alfanumerica
DECLARE LCD_INTERFACE 4 ' 4 lineas de datos
DECLARE LCD_DTPIN PORTB.4 ' lineas de datos al PORTB RB4->RB7
DECLARE LCD_ENPIN PORTB.2 ' EN al pin RB2
DECLARE LCD_RSPIN PORTB.3 ' RS al pin RB3
DECLARE LCD_LINES 4 ' LCD de cuatro lineas
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


Inicio:                             ' Etiqueta

print at 1,1, "Linea 1"
print at 6,1, "Linea 6"

Fin:                                 ' Etiqueta

3 comentarios:

  1. muy buena tu explicación, gracias. Aunque sería bueno q colocaras ejercicios resueltos sobre la LCD con el teclado,ya que es muy común en la universidad.

    ResponderEliminar
  2. no se si puedas ayudarme, pero monte una programación para una alfanumérica de 4 lineas y falla.. escribe cosas aleatoriamente ... esa misma programación si la uso con una alfanumérica de 2 lineas.. trabaja perfectamente

    Declare LCD_TYPE 0 'DECLARAMOS LOS PUERTOS DE SALIDA Y DE PROGRAMACION.
    Declare LCD_INTERFACE 4 ; 4 lineas de datos
    Declare LCD_DTPIN PORTD.4
    Declare LCD_ENPIN PORTD.3
    Declare LCD_RSPIN PORTD.2
    Declare LCD_LINES 4

    esto es lo que he usado como programación de lcd

    ResponderEliminar
  3. Hola, se pueden escoger los pines de datos del LCD (D4-D0) usando cualquier pin del PIC? por ejemplo los pines del puerto B B6-B2 o los que yo quiera, así como se hace en arduino.

    ResponderEliminar