求购保险柜电子密码锁源程序(最好是马达电动开门及LCD显示)!

Joseph.Z   2008-2-25 20:55 楼主
本人紧急求购保险柜电子密码锁源程序(最好是马达电动开门及LCD显示),有的话请联系本人!Jason.ouyang@yahoo.com.cn

回复评论 (7)

;********************************************************************************
;*  描述:                                                                        *
;*         正确输入密码继电器将吸合错误将报警 并要求重新输入 。                  *
;*                                                                               *
;********************************************************************************
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                   *
;********************************************************************************

; 端口定义
RS        EQU        P2.1
RW        EQU        P2.2
EP        EQU        P2.0
;**********************************
;CH451测试程序查表轮显0--F
;**********************************
LOAD        BIT      P1.2
DIN         BIT      P1.0
DCLK        BIT      P1.1
DOUT        BIT      P3.3
;**********************************
DATA_F      DATA     034H
DATA_KEY    DATA     035H
TIMER       DATA     030H
TIMER1      DATA     031H
TIMER2      DATA     032H
TIMER3      DATA     033H
BUFF1       EQU      36H
BUFF2       EQU      48H
BUFF        EQU      50H
;***********************************
            ORG      0000H
            JMP      START
            ORG      0013H            
            LJMP     CH451_INT1
            ORG      0080H

START:       MOV      SP,#60H
            
;***********************************
             mov     p1,#60h          ;禁止其它芯片
             CLR     DIN              ;初始化CH451
             SETB    DCLK
             SETB    DIN
             SETB    LOAD
             SETB    DOUT
             NOP
             MOV     B,#04H         ;设置CH451
             MOV     A,#03H         ;关看门狗开显示键盘
             nop
                   LCALL   WRITE
             NOP
       
START1:      
             CLR     IT1                ;置外部信号为低电平触发   
             CLR     IE1                ;清中断标志
             SETB    PX1           
             SETB    EX1                ;允许键盘中断
             SETB    EA                 ;开总中断   
             MOV      R5,#00H
TT0:             MOV R0,#03H
TT1:         MOV BUFF2,#3CH              ;密码存放存储单元首址
             DEC BUFF2
             LCALL        LCD_INIT          ; 初始化LCD
             MOV        A,#15
             LCALL        DELAY_MS          ;调延时

               LCALL DISPLAY1
             DEC R0
             CJNE R0,#01,TT1
            
             LCALL READ_NUM
             MOV  DPTR,#TAB_LJD
             MOV A ,#0FFH
             LCALL  DELAY_MS              ; 在第二行显示字符*       
             MOV A,#41H                          ;
             LCALL  SET_LCD_POS                  ; 设置第二行第一个字符位置
            
             CJNE A,#99H,$               
             MOV BUFF,#00H                 ;清除标志
             JMP TT0



;------------------------------------------------------------------------------
READ_NUM:    MOV R2,#10                     ;读出密码并存入从36h开始的存储单元
             MOV R0,#BUFF1
             MOV DPTR,#TAB1
LOOP:       CLR A
             MOVC A,@A+DPTR
            
             MOV @R0,A
             INC DPTR
             INC R0
             DJNZ R2,LOOP
             RET
            
TAB:
             DB      03FH           ;0
             DB      006H           ;1
             DB      05BH           ;2
             DB      04FH           ;3
             DB      066H           ;4
             DB      06DH           ;5
             DB      07DH           ;6
             DB      07H            ;7
             DB      07FH           ;8
             DB      06FH           ;9
             DB      77H            ;A
             DB      07CH           ;B
             DB      039H           ;C
             DB      5EH            ;D
             DB      079H           ;E
             DB      071H           ;F

TAB1:        DB      006H           ;1
             DB      05BH           ;2
             DB      04FH           ;3
             DB      066H           ;4
             DB      06DH           ;5
             DB      07DH           ;6   


;****************键盘处理*****************************
CH451_INT1: LCALL   INTER         
             
K1:                                                              
            MOV     R3,DATA_KEY
            CJNE    R3,#40H,K2
            JMP     LED_0
K2:
            MOV     R3,DATA_KEY
            CJNE    R3,#41H,K3
            JMP     LED_1
K3:
            MOV     R3,DATA_KEY
            CJNE    R3,#42H,K4
            JMP     LED_2
