Simular LCD en ISIS, Proteus

¿debo hacer alguna configuración a una LCD es isis, para que esta me simule el texto? he intentado ya simularlo y tan solo me enciende la pantalla, al pasarlo a baquela me lo lee normal, ¿que debo hacer para que en la simulación en proteus?
 
¿debo hacer alguna configuración a una LCD es isis, para que esta me simule el texto?

normalmente el LCD de isis va acompañado de un microcontrolador, de otra manera seria algo complicado.

publica tu diagrama y si usas un microcontrolador pon el codigo que utilizas.
 
Sube el circuito de Proteus, y da mas datos para que alguien pueda ayudarte, que tipo de LCD usaste, estas usando un microcontrolador?

Sin más datos de lo que tienes es difícil saber que es lo que estas haciendo y por qué no funciona.

PD. muevo el tema al foro correcto...
 
Última edición:
subo la foto del montaje simulado en isis proteus, los botones azul y rojo significan que esta corriendo el programa, aun no se porque no me muestra letras en el montaje
 

Adjuntos

  • termometro.jpg
    termometro.jpg
    222.2 KB · Visitas: 80
escrito en assembler

;******************************************************
;CONTROL DE TEMPERATURA
;******************************************************

LIST P=16F873A ;ESCOGEMOS EL PIC QUE VAMOS A UTILIZAR
#INCLUDE "P16F873A.INC" ;INCLUIMOS LA LIBRERIA
RADIX HEX
ERRORLEVEL -302
__CONFIG 3F39H


LCD_VAR EQU 20H ;VARIABLE DE TEMPORIZADOR LCD
LCD_TEMP_2 EQU 21H ;VARIBLE DE RETARDO LCD
LCD_TEMP_1 EQU 22H
TA1 EQU 23H ;- SIGNIFICATIVO TEMPERATURA ACTUAL
TA2 EQU 24H
TA EQU 25H
CONT1 EQU 26H ;CONTADOR RETARDO
CONT2 EQU 27H
COND EQU 28H ;
TEDI EQU 29H ;TEMP DIGITAL
OPCION EQU 081H ;REGISTRO OPTION_REG


ORG 00H
GOTO INICIO



;**********************************************************
;DECLARACION DE VARIABLES E INICIO DEL PROGRAMA
;**********************************************************

INICIO CALL UP_LCD
CALL LCD_INI ;RUTINA DE INICIACION
CALL BORRA_Y_HOME ;RUTINA QUE CLAREA LA PANTALLA Y DEVUELVE EL CURSOR AL INICIO
CALL DISPLAY_ON_CUR_OFF ;RUTINA DE CONFIGURACION
CALL MJE2 ;MENSAJE PRIMERA LINEA
GTO CALL CONVER ;RUTINA DE CONVERCION ANALOGA DIGITAL
BSF PCLATH,3 ;CAMBIO DE PAGINA, PARA EJECUTAR CONVER QUE SE ENCUENTRA EN LA PAGINA 1
CALL TABLA
MOVWF TA
MOVLW B'00001111'
ANDWF TA,0
MOVWF TA2
MOVF TA,0
MOVWF TA1
SWAPF TA1,1
MOVLW B'00001111'
ANDWF TA1,1
CALL MJE2
GOTO GTO

CONVER BSF ADCON0,2 ;INICIA CONVERSION
LOO BTFSC ADCON0,2 ;PREGUNTA SI TERMINO CONVERSION
GOTO LOO
MOVF ADRESH,0
MOVWF TEDI
CALL RETARDO
MOVLW 67H
SUBWF TEDI,0
BTFSC STATUS,0 ;EN UNO ES QUE ES MAYOR
GOTO LOO11 ;ES MAYOR
MOVF TEDI,0 ;ES MENOR
RETURN
LOO11 MOVLW 67H
MOVWF TEDI
RETURN


