Llave electrónica con PIC

saludos amigo tengo un problema resulta que copie su programa y funciono de maravilla la verdad te la comiste gracias inclusive lo monte y trabaja bien le cambio la clave y lo hace todo bien pero cuando se queda el pic sin tension hay q meterle la clave (123) de nuevo y volver a configurarlo como hago para q cuando cambie la clave y se quede sin tension el circuito no halla necesidad de volver a cambiar la clave sino q conserve la q yo le meta gracias seria bueno q resolvamos ese asuntico no le parece
 
hola me podrían decir como crear un nuevo tema ya que estoy asiendo un seguidor de luz con un pic y tengo algunas dudas u quisiera saber si me pueden ayudar..
 
Bueno espero que mi aporte ayude:
Compilador: MicroCodeStudio
Software de diseño: Proteus
Web: http://ib-electronic.com/index-6-llave cerradura electronica+Eeprom.html

Cerradura electrónica Programando en Basic
Lo podemos usar para contar las cajas que ingresan por una faja transportadora o algún otro trabajo donde necesitemos llevar un registro, usaremos el PIC16f628A.

Esquema:

Código de programación:
PHP:
'****************************************************************
'* Name : UNTITLED.BAS 
'* Author : Luis Pérez Medina 
'* Notice : Copyright (c) 2010 IB-electronic
'* : All Rights Reserved 
'* Date : 03/01/2010 
'* Version : 1.0 
'* Notes : 
'* : *
'****************************************************************
@ device pic16f628a, xt_osc, wdt_off, lvp_off, mclr_off, protect_on, cpd_on

define osc 20
cmcon=7
TRISA=0
Numero var byte
R var byte
PARLAN VAR PORTA.0
LED VAR PORTA.1
PUERTA VAR PORTA.2
PC var porta.3
PA var portb.7
F1 VAR PORTB.0
F2 VAR PORTB.1
F3 VAR PORTB.2
F4 VAR PORTB.3
C1 VAR PORTB.4
C2 VAR PORTB.5
C3 VAR PORTB.6
C4 VAR PORTB.7
Car1 var byte
Car2 var byte
Car3 var byte
Car4 var byte

INICIO:
HIGH LED : HIGH parlan
PAUSE 500
LOW LED : LOW parlan
'*********************************************
'Claves por defecto=2142:
'*********************************************
eeprom 0,[2,1,4,2]
RESET:
read 0,car1
read 1,car2
read 2,car3
read 3,car4
goto TEcla1
[INDENT]TEcla1:
gosub teclado:gosub pid
gosub espacio
if numero=car1 then TEcla2
goto false
TEcla2:
gosub teclado : gosub pid
gosub espacio
if numero=car2 then TEcla3
goto false1
Tecla3:
Gosub Teclado : gosub pid
gosub espacio
if numero=car3 then Tecla4
goto false2
TEcla4:
gosub teclado : gosub pid
gosub espacio
if numero=car4 then open
goto false3
[/INDENT]PID:
high parlan : high led
pause 300
low parlan :low led
return
Espacio:
pause 300
return
[INDENT]False:
goto tecla2
False1:
goto tecla3
False2:
goto tecla4
False3:
for r= 1 to 20
high led : high parlan : high pc
pause 100
low led : low parlan : low pc
pause 100
next
high pc
pause 2000
low pc
goto tecla1
OPEN:
for r=0 to 2
high led:high parlan
pause 200
low led :low parlan
pause 200
next
high puerta :high pa : pause 2000
low puerta : low pa
high f1 : high f2 : high f3 : low f4
if c1=0 then graba1
goto tecla1

