viernes, 8 de enero de 2010

Cerradura electrónica con LCD y teclado 3x4 usando PIC 16F628A

Muy buenas a todos y todas los fanáticos de los microcontroladores!!!

Aquí les dejo un vídeo de una cerradura electrónica con el microcontrolador PIC 16f628A una pantalla LCD 16x2 y un teclado 4x4. También el esquema y el código en Pic Basic Pro (pbp).



Componentes necesarios:

Lista de componentes para una cerradura electrónica controlada por PIC,

  • Microcontrolador PIC 16F628A

  • Pantalla LCD 16x2

  • Teclado 4x4

  • 3 Resistencias 4K7 (4700Ohm)

  • Rele (Lo podemos sustituir por un Led para hacer pruebas)

  • Programador Micro JDM 16f628 y 16f84

Esquema en Proteus para 16F628A y LCD 16x02:


Como no tenía reles a mano he puesto un led en su lugar, pero a efectos es lo mismo poniendo un transistor podremos controlar cargas mayores.


En la siguiente imagen tenemos el mapa de los pines del microcontrolador PIC 16F628A:

Después de una pequeña revisión, me he dado cuenta que si se ponemos RS en el pin A4 no funciona la simulación, pero solo en la simulación. De todas maneras he cambiado la foto del esquema y el código para que todo funcione correctamente.

Solucionado el problema, os dejo los archivos para Proteus y los archivos de PBP en la sección de descargas de este blog.


Funciones del programa:

  • Bienvenida: Muestra un mensaje de bienvenida en la pantalla.

  • Inicio:

  • Menú: tenemos dos opciones:
    • Abrir puerta: Función "Abrir".
    • Cambiar clave: Función "Nueva_clave".

  • Teclado: Lee las pulsaciones del teclado.

  • Clave: Imprime en la pantalla dígito a dígito.

  • Grabar_clave Almacena los dígitos en la memoria EEPROM

  • Nueva_clave Imprime en pantalla los dígitos llamando a la función "Grabar_clave" con la nueva clave.


Y este es el código para la programación en PBP:



; Cerradura  Electrónica con teclado 3x4,Lcd 16x2,
; y clave de 4 dígitos que queda grabada aun cuando el Pic
; deje de tener corriente.
; utiliza el microcontrolador 16f628a prescidiendo del cristal de cuarzo
; externo y usando el reloj interno

@ DEVICE PIC16F628A, WDT_OFF
@ DEVICE PIC16F628A, PWRT_ON
@ DEVICE PIC16F628A, BOD_ON
@ DEVICE PIC16F628A, PROTECT_OFF
@ DEVICE PIC16F628A, CPD_OFF
@ DEVICE PIC16F628A, MCLR_OFF
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT
@ DEVICE PIC16F628A, LVP_OFF

DEFINE LCD_DREG PORTA  ; Puerto de datos LCD
DEFINE LCD_DBIT 0      ; datos LCD comenzando en BIT 0 o 4 "estos deben estar consecutivos"
DEFINE LCD_EREG PORTB  ; cambiamos Enable del portb.3
DEFINE LCD_EBIT 7      ; al portb.7
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 7



; Definicion de variables
a var word
tecla var word
n1 var byte
n2 var byte
n3 var byte
n4 var byte
eprom1 var byte

; Definiendo puertos
LA    var portb.0 ; Linea A
LB    var portb.1 ; Linea B
LC    var portb.2 ; Linea C
LD    var portb.3 ; Linea D
Funo  var portb.4 ; Columna 1
Fdos  var portb.5 ; Columna 2
Ftres var portb.6 ; Columna 3
rele  var porta.6 ; Rele

n1 = "1" ; asigno valor a las variables
n2 = "1" ; el valor es equivalente en ascII
n3 = "1" ; esta sera la combinación predefinida
n4 = "1" ; recuerda cambiarla!!

eprom1 = "0"

PAUSE 100 ; Inicio del programa
read 0, eprom1
if eprom1 = 255 then Grabar_clave
  goto Bienvenida

