electrofriends.com  

...bringing innovative minds together       | HOME | ABOUT US | ARTICLES | SOURCE CODES | PROJECTS | EBOOKS |  FEEDBACK |  

Programmable number lock system

APPLICATION:

             The ‘Electronic device number lock’ system is a high security system.The main application kept in mind during the design of this system is to secure expensive electronic devices and machinery. The access to such devices can be restricted to particular users only. The system is highly secured since the code can be changed every time the user locks it.
           
This can also be used an physical lock by using solenoid and thus can be used to lock safes in banks or other institutions.
            Regular electronic number lock available in the market can lock/unlock just one device, but this design can lock/unlock up to nine devices.
                                                                               

   

 The program used for the operation of this system is as follows :

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

           PROCEDURE OF WAIT

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

         org 8500h

wait:  push dph

         push dpl

         push r0

         push r1

         mov dptr,#2042h     ;input data from PORT C

wi:     movx a,@dptr

         mov r2,a

         anl a,#20h     

         jz cont             ;check for interrupt from display unit

         jmp start

cont:  mov a,r2

         anl a,#0fh          ;to check whether any key is pressed

         jz wi

         mov r0,#75

         lcall 6798h

         mov dptr,#2042h

here:  movx a,@dptr        ;wait for the key to be realesed

         jnz here

         mov dptr,#2040h     ;sending a pulse to the display section

         mov a,r2

         movx @dptr,a

         mov a,#00h

         mov dptr,#2041h

         movx @dptr,a

         mov a,#40h

         movx @dptr,a

         mov a,r2

         mov r0,#75

         lcall 6798h

         pop r1

         pop r0

         pop dpl

         pop dph

         ret

    

;***************************************************************;    
      STORING  AND RETRIVING OF PASS WORD         

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

         org 8550h

scan:  mov r0,#04h

         mov dptr,#2042h

one:  movx a,@dptr      ;check for lock or unlock buttons

         anl a,#0c0h

         jz one

         ret

 

lock:  lcall  wait     ;storing of pass word in given location

         mov @r1,a      

         inc r1

         djnz r0,lock

         lcall out

         ret

 

unlock: clr 0ah

         call wait

         mov a,@r1

         xrl a,r2         ;comparing the entered and the stored code

         jz match

         setb 0ah         ;in case of mismatch set error bit

match: inc r1

         djnz r0,unlock

         jnb 0ah,go

         mov a,#20h

         push dptr

         mov dptr,#2040h

         movx @dptr,a

         push r0

         push r1

         mov r0,#ffh

         lcall 6798h

         pop r1

         pop r0

         mov a,#00h

         movx @dptr,a

         pop dptr

         jmp not

go:    lcall out

not:   ret

 

 

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

                     TO ACCEPT THE DEVICE NUMBER

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

         org 9000h

         mov sp,#05fh

main:  clr 01h          ;clearing all the device flags

         clr 02h

         clr 03h

         clr 04h

         clr 05h

         clr 06h

         clr 07h

         clr 08h

         clr 09h

         setb ie.7

         setb ie.2

start: mov a,#89h               ;C as i\p,A and B as o\p

         mov dptr,#2043h

         movx @dptr,a

 

         mov r7,#05h              ;clearing the display section

rss:   mov dptr,#2040h

         mov a,#00h

         movx @dptr,a

         mov a,#00h

         mov dptr,#2041h

         movx @dptr,a

         mov a,#40h

         movx @dptr,a

         djnz r7,rss

         lcall wait

         cjne a,#01h,nxt2

         jmp dev1

nxt2: cjne a,#02h,nxt3

         jmp dev2

nxt3: cjne a,#03h,nxt4

         jmp dev3

nxt4: cjne a,#04h,nxt5

         jmp dev4

nxt5: cjne a,#05h,nxt6

         jmp dev5

nxt6: cjne a,#06h,nxt7

         jmp dev6

nxt7: cjne a,#07h,nxt8

         jmp dev7

nxt8: cjne a,#08h,nxt9

         jmp dev8

nxt9: cjne a,#09h,start    

         jmp dev9

 

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

                   SELECTED DEVICE ACTIVATION

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

         org 9200h

dev1: mov r1,#30h           ;Loading the address of the password

         mov r3,#01h           ;device no. used to give to the decoder

         lcall scan

         cjne a,#80h,unlock1   ;check for the lock\unlock pressed

         jmp lock1

unlock1: jnb 01h,error1        ;generating error if the selected device is already                              

                                            ;activated

         lcall unlock

         jb 0ah,hr1

         clr 01h               ;clear lock\unlock flag

hr1:   jmp start

lock1: jb 01h,error1

         lcall lock

         setb 01h              ;set lock\unlock flag

         jmp start

error1: mov a,#40h            ;activating the error LED

         mov dptr,#2040h

         movx @dptr,a

         push dptr

         push r0

         push r1

         mov r0,#ffh

         lcall 6798h

         pop r1

         pop r0

         pop dptr

         jmp start

 

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

dev2: mov r1,#035h

         mov r3,#02h

         lcall scan

         cjne a,#80h,unlock2

         jmp lock2

unlock2: jnb 02h,error2

         lcall unlock

         jb 0ah,hr2

         clr 02h

hr2:   jmp start

