课程设计基于AT89S52单片机的电子密码锁

上传人:沈*** 文档编号:149794828 上传时间:2022-09-08 格式:DOC 页数:23 大小:1.26MB
收藏 版权申诉 举报 下载
课程设计基于AT89S52单片机的电子密码锁_第1页
第1页 / 共23页
课程设计基于AT89S52单片机的电子密码锁_第2页
第2页 / 共23页
课程设计基于AT89S52单片机的电子密码锁_第3页
第3页 / 共23页
资源描述:

《课程设计基于AT89S52单片机的电子密码锁》由会员分享,可在线阅读,更多相关《课程设计基于AT89S52单片机的电子密码锁(23页珍藏版)》请在装配图网上搜索。

1、物理与电子信息学院课程设计基于AT89S52单片机的电子密码锁姓名: 班级: 学号: 指导老师: 时间: 2010.1.7 目 录内容摘要11绪论12 系统设计12.1 设计任务与要求12.2 方案的选择与论证13 系统硬件设计33.1 开锁机构33.2 控制器模块53.3 按键模块63.4 数码显示模块83.5 动作模块93.6硬件元件清单10结束语12内容摘要:本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,关键词:AT89S51,AT24C02

2、, 电子密码锁,独立键盘1绪论随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89s51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案。2 系统设计2.1 设计任务与要求2.1.1 设计任务(1)设计个密码锁提供安全2.1.2 设计要求(1)密码正确才能开启;(2)密码正确继电器跳而且蜂鸣器响2.2

3、方案的选择与论证2.2.1 总体设计方案方案一:采用数字电路控制。其原理方框图如图11所示。图11 数字密码锁电路方案采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。电路由两大部分组成:密码锁电路和备用电源(UPS),其中设

4、置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。方案二:采用一种是用以AT89C51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图12所示。89C51单片机矩阵键盘控制输入错误锁定键盘开锁控制电路AT24C02掉电存储指示电路串口显示电路图12单片机控制方案 通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功

5、能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。3 系统硬件设计本系统由控制器模块、按键模块、数码显示模块和动作模块4个模块组成,系统硬件组成框图如图1所示。系统总体电路原理图如图2所示。控制器模块按键模块动作模块数码显示模块图1系统组成框图3.1 开锁机构通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原理如图21所示。单片机微控制器开锁驱动电路电磁锁密码正确?Y返回N图21密码锁开锁机构示意图当用户输入的密码正确输入的话,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。其实际电路如图22所示。电路驱动和开锁两级组成。由D5、R1、T

6、10组成驱动电路,其中T10可以选择普通的小功率三极管如9014、9018都可以满足要求。D5作为开锁的提示;由D6、C24、T11组成。其中D6、C24是为了消除电磁锁可能产生的反向高电压以及可能产生的电磁干扰。T11可选用中功率的三极管如8050,电磁锁的选用要视情况而定,但是吸合力要足够且由一定的余量。在本次设计中,基于方便安全,暂时用蜂鸣器代替电磁锁,蜂鸣器响,表示开锁;不响,表示没有开锁。图22密码锁开锁机构电路图3.2 控制器模块本系统控制器芯片采用AT89S52单片机,其管脚图如图3所示。图3 AT89S52管脚图AT89S52是一种低功耗、高性能CMOS8位微控制器,具有 8K

7、 在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。AT89S52的主要特性是:与MCS-51单片机产品兼容;8K字节在系统可编程Flash存储器;1000次擦写周期;三级加密程序存储器;32个可编程I/O口线;三个16位定时器/计数器;8个中断源;全双工UAR串行通道;低功耗空闲和掉电模式;掉电后中断可唤醒;有看门狗定时器;双数据指针

8、。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。3.3 按键模块独立键盘、矩阵键盘和电脑键盘接口1、独立键盘:独立键盘比较简单,如下图上半部份,由四个按键组成,每个按键的一端连接IO 口,另一端直

9、接连接GND(0 电位)。四个按键分别接入P04-P07,只要按下按键,相应位的IO口位将被拉为低电平(0),程序可以判断相应位是否为0 来确认按键已按下。独立按键还可引入中断响应,下图下半部份,这是由四个二极管组成的简单四输入与门电路,从原理图(P04-P07 在原理图中又命名为H1-H4)上可看出,二极管的阳极(即四输入与门的输出),经过J7 插针开关接入P32 引脚,做为中断触发,如有按键按下,P32 口也为0,这样可以开启中断程序来处理,程序更加灵活。如果不需要中断,可将J7 插针拔出,断开中断功能。独立键盘2、4*4 矩阵键盘:4*4 矩阵键盘电路中(4*4 矩阵原理图如上),P00

