久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6213|回復: 4
打印 上一主題 下一主題
收起左側

Proteus設計的51單片機匯編語言電子密碼鎖

[復制鏈接]
跳轉到指定樓層
樓主
密碼鎖仿真圖,源程序代碼。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機匯編語言源程序如下:
  1. ;===================================================
  2. ;名    稱:電子密碼鎖
  3. ;作    者:小發
  4. ;日    期:2007年06月13日
  5. ;修改日期:2007年06月18日
  6. ;說    明:首先顯示器提示輸入密碼,密碼在12.5S內輸入有效,
  7. ;         輸入次三次錯誤報警10S,輸入正確開門,7秒后返回初態
  8. ;         以上參數均可在主程序里設定,修改系統密碼在程序的結尾
  9. ;===================================================

  10.         RS BIT P2.7
  11.         RW BIT P2.6
  12.         E BIT P2.5
  13.         ENTER BIT 22H.0
  14.         OPEN BIT P3.6
  15.         SPEAK BIT P3.7
  16.         PASSBUF EQU 40H
  17.         KEYNUMBER EQU 41H       ;存放識別后的按鍵號
  18.         ORG 0000H
  19.         AJMP MAIN
  20.         ORG 0003H
  21.         JMP KEY_INT
  22.         ORG 000BH
  23.         AJMP INTT0
  24.         ORG 001BH
  25.         AJMP INTT1
  26.         ORG 0030H
  27. ;========== 主程序開始 ==============
  28. MAIN:   MOV 30H,#07H          ;輸入密碼為7位  最高只可設15位
  29.         MOV 42H,#200         ;設定報警的時間,42H單元里的數*50MS
  30.         MOV 43H,#250          ;設定開門時間     14的倍數(實際上液晶顯示器執行指令占用了時間,開門時間會比14*250MS大)
  31.         ;44H號單元存放輸入錯誤的次數
  32.         ;45H為定時器0中斷次數
  33.         ;46H為定時器1中斷次數
  34.         MOV 47H,#250          ;輸入密碼時間設定,50MS倍數
  35.         MOV SP,#60H
  36.         CLR OPEN
  37.         CLR SPEAK              ;初始化輸出設備
  38.         CLR ENTER              ;標志位初始化
  39.        
  40.         MOV TMOD,#11H          ;定時器工作方式2
  41.         MOV TH0,#3CH           ;初值50MS
  42.         MOV TL0,#0BH
  43.         MOV TH1,#3CH           
  44.         MOV TL1,#0BH
  45.         SETB EA
  46.         SETB ET0
  47.         SETB ET1
  48.         
  49.         MOV TCON,#00000000B     ;電平觸發
  50. START:  MOV R0,30H
  51.         MOV R1,#31H
  52. SS1:        MOV @R1,#00H
  53.         INC R1
  54.         DJNZ R0,SS1            ;將輸入密碼緩沖單元清零
  55.         MOV P1,#0FH            ;初始化按鍵口
  56.         MOV R1,#31H             ;從31號單元開始存放按建輸入的密碼         
  57.         CLR 20H                 ;報警標志清零
  58.         CLR 21H                 ;密碼超時標志
  59.         MOV 46H,#00H           ;超時后對定時器中斷次數清零,便于下一輪重新計時
  60. INIT:   ACALL SELLCD            ;設定液晶工作方式
  61.         ACALL LINE1             ;在第一行顯示
  62.         MOV DPTR,#MES_P         ;顯示請輸入密碼
  63.         ACALL DISPLAY
  64.         setb EX0               ;開中斷,允許鍵盤輸入
  65. KEYIN:  JB  21H,ERR             ;超時轉到錯誤程序
  66.         JNB ENTER,KEYIN         ;等待ENTER按下
  67.         CLR ENTER
  68.         clr EX0                ;密碼輸入完后鎖定鍵盤
  69. ;當使用邊沿觸發時用上面的指令為什么禁止不了中斷???
  70. ;========== 密碼判斷程序 ============
  71. COMP:            
  72.         MOV DPTR,#PASS
  73.         MOV R4,30H             ;密碼的長度
  74.         MOV A,#0
  75.         MOV R1,#31H            
  76. LOOP:   MOV R5,A
  77.         MOVC A,@A+DPTR
  78.         MOV PASSBUF,A          ;取出系統設定的密碼
  79.         MOV A,@R1              ;從31號單元開始取出輸入的密碼
  80.         CJNE A,PASSBUF,ERR     ;比較
  81.         MOV A,R5
  82.         INC A
  83.         INC R1                 ;取下一位
  84.         DJNZ R4,LOOP

  85. ;正確
  86. MATCH:  MOV A,#01H
  87.         ACALL ENABLE           ;清屏,光標復位
  88.         ACALL LINE1            ;從第一行開始顯示
  89.         MOV DPTR,#MES_C
  90.         ACALL DISPLAY          ;顯示"請進"
  91.         ACALL LINE2
  92.         MOV DPTR,#TAB_1
  93.         ACALL DISPLAY
  94.         SETB OPEN              ;開門
  95.         MOV 44H,#00H           ;輸入錯誤次數清零
  96.         MOV R6,43H               
  97.         ACALL DELAY
  98.         CLR OPEN               ;復位
  99.         JMP START            
  100. ;錯誤
  101. ERR:    ACALL BACK
  102.         MOV R6,#03H
  103.         ACALL DELAY
  104.         ACALL BACK           ;輸錯提示音,鳴兩下
  105.         MOV A,#01H
  106.         ACALL ENABLE
  107.         ACALL LINE1
  108.         MOV DPTR,#MES_E
  109.         ACALL DISPLAY       ;顯示錯誤
  110.         MOV R6,#40H
  111.         ACALL DELAY         
  112.         INC  44H
  113.         MOV A,44H
  114.         CJNE A,#03H,EE0
  115. EE0:    JC  ERROUT        ;輸錯不到三次返回
  116.         MOV 44H,#00H        ;清零
  117.         ACALL WRANING       ;報警
  118. ERROUT: JMP START

  119. ;=========== 按鍵中斷服務程序 ==========
  120. KEY_INT:push acc
  121.         push psw
  122.         clr ex0
  123.         acall delay10ms     ;延時消抖
  124.         SETB TR1            ;啟動定時器
  125.         ACALL SMKEY         ;按鍵識別
  126.         MOV A,KEYNUMBER     ;返回按鍵號
  127.         ACALL BACK          ;按鍵發聲
  128.         MOV R3,A
  129.         CJNE R3,#0BH,K1     ;ENTER是否按下
  130.         SETB ENTER
  131.         clr tr1             ;按下確認后關畢定時器
  132.         mov 46h,#00h        ;對中斷次數清零
  133.         AJMP KEY_RTN
  134. K1:     ADD A,#30H          ;將按鍵號轉換為ASCⅡ碼
  135.         MOV @R1,A           ;將輸入的密碼存入緩沖單元
  136.         INC R1              ;修改地址
  137.         
  138.         ACALL WRDATA        ;輸入一位顯示一個"*"
  139.         
  140. KEY_RTN:pop psw
  141.         pop acc
  142.         setb ex0
  143.         RETI


  144. ;=========== 按鍵識別程序 ==========
  145. SMKEY:   
  146.          MOV A,P1
  147.          ANL A,#0FH
  148. WKEY:    MOV B,A               ;反轉法查詢  
  149.          MOV P1,#0F0H
  150.          NOP
  151.          MOV A,P1
  152.          ANL A,#0F0H
  153.          ORL A,B
  154.          MOV P1,#0FH         ;還原P1口初態
  155.          CJNE A,#0EEH,WKEY1
  156.          MOV KEYNUMBER,#00H      
  157.          AJMP RETURN
  158. WKEY1:   CJNE A,#0EDH,WKEY2
  159.          MOV KEYNUMBER,#01H
  160.          AJMP RETURN
  161. WKEY2:   CJNE A,#0EBH,WKEY3
  162.          MOV KEYNUMBER,#02H
  163.          AJMP RETURN
  164. WKEY3:   CJNE A,#0E7H,WKEY4
  165.          MOV KEYNUMBER,#03H
  166.          AJMP RETURN
  167. WKEY4:   CJNE A,#0DEH,WKEY5
  168.          MOV KEYNUMBER,#04H
  169.          AJMP RETURN
  170. WKEY5:   CJNE A,#0DDH,WKEY6
  171.          MOV KEYNUMBER,#05H
  172.          AJMP RETURN
  173. WKEY6:   CJNE A,#0DBH,WKEY7
  174.          MOV KEYNUMBER,#06H
  175.          AJMP RETURN
  176. WKEY7:   CJNE A,#0D7H,WKEY8
  177.          MOV KEYNUMBER,#07H
  178.          AJMP RETURN
  179. WKEY8:   CJNE A,#0BEH,WKEY9
  180.          MOV KEYNUMBER,#08H
  181.          AJMP RETURN
  182. WKEY9:   CJNE A,#0BdH,WKEY10
  183.          MOV KEYNUMBER,#09H
  184.          AJMP RETURN
  185. WKEY10:  CJNE A,#0BbH,WKEY11
  186.          MOV KEYNUMBER,#0AH
  187.          AJMP RETURN
  188. WKEY11:  CJNE A,#0B7H,RETURN
  189.          MOV KEYNUMBER,#0BH       ;判斷哪個鍵按下,返回相應按鍵號碼
  190. RETURN:  MOV P1,#0FH
  191.          NOP
  192.          NOP
  193.          MOV A,P1
  194.          CPL A
  195.          ANL A,#0FH
  196.          JNZ RETURN              ;等待按鍵松開
  197.          RET



  198. ;========== 液晶工作方式設置 ============
  199. SELLCD: MOV A,#01H          ;清屏,光標復位   
  200.         ACALL ENABLE
  201.         MOV A,#38H          ;設置顯示模式,8位兩行,5*7點陣
  202.         ACALL ENABLE
  203.         MOV A,#0DH          ;顯示器開,允許內爍
  204.         ACALL ENABLE      
  205.         MOV A,#06H          ;文字不動,光標右移
  206.         ACALL ENABLE
  207.         RET

  208. ;========== 液晶執行指令 ============
  209. ENABLE: CLR RS
  210.         CLR RW              ;RS,RW同為低電平時寫入指令
  211.         MOV P0,A
  212.         CLR E               ;E由高變低時執行指令
  213.         ACALL WAIT
  214.         SETB E
  215.         RET

  216. ;========== WAIT ============
  217. ;判斷液晶是否忙的子程序
  218. WAIT:   MOV P0,#0FFH
  219.         CLR RS
  220.         SETB RW             ;RW為高,RS為低時可讀忙信號
  221.         CLR E
  222.         NOP
  223.         SETB E
  224.         JB P0.7,WAIT
  225.         RET


  226.         
  227. ;========== 顯示的起始地址 ============
  228. ;在第一行
  229. LINE1:  MOV A,#80H
  230.         ACALL ENABLE
  231.         RET
  232. ;在第二行
  233. LINE2:  MOV A,#0C0H
  234.         ACALL ENABLE
  235.         RET


  236. ;=========== 顯示程序 ============
  237. DISPLAY:MOV R7,#00H
  238. NEXT:   MOV A,R7
  239.         MOVC A,@A+DPTR
  240.         CJNE A,#10H,DSP
  241.         RET
  242. DSP:    ACALL WRDATA
  243.         INC R7
  244.         AJMP NEXT

  245. ;========== 將A里面的數據寫入液晶 ============
  246. WRDATA: SETB RS
  247.         CLR RW
  248.         MOV P0,A
  249.         CLR E
  250.         ACALL WAIT
  251.         SETB E
  252.         RET

  253. ;=========== 報警程序 ============
  254. WRANING: SETB TR0
  255.          ACALL BACK
  256.          MOV R4,#00H
  257.          ACALL D2
  258.          JNB 20H, WRANING
  259.          RET
  260. ;=========== 發聲程序 ============
  261. BACK:    MOV R0,#100
  262. KK1:     CPL  SPEAK
  263.          LCALL DELAY2MS
  264.          DJNZ  R0,KK1             ;不斷取反P2.0使其產生一定頻率的方波推動揚聲器
  265.          RET                      ;延時的長短可以改變輸出的頻率

  266. ;=========== INTT0 ============
  267. ;報警時間設定
  268. INTT0:   PUSH ACC
  269.          PUSH PSW                  
  270.          MOV TH0,#3CH           
  271.          MOV TL0,#0BH
  272.          INC 45H
  273.          MOV A,45H
  274.          CJNE A,42H,INTT0OUT
  275.          MOV 45H,#00H
  276.          SETB 20H                 ;置標志位
  277.          CLR TR0                  ;關閉定時器
  278. INTT0OUT:POP PSW
  279.          POP ACC
  280.          RETI
  281. ;=========== INTT1 ============
  282. ;輸入超時
  283. INTT1:   PUSH ACC
  284.          PUSH PSW
  285.          INC 46H
  286.          MOV A,46H
  287.          CJNE A,47H,INTT1OUT
  288.          CLR TR1                 ;關閉定時器
  289.          SETB 21H                ;時間到置標志位       
  290.          MOV 47H,#00H            ;中斷次數清零
  291. INTT1OUT:POP PSW
  292.          POP ACC
  293.          RETI  
  294. ;=========== 延時程序 ============
  295. DELAY:    MOV R4,#38H
  296. D1:       MOV R5,#0F9H
  297.           DJNZ R5,$
  298.           DJNZ R4,D1
  299.           DJNZ R6,DELAY        ;14R6毫秒
  300.           RET
  301. DELAY2MS: MOV R4,#02H
  302. D2:       MOV R5,#0F0H
  303.           DJNZ R5,$
  304.           DJNZ R4,D2
  305.           RET
  306. DELAY10ms:  MOV R4,#20
  307. D3:         MOV R5,#248
  308.             DJNZ R5,$
  309.             DJNZ R4,D3
  310.             RET

  311. PASS:   DB "1314520"
  312. MES_P:  DB "Password?",10H
  313. MES_C:  DB "   welcome!",10H
  314. MES_E:  DB "Error!",10H
  315. TAB_1:  DB "xiao_fa office",10h     

  316.         END


