Sei sulla pagina 1di 4

;********************************************************* ;******* DISEO ALARMA GSM CON DISPLAY LCD ******** ;********** Desarrollado por Ing Martin Torres

*************** ;********************************************************* ;* Notas: La siguiente rutina, presenta el control de un * ;* sistema de alarma GSM, que como novedad, tiene un LCD * ;* para ver y monitorear el estado de la alarma.Sumado a * ;* esto, tenemos la funcion de llamada telefonica cuando * ;* el unico sensor del sist. detecta y dispara la alarma * ;********************************************************* ;*******Veamos paso a paso la rutina de la alarma ******** ;********************************************************* ;EN ESTA SECCION CONFIGURAMOS LOS PINES DE ENTRADA Y SALIDA ;NO USAR B11-12-13 YA QUE SON DE USO INTERNO DEL PROGRAMA ;********************************************************* SYMBOL RS = 2 ; 0 = Command 1 = Data SYMBOL E = 3 ; 0 = Idle 1 = Active SYMBOL DB4 = 4 ; LCD Linea Dato 4 SYMBOL DB5 = 5 ; LCD Linea Dato 5 SYMBOL DB6 = 6 ; LCD Linea Dato 6 SYMBOL DB7 = 7 ; LCD Linea Dato 7 SYMBOL RSCMDmask = %00000000 ; Select Command register SYMBOL RSDATmask = %00000100 ; Select Data register SYMBOL get = b11 SYMBOL bite = b12 SYMBOL rsbit = b13 SYMBOL boton_activar = input7 ; renombramos entrada 7 como boton_activar SYMBOL z_1 = input1 ; renombramos entrada 1 como z_1 ;******************************************************** ;EN ESTA SECCION, ARMAMOS EL CUERPO PRINCIPAL DEL PROGRAMA ;******************************************************** GOSUB InitialiseLcd ;Mensaje de Inicio EEPROM 242,("Inicio Sistema") ;guarda la palabra en la posicion242 FOR get = 242 TO 255 ;cuenta letra por letra hasta llegar a 255 READ get,bite ;lee el registro del conteo y GOSUB SendDataBite ;salta e imprime la frase pause 100 NEXT pause 1000 ctrl_LCD: GOSUB InitialiseLcd if boton_activar = 1 then msj_Alarma_Armada ;si esta en alto se activa if boton_activar = 0 then msj_Alarma_Desarmada ;si eta bajo esta desactivado goto ctrl_LCD zona_1: ;rutina para sensar if boton_activar =1 and z_1 =1 then msj_Disparo_Alarma ;activada+seal sensor se d ispara return call_police: ;rutina para activar la accion llamada por telefono high 0 pause 1000 low 0 pause 1000 high 0 pause 1000 low 0 pause 7000 high 1 pause 1000 low 1

pause 2000 return ;************************************************************ ;********** Mensajes LCD para alarma desarmada ************** ;************************************************************ msj_Alarma_Desarmada: EEPROM 6,("Alarma Desarmada") ;guarda la palabra en la posicion6 FOR get = 6 TO 21 ;cuenta letra por letra hasta llegar a 21 READ get,bite ;lee el registro del conteo y GOSUB SendDataBite ;salta e imprime la frase pause 50 NEXT Mensaje_2da_lineaA: bite = $C0 ;limpia y mueve el cursor a 2da linea GOSUB SendCmdBite MensajeA: EEPROM 208,("****************") ;guarda la palabra en la posicion 208 FOR get = 208 TO 223 ;cuenta letra por letra hasta llegar a 223 READ get,bite ;lee el registro del conteo y GOSUB SendDataBite ;salta e imprime la frase pause 50 ;damos un pequeo delay para tener efecto scrolli ng NEXT pause 50 Mover_cursor_2da_lineaA: ;rutina para mover el cursor a la segunda l inea bite = $C0 GOSUB SendCmdBite Mensaje_2da_lineaB: EEPROM 91,("Sistema Domotico") ;guarda la palabra en la posicion91 FOR get = 91 TO 106 ;cuenta letra por letra hasta llegar a 106 READ get,bite ;lee el registro del conteo y GOSUB SendDataBite ;salta e imprime la frase pause 50 ;damos un pequeo delay para tener efecto scrollin g NEXT Mover_cursor_2da_lineaB: ;rutina para mover el cursor a la segunda l inea bite = $C0 GOSUB SendCmdBite Mensaje_2da_lineaC: EEPROM 225,("Desarrollado por") ;guarda la palabra en la posicion 225 FOR get = 225 TO 240 ;cuenta letra por letra hasta llegar a 240 READ get,bite ;lee el registro del conteo y GOSUB SendDataBite ;salta e imprime la frase pause 50 ;damos un pequeo delay para tener efecto scrollin g NEXT pause 50 Mover_cursor_2da_lineaC: ;rutina para mover el cursor a la segunda l inea bite = $C0 GOSUB SendCmdBite Mensaje_2da_lineaD: EEPROM 107,("Martin A. Torres ") ;guarda la palabra en la posicion 107 FOR get = 107 TO 122 ;cuenta letra por letra hasta llegar a 122 READ get,bite ;lee el registro del conteo y GOSUB SendDataBite ;salta e imprime la frase pause 150 ;damos un pequeo delay para tener efecto scrolli ng

