久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
一個匯編語言單片機電子密碼鎖程序+Proteus仿真
[打印本頁]
作者:
初學者52
時間:
2021-4-18 20:03
標題:
一個匯編語言單片機電子密碼鎖程序+Proteus仿真
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png
(31.09 KB, 下載次數: 103)
下載附件
2021-4-18 22:22 上傳
單片機匯編語言源程序如下:
;===================================================
;
RS BIT P2.7
RW BIT P2.6
E BIT P2.5
ENTER BIT 22H.0
OPEN BIT P3.6
SPEAK BIT P3.7
PASSBUF EQU 40H
KEYNUMBER EQU 41H ;存放識別后的按鍵號
ORG 0000H
AJMP MAIN
ORG 0003H
JMP KEY_INT
ORG 000BH
AJMP INTT0
ORG 001BH
AJMP INTT1
ORG 0030H
;========== 主程序開始 ==============
MAIN: MOV 30H,#07H ;輸入密碼為7位 最高只可設15位
MOV 42H,#200 ;設定報警的時間,42H單元里的數*50MS
MOV 43H,#250 ;設定開門時間 14的倍數(實際上液晶顯示器執行指令占用了時間,開門時間會比14*250MS大)
;44H號單元存放輸入錯誤的次數
;45H為定時器0中斷次數
;46H為定時器1中斷次數
MOV 47H,#250 ;輸入密碼時間設定,50MS倍數
MOV SP,#60H
CLR OPEN
CLR SPEAK ;初始化輸出設備
CLR ENTER ;標志位初始化
MOV TMOD,#11H ;定時器工作方式2
MOV TH0,#3CH ;初值50MS
MOV TL0,#0BH
MOV TH1,#3CH
MOV TL1,#0BH
SETB EA
SETB ET0
SETB ET1
MOV TCON,#00000000B ;電平觸發
START: MOV R0,30H
MOV R1,#31H
SS1: MOV @R1,#00H
INC R1
DJNZ R0,SS1 ;將輸入密碼緩沖單元清零
MOV P1,#0FH ;初始化按鍵口
MOV R1,#31H ;從31號單元開始存放按建輸入的密碼
CLR 20H ;報警標志清零
CLR 21H ;密碼超時標志
MOV 46H,#00H ;超時后對定時器中斷次數清零,便于下一輪重新計時
INIT: ACALL SELLCD ;設定液晶工作方式
ACALL LINE1 ;在第一行顯示
MOV DPTR,#MES_P ;顯示請輸入密碼
ACALL DISPLAY
setb EX0 ;開中斷,允許鍵盤輸入
KEYIN: JB 21H,ERR ;超時轉到錯誤程序
JNB ENTER,KEYIN ;等待ENTER按下
CLR ENTER
clr EX0 ;密碼輸入完后鎖定鍵盤
;當使用邊沿觸發時用上面的指令為什么禁止不了中斷???
;========== 密碼判斷程序 ============
COMP:
MOV DPTR,#PASS
MOV R4,30H ;密碼的長度
MOV A,#0
MOV R1,#31H
LOOP: MOV R5,A
MOVC A,@A+DPTR
MOV PASSBUF,A ;取出系統設定的密碼
MOV A,@R1 ;從31號單元開始取出輸入的密碼
CJNE A,PASSBUF,ERR ;比較
MOV A,R5
INC A
INC R1 ;取下一位
DJNZ R4,LOOP
;正確
MATCH: MOV A,#01H
ACALL ENABLE ;清屏,光標復位
ACALL LINE1 ;從第一行開始顯示
MOV DPTR,#MES_C
ACALL DISPLAY ;顯示"請進"
ACALL LINE2
MOV DPTR,#TAB_1
ACALL DISPLAY
SETB OPEN ;開門
MOV 44H,#00H ;輸入錯誤次數清零
MOV R6,43H
ACALL DELAY
CLR OPEN ;復位
JMP START
;錯誤
ERR: ACALL BACK
MOV R6,#03H
ACALL DELAY
ACALL BACK ;輸錯提示音,鳴兩下
MOV A,#01H
ACALL ENABLE
ACALL LINE1
MOV DPTR,#MES_E
ACALL DISPLAY ;顯示錯誤
MOV R6,#40H
ACALL DELAY
INC 44H
MOV A,44H
CJNE A,#03H,EE0
EE0: JC ERROUT ;輸錯不到三次返回
MOV 44H,#00H ;清零
ACALL WRANING ;報警
ERROUT: JMP START
;=========== 按鍵中斷服務程序 ==========
KEY_INT:push acc
push psw
clr ex0
acall delay10ms ;延時消抖
SETB TR1 ;啟動定時器
ACALL SMKEY ;按鍵識別
MOV A,KEYNUMBER ;返回按鍵號
ACALL BACK ;按鍵發聲
MOV R3,A
CJNE R3,#0BH,K1 ;ENTER是否按下
SETB ENTER
clr tr1 ;按下確認后關畢定時器
mov 46h,#00h ;對中斷次數清零
AJMP KEY_RTN
K1: ADD A,#30H ;將按鍵號轉換為ASCⅡ碼
MOV @R1,A ;將輸入的密碼存入緩沖單元
INC R1 ;修改地址
ACALL WRDATA ;輸入一位顯示一個"*"
KEY_RTN:pop psw
pop acc
setb ex0
RETI
;=========== 按鍵識別程序 ==========
SMKEY:
MOV A,P1
ANL A,#0FH
WKEY: MOV B,A ;反轉法查詢
MOV P1,#0F0H
NOP
MOV A,P1
ANL A,#0F0H
ORL A,B
MOV P1,#0FH ;還原P1口初態
CJNE A,#0EEH,WKEY1
MOV KEYNUMBER,#00H
AJMP RETURN
WKEY1: CJNE A,#0EDH,WKEY2
MOV KEYNUMBER,#01H
AJMP RETURN
WKEY2: CJNE A,#0EBH,WKEY3
MOV KEYNUMBER,#02H
AJMP RETURN
WKEY3: CJNE A,#0E7H,WKEY4
MOV KEYNUMBER,#03H
AJMP RETURN
WKEY4: CJNE A,#0DEH,WKEY5
MOV KEYNUMBER,#04H
AJMP RETURN
WKEY5: CJNE A,#0DDH,WKEY6
MOV KEYNUMBER,#05H
AJMP RETURN
WKEY6: CJNE A,#0DBH,WKEY7
MOV KEYNUMBER,#06H
AJMP RETURN
WKEY7: CJNE A,#0D7H,WKEY8
MOV KEYNUMBER,#07H
AJMP RETURN
WKEY8: CJNE A,#0BEH,WKEY9
MOV KEYNUMBER,#08H
AJMP RETURN
WKEY9: CJNE A,#0BdH,WKEY10
MOV KEYNUMBER,#09H
AJMP RETURN
WKEY10: CJNE A,#0BbH,WKEY11
MOV KEYNUMBER,#0AH
AJMP RETURN
WKEY11: CJNE A,#0B7H,RETURN
MOV KEYNUMBER,#0BH ;判斷哪個鍵按下,返回相應按鍵號碼
RETURN: MOV P1,#0FH
NOP
NOP
MOV A,P1
CPL A
ANL A,#0FH
JNZ RETURN ;等待按鍵松開
RET
;========== 液晶工作方式設置 ============
SELLCD: MOV A,#01H ;清屏,光標復位
ACALL ENABLE
MOV A,#38H ;設置顯示模式,8位兩行,5*7點陣
ACALL ENABLE
MOV A,#0DH ;顯示器開,允許內爍
ACALL ENABLE
MOV A,#06H ;文字不動,光標右移
ACALL ENABLE
RET
;========== 液晶執行指令 ============
ENABLE: CLR RS
CLR RW ;RS,RW同為低電平時寫入指令
MOV P0,A
CLR E ;E由高變低時執行指令
ACALL WAIT
SETB E
RET
;========== WAIT ============
;判斷液晶是否忙的子程序
WAIT: MOV P0,#0FFH
CLR RS
SETB RW ;RW為高,RS為低時可讀忙信號
CLR E
NOP
SETB E
JB P0.7,WAIT
RET
;========== 顯示的起始地址 ============
;在第一行
LINE1: MOV A,#80H
ACALL ENABLE
RET
;在第二行
LINE2: MOV A,#0C0H
ACALL ENABLE
RET
;=========== 顯示程序 ============
DISPLAY:MOV R7,#00H
NEXT: MOV A,R7
MOVC A,@A+DPTR
CJNE A,#10H,DSP
RET
DSP: ACALL WRDATA
INC R7
AJMP NEXT
;========== 將A里面的數據寫入液晶 ============
WRDATA: SETB RS
CLR RW
MOV P0,A
CLR E
ACALL WAIT
SETB E
RET
;=========== 報警程序 ============
WRANING: SETB TR0
ACALL BACK
MOV R4,#00H
ACALL D2
JNB 20H, WRANING
RET
;=========== 發聲程序 ============
BACK: MOV R0,#100
KK1: CPL SPEAK
LCALL DELAY2MS
DJNZ R0,KK1 ;不斷取反P2.0使其產生一定頻率的方波推動揚聲器
RET ;延時的長短可以改變輸出的頻率
;=========== INTT0 ============
;報警時間設定
INTT0: PUSH ACC
PUSH PSW
MOV TH0,#3CH
MOV TL0,#0BH
INC 45H
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
電子密碼鎖.rar
(121.75 KB, 下載次數: 52)
2021-4-18 20:02 上傳
點擊文件名下載附件
師兄改的
下載積分: 黑幣 -5
作者:
Flechazo77
時間:
2022-5-27 09:01
請問原本設定好的密碼是什么呢
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
va在线
|
欧美日韩国产精品激情在线播放
|
欧美日韩国产一区二区三区
|
天天射天天操天天干
|
欧美日韩一区二区三区四区
|
午夜激情影院
|
成人性生交大片免费看r链接
|
深夜福利影院
|
中文字幕高清
|
性生生活大片免费看视频
|
久久久久久综合
|
久久精品小视频
|
毛片站
|
欧美亚洲国语精品一区二区
|
国产人成精品一区二区三
|
成人精品免费视频
|
成人毛片网
|
国内精品视频在线观看
|
亚洲精品18
|
久久久综合久久
|
视频1区2区
|
成人免费一区二区三区牛牛
|
国产精品入口麻豆www
|
波多野结衣av中文字幕
|
久久国产精品免费一区二区三区
|
一级黄色录像毛片
|
欧美精品一区二区三区在线播放
|
久久国产精品视频
|
91啪影院
|
瑞克和莫蒂第五季在线观看
|
久久伊人免费视频
|
成人午夜性成交
|
欧美一区视频在线
|
97超碰人人
|
中文字幕丁香5月
|
av官网在线
|
欧美精品91
|
中文字幕免费视频
|
精品99久久
|
国产成人综合久久
|
日本粉嫩一区二区三区视频
|