ImageVerifierCode 换一换
格式:DOCX , 页数:57 ,大小:310.63KB ,
资源ID:8239390      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8239390.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子密码锁设计说明书.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电子密码锁设计说明书.docx

1、电子密码锁设计说明书微机课程设计 专业: 通信工程 班级: 1303班 姓名: 丘春华 学号: 3131902220 指导老师:蔡文培、王亚林、张国安 时间: 2015年12月24日2016年1月6日 一、 设计任务与功能要求 1.1设计课题2 1.2设计目的2 1.3设计任务21.4设计要求3二、总体设计规划与方案论证2.1程序总体编写方法规划32.2方案论证5三、总体软件设计说明及程序总流程图3.1总流程图63.2总体说明7四、系统的资源分配及数据定义说明4.1数据变量定义说明与使用说明74.2定时器中断设置94.3输入输出的硬件分配94.5键盘功能分配9五、局部程序设计方案5.1初始以及

2、自检105.2主流程11六、系统功能与用户操作使用说明6.1系统的功能186.2操作说明18七、课程设计总结19八、附录源程序21九、硬件原理图44 一、设计任务与功能要求1.1设计课题门禁电子密码锁程序设计1.2设计目的通过小型微机应用产品的设计与调试过程,运用微机原理及接口技术课程所学的基本知识,在设计中加以应用,进而得到理解、巩固和提高发展,通过实践的过程学习掌握分析与解决实际问题的方法与手段,提高设计、编程与调试的实际动手能力,作为工程技术工作的一次基本训练。1.3设计任务设计一个以单片机为核心的门禁密码锁。具有密码开锁,不同权限的密码修改、密码输入安全设置、开门时段管理等功能。编程并

3、在单片机实验板上模拟调试实现。1.4设计要求1.4.1基本设计要求1、开机进行接口部件及数码显示器、指示灯、讯响器等自检。2、密码分为管理员密码和用户密码:管理员密码为8位09的数字,而用户密码为6位09的数字。3、设置“0”“9”的数字键及“ESC”和“ENT”等功能键。对按键输入信号须进行软件消抖处理。4、工作模式:(1)常态:数码管显示时钟。(2)开锁模式:需输入6位数字为09的密码进行开锁。密码数字可以由管理员事先设置保存共普通用户使用。(3)管理员操作模式:需输入8位09的密码,可以进行修改用户密码、修改管理员密码、修改进门时段等功能。5、常态下,八位LED 7段数码管显示时钟信息可

4、包括小时、分钟、秒钟。6、只要按下09的数字键则转入开锁状态,每按一个数字键使数码管从左到右逐次显示“”。7、如果输入的密码为6位则和用户密码进行匹配,匹配一致则开锁,如果输入的密码为8位则和管理员密码进行匹配,匹配一致则进入管理员操作模式。8、在密码输入状态下,输入满6位或8位密码数据后,按“ENT”键才能进行密码匹配,如果没满6位或8位数字密码,按“ENT”则不作响应。9、输入的用户密码如果匹配则相应指示灯亮并且电动开门电磁铁线圈通电1S开门后返回常态;如果输入不正确,则提示“E”,3S后返回常态,等待下一轮的密码输入。10、开锁模式下可以按“ESC”键取消开锁模式返回常态。11、管理员操

5、作模式下,管理员可以选择功能,01功能代表设置用户密码、02功能代表重置管理员密码、03功能代表设置进门时间、04功能设置实时钟。利用ESC键返回常态。12、管理员操作模式下,01功能可以设置用户密码,输入新密码时需要进行确认。1.4.2其它扩展功能1、管理员操作模式下,02功能重置管理员密码;2、管理员操作模式下,03功能可以设置进门的开始时间和结束时间。只有在进门时间段输入用户密码才能开锁。如果开始时间和结束时间均设置为00:00,则为全天可以按密码开门;3、管理员操作模式下,04功能实时钟的设置,利用数字3和数字4按键实现对时和分钟的调校,按键操作时实现快调功能;4、如果在开锁模式下12