Grabar_clave:

  WRITe 0, n1
  WRITe 1, n2
  WRITe 2, n3
  WRITe 3, n4

  LCDOUT $FE,1, $FE, 2 , " CLAVE GRABADA "
  PAUSE 1500
  GOTO Bienvenida

Bienvenida:
  pause 500 ; Mensaje de Bienvenida
  LCDOUT $FE,1, $FE, 2, " Infotronikblog"
  LCDOUT $FE, $C0, "  Presenta: "

Inicio:
  pause 500
  LOW LA
  LOW LB
  HIGH LC
  LOW lD  ; Activamos la linea del asterisco
  IF fUNO = 0 then goto Clave
  pause 500 ; LEE EL TECLADO A VER SI ES "*" SI NO ES CONTINUA MOSTRANDO MENSAJE
goto Inicio

; Función para leer el teclado
Teclado:

  low la
  if funo  = 0 then uno
  if fdos  = 0 then dos
  if ftres = 0 then tres

  high la
  low  lb
  if funo  = 0 then cuatro
  if fdos  = 0 then cinco
  if ftres = 0 then seis

  high lb
  low  lc
  if funo  = 0 then siete
  if fdos  = 0 then ocho
  if ftres = 0 then nueve

  high lc
  low ld
  if funo  = 0 then asterisco
  if fdos  = 0 then cero
  if ftres = 0 then numeral
  high ld
  pause 10
goto Teclado

asterisco:
  tecla ="*"
  return

siete:
  tecla = "7"
  return

cuatro:
  tecla = "4"
  return

uno:
  tecla = "1"
  return

dos:
  tecla = "2"
  return

cinco:
  tecla = "5"
  return

ocho:
  tecla = "8"
  return

cero:
  tecla = "0"
  return

tres:
  tecla = "3"
  return

seis:
  tecla = "6"
  return

nueve:
  tecla = "9"
  return

numeral:
  tecla = "#"
  return

Clave:
  LCDOUT $FE,1, $FE,2, "Escribe la Clave"
  pause 1000
  gosub Teclado
  SWAP tecla, n1

  LCDOUT $FE, $C5, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n2
  
  LCDOUT $FE, $C6, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n3
  
  LCDOUT $FE, $C7, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n4

  LCDOUT $FE, $C8, "*"
  pause 500

  READ 0,EPROM1
  IF eprom1 = n1 then miro_dos

Error:
  LCDOUT $FE, 1, $FE, 2, "Clave Incorrecta"
  pause 500
goto Bienvenida

miro_dos:
  READ 1, eprom1
  IF eprom1 = n2 then miro_tres
goto error

miro_tres:
  READ 2, eprom1
  IF eprom1 = n3 then miro_cuatro
goto error

miro_cuatro:
  READ 3, eprom1
  IF eprom1 = n4 then goto menu
goto error


menu:
  LCDOUT $FE, 1, "  Elige una "
  LCDOUT $FE, $C0, "  Opcion: "

  pause 1500

  LCDOUT $FE, 1, "1 Abrir Puerta"
  pause 300

  LCDOUT $FE, $C0, "2 Cambiar Clave"
  gosub Teclado

  if tecla = "1" THEN goto Abrir
  if tecla = "2" then goto Nueva_clave
  if tecla != "1" and tecla!= "2" then LCDOUT $FE,1, $FE,2, "TECLA INCORRECTA" ; Si pulsamos una 

  LCDOUT $FE, 1, $FE, 2, "TECLA INCORRECTA "  ;que no es ni 1 ni 2 muestra tecla incorrecta
  pause 700
goto menu

Abrir:
  high rele
  LCDOUT $FE, 1, $FE, 2, "   Bienvenido "
  pause 3000
  low rele
goto Bienvenida


Nueva_clave:
  LCDOUT $FE,1, $FE,2, "Escribe tu nueva"
  LCDOUT $FE, $C0, "Clave:"
  pause 500
  gosub Teclado
  SWAP tecla, n1
  LCDOUT $FE, $C8, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n2
  LCDOUT $FE, $C9, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n3
  LCDOUT $FE, $C9+1, "*"
  pause 500
  gosub Teclado
  SWAP tecla, n4
  LCDOUT $FE, $C9+2, "*"
  pause 500