復制代碼

所有資料51hei提供下載:
Proteus設計的51單片機電子密碼鎖.rar (44.96 KB, 下載次數: 120)


評分

參與人數 2黑幣 +55 收起 理由
879598301 + 5 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:261488 發表于 2017-12-14 13:41 | 只看該作者
頂一下
回復

使用道具 舉報

板凳
ID:264175 發表于 2017-12-20 16:47 | 只看該作者
樓主,這個怎么解決

微信圖片_20171220164709.png (5.95 KB, 下載次數: 96)

微信圖片_20171220164709.png
回復

使用道具 舉報

地板
ID:275002 發表于 2018-1-11 21:28 | 只看該作者
頂一下
回復

使用道具 舉報

5#
ID:744548 發表于 2020-6-18 20:53 | 只看該作者
bottlewww 發表于 2017-12-20 16:47
**** 作者被禁止或刪除 內容自動屏蔽 ****

這個問題你解決了嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 看真人视频一级毛片 | 亚洲成人午夜电影 | 亚洲午夜精品 | 欧美自拍另类 | 亚洲 欧美 日韩 在线 | 成人午夜免费在线视频 | 国产日产精品一区二区三区四区 | 精品一区二区三区在线视频 | 国产精品美女视频 | av第一页| 日本又色又爽又黄又高潮 | 麻豆视频在线免费观看 | h视频网站在线观看 | 日韩av在线一区二区 | 国产精品高潮呻吟久久aⅴ码 | 中文在线一区二区 | 一区二区在线看 | 最新中文字幕在线播放 | 黄视频免费 | 久久精品91久久久久久再现 | 国产精品毛片 | 欧美视频二区 | 性网站免费 | 亚洲人成网站777色婷婷 | 蜜桃精品噜噜噜成人av | 午夜免费福利电影 | 新91| 噜噜噜噜狠狠狠7777视频 | 国产精品视频500部 a久久 | 91精品国产综合久久福利软件 | 国产在线看片 | 黄色三级毛片 | 热99在线 | 久久精品毛片 | 亚洲精品久久 | 成人在线播放 | 欧美激情一区二区 | 久久中文字幕一区 | 精品久久中文字幕 | 亚洲综合在线一区二区 | 亚洲欧洲一区二区 |