6、S后没有按键操作则进入常态;5、如果在开锁状态下用户密码输入十次均错误则报警锁键15分钟;6、其他功能扩展。二、总体设计规划与方案论证2.1总体设计规划程序规划分为三个部分:自检和初始化、主循环和中断服务。自检和初始化是在开机和复位时执行,其它时候将不执行此部分。自检是对设备进行检测,初始化对后续的程序执行进行准备。自检包括对数码管,LED指示灯和蜂鸣器的测试。初始化包括调用延时等待芯片退出复位状态和对各数据单元赋初始值的准备。主循环的执行是首先检测状态,然后执行相应的状态模块。主循环里面共有7个状态,分别为常态,设置时间状态,管理员状态,设置用户密码状态,设置管理员密码状态,设置开门时间状态

7、和输入密码状态;每一个状态都对应有一种显示的方式和键盘处理的方式.所以各种状态可以分开独立编写子程序,这将有利于程序的扩展和修改.各个状态的功能简单描述如下:常态时连续读取DS1302中时间的值,写入到液晶LCD1602中,实现程序走时的功能.设置时间状态:由管理员状态按设置时间键进入这个状态,然后控制LCD1602在相应的位置闪烁,提示用户设置的内容,然后获取按键值存入DS1302中,实现时间修改的功能;管理员状态:在常态输入8位密码,校验正确后进入管理员状态,管理员状态可以进一步选择相应的功能.设置用户密码状态:在管理员状态按下设置用户密码键进入这个状态,此时液晶显示用户按键的键值,当密码

8、达到6位时询问用户是否确认修改,按确认键后保存密码至DS1302中永久保存.设置管理员密码状态:在管理员状态按下设置管理员密码键进入这个状态,此时液晶显示用户按键的键值,当密码达到8位时询问用户是否确认修改,按确认键后保存密码至DS1302中永久保存.设置开门时间状态:在管理员状态按下设置开门时间键进入这个状态,然后在液晶上显示修改的值,修改完成,保存数据到DS1302提供的30个RAM中,以便后面开门设置时读取的比较.输入密码状态:当在常态时按下09任意一个数字即进入这个状态,然后显示输入密码的个数,输入完成则比较密码,用户密码正确则开门,管理员密码则进入管理员状态.中断服务子程序实现的功能

9、是检测在没有按键按下时,空闲时间的计时。它采用定时器0,方式1的16位定时计数器。只要有中断来临即执行中断子程序对时间进行精准的计时,并改变相应的定时器溢出计数单元,只要有按键被有效按下即将其计数器置零,从新计数,直到计算出12s的时间,便将状态变为常态.这样便实现了长时间无操作进入常态的功能.2.2方案论证2.2.1设置状态功能定义一个内存地址用于存放程序当前状态,然后根据不同的状态对键盘扫描返回的值进行处理,从而实现在同一个按键按下时,实现不同的功能和操作.显示部分也可以根据当前的状态,在液晶中显示相应的提示或功能.这样,对用户体验和程序的模块化设计都带来不小的好处.2.2.2用DS130

10、2时钟芯片计时DS1302可以实现实时时钟,可对秒,分,时,日,周,月以及闰年补偿的年进行计数,计时精确.它具有高速数据暂存的31*8 RAM数据存储器,可充分利用于存放用户密码,管理员密码和开门时间等数据,这样就不需要额外的数据存储器了.而且它功耗小,引脚少,在2.5-5.5V满度工作范围,这对于备用电源的选用来说是件好事.2.2.3使用LCD1602 液晶显示器LCD1602可现实16*2排的字符,兼容ASCII编码,能现实英文字符的显示.比起数码管的显示,在功耗和用户体验上极具优势.三、总框图及总体软件设计说明3.1流程图3.1.1程序流程图图3.11注:由于中断部分没有确定的执行位置,

