电子密码锁课程设计5元_第1页
电子密码锁课程设计5元_第2页
电子密码锁课程设计5元_第3页
电子密码锁课程设计5元_第4页
电子密码锁课程设计5元_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 绪论单片机一词最初是源于singlechipmicrocomputer”,简称scm。在单片机诞生时,scm是一个准确、流行的称谓,“单片机”一词准确地表达了这概念。随着scm在技术上、体系结构上不断扩展其控制功能,单片机已不能用“单片微型计算机”来准确表达其内涵。国际上逐渐采用mcu(microcontrollerunit”)来代替,形成了单片机界公认的、最终统一的名词。在国内因为“单片机”一词已约定俗成,故而继续沿用。单片机是将中央处理器cpu、存储器和i/o接口电路等主要功能部件集成在一块集成电路芯片上的微型计算机,但由于工艺和其它方面的原因,很多功能部件并未集成在单片机芯片内部。于

2、是,用户通常的做法是根据系统设计的需要在外围扩展功能芯片。如今的市场上为我们提供了丰富多彩的单片机产品。从宏观上讲,有risc和cisc两大类型;从微观上说,有intel、motorola、philips、microchip、emc、nec等公司的相关产品。在未来相当长的时间内,都将维持这种群雄并起、共性与个性共存的局面。但是,以80c51为代表的单片机的基础地位不会动摇。这是因为80c51的架构和指令系统为后来的单片机提供了参考基准和强大支持,凡是学过80c51单片机的人再去学用其它类型的单片机易如反掌,借梯子爬坡何乐而不为呢?因此,通过这次课程设计,以80c51芯片为核心实现密码锁功能,学

3、习单片机最小系统的原理以及用c语言编程,为以后的学习打下基础。随着集成电路技术的快速发展和“以人为本”思想在单片机设计上的体现,很多单片机生产厂家充分考虑到用户的需求,将一些常用的功能部件,如a/d(模/数转换器)、d/a(数/模转换器)、pwm(脉冲产生器)以及lcd(液晶)驱动器等集成到芯片内部,尽量做到单片化;同时,用户还可以提出要求,由厂家量身定作(soc设计)或自行设计。2 设计内容及要求2.1设计的目的及主要任务2.1.1设计的目的学会单片机的工作原理以及根据实际要求进行外围扩展实现电子密码锁功能。根据实际要求学会画程序流程图,然后用c语言编程,并了解在keil c51 uvisi

4、on3 集成开发环境下运行程序和烧录程序。 2.1.2 设计任务及主要技术指标 其密码为方4位(或8位)二进制代码(代码自设定)。 开锁指令为串行输入码,当开锁密码与存储密码一致时,锁被打开。当开锁密码与存储密码不一致时,可重复进行,若连续三次未将锁打开,电路则报警并实现自锁。(报警动作为响1分钟,停10秒)运用专业单片机仿真软件proteus 7.12的仿真功能对所设计的数字电子密码锁的各个模块及顶层电路的功能进行仿真分析。将所设计的整个系统写入单片机系统中,加上需要的外围电路实现整个系统的硬件搭建。2.2设计思想本次设计首先在keil c51集成开发环境中对单片机最小系统的各个部分利用c语

5、言予以设计,生成模块,分别有控制模块,矩阵键盘模块,数码管显示模块;外围电路有掉电存储模块和开锁电路模块。随后运用单片机仿真软件proteus 7.12的仿真功能对其予以仿真,从仿真的结果中分析程序的正确性。待所有模块的功能正确之后,运用原理图搭建顶层电路并进行整体仿真直至达到最初的设计要求,最后在焊制的电路板上运行验证其正确性。3 方案论证与比较3.1 方案一:方案一采用数字电路控制,其原理方框图如图3-1所示图3-1数字密码锁电路框图采用数字密码锁电路的好处就是设计简单。用以74ls112双jk触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键

6、,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。电路由两大部分组成:密码锁电路和备用电源(ups),其中设置ups电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。3.2 方案二:方案二是用以at89s51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的io端口,及

7、其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图3-2所示89s51单片机矩阵键盘控制输入错误锁定键盘延时报警控制电路at24c02掉电存储开锁控制电路指示电路串口显示电路图3-2单片机控制方案通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。4单元模块设计4.1开锁电路模块通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原理如图4-1-1所示。单片机微控制器开锁驱动电路电磁锁密码正确?y返回n图4-1-1密码锁

