我的第一个单片机程序设计,当时花费一周做汇编编程及Proteus仿真,后面一周做硬件的实物焊接。同各位电子爱好者怀念下玩51单片机的日子,汇编编程完全就是依靠对底层硬件的理解,去思考实现一个功能需要用到的汇编指令组合。每一句都值得推敲,虽然没有像C编程一样的demo,能够快速实现。工作近3年后的我才发现能够保持读书时代的不急不燥、勇敢面对未知、追求最好的心性是多么的珍贵。
附件中包含了详细的设计要求、设计原理图、仿真过程、实物验收。文档末尾有最重要的汇编源代码。
密码锁长度为6位数字,初始密码为系统预设。
密码输入正确后,输出一个电磁锁开锁信号,开锁指示灯亮,并发出两声“滴”提示,4秒后开锁信号与已开锁指示清零。
密码输入错误时,发出一声长“滴”声提示密码错误,密码错误指示灯亮。
三次密码错误时,发出长鸣警报声,密码错误指示灯亮,报警指示灯亮,此后15秒内无法再次输入密码,15秒后清楚所有报警和指示。
5秒内无任何操作,清除所有输入内容,等待下一次输入。
扩展功能:
密码可以任意修改。
修改的密码断电后可以长期保存。
(1)初始化界面 (2)当密码输入正确后 (3)当密码输入正确后按下改密
(4)当密码输入错误后 (5)当密码连续三次输入错误后
4.2.2 实物调试 (1)初始界面 (2)输入密码正确 (3)密码输入错误 (4)三次密码错误 附录1:元件清单
附录2 安装图 附录3 实物验收
单片机源程序如下: - ORG 0000H
- MOV 70H,#0;????
- MOV 71H,#0
- MOV 72H,#0
- MOV 73H,#0
- MOV 74H,#0
- MOV 75H,#0
- LJMP MAIN
- ORG 001BH
- LJMP T1ZD
- ORG 0100H
- RS EQU P0.5
- RW EQU P0.6
- E EQU P0.7
- LCD EQU P2
- BF EQU P2.7
- MAIN: MOV P1,#0FH
- SETB P3.7
- SETB P0.0
- SETB P0.1
- SETB P0.2
- LCALL T1ZDCSH
- LCALL ChuShiHua
- LCALL ShuRuXianShi
- LCALL JianYan
- LJMP MAIN
- T1ZD: MOV TH1,#3CH
- MOV TL1,#0B0H
- CLR TF1
- DJNZ 44H,FH
- LCALL QingPing
- MOV 60H,#0
- MOV 61H,#0
- MOV 62H,#0
- MOV 63H,#0
- MOV 64H,#0
- MOV 65H,#0
- MOV R0,#60H
- CLR TR1
- LCALL ChuShiHua
- FH: RETI
- T1ZDCSH: SETB EA
- SETB ET1
- MOV TMOD,#10H
- MOV TH1,#3CH
- MOV TL1,#0B0H
- RET
- ShuRuXianShi: MOV R0,#60H;XIANSHIMIMA:???????????,??????60h
- CunMiMa: LCALL JianPan
- MOV A,43H
- XRL A,#13H
- JZ ShanChu
- MOV @R0,43H
- MOV A,@R0
- ADD A,#30H
- LCALL WDATA
- INC R0
- LCALL D500MS
- INC 46H
- CJNE R0,#66H,CunMiMa
- LCALL JianPan
- MOV A,43H
- XRL A,#29H
- JZ FanHui
- LOOP: SJMP LOOP
- FanHui: RET
- ShanChu: DEC R0
- MOV A,R0
- ADD A,#69H
- LCALL WCMD
- MOV A,#30
- LCALL WDATA
- LCALL D500MS
- MOV A,R0
- ADD A,#69H
- LCALL WCMD
- LJMP CunMiMa
- JianYan: CLR TR1
- LCALL QingPing
- LCALL BiJiao
- RET
- BiJiao: MOV R1,#60H
- MOV R0,#70H
- HL: MOV A,@R0
- XRL A,@R1
- JNZ JRMMCW;??? ??????
- INC R0
- INC R1
- CJNE R1,#66H,HL
- LCALL MiMaZhengQue
- RET
- JRMMCW: LCALL MiMaCuoWu
- RET
- MiMaZhengQue: MOV 44H,#80
- SETB TR1
- MOV 79H,#0
- MOV A,#80H
- LCALL WCMD
- MOV DPTR,#ZhengQueTiShi
- MOV R2,#0
- D00001: MOV A,R2
- MOVC A,@A+DPTR
- LCALL WDATA
- INC R2
- CJNE R2,#16,D00001
- CLR P0.0
- CLR P3.7
- LCALL D100MS
- SETB P3.7
- LCALL D500MS
- CLR P3.7
- LCALL D100MS
- SETB P3.7
- LCALL ShiFouXiuGai
- LCALL D1S
- SETB P0.0
- RET
- ShiFouXiuGai: LCALL QingPing
- MOV DPTR,#XiuGaiTiShi
- MOV A,#83H
- LCALL WCMD
- MOV R7,#0
- LL: MOV A,R7
- MOVC A,@A+DPTR
- LCALL WDATA
- INC R7
- CJNE R7,#10,LL
- MOV A,#0C1H
- LCALL WCMD
- LLL: MOV A,R7
- MOVC A,@A+DPTR
- LCALL WDATA
- INC R7
- CJNE R7,#24,LLL
- MOV A,#0CEH
- LCALL WCMD
- LCALL JianPan
- LCALL D1S
- MOV A,43H
- XRL A,#29H
- JZ XiuGaiMiMa
- RET
- XiuGaiTiShi:DB'Change ThePassword?(Y/N)'
- XiuGaiMiMa: CLR TR1
- LCALL QingPing
- MOV DPTR,#XGTiShi
- MOV A,#82H
- LCALL WCMD
- MOV R7,#0
- XIU:MOV A,R7
- MOVC A,@A+DPTR
- LCALL WDATA
- INC R7
- CJNE R7,#12,XIU
- MOV A,#0C1H
- LCALL WCMD
- EXIU: MOV A,R7
- MOVC A,@A+DPTR
- LCALL WDATA
- INC R7
- CJNE R7,#28H,EXIU
- MOV A,#0C9H
- LCALL WCMD
- MOV R1,#50H
- XC: LCALL JianPan
- MOV A,43H
- XRL A,#13H
- JZ ShanChuXiuGai
- MOV @R1,43H
- MOV A,@R1
- ADD A,#30H
- LCALL WDATA
- INC R1
- LCALL D500MS
- CJNE R1,#56H,XC
- LCALL D1S
- LCALL ShiFouBaoCun
- RET
- ShanChuXiuGai: DEC R1
- MOV A,R1
- ADD A,#79H
- LCALL WCMD
- MOV A,#30
- LCALL WDATA
- LCALL D500MS
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
以上代码51hei提供下载:
|