K4:
            MOV     R3,DATA_KEY
            CJNE    R3,#43H,K5
            JMP     LED_3
K5:
            MOV     R3,DATA_KEY
            CJNE    R3,#48H,K6
            JMP     LED_4
K6:
            MOV     R3,DATA_KEY
            CJNE    R3,#49H,K7
            JMP     LED_5
K7:
            MOV     R3,DATA_KEY
            CJNE    R3,#4AH,K8
            JMP     LED_6
K8:
            MOV     R3,DATA_KEY
            CJNE    R3,#4BH,K9
            JMP     LED_7
K9:
            MOV     R3,DATA_KEY
            CJNE    R3,#50H,K10
            JMP     LED_8
K10:
            MOV     R3,DATA_KEY
            CJNE    R3,#51H,K11
            JMP     LED_9
K11:
            MOV     R3,DATA_KEY
            CJNE    R3,#52H,K12
            JMP     LED_A
K12:
            MOV     R3,DATA_KEY
            CJNE    R3,#53H,K13
            JMP     LED_B
K13:
            MOV     R3,DATA_KEY
            CJNE    R3,#58H,K14
            JMP     LED_C
K14:
            MOV     R3,DATA_KEY
            CJNE    R3,#59H,K15
            JMP     LED_D
K15:
            MOV     R3,DATA_KEY
            CJNE    R3,#5AH,K16
            JMP     LED_E
K16:
            MOV     R3,DATA_KEY
            CJNE    R3,#5BH,K17
            JMP     LED_F
K17:            
            POP   ACC
            POP   PSW
            CLR   IE1            
            RETI
            NOP
            LJMP     START
LED_A:      
            JMP     DELAY1
LED_B:
            JMP     DELAY1
LED_C:
           
            JMP     DELAY1
LED_D:     MOV R1,#3CH
           MOV R0,#36H
           MOV R4,#06H
C1:        MOV A,@R1
           XRL A,@R0               ;比较键盘输入的密码是否与设定密码相同
           JNZ C3
           INC R0
           INC R1
           DJNZ R4,C1
           LCALL DISPLAY4
           CLR P3.6                 
           RETI
C3:        MOV R3,#6
EORR:      CLR P3.7                    ;密码错误鸣音报警
           MOV A,#0128
           LCALL DELAY_MS
           SETB P3.7
           MOV A,#128
           LCALL DELAY_MS
           DJNZ R3,EORR
           LCALL DISPLAY3
           MOV BUFF,#99H
           MOV A,BUFF
           RETI
LED_E:
            JMP     DELAY1
LED_F:
           JMP     DELAY1
           
LED_0:
            INC DPTR
               MOV     @R1,#03FH
            LCALL DISPLAY2
            RETI
           
LED_1:
            
               MOV     @R1,#06H
            LCALL DISPLAY2
            INC DPTR
            RET         
LED_2:
            MOV     @R1,#05BH
            LCALL DISPLAY2
            INC DPTR
            RETI
            
LED_3:
               MOV     @R1,#04FH
            LCALL DISPLAY2
            INC DPTR
            RETI
LED_4:
            MOV     @R1,#066H
            LCALL DISPLAY2
            INC DPTR
           RETI

LED_5:
               MOV     @R1,#06DH
            LCALL DISPLAY2
            INC DPTR
            RETI
           
LED_6:
              MOV     @R1,#07DH
            LCALL DISPLAY2
            INC DPTR
            RETI
LED_7:
               MOV     @R1,#007H
            LCALL DISPLAY2
            INC DPTR
            RETI
LED_8:
            MOV     @R1,#07FH
            LCALL DISPLAY2
            INC DPTR
           RETI
LED_9:
            MOV     @R1,#06FH
            LCALL DISPLAY2
            INC DPTR
            RETI
DELAY1:
            CLR     IT1               ;置外部信号为低电平触发   
            CLR     IE1               ;清中断标志
            SETB    PX1           
            SETB    EX1               ;允许键盘中断
            SETB    EA   
            LCALL    DELAY_1S
            ;LCALL    DELAY_1S
            ;LCALL    DELAY_1S
            ;LCALL   DELAY_1S
           
            POP      B
            POP      ACC
            POP      PSW
            RETI