[/INDENT]Graba1:
high led : high parlan : pause 1500 : low led : low parlan
gosub teclado:gosub PID
write 0,numero
pause 300
Graba2:
gosub teclado:gosub PID
write 1,numero
pause 300
Graba3:
gosub teclado:gosub pid
Write 2,numero
pause 300
Graba4:
gosub teclado:gosub pid
write 3,numero
pause 300
for r = 0 to 5
high parlan : high led
pause 200
low parlan : low led
pause 200
next
goto RESET
[INDENT]Teclado:
low f1
if c1=0 then numero=7:return
if c2=0 then numero=8:return
if c3=0 then numero=9:return
high f1
low f2
if c1=0 then numero=4:return
if c2=0 then numero=5:return
if c3=0 then numero=6:return
high f2
low f3
if c1=0 then numero=1:return
if c2=0 then numero=2:return
if c3=0 then numero=3:return
high f3
low f4
if c1=0 then numero=10:return
if c2=0 then numero=0:return
if c3=0 then numero=11:return
high f4
[/INDENT]pause 10
GOTO teclado
END



Para poder ver la simulación: http://ib-electronic.com/index-6-llave cerradura electronica+Eeprom.html

Descargar esquema, pcb y programación: http://ib-electronic.com/Descargas/Llave cerradura eletronica/Llave cerradura eletronica.rar
 
Última edición por un moderador:
hoolaa.. buenas soy bastante nueva en el tema de microcontroladores.. estoy viendo por primera vez esta materia y el prof. nos supo un laboratorio que apenas explico.. nos mando a hacer un circuito con el pic16f877 donde podamos mostras en una pantalla lcd 16x4 3 palabras y 3 figuras diferentes cada vez que se activemos unos pulsadores... hemos estado invetsigando terriblemente por la poca informacion que nos do el prof. y estamos bastante perdidos si alguien nos puede ayudaaar urgenteee el laboratorii es el proximo viernes 10... estamos trabajando con mplab y proteus para la simulasion.. y un cristal de 4 MHz por que asi nos asignarion :cry:
 
Hola como tas soy nuevo y tu publicación me parece excelente, pero quisiera saber si me puedes ayudar lo que pasa es que soy nueva en el uso del mikroc y todas sus bondades pero yo quiero hacer un programa que que tenga que ingresar una clave para accder a un menú, que me permitirá manejar un motor DC a través de la técnica PWM, pero todo este es con el PIC16f887...
me podrías ayudar por fa!!! es algo urgente gracias!!!:unsure:
 
ingreso la clave de adm 123 y nada
hola amigo me encnto tu proyecto y kiero realizarlo solo k a la hora de compilar en el ccs me sale un eerror con la libtreria para hacer que se ingrese la clave... y si me pudieses ayudar c te lo agradeceria o si mke lo mandaras a a mi correo te lo agradeceria... saludos mi correop




 
Última edición por un moderador:
@jedilink hola, bueno aca tengo lo que pides pero, el programa esta en basic, espero que ayude

Simulacion:

llave%20electronica+lcd+simulacion.gif



Esquema:
llave%20electronica+lcd-2.png