10、P03 又命名为L1-L4,P04-P07 又命名为H1-H4,4 条L线与4 条H 线交叉构成4x4 键盘,其中四条H 线还经过四个二极管构成简单的四输入与门电路,二极管的阳极(四输入与门的输出),经过J7 插针开关接入P32 引脚,做为中断触发。如果引入中断,程序初始化时,L1-L3 保持低电平,H1-H4 保持高电平,即P0 口输出0xF0H,当有按键被按下时,其中的一条L 线将其中的一条H 线拉为低电平,同时H 线经过二极管连接到P32(INT0 中断)脚,触发中断,利用中断程序再扫描P0 口数据来判断哪个键被按下做相应处理。也可不用中断,将J7 插针断开,直接由主程序分时的去扫描按键

11、。利不利用中断,就看你程序怎样要求了。P0 口: 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0 位对应表 H4 H3 H2 H1 L4 L3 L2 L1扫描键盘方法:如上表,先将P0 口输出0xFE(11111110B),即L1 线为低电平,检测0,4,8,C 四个按键是否有按下,如果4 键按下,则读回来的P0 数据为0xBE(10111110B),C 键按下是0xEE(11101110B),有键按下保存P0 口数据将不在继续扫描,否则读回的P0 口数据不变,还是0XFE,将接着扫描L2 线,P0 口再输出0XFD(11111101B),检则1,5,9,D 四个按键,与上相同,直

12、到扫描完四列按键。刚才是一列一列扫描,也可以一行一行扫描,即先扫描第一行(0、1、2、3 四个按键),将P0 输出0X7F(01111111B),再读回数据做处理。3、电脑键盘接口:本板使用圆口键盘接口,如下图表,圆口接口为6 个引脚,其中两脚未用保留,两个电源引脚,两个通讯数据引脚。下图为板子原理图,接口的5 脚(CLOK 脚)和1 脚(DATA 脚)分别引入P32(INT0 中断)脚和P33 脚。此接口在电路上比较简单,直接接入IO 口,无外围电路。3.4 数码显示模块 数码管电路使用了两个4 位数码管组合成8 位,两个数码管的同一段脚接在一起。数码管的段值由P2 口经74HC245 作电

13、流放大输出。数码管为共阴型,要使数码管点亮,P2口得输出高电平。数码管位的选择由74HC138 来处理(74HC138 为3-8 译码器),138 的输入由P10-P12(000-111)译码出八线接入数码管位选择引脚,138 输出的八线同一时刻只有一线为低电平,即每次只选择其中一位数码管显示。显示两位或更多位时需要动态扫描技术了,利用快速的循环显示,人眼看到的就是多位了(电视图像、电脑显示器都是扫描生成的)。电路中的JSM 插针开关,是控制138 的SA 脚,短接时SA 为低电平,138 不做译码,输出八线全为高电平而关闭数码管显示。断开JSM 插针SA 经R41 接入VCC 为高电平,13

14、8 正常工作。 数码管电路图3.5 动作模块蜂鸣器单片机P34 脚输出高低电平通过J3 经R31 限流加在三极管B 极,控制三极管的导通与截止,从而控制蜂鸣器的工作。与继电器控制一样,低电平时三极管导通,蜂鸣器得电蜂鸣,高电平时三极管截止,蜂鸣器失电关闭蜂鸣。可断开J3 不受P34 控制,也可引入其它IO 口。继电器由P35 引脚输出高低电平通过J5 插针再经R21 限流控制三极管的导通与截止(三极管为PNP,低电平导通,高电平截止),LED 可显示通断状态,从而控制继电器的吸合与释放,继电器的输出端采用分离式,即输出端不与内电路连接,直接连接端子,可控制更高电压设备的开关,建议不要使用超出安

15、全电压50V 设备。图上的J5 插针可断开P35 控制,也可使用单芯线引入其它IO 口。3.6硬件元件清单系统元器件清单见表2。表2 系统元器件清单器件数量器件数量AT89S521数据线1独立键盘14*4 矩阵键盘1数码管1蜂鸣器1继电器1下载线174LS138174HC2451开关2红色LED8、结束语本论文基于单片机设计了可预设电压的数控电源,并对其进行了仿真分析。本设计特点:用AT89S52单片机通过软件编程实现,而不是通过调节电阻改变分压来实现,这样节省了硬件资源,降低了成本;由于使用的是单片机作为核心的控制元件,以及灵敏的霍尔开关型器件,是本出租车计价器具有功能强、性能可靠、电路简单

