之前发布的贴子中,使用迪文触摸屏借助单片机的定时器实现了翻页密码和设备定时锁,这种与单片机的配合使用存在一定的缺点,不仅占用单片机的资源,还浪费了触摸屏的性能;
这次通过迪文屏的OS程序编写实现设备定时锁定,本文只是对实现的思想左一定的解释,对部分源码加以注释和解释,具体内容请参考压缩包中的触摸屏工程及OS程序,由于本人能
力有限,在OS及程序中有什么问题,请指出,谢谢!
1.本程序是以K600+触摸屏为基础编写,触摸屏必须自带RTC;
2.翻页密码部分参照了迪文官方提供的K600+翻页密码程序,在此致谢!
3.由于本工程为本人为单位书写,所以本人对触摸屏中的工程图片进行了屏蔽,按键位置可能在显示界面不显示,但是不影响使用,如若有工程师
使用,请务必不要使用触摸屏工程文件中的图片,再次致谢!
功能:设备不在授权使用,一般会在设备下位机或人机互交界面等增加定时时间,在用户使用时间范围内,设备可以正常运转,超出使用时间后,设备被锁死,不在授权使用;
思路:应为我所使用的K600+触摸屏自带RTC,所以实现该功能是通过读取RTC的时间与用户的设定时间比较,若使用时间没有达到用户设定的时间,则触摸屏正常运行,若使用时间等于或
超出用户设定的使用时间,则判断当前密码与用户输入后保存的密码是否一致,一致则不弹出锁定界面,不一致,弹出锁定界面并提示用户输入密码,用户输入密码正确,解锁,输入密码不
正确,提示用户并持续锁定;
本工程一共编写了三期时间锁定,每期的指令基本一致,只是调用不同的子程序,由于本程序书为本人很久前编写,在程序结构上可能不够理想,如有更好的意见请指出,致谢!
下面对部分OS程序解释:
clear: LDWR R0,0X4100
MOVXR R10,1,1
IJNE R11,5AH,Go_End
LDWR R0,0X4101
MOVXR R10,1,1
LDWR R4,0210H ;0X0100 0000
LDWR R6,0000H
LDWR R0,0X4101 ;
MOVXL 3,2 ;新密码写入数据库
LDWR R0,0x4100 ;
LDBR R10,0,1
MOVXR R10,0,1
LDWR R0,0x4101 ;
LDBR R10,1,1
MOVXR R10,1,1
LDWR R0,0X4101
MOVXR R10,1,1
LDWR R4,0111H ;0X0100 0000
LDWR R6,0000H
LDWR R0,0X4101 ;
MOVXL 3,2 ;新密码写入数据库
LDWR R0,0x4100 ;
LDBR R10,0,1
MOVXR R10,0,1
LDWR R0,0x4101 ;
LDBR R10,1,1
MOVXR R10,1,1
LDWR R0,0X4101
MOVXR R10,1,1
LDWR R4,0112H ;0X0100 0000
LDWR R6,0000H
LDWR R0,0X4101 ;
MOVXL 3,2 ;新密码写入数据库
LDWR R0,0x4100 ;
LDBR R10,0,1
MOVXR R10,0,1
LDWR R0,0x4101 ;
LDBR R10,1,1
MOVXR R10,1,1
GOTO Go_End4
READTIMmima:
LDWR R4,0210H ;0X0018 0000
LDWR R6,0000H ;读取保存的时间1
LDWR R0,0X4500
MOVXL 2,6
;LDWR R0,0X4501 ;
MOVXR R10,1,3
LDWR R4,0200H ;0X0018 0000
LDWR R6,0000H ;读取保存的时间1
LDWR R0,0X4512
MOVXL 2,3
;LDWR R0,0X4513 ;
MOVXR R20,1,3
CJNE R10,R24,READTIME
CJNE R11,R25,READTIME
LDWR R0,0x4400 ; R0:R1 指定DGUS 变量地址0x0010
LDWR R160,0
MOVXR R160, 0, 1
GOTO Go_End2
SHURUMIMA:
LDWR R0,0X3051 ;读密码框,触摸屏手动输入的值
MOVXR R10,1,2 ;将变量地址0x3051、0x3052、0x3053、0x3054分别写传送给R10、R11、R12、R13
LDBR R14,0,1 ;0写入R14
OR R14,R10,1
OR R14,R11,1
OR R14,R12,1
OR R14,R13,1
IJNE R14,0,MIMANE0 ;密码框不为0
GOTO READTIMmima
MIMANE0:
LDWR R0,0X3051
MOVXR R10,1,1
LDWR R4,0210H ;0X0110 0000
LDWR R6,0000H
LDWR R0,0X3051 ;
MOVXL 3,2 ;新密码写入数据库
LDWR R0,0x3051 ;
LDBR R10,0,10
MOVXR R10,0,10
GOTO Go_End2
WriteSet:
LDWR R0,0X4007 ;
MOVXR R10,1,1 ;
IJNE R11,5AH,Go_End2 ;重建密码确认键是否按下
LDWR R0,0X4000
MOVXR R10,1,6
LDWR R4,0200H ;0X0100 0000
LDWR R6,0000H
LDWR R0,0X4000 ;
MOVXL 3,10 ;新密码写入数据库
LDWR R0,0x4000 ;
LDBR R10,0,20
MOVXR R10,0,10
GOTO Go_End2
READSET:
LDWR R4,0200H ;0X0018 0000
LDWR R6,0000H ;读取保存的时间1
LDWR R0,0X4020
MOVXL 2,5
GOTO Go_End2
;===========================================================
READTIME:
LDWR R0,0x4400 ; R0:R1 指定DGUS 变量地址0x0010
LDWR R200,0x005A
MOVXR R200, 0, 1
MOVDR 20H,R130,7
LDWR R0,0x6000
MOVXR R130, 0, 7 ;读取当前时间
;===========================================================
ZHUANHUAN:
MOV R130,R40,1
BCDHEX R40,R41,0X11 ;00010001
MOV R41,R150,1 ; 各1字节
MOV R131,R40,1
BCDHEX R40,R41,0X11
MOV R41,R152,1
TESTyear:
LDWR R0,0X4020 ;
MOVXR R137,1,2
JS R137,R149,TIM1JIAMI
CJNE R138,R150,Go_End2
JS R139,R151,TIM1JIAMI
GOTO Go_End2
TIM1JIAMI:
LDBR R30,0,16
LDWR R0,0X4022
MOVXR R36,1,1
LDWR R44,10
DIV R30,R38,0 ;判断密码个位数
LDWR R11,1 ;判断密码各位是否为1,为1跳转到GEWEI1
CJNE R45,R12,budeng1
GOTO GEWEI1
budeng1 DWR R11,3;判断密码各位是否为3,为1跳转到GEWEI2
CJNE R45,R12,budeng2
GOTO GEWEI2
budeng2 DWR R11,2 ;判断密码各位是否为4,为1跳转到GEWEI4
CJNE R45,R12,budeng124
GOTO GEWEI4
budeng124: LDWR R10,106 ;不判个位
MOVRD R10,3,2
GOTO Go_End2
GEWEI1:
LDWR R0,0x2500 ; R0:R1 指定DGUS 变量
LDWR R10,0x0004
MOVXR R10, 0, 1 ;设置2500=3;
LDWR R0,0x2602 ; R0:R1 指定DGUS 变量
LDWR R10,0x0001
MOVXR R10, 0, 1 ;设置2500=3;
IJNE R100,30,BUTIAO
GOTO TIAO
BUTIAO:
LDWR R10,107 ;切换到第106页,密码个位为1,在22文件里面设置道夫该页发送道夫=3;
MOVRD R10,3,2
INC R100, 0, 1
IJNE R100,30,Go_End2
TIAO:
LDWR R10,106 ;切换到第106页,密码个位为1,在22文件里面设置道夫该页发送道夫=3;
MOVRD R10,3,2
GOTO Go_End2
GEWEI2:
LDWR R0,0x2500 ; R0:R1 指定DGUS 变量
LDWR R10,0x0004
MOVXR R10, 0, 1 ;设置2500=3;
LDWR R0,0x2612 ; R0:R1 指定DGUS 变量
LDWR R10,0x0003
MOVXR R10, 0, 1 ;设置2500=3;
IJNE R102,30,BUTIAO1
GOTO TIAO1
BUTIAO1:
LDWR R10,107 ;切换到第106页,密码个位为1,在22文件里面设置道夫该页发送道夫=3;
MOVRD R10,3,2
INC R102, 0, 1
IJNE R102,30,Go_End2
TIAO1:
LDWR R10,113;切换到第106页,密码个位为1,在22文件里面设置道夫该页发送道夫=3;
MOVRD R10,3,2
GOTO Go_End2
GEWEI4:
LDWR R0,0x2500 ; R0:R1 指定DGUS 变量
LDWR R10,0x0004
MOVXR R10, 0, 1 ;设置2500=3;
LDWR R0,0x2622 ; R0:R1 指定DGUS 变量
LDWR R10,0x0002
MOVXR R10, 0, 1 ;设置2500=3;
IJNE R104,30,BUTIAO2
GOTO TIAO2
BUTIAO2:
LDWR R10,107 ;切换到第106页,锁定界面 ;
MOVRD R10,3,2
INC R104, 0, 1
IJNE R104,30,Go_End2
TIAO2:
LDWR R10,114 ;切换到第106页,锁定界面;
MOVRD R10,3,2
Go_End2:
RET
工程会在后续上传,谢谢!
|