点赞  2008-2-26 09:29
太多了,分两次发。
;********************************************************************************
;*  描述:                                                                        *
;*         正确输入密码继电器将吸合错误将报警 并要求重新输入 。                  *
;*                                                                               *
;********************************************************************************
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                   *
;********************************************************************************

; 端口定义
RS        EQU        P2.1
RW        EQU        P2.2
EP        EQU        P2.0
;**********************************
;CH451测试程序查表轮显0--F
;**********************************
LOAD        BIT      P1.2
DIN         BIT      P1.0
DCLK        BIT      P1.1
DOUT        BIT      P3.3
;**********************************
DATA_F      DATA     034H
DATA_KEY    DATA     035H
TIMER       DATA     030H
TIMER1      DATA     031H
TIMER2      DATA     032H
TIMER3      DATA     033H
BUFF1       EQU      36H
BUFF2       EQU      48H
BUFF        EQU      50H
;***********************************
            ORG      0000H
            JMP      START
            ORG      0013H            
            LJMP     CH451_INT1
            ORG      0080H

START:       MOV      SP,#60H
            
;***********************************
             mov     p1,#60h          ;禁止其它芯片
             CLR     DIN              ;初始化CH451
             SETB    DCLK
             SETB    DIN
             SETB    LOAD
             SETB    DOUT
             NOP
             MOV     B,#04H         ;设置CH451
             MOV     A,#03H         ;关看门狗开显示键盘
             nop
                   LCALL   WRITE
             NOP
       
START1:      
             CLR     IT1                ;置外部信号为低电平触发   
             CLR     IE1                ;清中断标志
             SETB    PX1           
             SETB    EX1                ;允许键盘中断
             SETB    EA                 ;开总中断   
             MOV      R5,#00H
TT0:             MOV R0,#03H
TT1:         MOV BUFF2,#3CH              ;密码存放存储单元首址
             DEC BUFF2
             LCALL        LCD_INIT          ; 初始化LCD
             MOV        A,#15
             LCALL        DELAY_MS          ;调延时

               LCALL DISPLAY1
             DEC R0
             CJNE R0,#01,TT1
            
             LCALL READ_NUM
             MOV  DPTR,#TAB_LJD
             MOV A ,#0FFH
             LCALL  DELAY_MS              ; 在第二行显示字符*       
             MOV A,#41H                          ;
             LCALL  SET_LCD_POS                  ; 设置第二行第一个字符位置
            
             CJNE A,#99H,$               
             MOV BUFF,#00H                 ;清除标志
             JMP TT0



;------------------------------------------------------------------------------
READ_NUM:    MOV R2,#10                     ;读出密码并存入从36h开始的存储单元
             MOV R0,#BUFF1
             MOV DPTR,#TAB1
LOOP:       CLR A
             MOVC A,@A+DPTR
            
             MOV @R0,A
             INC DPTR
             INC R0
             DJNZ R2,LOOP
             RET
            
TAB:
             DB      03FH           ;0
             DB      006H           ;1
             DB      05BH           ;2
             DB      04FH           ;3
             DB      066H           ;4
             DB      06DH           ;5
             DB      07DH           ;6
             DB      07H            ;7
             DB      07FH           ;8
             DB      06FH           ;9
             DB      77H            ;A
             DB      07CH           ;B
             DB      039H           ;C
             DB      5EH            ;D
             DB      079H           ;E
             DB      071H           ;F

TAB1:        DB      006H           ;1
             DB      05BH           ;2
             DB      04FH           ;3
             DB      066H           ;4
             DB      06DH           ;5
             DB      07DH           ;6   


;****************键盘处理*****************************
CH451_INT1: LCALL   INTER         
             
K1:                                                              
            MOV     R3,DATA_KEY
            CJNE    R3,#40H,K2
            JMP     LED_0
K2:
            MOV     R3,DATA_KEY
            CJNE    R3,#41H,K3
            JMP     LED_1
K3:
            MOV     R3,DATA_KEY
            CJNE    R3,#42H,K4
            JMP     LED_2
K4:
            MOV     R3,DATA_KEY
            CJNE    R3,#43H,K5
            JMP     LED_3
K5:
            MOV     R3,DATA_KEY
            CJNE    R3,#48H,K6
            JMP     LED_4
K6:
            MOV     R3,DATA_KEY
            CJNE    R3,#49H,K7
            JMP     LED_5
