機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
單片機(jī)應(yīng)用之摩斯密碼電子鎖
單片機(jī)應(yīng)用之摩斯密碼電子鎖
 更新時(shí)間:2009-11-13 14:12:40  點(diǎn)擊數(shù):0
【字體: 字體顏色

摩斯密碼相信學(xué)習(xí)無(wú)線電和電子的都非常熟耳,可能這東西已經(jīng)過(guò)時(shí)的緣故吧,可能大家不太了解這東西。本著多學(xué)一點(diǎn)知識(shí)的原則,而且這東西熟悉以后可能再緊要關(guān)頭可以救命的東東啊!!本人就對(duì)這東西解釋一下:

電報(bào)最早是由美國(guó)的摩爾斯在1844年發(fā)明的,故也被叫做摩爾斯電碼。它由兩種基本信號(hào)和不同的間隔時(shí)間組成:短促的點(diǎn)信號(hào)" ",讀" "Di);保持一定時(shí)間的長(zhǎng)信號(hào)"",讀" "Da)。間隔時(shí)間:""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 _ _ _ _ _  

 

 

基本上摩斯電碼就是由一個(gè)短音的“嘀”,和長(zhǎng)音的“嗒”構(gòu)成,如果換成數(shù)字電路就是01。而且由單個(gè)鍵控制其接奏長(zhǎng)短通過(guò)其組合來(lái)待表不同的字母和數(shù)字。本人設(shè)計(jì)的密碼鎖就是基于這種概念來(lái)設(shè)計(jì)的。電路圖(如圖一)

 

 

 

電路特色:本電路只有兩個(gè)按鍵,一個(gè)為復(fù)位鍵(修改密碼鍵),一個(gè)為密碼鍵,密碼鍵根據(jù)其按下的長(zhǎng)短來(lái)實(shí)現(xiàn)“滴”“嗒”。1t為滴,3t為嗒(t約為500ms)。若按鍵s1小于1t,或大于1t小于3t ,或大于5t則被認(rèn)為無(wú)效按法,則重新輸入。本電路只取0~9數(shù)字摩斯值為有效值。其余的英文字母和其它的按值均被認(rèn)作無(wú)效值。(有興趣的可把英文碼都寫進(jìn)去增強(qiáng)其密碼廣泛性)。由于設(shè)置有后備電源,所以無(wú)須增加存儲(chǔ)器降低編程難度。八段數(shù)碼管顯示你的摩斯按鍵是否正確對(duì)應(yīng)你要輸入的數(shù)字密碼。由于采取上電設(shè)置密碼的編程方法復(fù)位鍵即密碼修改鍵設(shè)置在門后,要打開(kāi)門才能修改密碼。設(shè)置密碼后若輸入密碼不對(duì)的前兩次5秒報(bào)警,最后一次10分鐘報(bào)警,摩斯按發(fā)錯(cuò)誤除外(但有兩秒報(bào)警,并且須全部密碼重新輸入)。本電路設(shè)置四位密碼,由于每位數(shù)字鍵均由五位摩斯碼構(gòu)成則要輸入20次摩斯碼鍵!p0.0(綠色)“滴”顯示,p0.2(黃色)“嗒”音顯示,p0.4(紅色)摩斯碼按法錯(cuò)誤或密碼錯(cuò)誤,p0.6(藍(lán)色)表示該電路已設(shè)置了密碼,等待輸入密碼進(jìn)行比較。

Ls1為報(bào)警器。

   本電路優(yōu)點(diǎn):電路簡(jiǎn)單可靠,保密性強(qiáng)。就算密碼泄露但不懂摩斯密碼輸入法則則是徒勞。

本電路缺點(diǎn):用戶須一段時(shí)間掌握摩斯輸入技巧。經(jīng)本人使用一段時(shí)間掌握了一些技巧現(xiàn)拿來(lái)分享,摩斯輸入技巧:按鍵之后燈亮則松,燈滅則按。

 

以下是電路實(shí)物圖:(由于特殊原因,不能提供實(shí)樣板實(shí)物圖,只能提供實(shí)驗(yàn)板實(shí)物圖區(qū)別在于實(shí)驗(yàn)板的用led代替了繼電器,用USB代替電源方便調(diào)試。但電路均能正常工作,程序一樣,不便之處敬請(qǐng)?jiān)彛?/SPAN>

本實(shí)物圖狀態(tài)為等待輸入密碼進(jìn)行比較開(kāi)鎖

對(duì)本電路有任何疑問(wèn)請(qǐng)與本人聯(lián)系!

 

 

程序如下:

 

hc0 equ 4ah    ;延時(shí)緩存區(qū)

hc1 equ 4bh

hc2 equ 4ch

hc3 equ 4dh

hc4 equ 4eh

 

xs_0 equ 50h   ;顯示緩存區(qū)

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    ;設(shè)置密碼緩存區(qū)

ps2 equ 5bh

ps3 equ 5ch

ps4 equ 5dh

 

mmbz equ 5fh   ;密碼輸入次數(shù)

 

at1 equ 60h    ;輸入密碼緩存區(qū)

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  ;摩斯次數(shù),由于數(shù)字為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:             ;摩斯輸入錯(cuò)誤    

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    ;報(bào)警器

lcall delay1s

setb p3.2    ;報(bào)警器

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:           ;開(kāi)門復(fù)位

mov mmbz ,#03   ;錯(cuò)誤密碼次數(shù)

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        ;開(kāi)門后再按鍵1t以上關(guān)門

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:            ;每個(gè)摩斯碼之間延時(shí)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:            ;摩斯碼錯(cuò)誤處理

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:         ;密碼錯(cuò)誤處理

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

  • 上一篇: 基于視覺(jué)暫留原理的搖動(dòng)顯示裝置探討
  • 下一篇: 沒(méi)有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1