Autor Tema: Inicializar LCD  (Leído 3138 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Andres71

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 149
Inicializar LCD
« en: 11 de Diciembre de 2005, 23:07:00 »
Saludos a todos,
Estoy tratando de utilizar un LCD 2x24 con backlight solo al comenzar
un programa de manera que me muestre una palabra, pero no funciona
nada, solo se ilumina la linea superior pero totalmente osea los
cuadros completos como cuando solo se conecta la alimentacion, no
tengo el datasheet pero lo conecte asi:
1-GND
2-Vcc
3-Contraste
4-RS
5-RW
6-Enable
7 hasta 14 D0-D7
el programa esta asi:
;LIST P=16f873a
;---------------------------------------------------------------------
---------
Ptoa equ 0x05 ;Pto
Ptob equ 0x06 ;Pto
Ptoc equ 0x07 ;Pto
PCL equ 0x02 ;reg contador de programa
Intcon equ 0x0B ;Reg interrupciones
status equ 0x03 ;REg Status
Opcion equ 0x81 ;Reg Opcion
Trisa equ 0x85 ;registro configuracion Ptoa
Trisb equ 0x86 ;registro configuracion Ptob
Trisc equ 0x87 ;registro configuracion Ptoc
adcon1 equ 0x9f ;Reg control de Pto Analogo o digital
offmayor equ 0x20 ;Reg
offmenor equ 0x21 ;Reg
offmay equ 0x22 ;Reg
offmen equ 0x23 ;Reg
onmayor equ 0x24 ;Reg
onmenor equ 0x25 ;Reg
onmay equ 0x26 ;Reg
onmen equ 0x27 ;Reg
numcon equ 0x28 ;Reg
frecuencia equ 0x29 ;Reg
Ciclo equ 0x2A ;Reg
PDel01 equ 0x2b ;registro para tiempo de frecuencias
PDel0 equ 0x2c ;registro para retardo
PDel1 equ 0x2d ;registro para retardo
wrespaldo equ 0x2e ;respaldo para el Reg W
status2 equ 0x2f ;respaldo Reg status
freN0 equ 0x30 ;Reg unidades de frecuencia LCD
freN1 equ 0x31 ;Reg decenas de frecuencia LCD
freN2 equ 0x32 ;Reg centenas de frecuencia LCD
CicN0 equ 0x33 ;Reg unidades de Ciclo Util LCD
CicN1 equ 0x34 ;Reg centenas de Ciclo Util LCD
PDel045 equ 0x35 ;Reg inicializacion LCD
PDel145 equ 0x36 ;Reg inicializacion LCD
Regtardo equ 0x37 ;reg para un terado
regcaracter EQU 0X38
regretcarac equ 0x39
pwm equ 5 ;bit del ptoa que uso como salida pwm
apa equ 0 ;registros a decrementar en off
enc equ 1 ;registros a decrementar en on
RS equ 0 ;Y SELECCIONO DATO O INSTRUCCION
RW equ 1 ; Y SELECCIONO ESCRIBIR O LEER
EN equ 2 ; PARA VALIDAR OPERACION
Busy equ 7 ;bit de ocupado LCD
;=====================================================================
============================


reset org 0
goto inicio ;vaya al inicio
org 04h ;atiende INT
goto Interrup ;atender las INT

inicio bsf status,5 ;paso al banco 1 de
memoria
bcf status,6 ;paso al banco 1 de
memoria
movlw 0x00 ;cargo W con ff
movwf Trisb ;Ptob como salidas
movlw 0x00 ;cargo W con 00
movwf Trisa ;Ptoa como salidas
movlw 0x06
movwf adcon1 ;PTOA salida digital
bcf status,5 ;paso al banco 0
ini_LCD bcf Ptoa,EN
call mili45 ;espero 45
milisegundos
movlw 0x01 ;cursor 1 posicion
call control
movlw 0x38 ;8 bits, 2 linea, 5x8
call control
movlw 0x06 ;incre, pantalla fija
call control
movlw 0x0c ;pantalla, no cursor,
sin parpadeo
call control
mensaje1 movlw 0x00
movwf regcaracter ;empiezo caracter No 1
ciclocarac movf regcaracter,w
call tabla1 ;saco caracter
call dato ;lo envio
incf regcaracter,1 ;tomo el siguiente
movlw 0x17
xorwf regcaracter,0 ;es el ultimo
btfss status,2 ;caracter?
goto ciclocarac ;no, regreso a otro
goto pulsando ;si, sigo el proceso

control bcf Ptoa,RS
bcf Ptoa,RW
goto dato2
dato bsf Ptoa,RS
bcf Ptoa,RW
dato2 bsf Ptoa,EN
movwf Ptob
call retardo
bcf Ptoa,EN
call Ocupado
retlw 0

tabla1 addwf PCL,1
retlw " "
retlw " "
retlw " "
retlw "*"
retlw " "
retlw "E"
retlw "L"
retlw "E"
retlw "C"
retlw "T"
retlw "R"
retlw "O"
retlw "P"
retlw "E"
retlw "S"
retlw "C"
retlw "A"
retlw " "
retlw "*"
retlw " "
retlw " "
retlw " "
retlw " "
retlw " "
retlw "0"

Ocupado bsf status,5 ;paso banco 1
movlw 0xff
movwf Trisb ;ptob como entrada
bsf status,5 ;paso banco 0
bsf Ptoa,RW ;leo dato
Probando btfsc Ptob,Busy ;esta ocupado?
goto Probando ;si, sigo esperando
bsf status,5 ;no, paso banco 1
movlw 0x00
movwf Trisb
bcf status,5 ;paso banco 0
return

he intentado colocar tiempo entre instrucciones y comandos y no
funciona, ahora cree la rutina para revisar el BUSY y tampoco, de
antemano gracias por la ayuda.

ANDRES ALEGRIA
andresalegria@...
alegriaconejo2@...
Popayan-CAUCA-COLOMBIA
"Dice mas el necio cuando calla, que el sabio cuando habla"

ANDRES ALEGRIA
alegriaandres@gmail.com
andresalegria@hotmail.com

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: Inicializar LCD
« Respuesta #1 en: 15 de Diciembre de 2005, 16:21:00 »
Hola, dime o me lo he perdido, ¿y la inicializacion del LCD donde esta? si no lo inicializas, pues poco podras mostrar en el...Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado X

  • PIC10
  • *
  • Mensajes: 7
Re: Inicializar LCD
« Respuesta #2 en: 05 de Noviembre de 2009, 23:25:00 »
Hola

La inicializacion esta pero lamentablemente no se visualiza correctamente y es esta.
La verdad solo he probado con los de 2X16 y si es igual.
ini_LCD bcf Ptoa,EN
            call mili45 ;espero 45 milisegundos
            movlw 0x01 ;cursor 1 posicion
            call control
            movlw 0x38 ;8 bits, 2 linea, 5x8
            call control
            movlw 0x06 ;incre, pantalla fija
            call control
            movlw 0x0c ;pantalla, no cursor,sin parpadeo
            call control
            mensaje1 movlw 0x00
Mira proba con esta seguncia:
MOVLW   200
   CALL   DELAY_100US
   MOVLW   38H      ;00111000
   CALL   COMANDO      ;INTERFACE 8 BIT, 2 LINEAS
   MOVLW   41
   CALL   DELAY_100US
   MOVLW   38H      ;00111000
   CALL   COMANDO      ;INTERFACE 8 BIT, 2 LINEAS
   MOVLW   1
   CALL   DELAY_100US
   MOVLW   38H      ;00111000
   CALL   COMANDO      ;INTERFACE 8 BIT, 2 LINEAS
   MOVLW   0CH      ;00001100
   CALL   COMANDO      ;DISPLAY A ON, NO MUESTRA CURSOR, NO PARPADEO
   MOVLW   06H      ;00000110
   CALL   COMANDO      ;MUEVE CURSOR A LA DCHA DESPUES D ESCRIBIR, NO MUEVE VENTANA

Saludos