8、开锁机构示意图当用户输入的密码正确的话,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。其实际电路如图4-2-2所示。图4-2-2密码锁开锁机构示意图电路驱动和开锁两级组成。由d5、r1、t10组成驱动电路,其中t10可以选择普通的小功率三极管如9014、9018都可以满足要求。d5作为开锁的提示;由d6、c24、t11组成。其中d6、c24是为了消除电磁锁可能产生的反向高电压以及可能产生的电磁干扰。t11可选用中功率的三极管如8050,电磁锁的选用要视情况而定,但是吸合力要足够且由一定的余量。在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示

9、开锁;灭,表示没有开锁。4.2 矩阵键盘模块由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口是所占用的i/o线数目,在按键比较多的时候,通常采用这样方法。其原理如图4-2-1所示。89s51d0d1d2d3d4d5d6d7d8d9d105.1k x 45.1k x 4vcc图4-2-1行列式键盘原理电路图每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要n条行线和m条列线,即可组成具有nm个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认

10、有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。对照图4-2-1所示的44矩阵键盘,说明线反转个工作原理。首先辨别键盘中有无键按下,有单片机i/o口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00h,把全部列线置为低电平,然后将列线的电平状态读入累加器a中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则

11、所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。4.3数码管显示模块在所设计电路中,指示电路选用数码管动态扫描电路。它是把所有显示器的8个笔画段a到h的各同名段端互相并接在一起,并用它们接到字段输出口上。为了防止各显示器同时显示相同的数字,各显示器的公共端com还要受到另一组信号控制,即把它们接到位输出口上。这样,对于一组led数码显示器,需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形;另一组是位输出口输出的控制信号,用来选择第几位显示器工作。图4-3-1是其动态显示示意图。图4-3-1 led动态显示示意图4.4掉电存储模块掉电存储单元的作用是在电源断

12、开的时候,存储当前设定的信息。at24c02是atmel公司的2kb字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5v,额定电流为1ma,静态电流10ua(5.5v),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的dip封装,使用方便。其电路如图4-4-1所示。 图4-4-1掉电存储电路原理图图中r8、r10是上拉电阻,其作用是减少at24c02的静态功耗,由于at24c02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线scl(移位脉冲)和sda(数据/地址)与单片机传送数据。每当设定一次初次密码,系统就自动调用存储程序,将该信息保存

13、在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的存储信息,读到缓存单元中,供主程序使用。5 程序设计5.1模块介绍 主程序模块: 主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等。 键盘扫描及识别子程序:键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。掉电存储程序:当比较密码的时候,需要读at24c02程序,将存储在芯片内的数据读到ram中,然后和输入的密码相比较。当修改密码的时候,需要把输入的密码保存到at24c02。显示子程序:由于是分屏显示数据,所以就要用到5个显示子

14、程序,分别是:关闭状态显示子程序(dis_a)、开锁状态显示子程序(dis_b)、密码输入及修改状态显示子程序(dis_c)、密码输入错误后的提示子程序(dis_d)。密码在规定的时间内输入错误次数超过3次后的锁定状态显示子程序(dis_e).5.2程序流程图以及程序5.1.1程序流程图程序流程图如图5-1-1所示。开始初始化有键按下?调用显示启动定时识别按键全部按完?超时?比较密码开门开始自动清除3次?锁定nnyyyynn修改密码启动定时输入密码存入缓冲再输入一次比较密码调用24c02调用显示完毕y重新输入n主程序流程图修改密码流程图图5-1-1 程序流程图5.1.2 程序书写 /晶振11.

15、0592mhz,t1每250微秒中断,按键p1.0-p1.7,发光二极管接p3.0-p3.3,p3.7接蜂鸣器/*变量的定义: show_val6: 显示的值 init_val6: 密码初始值 key_val: 返回按键的值 255-表示无按键按下 key_index: 当前按键是哪一位密码 t1_cnt: 定时器计数溢出数 cnt_val_15s: 报警计时的数值 cnt_val_5s: 待机时间计时 cnt_val_4s: 输入正确,等待4秒清除开锁信号 cnt_state: 计时状态 error_num: 错误次数led_seg_code:数码管7段码*/#include reg52.h

