第1章 概 述 .............................................................. 1 第2章 系统总体方案设计 .......................................... 2 第3章 硬件电路设计 ................................................ 4 3.1 键盘电路设计 ......................................................... 4 3.2LED显示电路 .......................................................... 6 3.3 开锁电路 ................................................................. 8 3.4报警电路 .................................................................. 9 第4章 软件设计 .......................................................... 9 4.1软件设计思路 ........................................................ 10 4.2 各子程序设计 ....................................................... 10 第5章 系统调试 ........................................................ 16 第6章 心得体会 ........................................................ 17 第7章 参考文献 ........................................................ 18 第8章 附录 ................................................................ 19 8.1源程序清单 ............................................................ 19 8.2硬件原理图 ............................................................ 26
第1章 概 述
随着科技的进展,单片机已不是一个生疏的名词,它的显现是近代运算机技术进展史上的一个重要里程碑,因为单片机的产生标志着运算机正式形成了通用运算机系统和嵌入式运算机系统两大分支。单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器外表、汽车电子系统、工业操纵单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。 本文所涉及的是市场占有率最高的是MCS—51系列,因为世界上专门多知名的IC生产厂家都生产51兼容的芯片。到目前为止,MCS—51单片机已有数百个品种,还在不断推出功能更强的新产品。
本设计是基于单片机的密码锁设计方案,依照要求,给出了该单片隐秘码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机储备单元的分配、汇编语言源程序及详细注释等内容。
第2章 系统总体方案设计
系统总体设计方案框图2.1:
图2.1系统总体设计方案框
本方案采纳一种是用以89S51为核心的单片机操纵方案。利用单片机警活的编程设计和丰富的I/O端口,及其操纵的准确性,实现差不多的密码锁功能。
初步设计思路如下:
1. 输入密码用矩形键盘,包括数字键和功能键。
2. LED数码管显示输入密码,用74JS247驱动数码管发光显示数码,用74LS138操纵各位显示器分时进行显示。 3. 用发光二极管代替开锁的电路,发光表示开锁。 4. 输入密码错误次数超过3次,系统报警。
5. 打开电源后,显示器显示〝000000〞,设原始密码为〝123456〞,只要输入此密码便了开门。如此可预防停电后再来电时无密码可用。
6. 按〝C〞键,清除显示器为〝000000〞。
7. 欲重新设定密码,先输入密码在案〝*〞。
8. 输入密码,再按〝D〞键。假设密码与设定密码相同,那么开门。否那么显示器清为〝000000〞。
9. 软件的设计要紧包括键盘键值的读取,LED显示程序,密码比较程序和报警程序。
第3章 硬件电路设计
3.1 键盘电路设计
使用矩阵键盘,因此本设计就采纳行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采纳如此方法。其原理如图3.1
。
图3.1 矩阵键盘
每一条水平〔行线〕与垂直线〔列线〕的交叉处不相通,而
是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。
在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序第一执行等待按键并确认有无按键按下的程序段。
当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。
对比图3.1所示的4×4键盘,说明线反转个工作原理。 第一辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判定。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。假如有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。
判定键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,假如全为1,那么所按下的键不在此列;假如不全为1,那么所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。
具体的功能设计如表3.1: 按 键 1-9键 * 键 D键 # 键 键 名 数 字 键 重 设 密 码 键 确 定 键 清 除 键 表3.1 按键功能
功 能 说 明 输 入 密 码 设 定 新 密 码 比 较 密 码 使 显 示 器 清 零 3.2LED显示电路
本系统设计的显示电路是为了给使用者以提示而设置的。本系统的显示采纳串行显示的方式,只使用单片机的一个串行口,利用74LS247驱动数码管发光显示数码和74LS138操纵位选信号,就能够完成单片机的显示功能,显示电路的电路原理图如图3.2所示。
用P0.0—P0.3接74LS247的A,B,C,D四端口,74LS247的输出口接LED的七段显示;而P0.4—P0.6接74LS138的A,B,C三个输入口,74LS138的输出口接LED的位显示。通过软件实现数字和位操纵。
图3.2 LED显示电路
用74LS247能够操纵输出什么字型。74LS247的逻辑功能表如表3.2:
表3.2 74LS247的逻辑功能表
用74LS138操纵位循环显示,其逻辑功能表如表3.3: B A Y1 Y2 Y0 Y3 Y4 Y5 Y6 Y7 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 表3.3 74LS138逻辑功能表
C 0 0 0 0 1 1 1 1 3.3 开锁电路
在本次设计中,基于节约材料的原那么,临时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。电路图如3.3所示。当P2.0口输出低电平常,二极管发光,表示开锁。
图3.3 开锁电路
3.4报警电路
图3.4报警电路
报警模块由蜂鸣器和单片机组成。选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100mA驱动电流。蜂鸣器电路如图3.4所示。当89C51的P2.1口输出为低电平常,蜂鸣器产生蜂鸣音,89C51输出为高电平常,蜂鸣器不发声。
第四章 软件设计
4.1软件设计思路
电子密码锁工作的要紧过程是LED数码管提示开始输入密码,通过键盘输入密码,同时LED显示密码输入情形,按下确认键后判定密码的正确性,作出开锁或报警处理。当输入密码连续输入错误3次时,系统报警。
密码的设定,在此程序中密码是固定40H—45H 中,假设预设的密码为\"123456\"共6位密码。
由于采纳两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,第一输入密码的长度,接着依照密码的长度输入密码的位数,直到所有长度的密码都差不多输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判定比较处理状态并给出相应的处理过程。
4.2 各子程序设计
4.2.1 键盘扫描子程序 键盘扫描流程图如图4.2.1
图4.2.1 键盘扫描流程图
键盘扫描子程序如下: L2: MOV R3,#0F7H MOV R1,#00H L3: MOV A,R3 MOV P1,A MOV A,P1 MOV R4,A SETB C
MOV R5,#04H L4: RLC A JNC KEYIN INC R1 DJNZ R5,L4 CALL DISP MOV A,R3 SETB C RRC A MOV R3,A JC L3 JMP L2
4.2.2 LED显示子程序 LED显示流程图如图4.2.2
图4.2.2 LED显示流程图
LED显示子程序如下: DISP:MOV R0,#45H DISP1: MOV A,@R0 ADD A,#50H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#40H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#30H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#20H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#10H MOV P0,A
CALL DELAY DEC R0 MOV A,@R0 ADD A,#00H MOV P0,A CALL DELAY RET
4.2.3 密码比较和报警程序 密码比较和报警流程图如4.2.3
图4.2.3 密码比较和报警流程
密码比较和报警程序: COMP: MOV R1,#45H MOV R0,#35H MOV R2,#06H C1: MOV A,@R1 XRL A,@R0 JNZ C3 DEC R1 DEC R0 DJNZ R2,C1 CLR P2.0 MOV R2,#200 C2: MOV R6,#248 DJNZ R6,$ DJNZ R2,C2 C3: INC R5 MOV A,R5 MOV R5,A CJNE R5 ,#03H,C4 CLR P2.1 MOV R5,#00H C4: JMP START
第5章 系统调试
本次调试采纳Protues软件仿真。第一设计电子密码锁的源程序,源程序通过汇编后,生成的目标文件通过仿真调试。
依次按下1,2,3,4,5,6后,LED显示如图5.1
图5.1 LED显示
按下确定键后,二极管亮,表示密码正确开门。如图5.2
图5.2 密码正确开门
第6章 心得体会
课程设计是培养学生综合运用所学知识,发觉,提出,分析和解决实际问题,锤炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术进展的日新日异,单片机差不多成为当今运算机应用中空前活跃的领域, 在生活中能够说得是无处不在。因此作为二十一世纪的大学来说把握单片机的开发技术是十分重要的。
回忆起此次单片机课程设计,至今我仍感叹颇多,的确,从选题到定稿,从理论到实践,在整整两星期的生活里,能够说得是苦多于甜,然而能够学到专门多专门多的的东西,同时不仅能够巩固了往常所学过的知识,而且学到了专门多在书本上所没有学到过的知识。通过这次课程设计使我明白得了理论与实际相结合是专门重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立摸索的能力。在设计的过程中遇到问题,能够说得是困难重重,这如何说第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发觉了自己的不足之处,对往常所学过的知识明白得得不够深刻,把握得不够牢固,对单片机汇编语言把握得不行……通过这次课程设计之后,一定把往常所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了专门多编程问题,在同学的关心下,终于游逆而解。专门感谢!
第7章 参考文献
«单片机原理及及应用»王迎旭编 机械工业出版社 2001 «单片机应用程序设计技术» 周航慈 著 北京航空航天大学出版社
第8章 附录
8.1 源程序清单
ORG 00H MOV R5,#00H MOV R7,#00H DJNZ R7,$ MOV R7,#10H MOV R6,#06H MOV R1,#35H L1: MOV A,R7
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV @R1,A DEC R1 INC R7 DJNZ R6,L1 START: ORL P2,#0FFH MOV R4,#06H MOV R0,#40H CLEAR: MOV @R0,#00H INC R0
DJNZ R4,CLEAR
L2: MOV R3,#0F7H MOV R1,#00H L3: MOV A,R3 MOV P1,A MOV A,P1 MOV R4,A SETB C MOV R5,#04H L4: RLC A JNC KEYIN INC R1 DJNZ R5,L4 CALL DISP MOV A,R3 SETB C RRC A MOV R3,A JC L3 JMP L2 KEYIN: MOV A,R1 XRL A,#0BH JZ X3 MOV A,R1 XRL A,#0FH JZ X4
MOV R7,#10 D1: MOV R6,#24 DJNZ R6,$ DJNZ R7,D1 D2: MOV A,P1 XRL A,R4 JZ D2 MOV A,R1
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV R7,A XRL A,#0AH JZ SET0 MOV A,R7 XRL A,#0BH JZ START MOV A,R7 XRL A,#0CH JZ L2 MOV A,R7 XRL A,#0DH JZ L2 MOV A,R7 XCH A,40H XCH A,41H
XCH A,42H XCH A,43H XCH A,44H XCH A,45H CALL DISP JMP L2 X3: JMP DISP2 X4: JMP COMP DISP:MOV R0,#45H DISP1: MOV A,@R0 ADD A,#50H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#40H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#30H MOV P0,A CALL DELAY DEC R0 MOV A,@R0
ADD A,#20H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#10H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#00H MOV P0,A CALL DELAY RET
SET0: MOV R2,#06H MOV R0,#40H MOV R1,#30H E1: MOV A,@R0 XCH A,@R1 INC R0 INC R1 DJNZ R2,E1 CALL DELAY E2: JMP START COMP: MOV R1,#45H
MOV R0,#35H MOV R2,#06H C1: MOV A,@R1 XRL A,@R0 JNZ C3 DEC R1 DEC R0 DJNZ R2,C1 CLR P2.0 MOV R2,#200 C2: MOV R6,#248 DJNZ R6,$ DJNZ R2,C2 C3: INC R5 MOV A,R5 MOV R5,A CJNE R5 ,#03H,C4 CLR P2.1 MOV R5,#00H C4: JMP START DISP2: MOV R0,#35H CALL DISP MOV A,P1 XRL A,R4 JZ DISP2
CALL DELAY JMP START DELAY: MOV R7,#C3 D3: MOV R6,#248 DJNZ R7,D3 RET ORG 300H
TABLE: DB 01H 02H 03H 0CH DB 04H 05H 06H 0DH DB 07H 08H 09H 0EH DB 0AH 00H 0BH 0FH DB 01H 02H 03H 04H 05H 06H END
8.2 硬件原理图
因篇幅问题不能全部显示,请点此查看更多更全内容