K7:
            MOV     R3,DATA_KEY
            CJNE    R3,#4AH,K8
            JMP     LED_6
K8:
            MOV     R3,DATA_KEY
            CJNE    R3,#4BH,K9
            JMP     LED_7
K9:
            MOV     R3,DATA_KEY
            CJNE    R3,#50H,K10
            JMP     LED_8
K10:
            MOV     R3,DATA_KEY
            CJNE    R3,#51H,K11
            JMP     LED_9
K11:
            MOV     R3,DATA_KEY
            CJNE    R3,#52H,K12
            JMP     LED_A
K12:
            MOV     R3,DATA_KEY
            CJNE    R3,#53H,K13
            JMP     LED_B
K13:
            MOV     R3,DATA_KEY
            CJNE    R3,#58H,K14
            JMP     LED_C
K14:
            MOV     R3,DATA_KEY
            CJNE    R3,#59H,K15
            JMP     LED_D
K15:
            MOV     R3,DATA_KEY
            CJNE    R3,#5AH,K16
            JMP     LED_E
K16:
            MOV     R3,DATA_KEY
            CJNE    R3,#5BH,K17
            JMP     LED_F
K17:            
            POP   ACC
            POP   PSW
            CLR   IE1            
            RETI
            NOP
            LJMP     START
LED_A:      
            JMP     DELAY1
LED_B:
            JMP     DELAY1
LED_C:
           
            JMP     DELAY1
LED_D:     MOV R1,#3CH
           MOV R0,#36H
           MOV R4,#06H
C1:        MOV A,@R1
           XRL A,@R0               ;比较键盘输入的密码是否与设定密码相同
           JNZ C3
           INC R0
           INC R1
           DJNZ R4,C1
           LCALL DISPLAY4
           CLR P3.6                 
           RETI
C3:        MOV R3,#6
EORR:      CLR P3.7                    ;密码错误鸣音报警
           MOV A,#0128
           LCALL DELAY_MS
           SETB P3.7
           MOV A,#128
           LCALL DELAY_MS
           DJNZ R3,EORR
           LCALL DISPLAY3
           MOV BUFF,#99H
           MOV A,BUFF
           RETI
LED_E:
            JMP     DELAY1
LED_F:
           JMP     DELAY1
           
LED_0:
            INC DPTR
               MOV     @R1,#03FH
            LCALL DISPLAY2
            RETI
           
LED_1:
            
               MOV     @R1,#06H
            LCALL DISPLAY2
            INC DPTR
            RET         
LED_2:
            MOV     @R1,#05BH
            LCALL DISPLAY2
            INC DPTR
            RETI
            
LED_3:
               MOV     @R1,#04FH
            LCALL DISPLAY2
            INC DPTR
            RETI
LED_4:
            MOV     @R1,#066H
            LCALL DISPLAY2
            INC DPTR
           RETI

LED_5:
               MOV     @R1,#06DH
            LCALL DISPLAY2
            INC DPTR
            RETI
           
LED_6:
              MOV     @R1,#07DH
            LCALL DISPLAY2
            INC DPTR
            RETI
LED_7:
               MOV     @R1,#007H
            LCALL DISPLAY2
            INC DPTR
            RETI
LED_8:
            MOV     @R1,#07FH
            LCALL DISPLAY2
            INC DPTR
           RETI
LED_9:
            MOV     @R1,#06FH
            LCALL DISPLAY2
            INC DPTR
            RETI
DELAY1:
            CLR     IT1               ;置外部信号为低电平触发   
            CLR     IE1               ;清中断标志
            SETB    PX1           
            SETB    EX1               ;允许键盘中断
            SETB    EA   
            LCALL    DELAY_1S
            ;LCALL    DELAY_1S
            ;LCALL    DELAY_1S
            ;LCALL   DELAY_1S
           
            POP      B
            POP      ACC
            POP      PSW
            RETI
点赞  2008-2-26 09:29
楼上够强
点赞  2008-2-26 18:53

5楼 kly 

好像没那么简单,呵呵.
点赞  2008-5-1 10:53
你两次发的一样啊!
点赞  2010-4-30 15:28
厉害!
点赞  2010-5-8 22:18
牛人
................
点赞  2010-5-9 00:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复