11、所以中断部分在此流程图不作体现3.12状态转换流程图图3.123.2总体说明总体程序分为三个部分:自检和初始化、中断服务子程序、主流程三个部分。自检和初始化是在开机和复位时执行,其它时候将不执行此部分。自检是对设备进行检测,初始化对后续的程序执行进行准备。自检包括对数码管,LED指示灯和蜂鸣器的测试。初始化包括调用延时等待芯片退出复位状态和对各数据单元赋初始值的准备。主循环的执行是首先检测状态,然后执行相应的状态模块。主循环里面共有7个状态,分别为常态,设置时间状态,管理员状态,设置用户密码状态,设置管理员密码状态,设置开门时间状态和输入密码状态;每一个状态都对应有一种显示的方式和键盘处理的方

12、式.所以各种状态可以分开独立编写子程序,这将有利于程序的扩展和修改.四、系统的资源分配及数据定义说明4.1数据变量定义说明与使用说明4.11对各种状态的定义及值得定义如下#define uchar unsigned char /重新定义无符号字符型的描述方式(习惯这样使用)#define NORMAL 0 /常态#define SET_TIME 1 /设置时间状态#define MANAGER 2 /管理员状态#define CHECK 3 /输入密码状态#define CHANGE_MANAGER 4 /修改管理员密码状态#define CHANGE_USER 5 /修改用户密码状态#def

13、ine SET_OPEN 6 /修改开门时间段状态4.12对IO口的一些位定义如下:sbit LDE1=P26; /573锁存器1控制位sbit LDE2=P27; /573锁存器2控制位sbit BUZZER=P11; /蜂鸣器位声明,低电平有效sbit TRST=P23; /时钟芯片RST位声明sbit TIO=P24; /时钟芯片TO位声明sbit TSCLK=P25; /时钟芯片CLK位声明sbit p30=P30; /P3口位申明,方便使用sbit p31=P31;sbit p32=P32;sbit p33=P33;sbit p34=P34;sbit p35=P35;sbit p36

14、=P36;sbit p37=P37;4.13 一些全局变量的定义和使用说明:uchar state = NORMAL; /状态变量,设置初始为常态uchar pa8; /临时存放密码的数组uchar pi=0; /存放密码时的指针uchar time7; /临时存放时间的数组uchar titem = 0; /存放时间的指针uchar irtime = 0; /计数器计数值4.14 LCD1602显示字符串的定义:char code zifu0=USER PASSWPRD;char code zifu1=MANAGER PASSWPRD;char code zifu2=MANAGER MODE

15、 ;char code zifu3=Waiting.;char code zifu4=Welcome!;char code zifu5=OK;char code zifu6=Error;char code zifu7=SURE TO CHANGE?;/询问是否保存密码/时间.char code zifu8=OPEN TIME:;char code zifu9=Can not Open!;/未到开门时段时的用户提示./1602中时间显示的位置,分别是年,月.日.星期,时.分,秒Charcode lcdadd=0x83,0x86,0x89,0x8c,0x80+0x40+4,0x80+0x40+7,

16、0x80+0x40+10;4.2定时器中断设置此次采用定时器0,设定为定时方式1,设置定时器初始值和重装值时的TH0和TL0分别为0x3c,0xb0(65536-20000=0x3cb0),与irtime定时器溢出次数计数变量配合,定时器20000个TM溢出,而irtime变量为240次记满,可实现12秒的计算。使用时设定好初值即可使用。 4.3 输入输出的硬件分配端口作用备注P1控制L0-L8的指示灯。开门和自检时点亮,模拟开门的动作0有效P1.1蜂鸣器,作为告警音和提示音0有效P2.6573锁存器1控制位0有效P2.7573锁存器2控制位0有效P2.3DS1302 RST脚/P2.4DS1

17、302 T0脚/P2.5DS1302 C脚/P1LCD 1602液晶显示器功能脚(连接有573锁存器)/RAM说明备注0xc00xccDS1302中6位用户密码保存的RAM地址0xce0xdaDS1302中8位用户密码保存的RAM地址0xdc0xe2DS1302中4位开门时间保存的RAM地址(注:DS1302中分配的RAM地址指的是写地址,读地址是写地址加1)表4.314.4键盘功能分配 键盘的功能及数字按键分布如下图4.41所示.图4.41五、局部程序设计方案5.1初始化以及自检自检和初始化都是在程序的最前头执行的。对设备进行检查,和对数据的初始化定义。为后续的执行做准备。自检应该包括所有需

