51單片機(jī)的LCD1602液晶屏密碼鎖匯編程序
;========== 液晶工作方式設(shè)置 ============
SELLCD: MOV A,#01H ;清屏,光標(biāo)復(fù)位
;========== 液晶執(zhí)行指令 ============
ENABLE: CLR RS
CLR E ;E由高變低時(shí)執(zhí)行指令
;========== WAIT ============
;判斷液晶是否忙的子程序
WAIT: MOV P0,#0FFH
SETB RW ;RW為高,RS為低時(shí)可讀忙信號(hào)
CLR E
NOP
SETB E
JB P0.7,WAIT
RET
;========== 顯示的起始地址 ============
;在第一行
LINE1: MOV A,#80H
;在第二行
LINE2: MOV A,#0C0H
;=========== 顯示程序 ============
DISPLAY:MOV R7,#00H
NEXT: MOV A,R7
DSP: ACALL WRDATA
;========== 將A里面的數(shù)據(jù)寫入液晶 ============
WRDATA: SETB RS
MOV P0,A
CLR E
ACALL WAIT
SETB E
RET
;=========== 報(bào)警程序 ============
WRANING: SETB TR0
ACALL BACK
MOV R4,#00H
ACALL D2
JNB 20H, WRANING
;=========== 發(fā)聲程序 ============
BACK: MOV R0,#100
KK1: CPL SPEAK
DJNZ R0,KK1 ;不斷取反P2.0使其產(chǎn)生一定頻率的方波推動(dòng)揚(yáng)聲器
RET ;延時(shí)的長短可以改變輸出的頻率
;=========== INTT0 ============
;報(bào)警時(shí)間設(shè)定
INTT0: PUSH ACC
INTT0OUT:POP PSW
;=========== INTT1 ============
;輸入超時(shí)
INTT1: PUSH ACC
INC 46H
MOV A,46H
CLR TR1 ;關(guān)閉定時(shí)器
SETB 21H ;時(shí)間到置標(biāo)志位
MOV 47H,#00H ;中斷次數(shù)清零
INTT1OUT:POP PSW
;=========== 延時(shí)程序 ============
DELAY: MOV R4,#38H
D1: MOV R5,#0F9H
DELAY2MS: MOV R4,#02H
D2: MOV R5,#0F0H
DELAY10ms: MOV R4,#20
D3: MOV R5,#248
PASS: DB "1314520"
MES_P: DB "Password?",10H
MES_C: DB " welcome!",10H
MES_E: DB "Error!",10H
TAB_1: DB "xiao_fa office",10h
評(píng)論