Autor Tema: MENSAJE SOBRE LCD  (Leído 9264 veces)

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

Desconectado BLACKPIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 129
MENSAJE SOBRE LCD
« en: 15 de Agosto de 2005, 19:48:00 »
AMIGOS NECESITO AYUDA PARA HACER UN MENSAJE DE BIENVENIDA SOBRE UN LCD, LA VERDAD ES QUE NO SE MUCHO SOBRE LOS PIC Y QUIERO PONER UN MENSAJE SOBRE UN LCD Y PODER SIMILARLO EN EL PROTEUS..

GRACIAS A TODOS..... RebotadoRebotadoRebotadoRebotadoRebotadoRebotado
Saludo desde Rep.Dom ( BLACKPIC )..
La ciencia es el arte del ensayo y el error, su producto más importante es la razón...

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: MENSAJE SOBRE LCD
« Respuesta #1 en: 15 de Agosto de 2005, 20:45:00 »
Hola:

en que lenguaje quieres hacerlo...?

Si es en basic es muy sencillo:

Loop:
         LCDOUT $FE,1,"HOLA MUNDO"
         PAUSE 250
         GOTO Loop
END

y con que pic quieres hacerlo para poner el esquema del circuito...!

Desconectado BLACKPIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 129
RE: MENSAJE SOBRE LCD
« Respuesta #2 en: 15 de Agosto de 2005, 21:47:00 »
bueno quiero el asm que el que mas o menos mese amigo y gracias

boy a tener que aprender el basic...

y me puedes decir cual de los lenguaje de programacion es el mas facil de aprender por que con el asm tu ve que ir alpaso ya que no sabia nada de electronica..


cuidate RebotadoRebotadoRebotadoRebotado
Saludo desde Rep.Dom ( BLACKPIC )..
La ciencia es el arte del ensayo y el error, su producto más importante es la razón...

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: MENSAJE SOBRE LCD
« Respuesta #3 en: 15 de Agosto de 2005, 21:59:00 »
Hola:

Pues si me lo preguntas el mas facil para mi es el Pic Basic Pro... es muy sencillo de aprender y lo aprendes rapido... a la semana ya estaras haciendo algunos proyectos...

en este link:

http://miarroba.com/foros/ver.php?foroid=8826&temaid=4001543

Encontraras ejemplos sencillos que yo estoy colgando son con los que yo aprendi... no es muy dificil... es el mas facil a mi criterio, yo tambien estoy aprendiendo C en el subforo de Lenguaje C para microcontroladores... y pues a mi criterio el basic es mucho mas sencillo...!

Desconectado olotill

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 249
RE: MENSAJE SOBRE LCD
« Respuesta #4 en: 15 de Agosto de 2005, 22:44:00 »
HOLA BLACK..

PUES SI DESEAS UN EJEMPLO BASTANTE CLARO Y LISTO PARA SIMULAR EN PROTEUS, PUEDES BAJARTE LOS EJEMPLOS QUE COLGUE EN EL SUBFORO DE SIMULADORES... EJEMPLOS PARA SIMULAR...

AHI ENCONTRARAS VARIOS PROYECTOS HECHOS CON LCD Y SU CORRESPONDIENTE ARCHIVO EN HEX Y EL ARCHIVO .BAS QUE TE DA LA PROGRAMACION EN BASIC...

YO TE RECOMIENDO APRENDER EL PBP... QUE PARA EMPEZAR ES BASTANTE SENCILLO...

SALUDOS DESDE ECUADOR RebotadoRebotadoRebotado
"La imaginación es más importante que el conocimiento"  A. Einstein..

Desconectado BLACKPIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 129
RE: MENSAJE SOBRE LCD
« Respuesta #5 en: 15 de Agosto de 2005, 22:57:00 »
bueno la verdad ya me puse en eso ya baje el manuel que se encuentra en el foro
y una pregunta yo uso el mplab para hacer y descompilar los archivos.. digan me se puede usar o que cuales programas tengo que bajar para poner lo a bajar ..

 y gracias  amigos       LordLafebre   y    olotill..... cuidence

FlashFlashRebotado


amigo olotill.....  por favor de poner el links para yo descargar  los ej de simulacion de la pag.
Saludo desde Rep.Dom ( BLACKPIC )..
La ciencia es el arte del ensayo y el error, su producto más importante es la razón...

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: MENSAJE SOBRE LCD
« Respuesta #6 en: 15 de Agosto de 2005, 23:32:00 »
Hola:

No entiendo muy bien que es lo que quieres decir, pero si te refieres a compilar los archivos... pues necesitas el compilador picbasic pro (PBP) y el editor que es el microcode Studio... en este ultimo es en donde tu escribes tu codigo y este se enlaza con el compilador que es PBP y crea en .ASM y el .HEX... En PBP puedes incluir rutinas en ensamblador si llegaras a necesitarlo...

Desconectado BLACKPIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 129
RE: MENSAJE SOBRE LCD
« Respuesta #7 en: 18 de Agosto de 2005, 00:26:00 »
hola amigo LordLafebre disculpa con el pequeño error que hice cuado puse descompilar  la verdad quise decir compilar y por favor pon el circuito del mensaje sobre el lcd y el codigo pero hacho en asm. si puedes amigo ... y el pic a utilizar es el 16f84 o otro que tu decees ...

y gracias por todo...FlashFlashRebotadoRebotado
Saludo desde Rep.Dom ( BLACKPIC )..
La ciencia es el arte del ensayo y el error, su producto más importante es la razón...

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: MENSAJE SOBRE LCD
« Respuesta #8 en: 18 de Agosto de 2005, 01:24:00 »
Hola:

Aqui http://www.x-robotics.com en la seccion RUTINAS hay un ejemplo de LCD 2x16 u pic 16F84 en ASM...

Suerte...!

Desconectado BLACKPIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 129
RE: MENSAJE SOBRE LCD
« Respuesta #9 en: 25 de Agosto de 2005, 20:45:00 »
hola amigo LordLafebre como estas espero que bien amigo bueno
gracias por la pag. que me diste pero tengo un problema baje el ej. pero cuando
lo simulo no me funciona amigo requiero de una ayuda.

saludo para todos los del foro
y gracias por lo que hacen por los demas como yo-....



bye desde Rep. Dom.FlashFlashRebotado
Saludo desde Rep.Dom ( BLACKPIC )..
La ciencia es el arte del ensayo y el error, su producto más importante es la razón...

Desconectado manuelroin

  • PIC12
  • **
  • Mensajes: 51
RE: MENSAJE SOBRE LCD
« Respuesta #10 en: 24 de Octubre de 2005, 08:15:00 »
hola yo tambien necesito ayuda con un PIC 16f877 y un LCD para mostrar un voltaje de entrada atraves de un potenciometro en el LCD y mi gran duda es como convierto la muestra a numeros decimales y como lo hago funcionar en el proteus la verdad q el proteus se pone molestoso alguien podria ayudarme necesito este programa pero hecho en MPLAB osea en assembler y por favor no me digan que este ejemplo ya esta en otro parte del foro pq ya lei tods y si esta es de  otro tipo y no me ayuda con mi problema muchismas gracias de antemano

Desconectado manuelroin

  • PIC12
  • **
  • Mensajes: 51
RE: MENSAJE SOBRE LCD
« Respuesta #11 en: 25 de Octubre de 2005, 12:16:00 »
BUENO EN REPUESTA A LA PREGUNAT DEL PICLISTERO LE  MUESTRO TODO LO NECESARIO CON LA SIMULACION EN PROTEUS DE LO PEDIDO  PERO COMO LE ADJUNTO EL ARCHIVOS O LOS ARCHIVOS NECESARIOS

Desconectado manuelroin

  • PIC12
  • **
  • Mensajes: 51
RE: MENSAJE SOBRE LCD
« Respuesta #12 en: 25 de Octubre de 2005, 12:20:00 »
BUENO AQUI TE ESCRIBO LO NECESARIO:UNO POR UNO
PASO 1:
             RUTINA LCD
PRIMERO ABRES EL MPLAB COPIAS ESTO Y LO GUARDAS COMO LCD.ASM

cblock
      CHAR       ;ubicación del caracter
      TEMP      ;almacenamiento temporal
      NumCadena    ;número de la cadena
      indice   
      W_temp
   endc

DATOS   EQU   PORTD      ;lineas de datos = portD
CNTRL   EQU     PORTD      ;lineas de control = portD

E       EQU     1      ;linea de control E = bit1
RW      EQU     2      ;linea de control RW = bit2
RS      EQU     3      ;linea de control RS = bit3

DISP_ON_CURSOR_BLINK   EQU   B"00001111"     ;Display on, cursor on,blink
DISP_ON_NOCURSOR   EQU   B"00001100"     ;Display on, cursor off
DISP_CLEAR      EQU   B"00000001"     ;Aclarar display
DISP_OFF       EQU   b"00001000"   ;apaga el display
DISP_LINEA2      EQU   b"11000000"   ;segunda linea