goto Grabar_clave


*NOTA: En la simulación la clave esta cambiada a 2580 *

Otros enlaces sobre información o proyectos con microcontroladores:

82 comentarios :

Luna dijo...

k te pasaba con los dedicos carlitos???

Anónimo dijo...

y el codigo???

Anónimo dijo...

muy interesante el video pero...
y el codigo fuente?
se te agradeceria mas si lo compartieras con nosotros

Gonzalo dijo...

Hola podrias compartir el codigo .C y el esquema porfa??? Estoy montando una alarma y vendria de perlas poder incorporar tu sistema en ella =))))

Peyutron dijo...

Bueno ya esta terminado el Post, si teneis alguna duda preguntadmelo!!!
El codigo solo lo tengo en pbp, como mucho el ASM que genera al compilar el *.HEX

BLOG DE PACHO dijo...

pon el .hex porfavor

Anónimo dijo...

alguien tiene el programa en asm ??? gracias
ruben
rudafi@yahoo.com.ar

Anónimo dijo...

oye hago lo mismo y no me corre en el proteus

Peyutron dijo...

Has puesto el cristal del pic a 4mhz? configurando en las propiedades del micro (a mi me paso al principio de empezar con proteus) si no asi a voz de pronto y con la información que me dasen poco más te puedo ayudar. ¿¿¿Cual es el error o el fallo???

Anónimo dijo...

no me corre el progrma
no funca no sale nada
solo la patillla verde jaja

Peyutron dijo...

Prueba a cambiar los puertos del LCD.
A mi proteus no me dejaba ponerlo en el puerto A tenia que cambiarlo al B asi que si quieres que funcione en proteus tendrias que cambiar un poco el programa.

Anónimo dijo...

veo en el codigo que algunas etiquetas no estan con los : dos puntos sin embargo el codigo corre bien aunque en proteus no funciona

Peyutron dijo...

Si algun : de las etiquetas se habia quedado en el camino.. probad a cambiar el RS y el E al puerto B

Anónimo dijo...

oye carnal no puedo compilar el pbp me aparece este eroor demo command limit of 31 exceeded, time to purchase? ojala me pudieras ayudar

Peyutron dijo...

Estas usando una demo de PBP. Necesitas la versión integra. Aiinnnssss a ver si usamos los traductores!!! Un saludo!!

Anónimo dijo...

que muchacho.. haces en el proteus y tampoco te corre?¿ jejeje, uuum algo anda mal en esta pag. thanks de tods forms!!

Peyutron dijo...

Ya esta todo rervisado y tambien incluyo los archivos en Isis y PBP, espero que ahora si os funcione!!

Anónimo dijo...

oye disculpa tengo un problema trato de compilar el archivo y me marca error en
@DEVICE PIC16F628A, WDT_OFF
@ DEVICE PIC16F628A, PWRT_ON
@ DEVICE PIC16F628A, BOD_ON
@ DEVICE PIC16F628A, PROTECT_OFF
@ DEVICE PIC16F628A, CPD_OFF
@ DEVICE PIC16F628A, MCLR_OFF
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT
@ DEVICE PIC16F628A, LVP_OFF
estoy usando microcode studio, creo q es una parte de picbasic pro, ya que no lo encontre para descargar, como se debe de indicar la configuracion en este programa?

Peyutron dijo...

Prueba a desactivar el MPASM. Si utilizas el ic-prog, borra esas lineas y configuralo directamente en el ic-prog. Si no funciona necesito más datos sobre el compilador que estas usando. Un Saludo

Matias dijo...

me sale error en la direccion h0000! al programarlo con el ic-prog 1.06C y compilarlo con el microcode studio plus...me parece q es un error de que el pic solo puede almacenar 2kb y el archivo hexadecimal pesa 7kb...me dirias con q lo programaste y compilaste talvez es algun error mio.Felicitaciones por el proyecto es muy bueno y en proteus funciona perfecto exepto por la linea HIGH LC de la etiqueta inicio que creo q deberia ser LOW LC para q al pulsar cualquier tecla esta este activada.Saludos

Matias dijo...

