Autor Tema: LM35 en lcd con mensaje  (Leído 1667 veces)

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

Desconectado vero250996

  • PIC10
  • *
  • Mensajes: 4
LM35 en lcd con mensaje
« en: 21 de Junio de 2016, 02:11:43 »
Hola que tal necesito hacer un programa con lcd y lm35 cuando la temperatura sea igual o menor a 14° diga dia nublado y cuando sea mayor a 18° diga dia soleado independiente a eso debe mostrar otros mensajes si pudieran orientarme seria de gran ayuda gracias
;*********************************************          ;PIC:16F628A
;PROG:"LCD"            
;FRECUENCIA DE RELOJ: 4MHz   
;**********************************************************



__CONFIG  0X3F58
   CBLOCK   0X020
   NUM1
   NUM2
   NUM3
   ENDC

STATUS   EQU   0X03
PORTB   EQU   0x06
PORTA    EQU   0X05
TRISA   EQU   0X85
TRISB   EQU   0X86
CMCON   EQU   0X1F
   
   CBLOCK   0X020
   NUM1
   NUM2
   NUM3
   ENDC

   #DEFINE   RS   PORTA,0
   #DEFINE   EN   PORTA,1

LIMPIAR      EQU B'00000001'   ;LIMPIA TODA LA PANTALLA
RENGLON1   EQU   B'10000000'   ;COLOCA EN EL RENGLON 1
RENGLON2   EQU   B'11000000'   ;COLOCA EN EL RENGLON2
DISON      EQU   B'00001100'   ;ENCIENDE EL DISPLAY
HOME      EQU   B'00000010'   ;VA A LA DIRECCION 0
SHIFTDL      EQU   B'00011100'   ;ROTA EL LCD A LA IZQUIERDA
SHIFTDR      EQU   B'00011000'   ;ROTA EL LCD A LA DERECHA
SHIFTCL      EQU   B'00010100'   ;ROTA EL CURSOR A LA IZQUIERDA
SHIFTCR      EQU   B'00010000'   ;ROTA EL CURSOR A LA DERECHA
PORTLCD      EQU   PORTB

;ORIGEN DEL PROGRAMA

      ORG      0X00
;CONFIGURACION DE PUERTOS----------------------------------------------------------   

CONFI      
   MOVLW   0X07
   MOVWF   0X1F
   BSF      STATUS,5
   CLRF   TRISB      
   BCF      RS
   BCF      EN      
    BCF      TRISA,7
   BCF    TRISA,5
   BSF    TRISA,3
    BCF      STATUS,5
   

;PROGRAMA PRINCIPAL----------------------------------------------------------------

   BSF      PORTA,7
   CALL   RETARDO1
   CALL    INILCD

START   
   MOVLW   LIMPIAR
   CALL   CMD
   MOVLW   HOME
   CALL   CMD
   MOVLW   RENGLON1
   CALL   CMD
   BTFSS    PORTA,3
   GOTO    START
   GOTO   MENSAJE
    GOTO    MENSAJE

MENSAJE
   MOVLW   "E"
   CALL   DATO
   CALL   RETARDO1
   MOVLW    "X"
   CALL   DATO
   CALL   RETARDO1
   MOVLW    "I"
   CALL   DATO
   CALL   RETARDO1
   MOVLW   "T"   
   CALL   DATO
   CALL   RETARDO1
   MOVLW   "O"
   CALL   DATO
   CALL   RETARDO1
   

;CAMBIO DE RENGLON   
   MOVLW    RENGLON2
   CALL    CMD
   CALL    RETARDO1
   MOVLW    "M"
   CALL    DATO
   CALL    RETARDO1
   MOVLW    "I"
   CALL    DATO
   CALL    RETARDO1
   MOVLW    "C"
   CALL    DATO
   CALL    RETARDO1
   MOVLW    "R"
   CALL    DATO
   CALL    RETARDO1
   MOVLW    "O"
   CALL   DATO
   CALL    RETARDO1
   MOVLW    "E"
   CALL   DATO
   CALL    RETARDO1
   MOVLW    "L"
   CALL   DATO
   CALL    RETARDO1
   MOVLW    "E"
   CALL   DATO
   CALL    RETARDO1
   MOVLW    "C"
   CALL   DATO
   CALL    RETARDO1
   MOVLW    "T"
   CALL   DATO
   CALL    RETARDO1
   MOVLW    "R"
   CALL   DATO
   CALL    RETARDO1
   MOVLW    "O"
   CALL   DATO
   CALL    RETARDO1
   MOVLW    "N"
   CALL   DATO
   CALL    RETARDO1
   MOVLW    "I"
   CALL   DATO
   CALL    RETARDO1
   MOVLW    "C"
   CALL   DATO
   CALL    RETARDO1
   MOVLW    "A"
   CALL   DATO
   CALL    RETARDO1


   CALL    RETARDO1
   CALL    RETARDO1
   CALL    RETARDO1
   CALL    RETARDO1
   CALL    RETARDO1
   CALL    RETARDO1
   CALL    RETARDO1
   CALL    RETARDO1
   CALL    RETARDO1
    CALL    LIMPIAR

    CLRF    PORTB
    MOVLW   RENGLON1
    CALL    CMD
    CALL    RETARDO 
   

 MENSAJITO2
    MOVLW   "L"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "I"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "Z"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   " "
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "V"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "I"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "C"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "T"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "O"
    CALL    DATO
    CALL    RETARDO1 
    MOVLW   "R"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   " "
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "S"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "A"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "M"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "A"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   " "
    CALL    DATO
    CALL    RETARDO1
    MOVLW    RENGLON2
   CALL    CMD
   CALL    RETARDO1
    MOVLW   "V"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "E"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "R"
    CALL    DATO
    CALL    RETARDO1
    MOVLW   "O"
    CALL    DATO
    CALL    RETARDO1