;*******************************************************************
;EnviaCarLCD - Envia un caracter a la pantalla LCD                 *
;Esta rutina separa el caracter entre el nibble superior e inferior*
;y los envia a la pantalla LCD, nibble mas alto primero         *
;*******************************************************************
EnviaCarLCD
   movwf   W_temp      ;almacena temporal W
   movwf   CHAR            ;W contiene caracter a ser enviado
   call    TestBusyLCD     ;Esperar que LCD este listo
   movf    CHAR,w          
   andlw   0xF0            ;Obtener el nibble superior
   movwf   DATOS           ;Enviar datos al LCD
   bcf     CNTRL,RW        ;Poner al LCD en modo lectura
   bsf     CNTRL,RS        ;Poner al LCD en modo de datos
   nop
   bsf     CNTRL,E         ;Conmutar E
   nop
   bcf     CNTRL,E
   swapf   CHAR,w
   andlw   0xF0            ;Obtener el nibble inferior
   movwf   DATOS           ;Enviar datos al LCD
   bcf     CNTRL,RW        ;Poner al LCD en modo lectura
   bsf     CNTRL,RS        ;Poner al LCD en modo de datos
   nop
   bsf     CNTRL,E         ;Conmutar E
   nop
   bcf     CNTRL,E
   movf   W_temp,W   ;restaura W
   return

;*******************************************************************
;*EnviaCmdLCD - Envia comando a la pantalla LCD                       *
;*Esta rutina separa el comando en nibble superior y nibble      *
;*inferior y los envia a la pantalla LCD, nibble mas alto primero  *
;*******************************************************************
EnviaCmdLCD
   movwf   CHAR            ;Caracter a ser enviado esta en reg. W
   call    TestBusyLCD     ;esperar LCD listo
   movf    CHAR,w          
   andlw   0xF0            ;Obtener nibble superior
   movwf   DATOS           ;enviar dato al LCD
   bcf     CNTRL,RW        ;Poner LCD en modo lectura
   bcf     CNTRL,RS        ;Poner LCD en modo comando
   nop
   bsf     CNTRL,E         ;conmutar E para LCD
   nop
   bcf     CNTRL,E
   swapf   CHAR,w
   andlw   0xF0            ;Obtener nibble inferior
   movwf   DATOS           ;enviar dato al LCD
   nop
   bsf     CNTRL,E         ;conmutar E para LCD
   nop
   bcf     CNTRL,E
   return

;*******************************************************************
;* Esta rutina chequea el flag de busy de la pantalla LCD,       *
;* retorna cuando no esta ocupado               *
;* Afecta:                                                         *
;*      TEMP - retorna con busy/address                            *
;*******************************************************************
TestBusyLCD
   banco   1
   movlw   b"11110000"      ;Seleccionar DATOS[4..7]
   movwf   TRISD
   banco   0
   bcf     CNTRL,RS        ;Pone LCD en modo comando
   bsf     CNTRL,RW        ;prepara para leer flag de busy
   nop
   bsf     CNTRL,E         ;E="1"
   nop
   movf    DATOS,W         ;Lee flag de busy del nibble sup., direccion DDRam
   bcf     CNTRL,E         ;conmuta E para tomar nibble inferior
   andlw   0F0h            ;Enmascara el nibble
   movwf   TEMP         ;lo almacena
   nop
   bsf     CNTRL,E
   nop
   swapf   DATOS,w         ;Lee flag de busy del nibble inf., direccion DDRam
   bcf     CNTRL,E         ;Poner E="0"
   andlw   00Fh            ;Enmascara nibble superior
   iorwf   TEMP,1          ;Combina nibbles
   btfsc   TEMP,7          ;Chequea flag de busy, alto = ocupado
   goto    TestBusyLCD     ;Si esta ocupado, chequear nueamente
   bcf     CNTRL,RW        
   banco   1
   movlw   0x00         ;poner DATOS como salidas
   movwf   TRISD
   banco   0
   return

;**************************************************************
;* Esta rutina inicializa la pantalla LCD            *
;*  Afecta:                                                   *
;*      TEMP - retornado con busy/address            *
;**************************************************************
inicio_LCD
   banco   0
   bcf   CNTRL,E      ; aclara lineas de control
   bcf   CNTRL,RW
   bcf   CNTRL,RS
   movlw   0x0F      ;aclara lineas de datos
   movwf   DATOS
;Configurar puertos DATOS[4..7] y CNTRL[1..3] como salidas
   banco   1
   movlw   B"00001111"     ;4 bits mas altos de DATOS
   movwf   TRISD
   bcf   TRISD,E      ;bits de control como salidas
   bcf   TRISD,RW
   bcf   TRISD,RS
   banco   0