18、要显示和指示的输出设备。此次设计中简化了自检,只有写到两个,即蜂鸣器响一秒和LED点亮一秒。这两条自检可以检测出指示灯和告警音的设备是否能正常运作。在自检结束时,全部初始化为无效。避免影响后续程序的进行。初始化包括调用延时,等待各芯片退出复位,和对数据进行初始化。等待各芯片退出复位,这是很重要的部分,芯片如果还未在退出初始化时候,就进行工作,将无法正常实现功能。所以程序的初始都要调用延时,等待各芯片均退出初始化。LCD1602 初始化按照参考手册进行:write_com(0x38);/液晶初始化指令delay(5);write_com(0x38);/液晶初始化指令delay(5);write_

19、com(0x38);/液晶初始化指令delay(5);write_com(0x0C);/光标指令write_com(0x06);/地址移动设定write_com(0x01);/清屏指令对数据的初始化有设置定时器0,为定时工作方式1,给TMOD赋初值0x01,每次溢出的定时计数初始值,设置TH0和TL0分别为0x3c,0xb0,每20000个TM溢出,同时启动定时器0工作的相关内容生效。其他的初始化则是对数据单元进行赋初值,例如置程序初始状态等,都是为了防止后面的程序出错和运行时造成不可预知的影响。5.2主流程主流程的7个状态分别是:常态,输入密码状态,管理员状态,修改时间状态,修改用户密码状态

20、,修改管理员密码状态,修改开门时间状态.常用子程序的设计:1. DS1302读取数据子程序:/*函数功能: DS1302读数据函数入口参数: 数据的地址出口参数: 读取的数据*/unsigned char dsRead(unsigned char add) unsigned char i,date=0; TRST=0; TSCLK=0;TRST=1; delay1(10); /小延时 for(i=0;i8;i+) TIO=add&0x01; /数据和地址都是从最低位开始传送 delay1(10); TSCLK=1; delay1(10); if(i=1; for(i=0;i8;i+) TSCL

21、K=0; if(TIO=1) /当数据线为高时,证明该位数据为1 date|=0x80; /要传输数据的当前值置为1,若不是,则为0 delay1(1); TSCLK=1; if(i=1; delay1(10); TRST=0; /关闭数据传输 return date;2. DS1302写数据子程序:/*函数功能: DS1302写数据函数入口参数: 写入的地址,写入的数据出口参数:*/void dsWrite(unsigned char add, unsigned char date) unsigned char i; TRST=0; TSCLK=0; TRST=1; delay1(10);

22、for(i=0;i=1; for(i=0;i=1; delay1(10); TRST=0;3. LCD1602写命令子程序:/*函数功能: DS1602液晶写指令子程序入口参数:指令出口参数:*/void write_com(unsigned char com) P0=0x8F; LDE2=1; LDE2=0; P0=com; LDE1=1; LDE1=0; P0=0x0CF; LDE2=1; delay(3); P0=0x08F; LDE2=0;4. LCD1602写数据子程序:/*函数功能: DS1602液晶写数据子程序入口参数: 要显示的数据出口参数:*/void write_date(

23、unsigned char date)P0=0x9F;LDE2=1;LDE2=0;P0=date;LDE1=1;LDE1=0;P0=0x0DF;LDE2=1;LDE2=0;delay(3);P0=0x08F;LDE2=1;LDE2=0;delay(3);5. 按键扫描子程序/*函数功能: 键盘扫描程序入口参数:出口参数: 键值*/char scandKey() /当有键被按下时会返回相应的键值,无键时返回-1 uchar tem=0x00; P3=0xf0; tem=P3; tem=tem&0xf0; if(tem != 0xf0) delay(30); /延时消抖动 P3=0xf0; tem=P3; tem=tem&0xf0; if(tem != 0xf0) if(tem=0xe0)/第一列 P3=0xff; p34=0; if(p30=0) return 1; else if(p31=0) return 4; else if(p32=0) return 7; else if(p33=0) r

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1