![]() |
|
||||||||||||||
| | 网站首页 | 关于我们 | 单片机培训 | 产品展示 | 产品开发 | 单片机解密 | 技术文章 | 下载中心 | 留言薄 | 技术论坛 | 联系我们 | | ||
|
||
|
|||||
| 单片机应用之密码电子锁 | |||||
| 单片机应用之密码电子锁 | |||||
作者:佚名 文章来源:本站原创 点击数: 更新时间:2007-10-17 ![]() |
|||||
|
摩斯密码相信学习无线电和电子的都非常熟耳,可能这东西已经过时的缘故吧,可能大家不太了解这东西。本着多学一点知识的原则,而且这东西熟悉以后可能再紧要关头可以救命的东东啊!!本人就对这东西解释一下: 电报最早是由美国的摩尔斯在1844年发明的,故也被叫做摩尔斯电码。它由两种基本信号和不同的间隔时间组成:短促的点信号" .",读" 嘀 "(Di);保持一定时间的长信号"—",读"嗒 "(Da)。间隔时间:"嘀"1t;"嗒"3t;"滴嗒"间1t;字母间3t;字间5t。 摩斯密码表
A . _ M _ _ Y _ . _ _ B _ . . . N _ . Z _ _ . . C _ . _ . O _ _ _ 1 . _ _ _ _ D _ . . P . _ _ . 2 . . _ _ _ E . Q _ _ . _ 3 . . . _ _F . . _ . R . _ . 4 . . . . _ G _ _ . S . . . 5 . . . . . H . . . . T _ 6 _ . . . . I . . U . . _ 7 _ _ . . . J . _ _ _ V . . . _ 8 _ _ _ . . K _ . _ W . _ _ 9 _ _ _ _ . L . _ . . X _ . . _ 0 _ _ _ _ _ 基本上摩斯电码就是由一个短音的“嘀”,和长音的“嗒”构成,如果换成数字电路就是0和1。而且由单个键控制其接奏长短通过其组合来待表不同的字母和数字。本人设计的密码锁就是基于这种概念来设计的。电路图(如图一)
电路特色:本电路只有两个按键,一个为复位键(修改密码键),一个为密码键,密码键根据其按下的长短来实现“滴”“嗒”。1t为滴,3t为嗒(t约为500ms)。若按键s1小于1t,或大于1t小于3t ,或大于5t则被认为无效按法,则重新输入。本电路只取0~9数字摩斯值为有效值。其余的英文字母和其它的按值均被认作无效值。(有兴趣的可把英文码都写进去增强其密码广泛性)。由于设置有后备电源,所以无须增加存储器降低编程难度。八段数码管显示你的摩斯按键是否正确对应你要输入的数字密码。由于采取上电设置密码的编程方法复位键即密码修改键设置在门后,要打开门才能修改密码。设置密码后若输入密码不对的前两次5秒报警,最后一次10分钟报警,摩斯按发错误除外(但有两秒报警,并且须全部密码重新输入)。本电路设置四位密码,由于每位数字键均由五位摩斯码构成则要输入20次摩斯码键!!p0.0(绿色)“滴”显示 ,p0.2(黄色)“嗒”音显示,p0.4(红色)摩斯码按法错误或密码错误,p0.6(蓝色)表示该电路已设置了密码,等待输入密码进行比较。 Ls1为报警器。 本电路优点:电路简单可靠,保密性强。就算密码泄露但不懂摩斯密码输入法则则是徒劳。 本电路缺点:用户须一段时间掌握摩斯输入技巧。经本人使用一段时间掌握了一些技巧现拿来分享,摩斯输入技巧:按键之后灯亮则松,灯灭则按。 以下是电路实物图:(由于特殊原因,不能提供实样板实物图,只能提供实验板实物图区别在于实验板的用led代替了继电器,用USB代替电源方便调试。但电路均能正常工作,程序一样,不便之处敬请原谅)
本实物图状态为等待输入密码进行比较开锁 对本电路有任何疑问请与本人联系! 程序如下: hc0 equ 4ah ;延时缓存区 hc1 equ 4bh hc2 equ 4ch hc3 equ 4dh hc4 equ 4eh xs_0 equ 50h ;显示缓存区 xs_1 equ 51h xs_2 equ 52h xs_3 equ 53h xs_4 equ 54h xs_5 equ 55h xs_6 equ 56h xs_7 equ 57h xs_8 equ 58h xs_9 equ 59h ps1 equ 5ah ;设置密码缓存区 ps2 equ 5bh ps3 equ 5ch ps4 equ 5dh mmbz equ 5fh ;密码输入次数 at1 equ 60h ;输入密码缓存区 at2 equ 61h at3 equ 62h at4 equ 63h ;初始化 org 00h ajmp main1 org 30h main1: mov ps1 ,#00h mov ps2 ,#00h mov ps3 ,#00h mov ps4 ,#00h mov at1 ,#00h mov at2 ,#00h mov at3 ,#00h mov at4 ,#00h main: mov xs_0 ,#1fh ;显示0的摩斯值 mov xs_1 ,#0fh ;显示1的摩斯值 mov xs_2 ,#07h ;显示2的摩斯值 mov xs_3 ,#03h ;显示3的摩斯值 mov xs_4 ,#01h ;显示4的摩斯值 mov xs_5 ,#00h ;显示5的摩斯值 mov xs_6 ,#10h ;显示6的摩斯值 mov xs_7 ,#18h ;显示7的摩斯值 mov xs_8 ,#1ch ;显示8的摩斯值 mov xs_9 ,#1eh ;显示9的摩斯值 clr p3.0 mov a ,#00h ;密码缓存 mov r2 ,#04h ;四位密码 mov r1 ,#00h mov r0 ,#ps1 mov r7 ,#05h ;摩斯次数,由于数字为5次 clr p2.7 start: mov p0 ,#0ffh mov p1 ,#0ffh setb p2.4 ;按键位 jb p2.4 ,start lcall delay500ms jb p2.4 ,start ok: ;嘀的音 clr p0.0 lcall delay500ms jnb p2.4 ,daa ;是否去嗒音 cun: ; setb p0.2 setb p0.0 rl a add a ,r1 ;存入一位摩斯码 djnz r7 ,yanshi ;是否够五位摩斯码 ajmp xianshi yanshi: ;输入一位摩斯码停顿1t lcall delay500ms jb p2.4 ,main ajmp ok daa: ;嗒的音 lcall delay500ms jb p2.4 ,stop setb p0.0 clr p0.2 lcall delay500ms setb p0.2 jnb p2.4 ,stop mov r1 ,#01h ajmp cun stop: ;摩斯输入错误 clr p0.4 lcall delay2s setb p0.4 ajmp main cunchu: mov @r0 ,a inc r0 mov a ,#00h mov r1 ,#00h mov r7 ,#05h djnz r2 ,yanshi clr p0.6 lcall delay2s setb p0.6 ajmp shuru xianshi: cjne a ,xs_0 ,next1 ;够五位摩斯码显示0 mov p1 ,#0c0h clr p3.2 ;报警器 lcall delay1s setb p3.2 ;报警器 mov p1 ,#0ffh ajmp cunchu next1: cjne a ,xs_1 ,next2 ;够五位摩斯码显示1 mov p1 ,#0f9h clr p3.2 lcall delay1s setb p3.2 mov p0 ,#0ffh ajmp cunchu next2: cjne a ,xs_2 ,next3 ;够五位摩斯码显示2 mov p1 ,#0a4h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu next3: cjne a ,xs_3 ,next4 ;够五位摩斯码显示3 mov p1 ,#0b0h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu next4: cjne a ,xs_4 ,next5 ;够五位摩斯码显示4 mov p1 ,#99h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu next5: cjne a ,xs_5 ,next6 ;够五位摩斯码显示5 mov p1 ,#92h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu next6: cjne a ,xs_6 ,next7 ;够五位摩斯码显示6 mov p1 ,#7dh clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu next7: cjne a ,xs_7 ,next8 ;够五位摩斯码显示7 mov p1 ,#0f8h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu next8: cjne a ,xs_8 ,next9 ;够五位摩斯码显示8 mov p1 ,#080h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu next9: cjne a ,xs_9 ,cw ;够五位摩斯码显示9 mov p1 ,#90h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu cw: clr p3.2 clr p0.4 lcall delay5s clr p0.4 setb p3.2 ajmp main1 shuru: ;开门复位 mov mmbz ,#03 ;错误密码次数 mov at1 ,#00h mov at2 ,#00h mov at3 ,#00h mov at4 ,#00h shuru2: clr p0.6 mov a ,#00h ;密码缓存 mov r2 ,#04h ;四位密码 mov r1 ,#00h mov r0 ,#at1 mov r7 ,#05h start1: jb p2.4 ,start1 lcall delay500ms jb p2.4 ,start1 ok1: ;滴音 setb p3.0 ;开门后再按键1t以上关门 setb p0.6 clr p0.0 lcall delay500ms jnb p2.4 ,daaa cun1: setb p0.2 setb p0.0 rl a add a ,r1 djnz r7 ,yanshi1 ajmp xianshi1 yanshi1: ;每个摩斯码之间延时1t lcall delay500ms jb p2.4 ,stop1 ajmp ok1 daaa: ;嗒音 lcall delay500ms jb p2.4 ,stop1 setb p0.0 clr p0.2 lcall delay500ms setb p0.2 jnb p2.4 ,stop1 mov r1 ,#01h ajmp cun1 stop1: ;摩斯码错误处理 clr p0.4 lcall delay2s setb p0.4 ajmp shuru2 cunchu2: mov @r0 ,a inc r0 mov a ,#00h mov r1 ,#00h mov r7 ,#05h djnz r2 ,yanshi1 ajmp bijiao xianshi1: ;显示处理 cjne a ,xs_0 ,next1_1 mov p1 ,#0c0h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu2 next1_1: cjne a ,xs_1 ,next2_2 mov p1 ,#0f9h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu2 next2_2: cjne a ,xs_2 ,next3_3 mov p1 ,#0a4h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu2 next3_3: cjne a ,xs_3 ,next4_4 mov p1 ,#0b0h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu2 next4_4: cjne a ,xs_4 ,next5_5 mov p1 ,#99h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu2 next5_5: cjne a ,xs_5 ,next6_6 mov p1 ,#92h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu2 next6_6: cjne a ,xs_6 ,next7_7 mov p1 ,#82h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu2 next7_7: cjne a ,xs_7 ,next8_8 mov p1 ,#0f8h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu2 next8_8: cjne a ,xs_8 ,next9_9 mov p1 ,#80h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu2 next9_9: cjne a ,xs_9 ,cw2 mov p1 ,#90h clr p3.2 lcall delay1s setb p3.2 mov p1 ,#0ffh ajmp cunchu2 bijiao: ;比较密码 mov r6 ,#04 mov r1 ,#ps1 mov r0 ,#at1 bj2: clr c mov a ,@r0 subb a ,@r1 cjne a ,#00h ,cw2 inc r1 inc r0 djnz r6 ,bj2 clr p3.2 ;密码正确 clr p3.0 lcall delay5s setb p3.2 ajmp shuru cw2: ;密码错误处理 djnz mmbz ,bjd mov p0 ,#00h clr p3.2 lcall delay5min setb p3.2 mov p0 ,#0ffh ajmp shuru2 bjd: mov p0 ,#00h clr p3.2 lcall delay5s setb p3.2 mov p0 ,#0ffh ajmp shuru2 delay500ms: mov hc0 ,#05 ff1: mov hc1 ,#200 fff1: mov hc2,#250 djnz hc2 ,$ djnz hc1 ,fff1 djnz hc0 ,ff1 ret delay1s: mov hc0 ,#10 ff2: mov hc1 ,#200 ff3: mov hc2 ,#250 djnz hc2 ,$ djnz hc1 ,ff3 djnz hc0 ,ff2 ret delay2s: mov hc0 ,#20 ff4: mov hc1 ,#200 ff5: mov hc2 ,#250 djnz hc2 ,$ djnz hc1 ,ff5 djnz hc0 ,ff4 ret delay5s: mov hc0 ,#50 ff6: mov hc1 ,#200 ff7: mov hc2 ,#250 djnz hc2 ,$ djnz hc1 ,ff7 djnz hc0 ,ff6 ret delay5min: mov hc0 ,#12 qq1: mov hc1 ,#200 qq2: mov hc2 ,#250 qq3: mov hc3 ,#250 djnz hc3 ,$ djnz hc2,qq3 djnz hc1 ,qq2 djnz hc0 ,qq1 ret end |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 没有相关文章 |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | | |||
|