;Inicializar la pantalla LCD

   movlw   t15.4ms      ;guarda de 15 ms
   movwf   contador2
   call   retardo
   movlw   B"00110000"     ;Configurar LCD para interfaz de 4 bits
   movwf   DATOS
   nop
   bsf     CNTRL,E         ;conmutar E para LCD
   nop
   bcf     CNTRL,E
   movlw   t4.6ms
   movwf   contador2
   call   retardo
   movlw   B"00110000"     ;Funcion escoger 2 lineas
   movwf   DATOS           ;de caracteres de 5x7 bits
   nop
   bsf     CNTRL,E         ;conmutar E para LCD
   nop
   bcf     CNTRL,E
   movlw   B"00110000"     ;Parte de la secuencia de encendido
   movwf   DATOS            
   nop
   bsf     CNTRL,E         ;conmutar E para LCD
   nop
   bcf     CNTRL,E
   movlw   t200us      ;retardo
   movwf   contador2
   call   retardo
   movlw   B"00100000"   ;Configurar modo 4 bits
   movwf   DATOS      ;
   nop
   bsf     CNTRL,E         ;conmutar E para LCD
   nop
   bcf     CNTRL,E

;El flag de ocupado estaria valido despues de este punto
   movlw   B"00101000"     ;Interfaz de 4 bits, 2 lineas
   call    EnviaCmdLCD      ; de caracteres de 5x7
   movlw   DISP_ON_CURSOR_BLINK     ;Display on, cursor on,blink
   call    EnviaCmdLCD
   movlw   DISP_CLEAR        ;Aclarar display
   call    EnviaCmdLCD
   movlw   B"00000110"     ;Poner modo incremental, sin desplazamiento
   call    EnviaCmdLCD      
   movlw   B"10000000"     ;Address DDRam upper left
   call    EnviaCmdLCD
   return

Desconectado manuelroin

  • PIC12
  • **
  • Mensajes: 51
RE: MENSAJE SOBRE LCD
« Respuesta #13 en: 25 de Octubre de 2005, 12:25:00 »
GUARDA ESTA MACRO COMO MACROPIC.INC ESTAS MACROS TE AYUDARAN A RESOLVER TUS PROBLEMAS MAS RAPIDOS

;**********************************************************************
;    Filename:       macropic.inc                                      *
;    File Version:  1.0                                               *
;    Author:        Manuel Alejandro Rodríguez Infantes                               *
;    Company:       UNFV                                          *
;**********************************************************************
;    Files required:                                                  *
;                                                                     *
;**********************************************************************
;    Notes:                                                           *
;                   Aplicaciones Avanzadas con PIC                    *
;**********************************************************************   

;************************************************************** banco x
banco   macro   x
   if x == 0
      bcf   STATUS,RP0
      bcf   STATUS,RP1
   endif
   if x == 1
      bsf   STATUS,RP0
      bcf   STATUS,RP1
   endif
   if x == 2
      bcf   STATUS,RP0
      bsf   STATUS,RP1
   endif
   if x == 3
      bsf   STATUS,RP0
      bsf   STATUS,RP1
   endif
   endm

;************************************************************** pagina
pagina   macro   x
   if x == 0
      bcf   PCLATH,3
      bcf   PCLATH,4
   endif
   if x == 1
      bsf   PCLATH,3
      bcf   PCLATH,4
   endif
   if x == 2
      bcf   PCLATH,3
      bsf   PCLATH,4
   endif
   if x == 3
      bsf   PCLATH,3
      bsf   PCLATH,4
   endif
   endm

;************************************************************** mov
mov   macro   registro,literal
   movlw   literal
   movwf   registro
   endm

;************************************************************** movr
movr   macro   registro1,registro2
   movf   registro2,0
   movwf   registro1
   endm

;************************************ compara y salta si no es igual
cjne   macro   registro,dato,direcc
   movlw   dato
   subwf   registro,0
   btfss   STATUS,Z
   goto   direcc
   endm
;************************************ compara y salta si no es igual
cjner   macro   registro1,registro2,direcc
   movf   registro2,0
   subwf   registro1,0
   btfss   STATUS,Z
   goto   direcc
   endm
;************************************ compara y salta si es igual
cje   macro   registro,dato,direcc
   movlw   dato
   subwf   registro,0
   btfsc   STATUS,Z
   goto   direcc
   endm