PHP:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : Luis Perez                                 *
'*  Notice  : Copyright (c) 2010 IB-electronic                  *
'*          : All Rights Reserved                               *
'*  Date    : 06/10/2010                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
                                      '****************************************************************
                                      @ device pic16f877a, wdt_off, lvp_off,xt_osc,xt_osc
                                      define osc 4
                                      DEFINE LCD_DREG PORTD
                                      DEFINE LCD_DBIT   4 
                                      DEFINE LCD_RSREG   PORTD 
                                      DEFINE LCD_RSBIT  0 
                                      DEFINE LCD_RWREG  PORTD 
                                      DEFINE LCD_RWBIT  1
                                      DEFINE LCD_EREG  PORTD 
                                      DEFINE LCD_EBIT   2
                                       cmcon=7
                                        TRISA=0:porta=0
                                        trisb=%11111000:portb=0
                                        trisc=%11111100
                                        trisd=0:portb=0
                                        trise=0:porte=0
                                       Numero var byte
                                        nu1 var byte
                                        nu2 var byte
                                        nu3 var byte
                                        nu4 var byte
                                        R var byte
                                        x var byte
                                        x=0
                                       PARLAN VAR PORTC.0
                                        LED VAR PORTC.1
                                        PUERTA VAR PORTC.2
                                        PC var portc.3
                                        PA var portc.7
                                       F1 VAR PORTB.0
                                        F2 VAR PORTB.1
                                        F3 VAR PORTB.2
                                        F4 VAR PORTB.3
                                       C1 VAR PORTB.4
                                        C2 VAR PORTB.5
                                        C3 VAR PORTB.6
                                        C4 VAR PORTB.7
                                       Car1 var byte
                                        Car2 var byte
                                        Car3 var byte
                                        Car4 var byte
                                        dato var byte
                                       Pre: 
                                        lcdout $FE,1:LCDout $FE,$80,"Llave electronic"
                                        pause 500
                                        lcdout $Fe,$C0,"ib-electronic"
                                       INICIO:
                                        HIGH LED : SOUND parlan,[100,50]:high parlan
                                        LOW LED : LOW parlan
                                       '*********************************************
                                        'Claves por defecto=1234:
                                        '*********************************************
                                        eeprom 0,[1,2,3,4]
                                        RESET:
                                        read 0,car1
                                        read 1,car2
                                        read 2,car3
                                        read 3,car4
                                      
                                       goto TEcla1
                                        
                                        TEcla1:
                                        lcdout $fe,1
                                        lcdout $FE,$80,"Clave:"
  
                                        gosub teclado: lcdout $fe,$c0,"X" :gosub pid
                                        gosub espacio
                                        nu1=numero
                                        if numero=car1 then TEcla2
                                        goto false
                                       TEcla2:
                                        gosub teclado : lcdout $fe,$c0,"XX" : gosub pid
                                        gosub espacio
                                        nu2=numero
                                        if numero=car2 then TEcla3
                                        goto false1
                                       Tecla3:
                                        Gosub Teclado : lcdout $fe,$c0,"XXX" : gosub pid
                                        gosub espacio
                                        nu3=numero
                                        if numero=car3 then Tecla4
                                        goto false2
                                       TEcla4:
                                        gosub teclado : lcdout $fe,$c0,"XXXX" : gosub pid
                                        gosub espacio
                                        nu4=numero
                                        if numero=car4 then compara
                                        goto false3
                                       Compara:
                                        if (nu1=car1) and (nu2=car2) and (nu3=car3) and (nu4=car4) then open
                                        goto false3
                                       PID:
                                        SOUND parlan,[100,10] : high led
                                        pause 300
                                        low parlan :low led
                                        return
                                       Espacio:
                                        pause 300
                                        return
                                       False:
                                        goto tecla2
                                       False1:
                                        goto tecla3
                                       False2:
                                        goto tecla4
                                       False3:
                                        lcdout $fe,1
                                        lcdout $FE,$80,"Clave:"
                                        lcdout $FE,$C0,"incorrecta"
  
                                        for r= 1 to 20
                                        high led : SOUND parlan,[100,10] : high pc
                                        pause 50
                                        low led : SOUND parlan,[50,10] : low pc
                                        pause 50
                                        next
                                       high pc
                                        pause 2000
                                        low pc
                                        goto tecla1
                                       OPen:
                                        lcdout $fe,1
                                        lcdout $FE,$80,"Clave:"
                                        lcdout $FE,$C0,"Correcta"
  
                                        for r=0 to 2
                                        high led:SOUND parlan,[100,10];high parlan
                                        pause 100
                                        low led :SOUND parlan,[50,10];low parlan
                                        pause 100
                                        next
  
                                        Menu:
                                        lcdout $fe,1
                                        lcdout $fe,$80,"Bienvenido"
                                        lcdout $fe,$C0,"Luis Perez"
                                        pause 1000
                                        lcdout $fe,1
                                        lcdout $fe,$80,"Menu"
                                        lcdout $fe,$c0,"1-Open 2-Clave"
  
                                        Op:
                                        gosub teclado
                                        if numero=1 then door
                                        if numero=2 then graba1
                                        goto op
  
                                        Door:
                                        lcdout $fe,1
                                        lcdout $fe,$80,"Puerta"
                                        lcdout $fe,$C5,"Abierta"
  
                                        high puerta :high pa
                                        pause 5000
                                        low pa :low puerta
                                        goto tecla1
                                      
                                       Graba1:
                                        lcdout $fe,1 
                                        lcdout $fe,$80,"Cambiar Clave" 
                                        lcdout $fe,$c0,"----" 
  
                                        high led : SOUND parlan,[100,300] : pause 1000 : low led : low parlan
                                        gosub teclado:gosub PID 
  
                                        lcdout $fe,$c0,"X--" 
  
                                        write 0,numero
                                        pause 300
                                       Graba2:
                                        gosub teclado:gosub PID
  
                                        lcdout $fe,$c0,"XX--" 
  
                                        write 1,numero
                                        pause 300
                                       Graba3:
                                        gosub teclado:gosub pid
  
                                        lcdout $fe,$c0,"XXX-" 
  
                                        Write 2,numero
                                        pause 300
                                       Graba4:
                                        gosub teclado:gosub pid
  
                                        lcdout $fe,$c0,"XXXX"
  
                                        write 3,numero
                                        pause 300
  
                                        lcdout $fe,1 
                                        lcdout $fe,$80,"Clave guardada" 
                                        lcdout $fe,$c0,"xxxx" 
                                       for r = 0 to 5
                                        SOUND parlan,[100,10] : high led
                                        pause 100
                                        SOUND parlan,[50,10] : low led
                                        pause 100
                                        next
                                        goto RESET
                                       Teclado:
                                        low f1
                                        if c1=0 then numero=7:return
                                        if c2=0 then numero=8:return
                                        if c3=0 then numero=9:return
                                        high f1
  
                                        low f2
                                        if c1=0 then numero=4:return
                                        if c2=0 then numero=5:return
                                        if c3=0 then numero=6:return
                                        high f2
  
                                        low f3
                                        if c1=0 then numero=1:return
                                        if c2=0 then numero=2:return
                                        if c3=0 then numero=3:return
                                        high f3
  
                                        low f4
                                        if c1=0 then numero=10:return
                                        if c2=0 then numero=0:return
                                        if c3=0 then numero=11:return
                                        high f4
  
                                        pause 10
                                        GOTO teclado
                                     end