Je como dije era un problema de memoria porque lo habia modificado ahora funciona de 10 ya lo tengo en placa muchas gracias por la idea

Matias dijo...

ahora tengo otro problema cuando lo vengo a montar...el LCD me muestra solo cuadros negros en la primera linea, esta todo bien conectado lo unico q hice para facilitarme la plaqueta fue cambiar los bus de datos, el enable y el rs...RS=RA3 ,EN=RA2 y Bus de datos = RB0->RB3...ya probe con conectar las patitas 15 y 16 pero solo modifique el backlight vee lo tengo a masa no se si conectarlo al positivo...que puede ser que tenga mal?

Peyutron dijo...

Buenas, siento tardar en reponder, pero he empezado a trabajar y me estoy haciendo al horario!! Has cambiado las lineas de RS y EN donde pone "DEFINE LCD_DREG PORTA" por "DEFINE LCD_DREG PORTB" y "DEFINE LCD_DBIT 0" Aunque si lo pones en el puerto B creo que seria mejor ponerlo en los 4 ultimos, es decir del Portb.7 al Portb.3. Si tienes dudas sobre el patillaje del LCD lo mejor seria que miraras el DATA!!. Si no recuerdo mal en el mio el blacklight es el ultimo y solo es el positivo del blacklight y el siguiente ya es el D7 y la masa es comun con a masa del LCD. Si me mandas el programa y tengo tiempo puedo hecharle un vistazo.
Lo de la direccion h0000 normalmente es porque no se ha grabado el PIC normalmente porque el programador esta roto o porque lo que esta roto es el pic. tengo por ahi un programa para verificar el programador JDM, lo busco y lo publico ;)
Un Saludo!!

Matias dijo...

Gracias por la respuesta...pude solucionar todos los problemas lo q le pasaba al lcd es que tenia q pasar las salidas del puerto A de analogicas a digitales con el comando cmcon = 7 y ahora funciona perfecto aunque estoy viendo de migrar a otro pic mas potente como el 16f877 para aprovechar al maximo la pantalla y tener mediciones...muchas gracias por la idea..vos ya lo conectaste a tu vehiculo como hiciste para decirle que no t corte el rele mientras que esta el motor ensendido?? y que se apague todo el sistema cuando no esta la llave??

Peyutron dijo...

La verdad no lo tengo aun enchufado al coche... lo tengo en la guantera del reposabrazos, y he pasado los cables y todo, pero me faltaba el rele y siempre se me olvida comprarlo y creo que son baratos, pero no me acuerdo.. asi que no te puedo decir como lo tengo. Pero si lo que tengo pensado,
mi idea es poner el rele puenteando alguno de los cables (tampoco lo tengo visto) que correspondan solo al pulsador de la llave, es decir, cuando arrancas y la llave ya se queda en su posicion de encendido. Pero no se que cables serian exactamente. Además quiero ponerle tambien un pequeño pulsador puenteando al rele escondido por el salpicadero, bajo el... para que si pasara algo, pulsando el boton y dandole, deberia arrancar sin problemas.
Tengo por aquí un 16f876, pero no se que hacer con el, tambien estoy indeciso por pillarme una placa andruino... pero el señor crisis me dice que me espere. Asi que las ideas son bienvenidas!!!

Anónimo dijo...

buen aporte hermano PBp es lo mejor

wolf129b dijo...

que buen aporte pero no se por que en mi simulacion se pasan a mostrar la clave y no se espera a que yo presione algo en el teclado como le hago

Anónimo dijo...

Funciona muy bien ya lo monte el circuito en un proto, amigo gracias por tu aporte ,, tengo una inquietud como le hago para que mi sistema funcione solo un cierto tipo, ósea llega a la casa presiono un pulsador y prendo el sistema por unos 30seg hasta digitar la clave y ahí permanesca apagado …??

Anónimo dijo...

Está muy bueno tu aporte te agradezco, pero un favor, puedes subir los archivos a otra pagina porque megaupload ya no existe.

Anónimo dijo...

podrían poner el código y la simulación ya corregidos porfavor

Peyutron dijo...

Ya he repuesto los archivos del programa y la simulación. Siento haber tardado tanto!!