;************************************ compara y salta si es igual
cjer   macro   registro1,registro2,direcc
   movf   registro2,0
   subwf   registro1,0
   btfsc   STATUS,Z
   goto   direcc
   endm


;*************************** decrementa, compara y salta si no es igual
dcjne   macro   registro,dato,direcc
   decf   registro,1
   movlw   dato
   subwf   registro,0
   btfss   STATUS,Z
   goto   direcc
   endm

;*************************** compara y salta si es menor
cjl   macro   registro,dato,direcc
   movlw   dato
   subwf   registro,0   ; W = REGISTRO - W
   btfss   STATUS,C   ; ¿C="1"?
   goto   direcc
   endm

;********************* compara y salta si es menor igual
cjle   macro   registro,dato,direcc
   movlw   dato
   subwf   registro,0   ; W = REGISTRO - W
   btfss   STATUS,C   ; ¿C="1"?
   goto   direcc
   btfsc   STATUS,Z   ; ¿Z="0"?
   goto   direcc
   endm

;************************ compara y salta si no es menor
cjnl   macro   registro,dato,direcc
   movlw   dato
   subwf   registro,0   ; W = REGISTRO - W
   btfsc   STATUS,C   ; ¿C="0"?
   goto   direcc
   endm

;********************** compara y salta si es mayor o igual
cjge   macro   registro,dato,direcc
   movlw   dato
   subwf   registro,0   ; W = REGISTRO - W
   btfsc   STATUS,C   ; ¿C="0"?
   goto   direcc
   endm

;************************************************* esuno
esuno   MACRO   REGISTRO,BIT
   local   no_es_uno_1
no_es_uno_1   
   btfss   REGISTRO,BIT
   goto   no_es_uno_1
   endm

;************************************************* escero
escero   MACRO   REGISTRO,BIT
   local   no_es_cero_1
no_es_cero_1
   btfsc   REGISTRO,BIT
   goto   no_es_cero_1
   endm

;*************************************************   
jmp   MACRO   Direccion
   goto   Direccion
   endm

;*************************************************
jz   MACRO   Direccion
   btfsc   STATUS,Z
   goto   Direccion   
   endm

;*************************************************
jnz   MACRO   Direccion
   btfss   STATUS,Z
   goto   Direccion
   endm

;*************************************************
jc   MACRO   Direccion
   btfsc   STATUS,C
   goto   Direccion
   endm

;*************************************************
jnc   MACRO   Direccion
   btfss   STATUS,C
   goto   Direccion
   endm

;*************************************************
jbs   MACRO   Reg, Bit, Adr   ;saltar si bit esta seteado
   btfsc   Reg, Bit
   goto   Adr   
   endm

;*************************************************
jbc   MACRO   Reg, Bit, Adr   ;saltar si bit esta aclarado
   btfss   Reg, Bit
   goto   Adr   
   endm

;*************************************************
sbs   macro Reg, Bit      ;obviar si bit esta seteado
   btfss   Reg, Bit
   endm

;*************************************************
sbc   macro Reg, Bit      ;obviar si bit esta aclarado
   btfsc   Reg, Bit
   endm

;*************************************************
compara   macro   reg1, constante
   movlw   constante
   xorwf   reg1,W
   endm

Desconectado manuelroin

  • PIC12
  • **
  • Mensajes: 51
RE: MENSAJE SOBRE LCD
« Respuesta #14 en: 25 de Octubre de 2005, 12:30:00 »
ahora como tercer paso guarda este archivo como RETARDO.ASM

                cblock
      contador1   ;registro usado por retardo
      contador2   ;registro usado por retardo      
   endc

;*******************************************************************
t0      equ   0x82   ;constante para generar aprox. 25ms
t4.6ms      equ   0x06*4   ;constante para generar 4,6ms
t15.4ms      equ   0x14*4   ;constante para generar 15,4ms
t200us      equ   0x01   ;constante para generar aprox. 200us

;*******************************************************************
retardo:
   clrf   contador1   ;aclara contador1
ret   decfsz   contador1,F   ;
   goto    ret
   decfsz   contador2,F
   goto   ret
   return   

ret50ms:         ;RETARDO 50 ms
   movlw   t0      
   movwf   contador2
   call    retardo
   call   retardo
   return

ret100ms:         ;RETARDO 100 ms
   call   ret50ms      
   call   ret50ms
   return

ret300ms:         ;RETARDO 300 ms
   call   ret100ms
   call    ret100ms
   call   ret100ms
   return

ret600ms:         ;RETARDO 600 ms
   call   ret300ms
   call   ret300ms
   return