NEXT Mover_cursor_2da_lineaD: ;rutina para mover el cursor a la segunda l inea bite = $C0 GOSUB SendCmdBite Mensaje_2da_lineaE: EEPROM 190,("****************") ;guarda la palabra en la posicion 190 FOR get = 190 TO 206 ;cuenta letra por letra hasta llegar a 206 READ get,bite ;lee el registro del conteo y GOSUB SendDataBite ;salta e imprime la frase pause 50 ;damos un pequeo delay para tener efecto scrolli ng NEXT pause 50 goto ctrl_LCD ;************************************************************ ;************* Mensajes LCD para alarma activada ************ ;************************************************************ msj_Alarma_Armada: gosub zona_1 ;ir a la rutina de sensado EEPROM 23,("Alarma Armada") ;guarda la palabra en la posicion 23 FOR get = 23 TO 35 ;cuenta letra por letra hasta llegar a 35 READ get,bite ;lee el registro del conteo y GOSUB SendDataBite ;salta e imprime la frase pause 100 ;damos un pequeo delay para tener efecto scrolli ng NEXT Mover_cursor_2da_linea1: ;rutina para mover el cursor a la segunda l inea bite = $C0 GOSUB SendCmdBite Mensaje_2da_linea2: EEPROM 125,("Monitoreando") ;guarda la palabra en la posicion 125 FOR get = 125 TO 136 ;cuenta letra por letra hasta llegar a 137 READ get,bite ;lee el registro del conteo y GOSUB SendDataBite ;salta e imprime la frase pause 250 ;damos un pequeo delay para tener efecto scrollin g NEXT pause 50 gosub zona_1 ;ir a la rutina de sensado goto ctrl_LCD ;************************************************************ ;********** Mensajes LCD para disparo de alarma ************* ;************************************************************ msj_Disparo_Alarma: EEPROM 37,("ATENCION DISPARO") ;guarda la palabra en la posicion 37 FOR get = 37 TO 51 ;cuenta letra por letra hasta llegar a 51 READ get,bite ;lee el registro del conteo y GOSUB SendDataBite ;salta e imprime la frase NEXT Mover_cursor_2da_linea3: ;rutina para mover el cursor a la segunda li nea bite = $C0 GOSUB SendCmdBite Mensaje_2da_linea3: EEPROM 139,("Call Police") ;guarda la palabra en la posicion 139 FOR get = 139 TO 149 ;cuenta letra por letra hasta llegar a 149 READ get,bite ;lee el registro del conteo y GOSUB SendDataBite ;salta e imprime la frase

pause 250 NEXT pause 100 gosub call_police ;ir a rutina de llamada por telefono goto ctrl_LCD ;**************************************************************** ;**** Rutina de control estandar del LCD - No Tocar ************* ;**************************************************************** InitialiseLcd: FOR get = 0 TO 5 READ get,bite GOSUB SendInitCmdBite NEXT EEPROM 0,( $33 ) ; habilita lcd en 8-bit / 8-bit EEPROM 1,( $32 ) ; habilita lcd en 8-bit / 4-bit EEPROM 2,( $28 ) ; Formatea el Display EEPROM 3,( $0C ) ; Arranca el Display EEPROM 4,( $06 ) ; Mueve el cursor EEPROM 5,( $01 ) ; Limpia la pantalla RETURN SendInitCmdBite: PAUSE 15 ; retardo 15mS SendCmdBite: rsbit = RSCMDmask ; envia el comando de registro SendDataBite: pins = bite & %11110000 | rsbit ; Put MSB out first PULSOUT E,1 ; Give a 10uS pulse on E pins = bite * %00010000 | rsbit ; Put LSB out second PULSOUT E,1 ; Give a 10uS pulse on E rsbit = RSDATmask ; Send to Data register next RETURN ;********************************************************** ;************************* FIN PROGRAMA ***************** ;************ Desarrollado por Ing Martin Torres ***************** ;**********************************************************

Potrebbero piacerti anche