Anónimo dijo...

Buen trabajo amigo pero al realizar todas las acciones y acceder al codigo hex al simulador (proteus)pide la clave, segun el codigo fuente deberia ser "1111" o estos equivocado; cual es la clave para ser mas exactos muchas gracias saludos desde Cusco Peru

Anónimo dijo...

YO LO ENCONTRE ES 2580 ALLI LO TIENES EL ARCHIVO HEX SE GUARDO CON ESA CLAVE EN EL MIO FUNCIONO ASI

Peyutron dijo...

No sabia que se quedaba grabada si la cambiabas, pensaba que se mantendria en "1111". Gracias por la colaboración Anónimo.

Anónimo dijo...

oye amigo el archivo .asm no compila marca herrores y muchos

Anónimo dijo...

no sabes si esta bien tu archivo

Peyutron dijo...

Acabo de descargar y probar los archivos y funciona perfectamente, revisa si pusiste bien el pic a la hora de compilar. Un saludo

Anónimo dijo...

lo descargue para ver que tal iba la simulacion, pero marca varios errores sobre un archivo .asm asi que mejor me base, en tu programa para hacer el mio, buena logica! gracias!
me funciono bastante bien
ademas al final solucione lo errores que tenia son malos registros por parte de proteus, se puede copiar el programa y hacerlo nuevamente y corre bien!

Anónimo dijo...

Hola, Antes que nada muy buen proyecto, llevo tiempo buscando la informacion necesaria para hacer esto y veo que tu proyecto es muy bueno, soy muy novato en este tema todavia pero voy a probar que tal sale esto, los materiales que necesito donde los veo?? en el proteus?? saludos

Unknown dijo...

hay alguna manera de contactarme por chat con vos? necesito una ayuda...

Anónimo dijo...

no me corre en proteus y tampoco en microcode studio

Anónimo dijo...

como puedo modificar la programacion con que programa>???

Anónimo dijo...

En la simulacion (osea en el video) cuanto le pusiste de voltaje al pic y a la pantalla LCD ???

Anónimo dijo...

hola amigo gracias por el aporte..como no tenia el 16f628a use el 16f873a cambie algunas cosas y me salio muy bien,, te agradesco si quieren todo listo para probar hablenme a mi correo sfvsredlion@hotmail.es

Anónimo dijo...

no le falta ALIMENTACION al microcontrolador?

Anónimo dijo...

no me funciona la clave 2580 ni 1111 ni 1234 alguien me puede ayudar

Peyutron dijo...

Proteus da por hecho que el microcontrolador se alimenta a 5V y no hace falta alimentación. Pero en el circuito que montes si la necesitara. Es cosa de Proteus.

Peyutron dijo...

¿El problema lo tienes en la simulación o en el circuito que has montado?

Unknown dijo...

hola men muy buen trabajo me gusto pero, unfavor me puedes pasar la dirección del programa que utilizaste para generar el pbp, quiero descargarlo y generarlo ahí, muchas gracias

Unknown dijo...

hola amigo crees q puedas ayudarme a compilarlo, no se con q programa lo hicites amigo, justamente quiero q me ayudes en eso, mi correo loco_radical_147@hotmail.com

Peyutron dijo...

Buenas Luis, pues para compilarlo utilice Pic Basic Pro no recuerdo la versión,la 2.4 creo. pero además tambien utilice Microcode Studio. Ambos podras encontrarlos en paginas como taringa si lo quieres para uso personal. Con esto podras crear archivos PBP y general el .HEX.
Microcode no es realmente necesario, pero simplifica mucho. Espero haberte ayudado!!!

Rodrigo Cruz dijo...

Buen aporte!!
Te dire RA4 es un pin de colector abierto, es decir, necesita energia externa. Conectale desde Vcc con una resistencia 4.7K al pin.

Unknown dijo...

esta cerradura una vez que ingresas 3 veces mal el codigo no suena una alarma?

Peyutron dijo...

No, esa función no la tiene, es una cerradura básica.

Unknown dijo...

Peyutron Nocturno muy buenas.. te podrias poner en contacto conmigo alvaro-cortes@hotmail.es me serviria de mucho. Gracias..