MJE2 MOVLW 0X80 ;PALABRA PARA SELECCIONAR DDRAM
CALL LCD_REG
MOVLW B'00000110' ;ENTRY MODE SET. INC DE CURSOR
CALL LCD_REG ;es decir en la linea 0
MOVLW "T"
CALL ESCR
MOVLW "E"
CALL ESCR
MOVLW "M"
CALL ESCR
MOVLW "P"
CALL ESCR
MOVLW "E"
CALL ESCR
MOVLW "R"
CALL ESCR
MOVLW "A"
CALL ESCR
MOVLW "T"
CALL ESCR
MOVLW "U"
CALL ESCR
MOVLW "R"
CALL ESCR
MOVLW "A"
CALL ESCR
MOVLW " "
CALL ESCR
MOVLW " "
CALL ESCR
MOVLW " "
CALL ESCR
MOVLW " "
CALL ESCR
MOVLW " "
CALL ESCR
MOVLW 0XC0 ;CAMBIAMOS PARA ESCRIBIR EN LA LINEA 2
CALL LCD_REG
MOVLW 0XC0 ;CAMBIAMOS PARA ESCRIBIR EN LA LINEA 2
CALL LCD_REG
MOVLW " "
CALL ESCR
MOVLW " "
CALL ESCR
MOVLW "D"
CALL ESCR
MOVLW "E"
CALL ESCR
MOVLW "L"
CALL ESCR
MOVLW " "
CALL ESCR
MOVLW "M"
CALL ESCR
MOVLW "O"
CALL ESCR
MOVLW "T"
CALL ESCR
MOVLW "O"
CALL ESCR
MOVLW "R"
CALL ESCR
MOVLW " "
CALL ESCR
MOVLW " "
CALL ESCR
MOVLW 30H
ADDWF TA1,0
CALL ESCR
MOVLW 30H
ADDWF TA2,0
CALL ESCR
MOVLW B'11011111'
CALL ESCR
RETURN

ESCR CALL LCD_DATO ;RUTINA PARA ESCRIBIR EN LA LCD
CALL RETARDO
RETURN
RETARDO:MOVLW .80 ;180 VELOCIDAD DE APARICION DE LAS LETRAS
MOVWF CONT2 ;EN LA PANTALLA LCD
LOOP1: MOVLW .50 ;150,40
MOVWF CONT1
LOOP: NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ CONT1,1
GOTO LOOP
DECFSZ CONT2,1
GOTO LOOP1
RETURN

;***************************************
;EL CONJUNTO DE RUTINAS QUE SE PRESENTAN
;A CONTINUACIÓN PERMITEN REALIZAR LAS TA-
;REAS BASICAS DE CONTROL DEL MODULO DEL
;LCD.
;**************************************
#define ENABLE BSF PORTC,7 ;ACTIVA E (PIN6)
#define DISABLE BCF PORTC,7 ;DESACTIVA E (PIN 6)
#define LEER BSF PORTC,6 ;PONE LCD EN EL MODO LEER(PIN5)
#define ESCRIBIR BCF PORTC,6 ;PONE LCD EN MODO ESCRIBIR(PIN 5)
#define OFF_COMANDO BCF PORTC,5 ;DESACTIVA RS SELECCION DE REGIS, ESCRIBE OPERACION (MODO COMANDO)(PIN 4)
#define ON_COMANDO BSF PORTC,5 ;ACTIVA RS LEE LA OPERACION(MODO DATO)(PIN 4)

