51单片机的LCD1602液晶屏密码锁汇编程序
;========== 液晶工作方式设置 ============
SELLCD: MOV A,#01H ;清屏,光标复位
;========== 液晶执行指令 ============
ENABLE: CLR RS
CLR E ;E由高变低时执行指令
;========== WAIT ============
;判断液晶是否忙的子程序
WAIT: MOV P0,#0FFH
SETB RW ;RW为高,RS为低时可读忙信号
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里面的数据写入液晶 ============
WRDATA: SETB RS
MOV P0,A
CLR E
ACALL WAIT
SETB E
RET
;=========== 报警程序 ============
WRANING: SETB TR0
ACALL BACK
MOV R4,#00H
ACALL D2
JNB 20H, WRANING
;=========== 发声程序 ============
BACK: MOV R0,#100
KK1: CPL SPEAK
DJNZ R0,KK1 ;不断取反P2.0使其产生一定频率的方波推动扬声器
RET ;延时的长短可以改变输出的频率
;=========== INTT0 ============
;报警时间设定
INTT0: PUSH ACC
INTT0OUT:POP PSW
;=========== INTT1 ============
;输入超时
INTT1: PUSH ACC
INC 46H
MOV A,46H
CLR TR1 ;关闭定时器
SETB 21H ;时间到置标志位
MOV 47H,#00H ;中断次数清零
INTT1OUT:POP PSW
;=========== 延时程序 ============
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
评论