lock2: jb 02h,error2

         lcall lock

         setb 02h

         jmp start

 error2: mov a,#40h

         mov dptr,#2040h

         movx @dptr,a

         push dptr

         push r0

         push r1

         mov r0,#ffh

         lcall 6798h

         pop r1

         pop r0

         pop dptr

         jmp start

 

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

dev3: mov r1,#03ah

         mov r3,#03h

         lcall scan

         cjne a,#80h,unlock3

         jmp lock3

 unlock3:jnb 03h,error3

         lcall unlock

         jb 0ah,hr3

         clr 03h

hr3: jmp start

lock3:jb 03h,error3

         lcall lock

         setb 03h

         jmp start

error3: mov a,#40h

         mov dptr,#2040h

         movx @dptr,a

         push dptr

         push r0

         push r1

         mov r0,#ffh

         lcall 6798h

         pop r1

         pop r0

         pop dptr

         jmp start

 

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

dev4: mov r1,#040h

         mov r3,#04

         lcall scan

         cjne a,#80h,unlock4

         jmp lock4

unlock4:jnb 04h,error4

         lcall unlock

         jb 0ah,hr4

         clr 04h

hr4:   jmp start

lock4:jb 04h,error4

         lcall lock

         setb 04h

         jmp start

error4: mov a,#40h

         mov dptr,#2040h

         movx @dptr,a

         push dptr

         push r0

         push r1

         mov r0,#ffh

         lcall 6798h

         pop r1

         pop r0

         pop dptr

         jmp start

 

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

dev5: mov r1,#045h

         mov r3,#05h

         lcall scan

         cjne a,#80h,unlock5

         jmp lock5

 unlock5:jnb 05h,error5

         lcall unlock

         jb 0ah,hr5

         clr 05h

hr5:   jmp start

lock5:jb 05h,error5

         lcall lock

         setb 05h

         jmp start

error5: mov a,#40h

         mov dptr,#2040h

         movx @dptr,a

         push dptr

         push r0

         push r1

         mov r0,#ffh

         lcall 6798h

         pop r1

         pop r0

         pop dptr

         jmp start

 

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

dev6: mov r1,#04ah

         mov r3,#06h

         lcall scan

         cjne a,#80h,unlock6

         jmp lock6

unlock6:jnb 06h,error6

         lcall unlock

         jb 0ah,hr6

         clr 06h

hr6:   jmp start

lock6:jb 06h,error6

         lcall lock

         setb 06h

         jmp start

error6: mov a,#40h

         mov dptr,#2040h

         movx @dptr,a

         push dptr

         push r0

         push r1

         mov r0,#ffh

         lcall 6798h

         pop r1

         pop r0

         pop dptr

         jmp start

 

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

dev7: mov r1,#050h

         mov r3,#07h

         lcall scan

         cjne a,#80h,unlock7

         jmp lock7

unlock7:jnb 07h,error7

         lcall unlock

         jb 0ah,hr7

         clr 07h

hr7:jmp start

lock7:jb 07h,error7

         lcall lock

         setb 07h

         jmp start

error7: mov a,#40h

         mov dptr,#2040h

         movx @dptr,a

         push dptr

         push r0

         push r1

         mov r0,#ffh

         lcall 6798h

         pop r1

         pop r0

         pop dptr

         jmp start

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

dev8: mov r1,#055h

         mov r3,#08h

         lcall scan

         cjne a,#80h,unlock8

         jmp lock8

unlock8:jnb 08h,error8

         lcall unlock

         jb 0ah,hr8

         clr 08h

hr8:   jmp start

lock8:jb 08h,error8

         lcall lock

         setb 08h

         jmp start

error8: mov a,#40h

         mov dptr,#2040h

         movx @dptr,a

         push dptr

         push r0

         push r1

         mov r0,#ffh

         lcall 6798h

         pop r1

         pop r0

         pop dptr

         jmp start

 

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

dev9: mov r1,#05ah

         mov r3,#09h

         lcall scan

         cjne a,#80h,unlock9

         jmp lock9

unlock9:jnb 09h,error9

         lcall unlock

         jb 0ah,hr9

         clr 09h

hr9: jmp start

lock9:jb 09h,error9

         lcall lock

         setb 09h

         jmp start

error9: mov a,#40h

         mov dptr,#2040h

         movx @dptr,a

         push dptr

         push r0

         push r1

         mov r0,#ffh

         lcall 6798h

         pop r1

         pop r0

         pop dptr

         jmp start

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

;                    OUTPUT SECTION  

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

         org 0a000h

out:   mov a,r3         ;loading the device number

         mov dptr,#2041h

         movx @dptr,a

         ret

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

        This program is assembled using DASM assembler and the hex file is downloaded to the 8051 microcontroller kit.
          For queries on the above please contact rovin@electrofriends.com or sagar@electrofriends.com

 | Previous page |

Other Microcontroller projects and articles

 Digital IC Tester using 8951 Microcontroller

 Automatic Railway Gate Control

 Car parking system using 8051 Microcontroller

 Interfacing an LCD to the 8051 Microcontroller

 8051 microcontroller Instruction Set

 8051 Microcontroller port programming

 Water level indicator cum controller

 Robotic car

 Intelligent Train Engines

 DC Motor Controlling System using PIC

 For more projects click here

 

 

 | HOME | ABOUT US | ARTICLES |  SOURCE CODES | PROJECTS |  SITEMAP |  EBOOKS | FEEDBACK |   



  Copyrights © 2005-2007 electrofriends.com, All rights reserved. webmaster@electrofriends.com