16、、成本低的特点,加上经过优化的程序,使其有很高的智能化水平。但是在我们设计和调试的过程中,也发现了一些问题,譬如计价的金额位数有限,实际的里程可能会很远,会超出我们的显示范围。计价器的设计还不够人性化,比如加上语音的提示功能,可能会更有生命力。附录:程序清单#include #include /*IO引脚定义*/sbit SPK=P34;/SPK定义为P3口的第4位,就是驱动蜂鸣器的那个脚sbit JDQ=P35;/JDQ定义为P3口的第5位,就是驱动继电器的那个脚/*数据定义*/code unsigned char table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x

17、7d,0x07,0x7f,0x6f,0x00;/共阴数码管 0-9 空code unsigned char key_tab17=0xed,0x7e,0x7d,0x7b,0xbe,0xbd,0xbb,0xde,0xdd,0xdb,0x77,0xb7,0xee,0xeb,0xd7,0xe7,0XFF;/=此数组为键盘编码,/本人采用类式类似电话按键的编码方式,方便以后设计/123a0x01 0x02 0x03 0x0a/456b对应16进制码:0x04 0x05 0x06 0x0b/789e0x07 0x08 0x09 0x0e/*0#f0x0c 0x00 0x0d 0x0f/打个比方,如果你按下

18、0键,P0口读到数据为0xed/如果你按下2键,P0口读到数据为0x7d,按下9键为0xdb,/我们将读到的P0口数据经过查表法就能得到相应的16进制码/键盘的读取,我们采用分时扫描unsigned char l_tmpdate8=0,0,0,0,0,0,0,0;/定义数组变量code unsigned char l_mima8=8,7,6,5,4,3,2,1;/定义数组变量unsigned char l_key=0xff;/定义变量,存放键值unsigned char l_keyold=0xFF;/做为按键松开否的凭证/*函数声明*/void ReadKey(void); /扫描键盘 获取键

19、值void delay(unsigned int timer);/延时子函数void display(unsigned char *lp,unsigned char lc);/从第八位数码管开始刷新显示;lp为指向数组的地址,lc为显示的个数/*主函数开始*/void main(void) /入口函数unsigned char i=0,j=0;P0=0xf0;/P0口高位输高电平,经过74HC21四输入与门,连接外中断0,有键按下调用中断函数while(1)ReadKey();/调用键盘扫描if(j!=8)&(l_key!=0xff)&(l_key10)/当输入不等于8个且按下的键值是0-9才

20、做处理l_tmpdatej=l_key;/尾补上输入的数据j+;l_key=0xff;if(j!=0)&(l_key=0x0C)/当输出不小于1个且按下0X0C键,清除后面一位 j-;l_key=0xff; if(j=8)&(l_key=0x0d)/当输入8个且按#键,将密码进行合对l_key=0xff;for(i=0;i8;i+) if(l_tmpdatei!=l_mimai) break; if(i=8)/密码正确i=8,继电器动作,否则i变量不会等于8JDQ=0;i=50;while(i-)delay(5000);JDQ=1; j=0;/最后将重新接受输入display(l_tmpdat

21、e,j);/输出显示/*扫描键盘 获取键值*/void ReadKey(void)/分三个部份来理解,unsigned char i,j,key;/*第一部份,扫描读取键值*/j=0xfe;key=0xff;/设定初值for (i=0;i4;i+)P0=j;/P0口低4位循环输出0,扫描键盘if (P0&0xf0)!=0xf0)/如果有键按下,P0口高4位不会全等于1,即十六进制F,key=P0;/读取P0口,退出循环,否则循环下次break;j=_crol_(j,1);/此函数功能为左循环移位/*第二部份,检测是否干扰或无按键按下*/if (key=0xff)/如果读取不到P0口的值,比如是

22、干扰或是键盘已松开,我们做相应复位,返回l_keyold=0xff;SPK=1;/按键有松开,停止蜂鸣器响return;elseSPK=0;/否则打开蜂鸣器,继续处理/*第三部份,检测是否新按键按下,获取新的键盘编码值*/if(l_keyold!=key)/检测按键放开否,如果一样表明没放开,不做处理,不一样表明另一个键按下做编码转换l_keyold=key;/获取键码做为下次的凭证for(i=0;i0;i-)/循环显示P2=tablelpi-1;/查表法得到要显示数字的数码段delay(5);/延时5个空指令P2=0;/清0端口,准备显示下位if(i=0)/检测显示完8位否,完成直接退出,不让P1口再加1,否则进位影响到第四位数据break;P1-;/上一位数码管/*延时子函数 */void delay(unsigned int timer)while(timer-);课班级: 08电子 任课教师 刘晓燕 成绩: 21

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!