;--------------------------------------------------------------------------------
   GOTO   START

;SUBRUTINAS-------------------------------------------------------------------------

DATO   
   MOVWF   PORTLCD
   BSF      RS
   NOP
   NOP   
   NOP
   BSF      EN
   CALL   RETARDO
   BCF      EN
   RETURN

;*********************************************************

CMD      
   MOVWF   PORTLCD
   BCF      RS
   NOP
   NOP
   NOP
   BSF      EN
   CALL   RETARDO
   BCF      EN
   RETURN

;I N I C I A L I Z A C I O N  L C D------------------------------------------------
INILCD
   MOVLW   B'00110000'   ;1
   CALL   CMD
   MOVLW   B'00110000'   ;2
   CALL   CMD
   MOVLW   B'00110000'   ;3
   CALL   CMD
   MOVLW   B'00111100'   ;4   ;N(BIT3)=1(2LINEAS),0(1LINEA):   F(BIT2)=1(5X10),0(5X7)
   CALL   CMD            ;LOS PRIMEROS DOS BITS NO IMPORTAN
   MOVLW   B'00001000'   ;5
   CALL   CMD
   MOVLW   B'00000001'   ;6
   CALL   CMD
   MOVLW   B'00000110'   ;7   ;S(BIT0)=0(NOT SHIFTED),1(SHIFTED)
   CALL   CMD            ;I/D(BIT1)=0(DECREMENTAL),1(INCREMENTAL)
                  ;DONDE EL LCD TIENE SU DIRECCION 0 EN EL EXTREMO IZQUIERDO
   MOVLW   DISON      ;8
   CALL   CMD
   MOVLW   HOME
   CALL   CMD
   MOVLW   LIMPIAR
   CALL   CMD
   RETURN

;----------------------------------------------------------------------------



RETARDO ;RETURN         ;RETARDO QUE DURA 5 MILISEGUNDOS
   MOVLW   D'1'
   MOVWF   NUM3
WAIT3   
   MOVLW   D'10'
   MOVWF   NUM2
WAIT2   
   MOVLW   D'166'
   MOVWF   NUM1
WAIT   
   DECFSZ   NUM1,1
   GOTO   WAIT
   DECFSZ   NUM2,1
   GOTO   WAIT2
   DECFSZ   NUM3,1
   GOTO   WAIT3
   RETURN
;-------------------------------------

RETARDO1 ;RETURN         ;RETARDO QUE DURA 1.64 MILISEGUNDOS
   MOVLW   D'3'
   MOVWF   NUM3
WAIT6   
   MOVLW   D'200'
   MOVWF   NUM2
WAIT5   
   MOVLW   D'166'
   MOVWF   NUM1
WAIT4   
   DECFSZ   NUM1,1
   GOTO   WAIT4
   
   DECFSZ   NUM2,1
   GOTO   WAIT5
   DECFSZ   NUM3,1
   GOTO   WAIT6
   RETURN



;FIN DEL PROGRAMA

         END

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:LM35 en lcd con mensaje
« Respuesta #1 en: 21 de Junio de 2016, 08:33:06 »
Primero si vas a usar mucho texto, te acosejo que busques sobre la directiva DT, Asi de esa forma podes hacer:

Mensaje_nublado:
DT  "DIA NUBLADO",0x00
DT  "DIA SOLEADO",0x00

Y luego vas a tener que realizar el codigo para eso. Lo cual si deseas agregar otro mensaje es agregar otro DT. Tal ves te convenga poner un ORG 0x300 por ejemplo antes de eso, asi tenes lugar para 256 caracteres ( contando el 0 obviamente ), Esto te crea RETLW para cada letra y tmb para el 0 quien te va a indicar el final de ese mensaje

Segundo un LM35 es simplemente leer el valor del ADC, sabiendo el voltaje que da el LM35 cuando hay 14º, eso lo pasas a la cantidad que tendria tu ADC, es decir X*1024/5 y comparas con eso.
« Última modificación: 21 de Junio de 2016, 08:35:18 por KILLERJC »