;****************************************
;LA SIGUIENTE RUTINA CONFIGURA EL PIC PA-
;RA QUE TRABAJE CON EL LCD.
;****************************************
UP_LCD: BSF STATUS,RP0 ;BANCO 1
MOVLW B'10000111' ;PALABRA PARA EL REGISTRO OPTION, CON EL FIN DE DIVIDIR LA FRECUENCIA EN 1/256
MOVWF OPCION
CLRF TRISB ;PORTB= OUT LCD
CLRF TRISC ;COMO SALIDA
MOVLW B'00000000' ;JUSTIFICAMOS DONDE QUEREMOS LOS DATOS Y ESCOGEMOS EL CANAL ANALOGO
MOVWF ADCON1 ;CONFIGURAMOS LA CONVERCION ANALOGA DIGITAL
BCF STATUS,RP0 ;BANCO 0
MOVLW B'00000001' ;SELECIONAMOS EL CANAL Y LA FREC. DE OSC, ACTIVAMOS EL MODULO A/D
MOVWF ADCON0 ;EN LA PALABRA DE CONFIGURACION
OFF_COMANDO ;REGISTRO DE COMANDO (INSTRUCCION)
DISABLE ;DESACTIVA LA LCD
RETURN
;********************************************
;LA SIGUIENTE RUTINA CHEQUEA EL ESTADO DE LA
;BANDERA DE OCUPADO DEL LCD. LA CUAL INDICA SI RUTINA DE OCUPADO
;YA SE TERMINO DE EJECUTAR EL COMANDO ANTERIOR
;Y NO RETORNA HASTA QUE LO EJECUTE TOTALMENTE
;*********************************************
LCD_BUSY: LEER ;R/W = 1
BSF STATUS,RP0 ;BANCO 1
MOVLW H'FF' ;PUERTO B COMO IN
MOVWF PORTB
BCF STATUS,RP0 ;BANCO 0
ENABLE ;E = 1
NOP
L_BUSY: BTFSC PORTB,7 ;MIRANDO SI EL LCD ESTA
GOTO L_BUSY ;OCUPADO BF =1, CUANDO ES CERO YA TERMINO
DISABLE ;E =0, ES DECIR DESACTIVA LA LCD
BSF STATUS,RP0 ;PORTB = OUT
CLRF PORTB
BCF STATUS,RP0 ;BANCO 0
ESCRIBIR ;R/W = 0 (MODO ESCRITURA)
RETURN
;****************************************
;LA SIGUIENTE RUTINA SE ENCARGA DE GENERAR
;UN IMPULSO DE 1 MICRSEG EN RA2, LA CUAL
;SE UTILIZA PARA SEÑAL ENABLE DEL LCD
;****************************************
LCD_E: ENABLE ;ACTIVA E
NOP
DISABLE ;DESACTIVA E
RETURN
;*******************************************
;LA SIGUIENTE RUTINA ESCRIBE EL CONTENIDO DEL
;REGISTRO W, EL CUAL CONTIENE UN CARACTER AS-
;CII, AL PUERTO B, PARA VISUALIZARLO POR EL
;LCD O PARA ESCRIBIRLO EN LA CGRAM.
;*******************************************
LCD_DATO: OFF_COMANDO ;DESACTIVA RS (MODO COMANDO)
MOVWF PORTB
CALL LCD_BUSY;ESPERA EL LCD LIBRE
ON_COMANDO ;ACTIVA RS(MODO DATO)
CALL LCD_E ;GENERA UN PULSO EN E
RETURN
;***********************************************
;ESTA RUTINA ES PARECIDA A LA ANTERIOR LA UNICA
;DIFERENCIA ES QUE AHORA SE ESCRIBE UN COMANDO O INSTRUCCION
;AL LCD.
;***********************************************
LCD_REG OFF_COMANDO ;DESACTIVA RS(MODO COMANDO)
MOVWF PORTB
CALL LCD_BUSY;LCD LIBRE
CALL LCD_E ;RUTINA DE DESACTIVACION Y ACTIVACION
RETURN
;*************************************************
;LA SIGUIENTE RUTINA SE ENCARGA DE HACER LA SECUEN-
;CIA DE INICIALIZACÓN DE LA LCD DE ACUERDO CON LOS
;TIEMPOS DADOS POR EL FABRICANTE (15 MS).SE ESPECI-
;FICAN LOS VALORES DE DL, N, Y F, ASI COMO LA CON-
;FIGURACIÓN DE UNA INTERFAZ D 8 LINEAS CON EL BUS
;DE DATO DEL PIC, Y 2 LINEAS DE 16 CARACTERES DE
; 5X7 PIXELES. ES
;*************************************************
LCD_INI: MOVLW B'00111000' ;PALABRA FUNCION SET (TAMAÑO, LINEA)
CALL LCD_REG ;CODIGO DE INSTR.
CALL LCD_DELAY ;TEMPORIZA
MOVLW B'00111000' ;
CALL LCD_REG
CALL LCD_DELAY
MOVLW B'00111000'
CALL LCD_REG
CALL LCD_DELAY
RETURN
;*********************************************
;LA SIGUIENTE RUTINA BORRA EL LCD Y RETORNA AL
;CURSOR A LA POSICION 0 (HOME)
;*********************************************
BORRA_Y_HOME: MOVLW B'00000001' ;CLAREA EL DISPLEY Y VUELVE AL INICIO
CALL LCD_REG ;ESCRIBE LA INSTRUCCION EN EL DISPLEY
RETURN
;*********************************************
;LA SIGUIENTE RUTINA CONTROLA EL DISPLAY Y CUR-
;SOR. ACTIVA EL DISPLAY Y DESACTIVA EL CURSOR
;*********************************************
DISPLAY_ON_CUR_OFF:
MOVLW B'00001100' ;PALABRA DYSPLEY ON/OFF CONTROL
CALL LCD_REG ;ESCRIBE EN EL DISPLEY
RETURN
;******************************************
;LA SIGUIENTE RUTINA PRODUCE UN RETARDO DE
;5 MILISEGUNDOS.
;******************************************
LCD_DELAY: MOVLW 10
MOVWF LCD_TEMP_1
CLRF LCD_TEMP_2
LCD_DELAY_1: DECFSZ LCD_TEMP_2,F
GOTO LCD_DELAY_1
DECFSZ LCD_TEMP_1,F
GOTO LCD_DELAY_1
RETURN