Descarga el esquema y programa en http://ib-electronic.com/index-6-llave cerradura electronica con lcd.html
 
hola cm estan a todos.. me preguntaba q programa en lenguaje ccs utilizastes yo tengo es mplab

El PIC C compiler mas conocido como ccs.

saludos amigo tengo un problema resulta que copie su programa y funciono de maravilla la verdad te la comiste gracias inclusive lo monte y trabaja bien le cambio la clave y lo hace todo bien pero cuando se queda el pic sin tension hay q meterle la clave (123) de nuevo y volver a configurarlo como hago para q cuando cambie la clave y se quede sin tension el circuito no halla necesidad de volver a cambiar la clave sino q conserve la q yo le meta gracias seria bueno q resolvamos ese asuntico no le parece

Bueno amigo loq ue tienes que hacer es hacer un cambio en el codigo que la clave se guarde en la memori eprom del PIC y al leerlo darle la dirección de dodne lo guardaste y ahi si se guarda la última contraseña que cambiaste, bueno el programa que hice no utilizo el eprom, suerte.
 
Última edición:
hola mi nombre es freedy pero nesecito ayuda urgente nesecito un programa en assembler ..... ya tengo uno pero no me quiere funcionar asi por favor un codigo me caeria de pelos para trabajar una llave magnetica con lcd, teclado 4x4, pic16f877a y que se pueda modificar la clave,,,, les agradeceria;)

;)
 
Hola, me gusto tu proyecto y quisiera implementarlo pero cuando le pongo la clave de administrador 123 no hace nada ni tampoco me funcionan las teclas c y d. Espero tu respuesta sino alguien me podria responder, me urge demasiado
 
Atrás
Arriba