Peyutron dijo...

Buenas Alvaro, lamento decirte que no suelo contestar por privado, si tienes alguna duda puedes exponerla por aquí, así si la resolvemos puede servir de ayuda para otros. Un saludo y gracias!!!

Unknown dijo...

Hola amigo si no es molestia me puedes ayudar con el hexadecimal o el código y la simulación desde ya gracias y un excelente aporte guillermo_jonatha@hotmail.com

Unknown dijo...

@DEVICE PIC16F628A, WDT_OFF
@ DEVICE PIC16F628A, PWRT_ON
@ DEVICE PIC16F628A, BOD_ON
@ DEVICE PIC16F628A, PROTECT_OFF
@ DEVICE PIC16F628A, CPD_OFF
@ DEVICE PIC16F628A, MCLR_OFF
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT
@ DEVICE PIC16F628A, LVP_OFF

Hola amigo tengo que hacer lo mismo pero con 3 digitos para q se active yo utilizo el microocode pero le paso y me dice q hay errores por lo del principio ayudame porfavor es para mi deber :(

Unknown dijo...

@ DEVICE PIC16F628A, WDT_OFF
@ DEVICE PIC16F628A, PWRT_ON
@ DEVICE PIC16F628A, BOD_ON
@ DEVICE PIC16F628A, PROTECT_OFF
@ DEVICE PIC16F628A, CPD_OFF
@ DEVICE PIC16F628A, MCLR_OFF
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT
@ DEVICE PIC16F628A, LVP_OFF


que significa porque le borro y me comila pero no me sirve le pong y me da error al compilar

Peyutron dijo...

Esto son los llamados Fuses, con esto haces que cuando vayas a programar el pic ya estén listos. Por ejemplo:

@ DEVICE PIC16F628A, WDT_OFF ; este fuse le indica al microcontrolador que el Wachdog (perro guardián) esta apagado.

@ DEVICE PIC16F628A, PWRT_ON, Esto hace que PWRT este encendido, con esto, nuestro microcontrolador permanece apagado durante un tiempo hasta que se estabilice la tensión de alimentación
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT , Este le dice al microcontrolador que utilice el reloj interno.
si necesitas más información sobre los fuses, busca "configurar Fuses 16F628".
Realmente no se cual sera el problema que te da, pero revisa la configuración de microcode, y asegúrate que estas programando el 16f628a. Un saludo

Unknown dijo...

Ya pude resolver amigo pero ahora hay otro problema ... le arme en el protoboard y solo se me queda la pantalla en blanco osea me aparece las barras en el lcd y nada mas como resuelvo eso amigo??

Peyutron dijo...

Revisa bien el cableado y comprueba que esta todo correcto, y si esta todo bien prueba poniendo "CMCON=7" sin las comillas después de los "DEFINE", esto apagara los comparadores analógicos, pruébalo a ver que tal.
Espero haberte ayudado, si no dímelo y seguiremos buscando soluciones.
Un saludo

Unknown dijo...

hola amigo ya salio pero la clave se pone sola como arreglo eso

Unknown dijo...

READ 0,EPROM1
IF eprom1 = n1 then miro_dos

Error:
LCDOUT $FE,1, $FE,2, "Clave Incorrecta"
pause 500
goto bienvenida

miro_dos:
READ 1, eprom1
IF eprom1 = n2 then miro_tres
goto error

miro_tres:
READ 2, eprom1
IF eprom1 = n3 then miro_cuatro
goto error

miro_cuatro:
READ 3, eprom1
IF eprom1 = n4 then goto menu
goto error
eso no entiendo

Peyutron dijo...

Buenas Paul, para tu primera pregunta te diré que tienes mal las lineas del teclado, posiblemente sea que en vez de a +5v este conectada la parte de las resistencias a GND. Lo que hace es que estén todas las teclas activadas.
La parte de miro_uno, miro_dos... compara la clave que tu has introducido con la clave que hay en la memoria eprom.
Cuando estas son las mismas, te deja seguir con el programa, si no, te da error y una vez que el cuarto digito es igual, pasa al menu donde te deja abrir o cambiar clave

Unknown dijo...

hola me llamo cesar y realize el circuito del teclado pero lo que pasa es que almomento de programar el pic con el ic prog me sale el error 0000h ¡ y aun asi igual me funciona pero la contraseña se coloca sola eso no entiendo y no se que aser alguien que me pueda ayudar en esta falla y con el ic prog en modo osc cual tengo que poner para programar el pic de antemano muchas gracias

Unknown dijo...

no me arranca se queda diciendo infotronicblog que hago?????? saludos

JustoV dijo...

Hola, por favo explica la siguiente subrutina:
eprom1="0"
pause 100 ; inicio del programa
read 0, eprom1 ; Graba por primera vez la clave inicial 2 2 2 2
if eprom1=255 then grabar_clave
goto Bienvenida

Por que se supone que inicialmente read 0 vale 255? Si tu estás indicando que eprom1="0". Saludos.

Unknown dijo...

Hola quetal le quiero hacer una pregunta es sobre las primeras lineas de de código
@ DEVICE PIC16F628A, WDT_OFF
@ DEVICE PIC16F628A, PWRT_ON
@ DEVICE PIC16F628A, BOD_ON
@ DEVICE PIC16F628A, PROTECT_OFF
@ DEVICE PIC16F628A, CPD_OFF
@ DEVICE PIC16F628A, MCLR_OFF
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT
@ DEVICE PIC16F628A, LVP_OFF
tengo el problema que al momento de mandar a coplilar en MicroCode Studio-PICBASIC PRO , no me reconoce me salen como lineas de error, este es el error que me sale:
Wrning[207] c:\users\personal\destop\lcd\pbp\inftr ~ 1.asm77:Found label after column 1. (DIVICE)
Error[122] c: \users \personal\destop\lcd\pbp\inftr ~ 1.asm77:illegal opcode(16F628A). (DIVICE)
Wrning[207] c:\users\personal\destop\lcd\pbp\inftr ~ 1.asm83:Found label after column 1. (DIVICE)
Error[122] c: \users \personal\destop\lcd\pbp\inftr ~ 1.asm83:illegal opcode(16F628A). (DIVICE)
Wrning[207] c:\users\personal\destop\lcd\pbp\inftr ~ 1.asm89:Found label after column 1. (DIVICE)
Error[122] c: \users \personal\destop\lcd\pbp\inftr ~ 1.asm89:illegal opcode(16F628A). (DIVICE)
Wrning[207] c:\users\personal\destop\lcd\pbp\inftr ~ 1.asm95:Found label after column 1. (DIVICE)
Error[122] c: \users \personal\destop\lcd\pbp\inftr ~ 1.asm95:illegal opcode(16F628A). (DIVICE)
Wrning[207] c:\users\personal\destop\lcd\pbp\inftr ~ 1.asm101:Found label after column 1. (DIVICE)
Error[122] c: \users \personal\destop\lcd\pbp\inftr ~ 1.asm101:illegal opcode(16F628A). (DIVICE)
Wrning[207] c:\users\personal\destop\lcd\pbp\inftr ~ 1.asm107:Found label after column 1. (DIVICE)
Error[122] c: \users \personal\destop\lcd\pbp\inftr ~ 1.asm107:illegal opcode(16F628A). (DIVICE)
Wrning[207] c:\users\personal\destop\lcd\pbp\inftr ~ 1.asm113:Found label after column 1. (DIVICE)
Error[122] c: \users \personal\destop\lcd\pbp\inftr ~ 1.asm113:illegal opcode(16F628A). (DIVICE)
Wrning[207] c:\users\personal\destop\lcd\pbp\inftr ~ 1.asm119:Found label after column 1. (DIVICE)
Error[122] c: \users \personal\destop\lcd\pbp\inftr ~ 1.asm119:illegal opcode(16F628A). (DIVICE)
Pero en el momento que borro las primeras lineas el copilador me reconoce el programa, pero en el momento que quiero que simular en el proteus me sale solo la pantalla verde y nada mas, si me prodrias de cir si tengo que instalar algún librería para que me reconosca esas líneas ocomo lo puedo resolver te agradecería un monton (un por si acaso este es mi correo patricioquingac@hotmail.com para ver si me pudes ayudar porfavor ya que es para un deber)

Unknown dijo...

Peyutron....se que ya es muy viejo el post, pero es que he montado todo y por cierto le he dedicado mucho tiempo corrigiendo los errores de compilacion que me daba, ahora ya pude hacerlo y me funciona todo bien en el proteus, pero en la proto ninguna clave me funciona...Gracias.

Unknown dijo...

Peyutron....se que ya es muy viejo el post, pero es que he montado todo y por cierto le he dedicado mucho tiempo corrigiendo los errores de compilacion que me daba, ahora ya pude hacerlo y me funciona todo bien en el proteus, pero en la proto ninguna clave me funciona...Gracias.

Peyutron dijo...

Buenas 2A, ¿con que programa estas grabando el PIC? creo recordar que en el ICprog hay apartado llamado Address EEPROM Data, ahí una vez que se ha grabado la clave si le das a leer el PIC aparece la clave, en WinPIC800 ahora mismo no recuerdo cual era el apartado donde estaba, pero creo recordar que también lo tenía. Seria cuestión que volvieras a poner el PIC en el programador y leerlo a ver si se ha grabado la clave. Que PIC utilizas? Saludos!!!

Unknown dijo...

Buen dia, muchisimas gracias por tu oportuna respuesta, estoy utilizando el pic16f628a y Winpic800. Puedo leer el pic pero no encuentro el apartado que dices. Muchisimas gracias por tu colaboracion

Peyutron dijo...

No hay problema para eso estamos ;) pues con el winpic800 ni idea ahora mismo, viendo fotos es como la segunda pestaña donde pone EEPROM, el problema es que me pase a Linux y no puedo instalar el winpic para decirte donde esta exactamente, ¿puedes hacer una captura de pantalla y enviarmela a peyutron@gmail.com? a ver si le sacamos punta ;) saludos!!!