16、/*说明 key0=p10; key1=p11;key2=p12; key3=p13;key4=p14;key5= p15;key6= p16; key7= p17sbit relay_open=p30; /电磁锁开锁驱动sbit pw_error=p31; /密码错误信号sbit alarm_out=p32; /报警输出sbit open_lock=p33; /已开锁指示信号sbit audio_out=p37; /有源蜂鸣器unsigned char data cnt_val_15s,cnt_val_5s,cnt_val_4s,cnt_state;unsigned int data t1_

17、cnt;unsigned char data key_val,key_index,key_val_old;unsigned char data state_val,error_num;unsigned char data show_val6;char code init_val6=1,2,3,4,5,0;/char code led_seg_code11=0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;char code led_seg_code11=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8

18、,0x80,0x90,0x88;/led_seg_code0-9代表0-9 led_seg_code10=0x00数码管不显示任何内容/-延时程序-void delay(unsigned int i)/延时 while(-i); /-清除输入内容-void init_variant()unsigned char i; for(i=0;i3999) /如果计数3999, 计时1s t1_cnt=0; switch (cnt_state) case 0: /待机,需要计时5s if(cnt_val_5s5) cnt_val_5s+; else cnt_val_5s=0; init_variant(

19、);/待机计时到5秒时,清除输入的内容 tr1=0; /停止计时 break; case 1:/密码输入正确,需要计时4s if(cnt_val_4s4) cnt_val_4s+; else cnt_val_4s=0; init_variant();/密码输入正确,计时到4秒时,清除输入的内容 open_lock=1; /已开锁信号清零 relay_open=1; /开锁信号清零 cnt_state=0; tr1=0; /停止计时 break; case 2: /密码输入错误3次,计时15s if(cnt_val_15s15) cnt_val_15s+; else cnt_val_15s=0;

20、 init_variant();/三次密码错误时,计时15秒,清除输入的内容 open_lock=1; / 清除所有指示和报警 relay_open=1; alarm_out=1; pw_error=1; cnt_state=0; tr1=0; /停止计时 break; /-判断键盘输入内容与密码是否一致-unsigned char check_input_pw() unsigned char i,k; k=1; for(i=0;i x=19 tl1=0x19; ea=1; /开中断 et1=1; tr1=0; /开定时器t1 while(1) key_val=scan_key(); /按键输

21、入,有键按下key_val为0-7,无键按下key_val为255。 if (key_val!=key_val_old) key_val_old=key_val; if (key_val!=255& cnt_state!=2) audio_out=0; delay(100); /延时去抖动 audio_out=1; switch (key_val) case 0: case 1: case 2: case 3: case 4: case 5: if(key_index6) /密码为6位,超过6位视为输入无效 show_valkey_index=key_val; key_index+; brea

22、k; case 6: /确认键 if(check_input_pw() /密码正确 error_num=0; /密码输入错误次数清零 /- pw_error=1; /密码错误指示灯灭 relay_open=0; /开锁驱动信号灯亮 open_lock=0; /已开锁信号灯亮 /- delay(50000); /两声短滴声 audio_out=0; delay(50000); audio_out=1; delay(50000); audio_out=0; delay(50000); audio_out=1; /- cnt_state=1; /下一状态处于4秒计时的状态 tr0=1; /启动定时

23、else if (error_num2) error_num+; /输入错误次数小于3次时,设错一次error_num增一 pw_error=0; /密码错误指示灯亮 /- delay(20000);/一声长滴声,提示错误 audio_out=0; delay(60000); audio_out=1; /- init_variant();/清除所有输入,等待下一次输入 else /输入错误次数超过3次 alarm_out=0; /报警灯亮 pw_error=0; /密码错误指示灯亮 error_num=0; /密码输入错误次数清零 /- audio_out=0; /长鸣声报警 delay(60

24、000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); delay(60000); audio_out=1; /- tr1=1; /打开定时器计时 cnt_state=2; /下一状态处于15秒计时的状态 break; case 7:/取消键 init_variant(); break; led_show();/-程序结束-6 电路仿真分析由于验证方法手段不断改进和提高,对于一个系统的设计,提倡用软件、硬件协同验证方法,加速仿真过程。程序编写完

25、毕,运用专业单片机仿真软件proteus 7.12的仿真功能对所设计的数字电子密码锁进行仿真,进而确认设计电路与程序的正确性。图6-1 数字密码锁仿真图如图6.1为密码锁工作状态仿真。 7 硬件调试仿真结果正确后,就可将文件下载到芯片中。连接硬件系统后,通上电源,观察验证所焊制的电路板能否达到预期的要求,主要需要观察led数码管显示是否准确稳定,并且是否能被键盘准确控制,以及输入密码正确开锁、输入错误报警是否能正确实现。硬件电路调试是否能成功除了取决于编写的程序之外,与外围电路的焊制也有很大的关系,因为外围电路的焊制良好性决定了整个电路最后运行的稳定性以及准确性,如数码管显示是否稳定等现象,很大程度取决于硬件电路。实验测试表明,整个电路能很好的实现数字密码锁的功能,led数码管能够很好显示所输入的密码,开锁以及报警也能准确的实现,初始密码为1234,输完后按确定键开锁,取消键清除所有输入。密码输入正确后,输出一个电磁锁开锁信号与已开锁信号,并发出两声短“滴”声提示。4秒后开锁信号与已开锁指示清零。密码输入错误时,发出一声长“滴”声错误指示提示音,并密码错误指

温馨提示

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

评论

0/150

提交评论