;****************************************************************************
;CAMBIO DE PAGINA
;****************************************************************************
ORG 800H

TABLA CALL TABLA1
BCF PCLATH,3
RETURN
TABLA1 ADDWF PCL,1
RETLW 00H ;0
RETLW 00H ;1
RETLW 01H ;2
RETLW 01H ;3
RETLW 02H ;4
RETLW 02H ;5
RETLW 03H ;6
RETLW 04H ;7
RETLW 05H ;8
RETLW 05H ;9 - 10
RETLW 06H ;A
RETLW 06H ;B
RETLW 07H ;C
RETLW 07H ;D
RETLW 08H ;E
RETLW 09H ;F
RETLW 10H ;10
RETLW 11H ;11
RETLW 12H ;12
RETLW 13H ;13
RETLW 14H ;14
RETLW 15H ;15
RETLW 16H ;16
RETLW 17H ;17
RETLW 18H ;18
RETLW 19H ;19
RETLW 20H ;1A
RETLW 21H ;1B
RETLW 22H ;1C
RETLW 23H ;1D
RETLW 24H ;1E
RETLW 25H ;1F
RETLW 26H ;20
RETLW 27H ;21
RETLW 28H ;22
RETLW 29H ;23
RETLW 30H ;24
RETLW 31H ;25
RETLW 32H ;26
RETLW 33H ;27
RETLW 34H ;28
RETLW 35H ;29
RETLW 36H ;2A
RETLW 37H ;2B
RETLW 38H ;2C
RETLW 39H ;2D
RETLW 40H ;2E
RETLW 41H ;2F
RETLW 42H ;30
RETLW 43H ;31
RETLW 44H ;32
RETLW 45H ;33
RETLW 46H ;34
RETLW 47H ;35
RETLW 48H ;36
RETLW 49H ;37
RETLW 50H ;38
RETLW 51H ;39
RETLW 52H ;3A
RETLW 53H ;3B
RETLW 54H ;3C
RETLW 55H ;3D
RETLW 56H ;3E
RETLW 57H ;3F
RETLW 58H ;40
RETLW 59H ;41
RETLW 60H ;42
RETLW 61H ;43
RETLW 62H ;44
RETLW 63H ;45
RETLW 64H ;46
RETLW 65H ;47
RETLW 66H ;48
RETLW 67H ;49
RETLW 68H ;4A
RETLW 69H ;4B
RETLW 70H ;4C
RETLW 71H ;4D
RETLW 72H ;4E
RETLW 73H ;4F
RETLW 74H ;50
RETLW 75H ;51
RETLW 76H ;52
RETLW 77H ;53
RETLW 78H ;54
RETLW 79H ;55
RETLW 80H ;56
RETLW 81H ;57
RETLW 82H ;58
RETLW 83H ;59
RETLW 84H ;5A
RETLW 85H ;5B
RETLW 86H ;5C
RETLW 87H ;5D
RETLW 88H ;5E
RETLW 89H ;5F
RETLW 90H ;60
RETLW 91H ;61
RETLW 92H ;62
RETLW 93H ;63
RETLW 94H ;64
RETLW 95H ;65
RETLW 96H ;66
RETLW 97H ;67

END
 
PIC16F877A

// Lcd pinout settings
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB2_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D7 at RB5_bit;

// Pin direction
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB5_bit;

void main()
{
Lcd_Init();
Lcd_Out(1, 1, "Hola BB");
Lcd_Cmd(_LCD_CURSOR_OFF);
}

y el videotutorial con el que me guie fue:

alguien me puede decir como meterle mas datos y que se vallan metiendo mas y mas y la pantalla los muestre
 
Atrás
Arriba