Unknown dijo...

O.k gracias de nuevo, te envie un correo con los pantallazos de las lecturas del prog que tengo ya quemado en el pic

Unknown dijo...

Buenas
La Patilla 8 (RB2) a que nivel tiene que estar al iniciarse el Pic porque en proteus me cuesta mucho pulsar las teclas tengo que estan pulsando mucho tiempo para que me indique desde la LCD Escribe la Clave y pulso 2580 pero para poner el 2 me aburro de esperar.
En espera de una respuesta y Solucion y Muchas Gracias.
Un Saldudo

Tecdesoft Cali dijo...

has probado hacerlo en Arduino? me parece a mi que es algo mas sencillo

Peyutron dijo...

Buenas TheChapifresHD, siento no poder ayudarte con tu consulta, hace mucho tiempo de esta entrada del blog, prueba con los comentarios anteriores a ver si es alguien hubiera tenido un problema similar.
Como dice el amigo alexander rios, y siempre dependiendo de para el uso que le vayas a dar, te recomiendo Arduino, es mucho más sencillo en todos los aspectos.
Lamento de verdad no poder solucionar tu duda, saludos TheChapifresHD

Unknown dijo...

no me funciona ninguna clave en el proteus quien me puede ayudar no quiero armarlo en proto hasta no tener la clave por que no tendria sentido

Unknown dijo...

hola

Unknown dijo...

hola soy plinio fernandes no encuentro la clave de acceso en proteus no me funciona nunguna y no quiero armarlo en protoborar hasta no tener el acceso no puedo ver el video no me aparese alguien me puede ayudar

Joel dijo...

hola me ayudas con esto cuando compilo me sale error, pero si le quito compila bien pero la simulacion ya no funciona porfa ayudame

@ DEVICE PIC16F628A, WDT_OFF
@ DEVICE PIC16F628A, PWRT_ON
@ DEVICE PIC16F628A, BOD_ON
@ DEVICE PIC16F628A, PROTECT_OFF
@ DEVICE PIC16F628A, CPD_OFF
@ DEVICE PIC16F628A, MCLR_OFF
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT
@ DEVICE PIC16F628A, LVP_OFF