单片机新型电子锁课程设计报告Word格式.docx
《单片机新型电子锁课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《单片机新型电子锁课程设计报告Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
第三部分:
介绍了电子锁的总原理图和主要模块流程图;
第四部分:
介绍了电子锁的性能测试与分析;
第五部分:
是我自己的设计结论与设计心得。
2设计任务和要求
设计任务是利用开发板设计一个电子锁;
设计要求:
自己在自己电脑上写好要连接的电子锁的程序,再在实验室里将已经调试成功的电子锁的程序下载到开发板上,观察并记录开发板上的等的运行情况;
如果不是如预期那样运行,要找出原因并进行调试,最后对自己的实验设计进行验收。
2.1方案设计与论证
本课程设计使用设计电子锁的这个方案的原因是:
这是我们汇编语言的第一次课程设计,而电子锁,这个方案不会很难设计,还能让我们体验软件编程的是如何与实际(开发板)联系的,更能让我们学到并运用汇编语言。
由于其结构简单、传统机械锁常常强迫打开。
有许多种类的电子门锁的性能和安全性已经超过了机械锁。
由于具有较高的机密性和弹性,许多用户使用电子门锁。
对这套方案理解得较为透彻。
所以,我才选择了设计电子锁的这个设计方案。
2.2单元电路设计与参数计算
图2.2-1电子锁的电路图
如图2.2-1所示,这是我设计的电子锁的电路图。
2.3设计框图、用户界面
在这里,我将提供我所设计的电子锁的设计框图如下:
下图是在制作PCB板时所画的电路原理图:
2.3-2电子锁的电路原理图
下图为已完成的PCB板设计:
2.3-3电子锁的PCB板设计
3.1总原理图及元器件清单
图3.1-2硬件连接图
如图所示,图3.1-1是总原理图,图3.1-2是根据总原理图连接好的硬件连接图,图3.1-3是设计电子锁的原件清单图。
按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。
AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:
4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。
因此,本电子锁实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、开关、电源等电路和必要的软件组成的单个单片机。
其具体硬件组成如图3所示。
3.2主要流程图
图3.2-1电子锁的设计流程图
如图所示,图3.2-1图4是课程设计——电子锁设计的主要流程图。
4性能测试与分析
单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到电子锁工作的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机来实现电子锁的功能。
软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。
下面我们以简单的控制功能即实现电子锁的软件编程方法。
程序如下:
RSBITP2.7
RWBITP2.6
EBITP2.5
ENTERBIT22H.0
L1BITP3.0
OPENBITP3.6
SPEAKBITP3.7
PASSBUFEQU40H
KEYNUMBEREQU41H;
存放识别后的按键号
ORG0000H
AJMPMAIN
ORG0003H
JMPKEY_INT
ORG000BH
AJMPINTT0
ORG001BH
AJMPINTT1
ORG0030H
MOVA,#01H
MOVP3,A
RET
;
==========主程序开始==============
MAIN:
MOV30H,#06H;
输入密码为6位最高只可设15位
MOV42H,#200;
设定报警的时间,42H单元里的数*50MS
MOV43H,#250;
设定开门时间14的倍数(实际上液晶显示器执行指令占用了时间,开门时间会比14*250MS大)
;
44H号单元存放输入错误的次数
45H为定时器0中断次数
46H为定时器1中断次数
MOV47H,#250;
输入密码时间设定,50MS倍数
MOVSP,#60H
CLROPEN
CLRSPEAK;
初始化输出设备
CLRENTER;
标志位初始化
MOVTMOD,#11H;
定时器工作方式2
MOVTH0,#3CH;
初值50MS
MOVTL0,#0BH
MOVTH1,#3CH
MOVTL1,#0BH
SETBEA
SETBET0
SETBET1
MOVTCON,#00000000B;
电平触发
START:
MOVR0,30H
MOVR1,#31H
SS1:
MOV@R1,#00H
INCR1
DJNZR0,SS1;
将输入密码缓冲单元清零
MOVP1,#0FH;
初始化按键口
MOVR1,#31H;
从31号单元开始存放按建输入的密码
CLR20H;
报警标志清零
CLR21H;
密码超时标志
MOV46H,#00H;
超时后对定时器中断次数清零,便于下一轮重新计时
INIT:
ACALLSELLCD;
设定液晶工作方式
ACALLLINE1;
在第一行显示
MOVDPTR,#MES_P;
显示请输入密码
ACALLDISPLAY
setbEX0;
开中断,允许键盘输入
KEYIN:
JB21H,ERR;
超时转到错误程序
JNBENTER,KEYIN;
等待ENTER按下
CLRENTER
clrEX0;
密码输入完后锁定键盘
当使用边沿触发时用上面的指令为什么禁止不了中断?
?
==========密码判断程序============
COMP:
MOVDPTR,#PASS
MOVR4,30H;
密码的长度
MOVA,#0
LOOP:
MOVR5,A
MOVCA,@A+DPTR
MOVPASSBUF,A;
取出系统设定的密码
MOVA,@R1;
从31号单元开始取出输入的密码
CJNEA,PASSBUF,ERR;
比较
MOVA,R5
INCA
INCR1;
取下一位
DJNZR4,LOOP
正确
MATCH:
ACALLENABLE;
清屏,光标复位
从第一行开始显示
MOVDPTR,#MES_C
ACALLDISPLAY;
显示"
请进"
ACALLLINE2
MOVDPTR,#TAB_1
SETBOPEN;
开门
MOV44H,#00H;
输入错误次数清零
MOVR6,43H
ACALLDELAY
CLROPEN;
复位
JMPSTART
错误
ERR:
ACALLBACK
MOVR6,#03H
ACALLBACK;
输错提示音,鸣两下
ACALLENABLE
ACALLLINE1
MOVDPTR,#MES_E
显示错误
MOVR6,#40H
INC44H
EE0:
JCERROUT;
输错不到三次返回
清零
ACALLWRANING;
报警
ERROUT:
===========按键中断服务程序==========
KEY_INT:
pushacc
pushpsw
clrex0
acalldelay10ms;
延时消抖
SETBTR1;
启动定时器
ACALLSMKEY;
按键识别
MOVA,KEYNUMBER;
返回按键号
按键发声
MOVR3,A
CJNER3,#0BH,K1;
ENTER是否按下
SETBENTER
clrtr1;
按下确认后关毕定时器
mov46h,#00h;
对中断次数清零
AJMPKEY_RTN
K1:
ADDA,#30H;
将按键号转换为ASCⅡ码
MOV@R1,A;
将输入的密码存入缓冲单元
修改地址
ACALLWRDATA;
输入一位显示一个"
*"
KEY_RTN:
poppsw
popacc
setbex0
RETI
===========按键识别程序==========
SMKEY:
MOVA,P1
ANLA,#0FH
WKEY:
MOVB,A;
反转法查询
MOVP1,#0F0H
NOP
ANLA,#0F0H
ORLA,B
还原P1口初态
CJNEA,#0EEH,WKEY1
MOVKEYNUMBER,#00H
AJMPRETURN
WKEY1:
CJNEA,#0EDH,WKEY2
MOVKEYNUMBER,#01H
WKEY2:
CJNEA,#0EBH,WKEY3
MOVKEYNUMBER,#02H
WKEY3:
CJNEA,#0E7H,WKEY4
MOVKEYNUMBER,#03H
WKEY4:
CJNEA,#0DEH,WKEY5
MOVKEYNUMBER,#04H
WKEY5:
CJNEA,#0DDH,WKEY6
MOVKEYNUMBER,#05H
WKEY6:
CJNEA,#0DBH,WKEY7
MOVKEYNUMBER,#06H
WKEY7:
CJNEA,#0D7H,WKEY8
MOVKEYNUMBER,#07H
WKEY8:
CJNEA,#0BEH,WKEY9
MOVKEYNUMBER,#08H
WKEY9:
CJNEA,#0BdH,WKEY10
MOVKEYNUMBER,#09H
WKEY10:
CJNEA,#0BbH,WKEY11
MOVKEYNUMBER,#0AH
WKEY11:
CJNEA,#0B7H,RETURN
MOVKEYNUMBER,#0BH;
判断哪个键按下,返回相应按键号码
RETURN:
MOVP1,#0FH
CPLA
JNZRETURN;
等待按键松开
ACALLDELAY2s
==========液晶工作方式设置============
SELLCD:
MOVA,#01H;
MOVA,#38H;
设置显示模式,8位两行,5*7点阵
MOVA,#0DH;
显示器开,允许内烁
MOVA,#06H;
文字不动,光标右移
==========液晶执行指令============
ENABLE:
CLRRS
CLRRW;
RS,RW同为低电平时写入指令
MOVP0,A
CLRE;
E由高变低时执行指令
ACALLWAIT
SETBE
==========WAIT============
判断液晶是否忙的子程序
WAIT:
MOVP0,#0FFH
SETBRW;
RW为高,RS为低时可读忙信号
CLRE
JBP0.7,WAIT
==========显示的起始地址============
在第一行
LINE1:
MOVA,#80H
在第二行
LINE2:
MOVA,#0C0H
===========显示程序============
DISPLAY:
MOVR7,#00H
NEXT:
MOVA,R7
CJNEA,#10H,DSP
DSP:
ACALLWRDATA
INCR7
AJMPNEXT
==========将A里面的数据写入液晶============
WRDATA:
SETBRS
CLRRW
===========报警程序============
WRANING:
SETBTR0
MOVR4,#00H
ACALLD2
JNB20H,WRANING
===========发声程序============
BACK:
MOVR0,#100
KK1:
CPLSPEAK
LCALLDELAY2MS
DJNZR0,KK1;
不断取反P2.0使其产生一定频率的方波推动扬声器
RET;
延时的长短可以改变输出的频率
===========INTT0============
报警时间设定
INTT0:
PUSHACC
PUSHPSW
MOVTH0,#3CH
INC45H
MOVA,45H
CJNEA,42H,INTT0OUT
MOV45H,#00H
SETB20H;
置标志位
CLRTR0;
关闭定时器
INTT0OUT:
POPPSW
POPACC
===========INTT1============
输入超时
INTT1:
INC46H
MOVA,46H
CJNEA,47H,INTT1OUT
CLRTR1;
SETB21H;
时间到置标志位
MOV47H,#00H;
中断次数清零
INTT1OUT:
===========延时程序============
DELAY:
MOVR4,#38H
D1:
MOVR5,#0F9H
DJNZR5,$
DJNZR4,D1
DJNZR6,DELAY;
14R6毫秒
DELAY2MS:
MOVR4,#02H
D2:
MOVR5,#0F0H
DJNZR4,D2
DELAY10ms:
MOVR4,#20
D3:
MOVR5,#248
DJNZR4,D3
DELAY2s:
MOVR4,#100
D4:
DJNZR4,D4
PASS:
DB"
233228"
MES_P:
Password?
"
10H
MES_C:
welcome!
MES_E:
Error!
TAB_1:
bo-booffice"
10h
END
5结论与心得
当上述程序编写好以后,我们需要使用编译软件对其编译,得到单片机所能识别的二进制代码,然后再用编程器将二进制代码烧写到AT89C51单片机中,最后连接好电路通电,我们就看到LED1~LED8的“电子锁”效果了。
这次数电课程设计,虽然短暂但是让我得到多方面的提高:
1、提高了我们的逻辑思维能力,使我们在逻辑电路的分析与设计上有了很大的进步。
加深了我们对组合逻辑电路与时序逻辑电路的认识,进一步增进了对一些常见逻辑器件的了解。
另外,我们还更加充分的认识到,数字电路这门课程在科学发展中的至关重要性2,查阅参考书的独立思考的能力以及培养非常重要,我们在设计电路时,遇到很多不理解的东西,有的我们通过查阅参考书弄明白,有的通过网络查到,但由于时间和资料有限我们更多的还是独立思考。
3,相互讨论共同研究也是很重要的,经常出现一些问题,比如电路设计中的键盘电路的设计,开始并不理解键盘电路的原理,但是和其他的专业同学讨论后,理解了分键盘电路的基本原理后,很快的设计了电路原理图。
参考文献
[1]何立民.MCS-51系列单片机应用系统设计.北京:
北京航空航天大学出版社,1990.
《单片机课程设计指导》北京航天航空大学出版社2002
《基于MCS-51系列的单片机原理的应用设计》国防工业出版社1999
致谢
在这次课程设计的撰写过程中,我得到了许多人的帮助。
首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。
在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。
同时也感谢学院为我提供良好的做课程设计的环境。
虽然一开始是说独立完成设计,可是我发现,最后个人还是离不开集体,最后再一次感谢所有在设计中曾经帮助过我的良师益友。