1物电学院课程设计模板Word下载.docx
《1物电学院课程设计模板Word下载.docx》由会员分享,可在线阅读,更多相关《1物电学院课程设计模板Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
第二步,使用DXP2004设计硬件电路原理图,并设计PCB图完成人工布线(后因PCB板损坏决定采用万能板焊接的方法)。
第三步,使用KeiluVision3软件编写单片机的C语言程序、仿真、软件调试。
第四部,使用PROTEUS软件进行模拟软、硬件调试。
最后,联合软、硬件调试电路板。
工作量
2周时间,每天3学时,共计42学时
进度安排
第1天:
课程设计题目选择
第2-3天:
利用网络资源查找相关文献
第4-11天:
设计总体方案并确定相关方法
第11-12天:
进行编程利用仿真软件进行仿真
第13-14天:
打印课程设计报告书
主要参考资料
[1]郇玉龙.《单片机实验教学仿真系统的设计与开发》[M].山东:
山东师范大学出版社,2008:
51-53,59.
[2][1]郇玉龙.《单片机实验教学仿真系统的设计与开发》[M].山东:
51-53,59..
[3]徐金增.《单片机编程仿真实验系统设计与实现》[M].山东:
山东师范大学出版社,2009:
26-28..
[4]李力.《双处理器控制数字化焊接电源单片机系统》[M].天津:
天津大学出版社,2007:
18-21.
[5]苑海涛.《变频调速液压电梯单片机控制器的研究》[M].浙江:
浙江大学出版社,2006:
37-39.
[6]王芹.《单片机在高楼恒压供水系统中的应用》[M].青岛:
中国海洋大学出版社,2006:
37-39,41.
指导教师签字
教研室主任签字
摘要
随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤其突出,传统的机械锁由于其构造简单,安全性能低,无法满足人们的需求。
随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器,所以具有防盗报警功能的电子密码控制系统逐渐代替传统的机械式密码控制系统,克服了机械式密码控制的密码量少,安全性能差的缺点。
通过单片机编写密码程序,并用74LS47和3-8译码器74LS138
驱动的数码管来显示密码。
数码管可以时时显示当前输入的四位数字。
当输入密码正确时,对应的指示灯亮;
当密码不正确时,另一个对应的指示灯亮且并且发出声音报警。
关键词:
密码;
单片机;
报警
第1章绪论
1.1电子密码锁简介
电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。
现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。
其性能和安全性已大大超过了机械锁。
其特点如下:
(1)保密性好,编码量多,远远大于弹子锁。
随机开锁成功率几乎为零。
(2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。
(3)误码输入保护,当输入密码多次错误时,报警系统自动启动。
(4)无活动零件,不会磨损,寿命长。
(5)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。
(6)电子密码锁操作简单易行,一学即会
1.2电子密码锁的发展趋势
在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
目前门锁主要用弹子锁,其钥匙容易丢失;
保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。
针对这些锁具给人们带来的不便若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
它的出现为人们的生活带来了很大的方便,有很广阔的市场前景。
由于电子器件所限,以前开发的电子密码锁,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是基于EDA来实现的,其电路结构复杂,电子元件繁多,也有使用早先的20引角的2051系列单片机来实现的,但密码简单,易破解。
随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的单密码输入发展到现在的,密码加感应元件,实现了真真的电子加密,用户只有密码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提高出现了越来越多的电子密码锁。
出于安全、方便等方面的需要许多电子密码锁已相继问世。
但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。
由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子防盗锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗锁,这样对盗贼而言是“道高一尺、魔高一丈”。
组合使用信息也能够使电子防盗锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。
可以看出组合使用电子信息是电子密码锁以后发展的趋势。
1.3本设计所要实现的目标
本次设计使用ATMEL公司的AT89S51实现一基于单片机的电子密码锁的设计,其主要具有如下功能:
(1)密码通过键盘输入,若密码正确,则将锁打开。
(2)报警、锁定键盘功能。
密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。
电子密码锁的设计主要由三部分组成:
4×
4矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。
另外系统还有LED提示灯,报警蜂鸣器等。
密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:
(1)密码输入功能:
按下一个数字键,一个“-”就显示在最右边的数码管上,同时将先前输入的所有“-”向左移动一位。
(2)密码清除功能:
当按下清除键时,清除前面输入的所有值,并清除所有显示。
(3)开锁功能:
当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。
第2章系统方案选择与论证
2.1系统基本方案
2.1.1系统框图
简易电子密码锁是由5个部分组成,如图2.1所示:
键盘模块
电源模块
报警模块
显示模块
单
片
机
控
制
模
块
图2.1电子密码锁控制系统
电源模块:
由+5V的直流稳压电源供电给整个系统工作。
键盘模块:
由16个轻触式开关组成。
单片机控制模块:
用支持ISP在线编程技术的单片机AT89S51便于烧写程序。
显示模块:
采用六个数码管时时显示当前输入数据;
报警模块:
采用发光二极管和蜂鸣器做声光报警。
2.1.2各模块方案选择与论证
(1)单片机的选择
方案一:
采用AT89C51单片机,它可以与其它51系列的单片机兼容、内部ROM全部采用FLASHROM、最高时钟频率可达24MHz且能以3V超低压工作。
但不支持ISP在线编程技术、内部ROM仅为4KB不利于功能扩展。
方案二:
采用AT98S51单片机,它具同时被AT98C51的全部功能外,还支持ISP在线编程技术且内部ROM为8KB有利于功能扩展。
(2)键盘的选择
使用独立式按键来控制
使用独立式按键来控制数码管的显示,这样需要很多的按键,每个按键实现一个能,易于控制,程序编写简单,但是每个按键都要接上拉电阻,占用了单片机大量的I/O接口资源,要对单片机外扩I/O口,并且在电路焊接方面又不方便,还要浪费大量的资源,提高了成本。
采用矩阵式键来控制
把按键按行列组成矩阵,在行列交点上都对应有一个键,这样使用的按键要少,为判定有无键被按下以及被按键的位置,这种称为键扫描法。
这样虽然提高了编程难度,但是节约了单片机大量的I/O口,免去了上拉电阻为焊接带来了方便,提高了整块电路板的美观度。
(3)显示模块的选择
数码管静态显示
采用LED数码管静态显示方法,电路容易理解,驱动程序简单,但需要每个数码管都要一块74LS47来驱动显示,增高了成本,浪费系统硬件资源,而需要占用单片机多个I/O口。
数码管动态显示
采用LED数码管动态扫显示方法,只需一块数码管驱动器芯片和一块译码器芯片就可以驱动多个数码管,价格便宜,只需要7个I/O口就可以同时驱动8个数码管显示。
硬件利用效率高,驱动程序容易理解和编程。
方案三:
液晶显示
采用LCD液晶显示,显示的位数多,由单片机驱动。
此方案有美观、显示清晰多样的优点。
但同时液晶显示器的驱动程序复杂,编程困难,成本高,价格昂贵,浪费大量的资源。
(4)数码管驱动选择
采用74LS47驱动数码管和74LS138译码器来控制数码管的COM端,因为74LS47只能驱动共阳数码管,而74LS138的输出为低电平有效。
因此,在74LS138的输出端加入反向器才可以接到数码管的COM端。
74LS04芯片的选择
采用74LS04芯片做反向器,74LS47是集成六反向器芯片,刚好可驱动六个数码管,但是它的输入输出引脚两边均分布,造成跳线较多给电路焊接时带来麻烦影响了整块电路的美观度。
三极管的选择
三极管也具有反向的功能,采用的是PNP管,电路的连接中又方便,减少了跳线提高美观度。
(5)报警模块的选择
采用语音报警,虽然可以使整个系统更加完美,但是会使程序更加复杂而且提高了整个系统的造价。
采用发光二极管和蜂鸣器来报警,可以发出声光报警且降低了成本。
2.1.3系统各模块的最终方案
结合整个系统的功能、成本、美观度等综合考虑,用AT89S51单片机为主控模块、用4×
4键盘输入、用74LS47、74LS138和三极管来驱动六个数码管做显示模块、用发光二极管和蜂鸣器做为报警模块。
系统框图如图2.2
4键盘输入
AT89S51
六位数码管显示
直流稳压电源
声光报警
第三章系统的硬件设计与实现
3.1系统硬件概述
本系统是通过键盘扫描模块,既能够显示数据并且还能修改密码,开锁密码,具有强大的功能,通过键盘扫描模块输入到单片机控制系统AT89S52中。
然后通过数码显示模块来显示我们所要有数据,还有一个就是报警模块,当输入的密码相同时,则显示模块的灯点亮,当输入的密码是错误时,绿灯点亮,报警模块立刻发出声音报警。
为了达到设定的功能,本装置键盘扫描模块、单片机控制模块、数码管显示模块,声光报警模块等4模块组成。
3.2主要单元电路的设计
3.2.1键盘扫描模块电路的设计
如图3.1所示,本模块的作用是进行键盘的扫描,首先判定有没有键被按下,然后再判定被按键的位置,因为键盘矩阵有键被按下时,被按键处的行线和列线被接通,使得开关之间接通。
当扫描表明有按键被按下之后,紧接着应是进行去抖动处理,一般我们采用的是软件来去抖动,软件方法则是采用时间延迟以躲过抖动,待行线上状态稳定之后,再进行行状态输入。
图3.1键盘扫描模块
3.2.2单片机控制模块电路的设计
单片机作为本装置的核心器件,在系统中起到控制声光报警、以及数码动态显示的作用,其中采用的是AT89S51,AT89S51是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。
第20引脚为接地端;
第40引脚为电源端;
第31引脚需要接高电位使单片机选用内部程序存储器;
第18、19脚之间接上一个12MHz的晶振为单片机提供时钟信号;
第9脚为复位脚,当其接高电位时,单片机停止工作。
P0口接两个发光二极管和一个蜂鸣器以实现声光报警功能,P2口连接一片七段译码器和一片3-8译码器以动态扫描方式同时驱动六个数码管,P1口与16个阵列式按键相连实现对键盘的扫描。
通过编程既能识别从译码器来驱动数码管来显示数据,同时也通过运行指令来达到完成声光报警及动态显示数码管等功能。
如图3.2所示
图3.2单片机控制模块
3.2.3声光报警模块电路的设计
图3.3声光报警模块
如图3.3所示,本模块的作用是当开锁按钮被按下时,如果数码管当前显示值相同,则绿灯点亮,当输入的数与密码不同时,则红灯点亮并且蜂鸣器立刻发出声音报警。
3.2.4数码显示模块电路的设计
如图3.4所示,该模块主要由74LS47译码器,74LS138译码器和6个8段数码显示管组成,如图所示,从编码器输送过来的数据经过两片74LS47芯片和74LS138蕊片译码后,传送到8段数码显示管,显示管根据接收到数据电平的高低来显示不同的数据。
图3.4数码显示模块
从图中可以看到单片机P2口低4位连接一片74LS47七段译码器,由于74LS47是共阳极数码管的七段译码器,因此要选用共阳极的数码管。
单片机P2.0-P21.3的输出信号经过74LS47译码后就可以驱动数码管的段码显示相应的数字,另外在74LS47的输出与数码管之间还要接上7个470欧姆的限流电阻,以防止有过大的电流流过时烧坏数码管。
P2.4-P2.6口接于3-8译码器74LS138的三个输入端,而74LS138的输出端通过三极管分别接于八个数码管的公共极。
通过由P1.4-P1.6口的输出量来控制74LS138选择点亮某一个数码管。
由于74LS138是低电位有效,所以应该采用PNP型的三极管来驱动数码管,在此三极管相当于一个开关的作用依靠这两块芯片就可以控制数码管实现动态扫描显示。
例如:
使六个数码管显示。
在第一时刻输出“0001”给74LS47,让数码管显示“1”,同时输出“000”给74LS138,选择第一个数码管工作,其余数码管不工作,这样第一时刻就只有第一个数码管显示“1”,其余数码管均不显示。
同理第二时刻也只有第二个数码管显示“2”,依次类推第N时刻就只有第N个数码管显示“N”。
人的肉眼只能分辨0.1秒内的变化,所以如果以每一时刻0.01秒的频率循环变化,看起来就感觉每一个数码管都被点亮了,显示“”
第4章系统的软件设计
4.1系统软件的概述
本系统的工作流程为:
通过键盘扫描来实现三种不同的功能,刚开始是设置的初始密码通过数码管来显示,用10个按键来输入0到9这从右到左依次输入,还用三个按键来显示密码,修改密码,开锁等。
当开锁按钮被按下时,如果数码管与当前显示值相同,则点亮LED1;
当数码管值不同时,则点亮LED2,并且立刻发出报警声音。
主程序流程图
开始
初始化
自检子程序
键盘扫描子程序
有按键按下
显示子程序
循环
相应子程序
主程序说明:
单片机复位后进入初始化把初始密码“”依次存放到40H到45H六个单元中,把30H到35H六个单设置为六位数码管显示数据的存放地址,设置完毕调用自检子程序进入自检状态,自检完毕调用扫描子程序对键盘进行扫描,如果有按键被按下则跳转到相应的子程序,再调用显示子程序把30H到35H六个单元的数据给六个数码管显示出来。
显示完毕就跳加扫描子程序继续对键盘进行扫描,如此循环。
4.2子程序的设计
4.2.1自检子程序
30H→38H
移位次数6→R0
08H→P1显示
移位
R0=0?
(38H)=0?
关闭自检
返回
NO
YES
图4.2自检子程序流程图
自检子程序说明:
进入自检子程序后先把循环次数30赋给38H单元,把移位次数6赋给R0,再把08H赋给P2口显示,把08H移位后再赋给P2口,循环6次完成一次显示,循环显示完30次完成自检。
4.2.2键盘扫描子程序
输入扫描码
第一列按键
第二列按键
第三列按键
第四列按键
下一行
超过四行
防抖
取出键值
跳转相应子程序
图4.3键盘扫描子程序流程图
键盘扫描程序说明:
给键盘所连接的P2口赋扫描码,例如:
MOVP2,#0FEH,
则扫描最后一行按键。
写入这个扫描码后P2口的高4位写入“1”,被设为输入状态,低4位中只有P2.0为“0”。
而P2口的高4位通过按键与低4位相连,所以此时从P2口的高4位就可以读入低4位的数据。
与被按下的键相连接的高位口,读入的数据为“0”,其它高位口读入的为“1”从而识别出是哪一个按键被按下。
随后再依次对P2口写入FDH、FBH、07H,分别扫描第三、第二、第一行,这样交替循环便可完成对4×
4键盘的扫描。
4.2.3移位子程序
(34H)→(35H)
(33H)→(34H)
(32H)→(33H)
(31H)→(32H)
(30H)→(31H)
相应数据→(30H)
图4.4移位子程序流程图
移位程序说明:
进入移位子后就把30H到35H六个单元里的数据向右移一位,移位完毕后把35H单元里的数据推出去,把30H单元空出。
4.2.4开锁子程序
开锁程序说明:
判断30H到35H单元里的数据与40H到45H单元里的数据是否相同,如果相同,开锁成功绿灯亮;
如果不相同,开锁不成功报警红灯亮且蜂鸣器响。
如图4.5所示
(30H)~(35H)=
(40H)~(45H)?
开锁
图4.5开锁子程程序流程图
4.2.5修改密码子程序
成功开锁
修改密码
不修改
图4.6修改密码子程序流程图
修改密码程序说明:
判断绿灯是否已点亮,点亮则说明已开锁成功可修改密码,否则不修改。
第5章系统仿真与调试
5.1系统仿真过程
开始时的数码管显示“------”,等待输入密码。
如图5.1所示:
图5.1数码管显示
密码输入时显示F并依次左移,如密码输入错误可以使用“clr”键进行清除,然后可以从新输入。
如图5.2所示:
图5.2数码管显示F
密码输入正确时,数码管显示简单的便是“pass”,同时绿色指示灯亮起,开锁电路运行,锁被打开。
如图5.3所示:
图5.3数码管显pass
密码是输入错误时,数码管提示“error1”,如果继续输入第二次、第三次错误的时,数码管将提示“error2”和“error3”,同时报警器报警提示,红色指示灯闪烁,键盘锁死,防止继续操作。
如图5.4所示:
图5.4数码管显示
当需要关闭密码锁的时候,直接按下键盘上的“lock”键即可锁定。
数码管恢复初始“------”,黄色指示灯亮起。
如图5.5所示:
图5.5
5.2仿真调试中遇到的困难及解决方法
(1)问题描述:
密码在未输入6位的情况下,摁下“enter”键,数码管显示“false”,无法返回初始输入界面“-------”。
解决办法:
“enter”键跳转时,跳转到开始即可。
(2)问题描述:
密码正确输入,“enter”键确认后,数码管显示“pass”,这时直接按“clr”键,屏幕上显示“error1”,并且报警,数码管无法恢复正常状态。
原因及解决办法:
“clr”的后面跳转不对,需要加一个标志位使数码管的显示恢复“pass”。
(3)问题描述:
在系统正常运行后,如果密码锁被用户打开,此时用户可以按下“lock”键对其重新上锁,但在运行过程中,虽然系统可以重新上锁,但会在重新上锁前,出现报警,并且数码管显示“error1”。
因为系统运行的速度较快,按键还没有复原,键盘的检测便又一次检测到了该按键,重复的操作了“lock”键,系统提示错误。
所以应在检测按键时,等待按键的复原,再进行跳转执行该按键的程序指令。
结论
在没有做毕业设计前觉得毕业设计只是对所学知识的单纯总结,但是通过这次做毕业设计发现自己的看法有点太片面。
毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。
通过这次毕业设计使我明白了自己原来知识还比较欠缺。
自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。
通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。
在这次毕业设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识。
在多人做项目的时候,队员的交流是非常重要的,是很关键的部分。
这次的毕业设计也让我看到了团队的力量,我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。
刚开始的时候,大家就分配好了各自的任务,大家有的绘制原理图,进行仿真实验,有的积极查询相关资料,并且经常聚在一起讨论各个方案的可行性。
在毕业设计中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。
团结协作是我们成功的一项非常重要的保证。
不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。
最后终于做完了有种如释重负的感觉。
此外,还得出一个结论:
知识必须通过应用才能实现其价值!
有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。
程序的设计思想的精巧的重要性,是不管怎么说都不为过的,好的设计可以让大家很快的明白你的思想,而且很方便的来实现它。
良好的编程习惯,它可以使你的程序很方便的被别人阅读,也很方便的被更改,所以可以的话,尽可能多的写出注释,没有人会闲你写的太多。
在设计过程中,通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。
而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。
虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。
对我而言,知识上的收获重要,精神上的丰收更加可喜。
让我知道了学无止境的道理。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。
挫折是一份