版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、0基于单片机的密码门禁系统设计基于单片机的密码门禁系统设计0摘 要目前,门禁系统设计技术成熟,应用非常广泛。该文从硬件电路和软件两方面介绍了设计门禁系统的方法。系统具有密码输入、比较、开门、错误报警等功能和等待模式、用户模式和管理模式三种模式。系统使用人体红外传感器作为检测器件,使用 STC89C52RC 单片机作为控制核心,通过键盘采集用户的操作信息,系统通过判断能给出正确的控制信号,通过继电器及发光二极管给出开关状态,使用单片机汇编语言及 C 语言进行编程,完成门禁控制系统的硬件和软件设计。使用外部存储器AT24C02 实现密码断电保存。硬件包括:USB 供电电路、晶振电路、数码管电路、键
2、盘控制电路、人体红外热释传感器电路、继电器电路和蜂鸣器电路。该系统在生活中具有很大的实用价值。目目 录录第一章 引言.1第二章 设计总体方案.3一、设计的基本要求.3二、硬件电路的概述.3三、软件程序的概述.4第三章 系统硬件设计.6一、STC89C52RC 单片机 .6二、USB 供电电路 .8三、晶振电路.8四、数码管电路.9五、键盘控制电路.9六、人体红外热释传感器电路.10七、AT24C02 存储器电路 .11第四章 系统软件设计.12一、程序的整体流程图.14二、数码管驱动程序.15三、键盘扫描及功能程序.15四、AT24C02 存储器 .16(一)I2C 总线的介绍 .16(二)A
3、T24C 系列 E2PROM 读写操作 .18五、系统模式功能程序设计.22六、系统软件测试.22第五章 系统测试与调试.24一、门禁系统的使用说明.24二、门禁系统的测试.25结束语.26参考文献.27附录.28基于单片机的密码门禁系统设计0第一章第一章 引言引言门禁系统是在传统的门锁基础上发展而来的。现在,许多场合还在使用传统的门锁。传统的门锁是一种单纯的机械装置,虽然经过不断改进,安全性有所提高但无论设计多么合理材料多么坚固,总能通过种种非正常手段把它打开,因此安全性较差。对每个使用者来说,一把锁配一把钥匙,使用起来不方便,在出入人较多的通道钥匙的管理也相当麻烦,遇到钥匙丢失或人员更换都
4、要把锁和钥匙一起更换。为了解决这些问题,出现了电磁卡锁和电子密码锁,这两种锁的出现从一定程度上提高了人们对出入口通道的管理效率,是通道管理进入了电子时代。现代科技技术的进步以计算机技术的进步为代表。不断革新的计算机技术,从各个层面上影响着、引导着各行各业的技术更新。计算机强大的处理能力,使得它成为一种很好的工具,其应用范围也越来越广泛。随着社会的发展和科学技术的进步,人们对工作、生活质量的要求越来越高,人们对安全性和自动化也要求越来越高,门禁系统由此而产生。门禁,又称出入管理控制系统。是一种管理人员进出的数字化管理系统。随着技术的进步,门禁系统已逐渐由原来的门卫把守和钥匙开门,发展到现在的密码
5、门禁管理系统。常见的门禁系统有:密码门禁系统,IC 卡门禁系统,指纹识别门禁系统,磁卡门禁等。随着这些锁的不断应用,它们的缺点就逐渐暴露出来:磁卡门禁系统的信息容易复制,卡片与读卡机具之间磨损较大、故障率高、安全系数低,而且需要每人配备 1 张磁卡,不适合在办公场合和出入人较多的场合使用;IC 卡门禁系统同样由于需要每人配备 1张 IC 卡,不适合在办公场合和出入人较多的场合使用;指纹识别门禁系统安全性高,但由于成本高等问题而没有得到广泛的市场认同;而密码门禁只需有指定密码就可以开门,如果使用密码开启门,代替传统的出入证和钥匙,就能使管理工作实现自动化、智能化。不但用者方便,管理者也方便,而且
6、工作效率和安全性都可以大大地提高。密码门禁系统以其门禁管理的安全、可靠、高效、灵活、方便,已逐步取代其他现有各类门锁,成为目前门禁系统的主流方式之一,适合在办公室(非大门)使用。门禁系统是现代化办公大楼和家居住房的重要组成部分。许多生产安基于单片机的密码门禁系统设计0防设备的大厂都有自己品牌的门禁系统,而且其中不乏一些优秀的国内产品。这些产品拥有我们所需要的稳定性、可靠性,因此具有较大的市场前景。本文介绍了密码门禁系统的设计与开发,详细分析了系统的硬件设计和软件设计,给出了电路原理图,以及主要程序设计的流程图和程序。系统硬件由 USB 供电电路、晶振电路、数码管电路、键盘控制电路、人体红外热释
7、传感器电路、继电器电路和蜂鸣器电路等几部分组成。系统软件实现主要分为:AT24C02 存储器的读写,数码管显示,键盘扫描,工作模式及密码比较。第一章 引言第 2 页第二章第二章 设计总体方案设计总体方案在掌握单片机原理及 80C51 汇编语言编程技术的基础上,基于 89C52型单片机设计门禁系统。本系统应具有以下功能。1、系统具有对人体的红外线识别功能。2、当有用户进入时,系统红外线模块把信息传达给系统,系统通过数码管提示用户选择进入模式和输入开门密码,密码最多可输入两次。若输入密码正确,则通过继电器闭合,同时绿色发光二极管点亮表示开门,否则红色发光二极管点亮,蜂鸣器报警提示用户密码错误。3、
8、通过发光二极管和蜂鸣器给出报警信号。4、其他辅助功能。一、设计的基本要求一、设计的基本要求设计密码数字显示、键盘输入及单片机最小系统。使用人体红外热释传感器检测是否有人进入服务区。系统具有三个运行模式:等待模式、用户模式和管理模式。在没有输入密码时,关闭继电器,点亮红色 LED。在用户模式下,输入正确密码,打开继电器点亮绿色 LED。在管理模式下,输入正确密码,可以进行密码修改。输入密码错误达到两次,驱动蜂鸣器报警。使用 AT24C02 存储器保存密码,使得系统在断电情况下还能保存密码。二、硬件电路的概述二、硬件电路的概述本设计硬件主要可以分为七大部分:单片机最小系统数码管显示电路阵列键盘输入
9、人体红外热释传感器驱动电路AT24C02 存储器蜂鸣器驱动电路基于单片机的密码门禁系统设计第 3 页开关演示电路第二章 设计总体方案第 4 页图 2.1 系统硬件整体结构图硬件设计思路是根据设计的基本要求,将电路分成各个模块进行设计,这样有助于设计的高效率进行,而且方便各个模块的检测、调试。单片机是整个设计的核心处理部分,因此从单片机的最小系统开始着手设计。接着,对数码管显示电路进行设计,结合单片机最小系统,可以检测这两个部分是否能正常工作。之后,阵列键盘的设计,同样可以通过测试程序,对其电路进行测试。开关延时电路、蜂鸣器等容易设计测试的电路设计。最后,增加人体红外热释传感器的电路。三、软件程
10、序的概述三、软件程序的概述系统软件实现主要分为:AT24C02 存储器的读写,数码管显示,键盘扫描,工作模式及密码比较。程序使用模块化的设计思想,这样便于程序的开发调试。AT24C02 存储器用户键盘输入STC89C52RC单片机蜂鸣器驱动人体红外热释开关演示数码管显示基于单片机的密码门禁系统设计第 5 页图 2.2 程序设计过程图将程序分成多个模块设计,可提高设计的效率。程序设计过程脉络清晰,即使某个模块出现错误,也能及时发现并纠正。首先设计数码管程序,可以用于对单片机最小系统工作情况进行检查。键盘程序可以借助数码管的实现来观察是否正确。程序的各个模块逐步建立,最后整合成完整的系统。数码管驱
11、动程序阵列键盘程序AT24C02 读取程序工作模式设计蜂鸣器及人体红外热释传感器第三章 系统硬件设计第 6 页第三章第三章 系统硬件设计系统硬件设计本系统硬件由 USB 供电电路、晶振电路、数码管电路、键盘控制电路、人体红外热释传感器电路、继电器电路和蜂鸣器电路等几部分组成。系统整体电路图见图 3.1。图 3.1 系统整体电路图1、STC89C52RC 单片机单片机因为因为 51 我们学过了,就不阐述了。我们学过了,就不阐述了。STC89C52 引脚图见图 3.2:基于单片机的密码门禁系统设计第 7 页图 3.2 STC89C52 引脚图二、二、USB 供电电路供电电路本设计中选用 USB 直
12、接供电,将电脑的 USB 直接连接为设计的硬件电路提供+5V 的稳定电压。USB 的最大额定电流为 500mA,足以满足本设计的要求。在设计的时候,需要注意电路不能出现短路,以免损坏电脑的 USB 接口。USB 母接口见图 3.3:图 3.3 USB 母接口图三、晶振电路三、晶振电路本系统采用 12M 晶振,晶振接到单片机的 XTAL1、XTAL2 引脚处。电路上的晶振旁有两个无极性电容,容量为 33P。这两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十皮发,它会影响到晶振的谐振频率和输出幅度。晶振电路如图 3.4 所示:第三章 系统硬件设计第 8 页图 3.4 晶振电
13、路图基于单片机的密码门禁系统设计第 9 页四、数码管电路四、数码管电路数码管由 7 段 LED 组成,因此可以称为七段数码管。将这七个 LED按一定规律点亮,就能够显示数字 09,以及英文字母A、B、C、D、E、F。而现在的数码管都有带有小数点(DP) ,实际上数码管就变成 8 段了。显示二进制、十进制数、十六进制数,小数都不是问题,加上数码管的价格优势以及功耗甚低,深受广大设计者的欢迎。数码管电路图见图 3.5:图 3.5 数码管电路图五、键盘控制电路五、键盘控制电路键盘作为用户控制系统的重要桥梁。使用阵列式键盘,可以有效的节约单片机的 IO 口。使用 8 个 IO 口就可以组成 4*4 阵
14、列式键盘,这样总共有 16 个按键。键盘按键说明:09 数字输入键,用于密码的输入。密码输入输入后通过“确认”键加以确认。要对输入且在确认前的密码进行修改,可使用“后退”键后退一位,或者“重置键”重新输入。模式切换可以用“管理”和“用户”两键。而“退出”键,则可以从各个状态退到等待模式。键盘控制电路以及按键说明见图 3.6:第三章 系统硬件设计第 10 页图 3.6 键盘控制电路以及按键说明图六、人体红外热释传感器电路六、人体红外热释传感器电路图 3.7 人体红外热释传感器模块人体红外热释传感器基于红外线技术的自动控制产品,当有人进入开关感应范围时,专用传感器探测到人体红外光谱的变化,自动输出
15、高电平,人不离开感应范围,将持续输出高电平;人离开后,开关延时自动关闭负载。灵敏度高,可靠性强,广泛应用于各类自动感应电器设备。延时时间:零点几秒至 30 分钟超低功耗:开关自身功耗0.00005W宽电压设计:4.5V-20VDC电气参数:感应方式 被动式工作电压 4.5V-20VDC感应原理 移动感应最大功耗 0.00005W感应距离 8 米输出方式 高电平/低电平感应角度 140 度圆锥角环境温度-20+50基于单片机的密码门禁系统设计第 11 页光控感应5LUX-500LUX(可调)(标准无光控功能)设计中使用 9013(NPN)三极管,集电极通过 10K 电阻连接到电源正极(VCC)
16、,发射极直接接地(GND) ,基极通过 2.2K 电阻连接到模块的信号输出端。三极管的集电极连接到单片机的 P3.6 口。当模块输出低电平时,三极管导通,P3.6 为低电平。当模块输出高电平时,三极管截止,P3.6 为高电平。人体红外热释传感器电路见图 3.8:图 3.8 人体红外热释传感器电路七、七、AT24C02 存储器电路存储器电路本设计有密码掉电保护功能,提供此功能得益于 AT24C02 这款EEPROM 存储器。AT24C02 是由 ATMEL 公司提供的,I2C 总线串行EEPROM,其容量为 2KB,工作电压在 1.8V5.5V 之间,生产工艺是CMOS 工艺。在掉电的情况下,数
17、据仍然能保存下来,就像我们电脑上的硬盘。AT24C02 引脚见图 3.9:图 3.9 AT24C02 引脚第三章 系统硬件设计第 12 页各引脚功能如下:A2A0:这 3 个引脚是器件地址选择引脚。将这 3 个引脚配置成不同的编码值,在同一串行总线上最多可扩充 8 片同一容量或不同容量的 24 系列串行 EEPROM 芯片。SDA:串行数据输入输出口,是一个双向的漏极开路结构的引脚,容量扩展时可以将多片 24 系列的 SDA 引脚直接相连,实际使用时该引脚必须接一个 5.1k 的上拉电阻。SCL:串行移位时钟控制端。写入时上升沿起作用,读出时下降沿起作用。WAP:硬件写保护控制引脚。当其为低电
18、平时,正常写操作,高电平时,对 EEPROM 部分存储区域提供硬件写保护功能,即对被保护区域只能读不能写。GND:接地。VCC:接+5V 电压。因为单片机里面的 P1 口内建上拉电阻,为了减少电路设计的成本,将 AT24C02 的 SDA 及 SCL 两个引脚接到单片机的 P10 和 P11 引脚。AT24C02 硬件连接见图 3.10:图 3.10 AT24C02 硬件连接图基于单片机的密码门禁系统设计第 13 页第四章第四章 系统软件设计系统软件设计本系统采用 keil uvision2 编写和调试程序和通过 EASY 51Pro V3.0 将程序烧录到 CPU 里面。Keil 软件是目前
19、最流行开发 MCS-51 系列单片机的软件,绝大部分仿真机都支持 Keil。Keil 提供了 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等功能,通过一个集成开发环境(uVision)将这些部份组合在一起,通过这些功能,可以很方便的编写调试 C 程序,多数语句生成的汇编代码很紧凑,容易理解。Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。uVision 是 C51 for Windows 的集成开发环境,可以完成编辑、编译、连接、调试
20、、仿真等整个开发流程。通过 uVision 编辑 C 文件,然后分别由 C51 及 A51 编译器编译生成目标文件(.OBJ)。目标文件可由 LIB51 创建生成库文件,也可以与库文件一起经 L51 连接定位生成绝对目标文件(.ABS)。ABS 文件由 OH51 转换成标准的 Hex 文件,然后将 89C52 CPU与单片机仿真器相连,通过 EASY 51Pro V3.0 将程序烧录到 CPU 里面。一、程序的整体流一、程序的整体流程图程图 第四章 系统软件设计第 14 页 读取 AT24C02中的预存密码进入等待模式,同时进行键盘扫描切换模式?进入该模式输入密码密码正确?开始YNNY相应操作
21、图 4.1 程序控制流程图程序的各个模块建立后,将其按照整体设计思路的流程整合在一起,通过各个模块的协调工作得到完整的系统功能。系统上电后,读取 AT24C02 中的预设密码,随之进入主循环。主循环中有三种模式的选择,系统默认开始模式为等待模式。此时,数码管为循环移动。可以按模式切换键,进入用户模式或管理模式。在进行相应操基于单片机的密码门禁系统设计第 13 页作第四章 系统软件设计第 14 页前,必须输入正确的密码。否则,超过 2 次错误输入,系统报警并返回等待模式。二、数码管驱动程序二、数码管驱动程序系统使用四位数码管作为密码和工作状况的显示。数码可以分为动态和静态的显示。如果使用静态显示
22、,四位数码管就需要占用 8*4=32 个 IO口,显然这是不科学的方法。因此,动态的数码管显示得到很好的使用。动态显示分为段选和位选的控制,当某位数码管被选中时,段值就为该位需显示数值的字型码,之后为下一位的显示。这样多位数码管在某一时刻只有一位被点亮,在刷新频率足够高,一般为 25HZ 以上,人眼就错觉成各位数码管同时被点亮。由于系统中使用的是共阳数码管,其各个字形码见表 4.1:表 4.1 数码管字形码显示字型hgfedcba共阳极字形码0001111110 xC01000001100 xF92010110110 xA43010011110 xB04011001100 x995011011
23、010 x926011111010 x827000001110 xF88011111110 x809011011110 x90A011101110 x88b011111000 x83C001110010 xC6d010111100 xA1E011110010 x86F011100010 x8E基于单片机的密码门禁系统设计第 15 页有了字形码表,我们就可以让数码管显示需要的数字或者字母了。系统中数码管的段选引脚是接到单片机的 P0 口,因此将字形码送到单片机的 P0 口,并且将位选置低电平即可显示。需要注意的是,当显示某位时,其他位选端应置高电平,并且在位选切换之间加上适当的延时。三、键盘扫描
24、及功能程序三、键盘扫描及功能程序阵列键盘又可以称为矩阵键盘,因为每个键可以分成行和列两端接入。P2.0P2.3 为行,P2.4P2.7 为列。开始将整个 P2 口电平至高,接着依次对某一行置低电平。同时,列端口读取按键引脚的电平,如果某位为低电平,则可以判断那个按键被按下。由于单片机的运行速度很快,人轻轻按一下按键,单片机可能经过多次扫描。因此,我可以需要加上一个适当的延时作为按键的消抖功能。四、四、AT24C02 存储器存储器(一) I2C 总线的介绍AT24C02 是一款基于 I2C 总线数据传输的器件,因此这里有必要对I2C 总线的原理进行初步的了解。I2C(InterIntegrate
25、d Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C 总线产生于在 80 年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。I2C 总线是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,最高传送速率 100kbps。各种被控制电路均并联在这条总线上
26、,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C 总线上并接的每一模块电路既是主控器(或被控器) ,又是发送器(或接收器) ,这取决于它所要完成的功能。CPU 发出的第四章 系统软件设计第 16 页控制信号基于单片机的密码门禁系统设计第 17 页分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。 I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。开始信
27、号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。具体程序如下:/起始条件,存储器的通讯起始void Start(void) SDA=1; SCL=1; _nop_ (); _nop_ (); _nop_ (); _n
28、op_ (); SDA=0; _nop_ (); _nop_ (); _nop_ (); _nop_ ();/停止条件,存储器的通讯停止void Stop(void) SDA=0; SCL=1; _nop_ (); _nop_ (); _nop_ (); _nop_ (); SDA=1; _nop_ (); _nop_ (); _nop_ (); _nop_ ();第四章 系统软件设计第 18 页/应答位void Ack(void) SDA = 0; _nop_ (); _nop_ (); _nop_ (); _nop_ (); SCL = 1; _nop_ (); _nop_ (); _no
29、p_ (); _nop_ (); SCL = 0;经 keil uvision2 调试后程序正确,见图 4 .2:图 4.2 keil c 调试程序结果(二) AT24C 系列 E2PROM 读写操作对 AT24C 系列 E2PROM 的读写操作完全遵守 I2C 总线的主收从发和主发从收的规则。SDA 线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在 SCL 线的时钟信号是低电平时才能改变: 图 4.3 位传输时序图基于单片机的密码门禁系统设计第 19 页AT24C02 的写操作 写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。在本设计中主
30、要使用单字节的写入方式。 图 4 .4 写一个字节的时序图AT24C02 的写操作流程图见图 4.5: 发送读取数据地址开始开始信号发送写入指令(器件地址+写标志)写入数据结束图 4.5 AT24C02 的写操作流程图程序如下:/向 AT24C02 写入数据void WDToROM(uchar Data,uchar Address) Start(); /调用起始条件函数 Write(WriteDeviceAddress);/发送命令,准备写入数据到存储器,让存储器第四章 系统软件设计第 20 页做好准备 Ack();/调用应答函数 Write(Address);/先发送要写入数据的的存储器内存
31、地址 Ack();/调用应答函数 Write(Data);/开始发送要写入到存储器中的数据 Ack();/调用应答函数 Stop();/ 调用停止发送函数,表示发送完毕 delay(10); AT24C02 的读操作 读操作有三种基本操作:当前地址读、随机读和顺序读。应当注意的是:最后一个读操作的第 9 个时钟周期不是“不关心”。为了结束读操作,主机必须在第 9 个周期间发出停止条件或者在第 9 个时钟周期内保持 SDA为高电平、然后发出停止条件。 AT24C 系列片内地址在接收到每一个数据字节地址后自动加 1,故装载一页以内规定数据字节时,只须输入首地址,若装载字节多于规定的最多字节数,数据
32、地址将“上卷”,前面的数据被覆盖。 连续读操作时为了指定首地址,需要两个伪字节写来给定器件地址和片内地址,重复一次启动信号和器件地址(读),就可读出该地址的数据。由于伪字节写中并未执行写操作,地址没有加 1。以后每读取一个字节,地址自动加 1。 在读操作中接收器接收到最后一个数据字节后不返回肯定应答(保持SDA 高电平)随后发停止信号。AT24C02 的读操作流程图见图 4.6:基于单片机的密码门禁系统设计第 21 页 发送读取数据地址开始开始信号发送写入指令(器件地址+写标志)发送读取指令(器件地址+读标志)重新开始信号读取数据结束图 4.6 AT24C02 的读操作流程图程序如下:/从 A
33、T24C02 读取数据uchar RDFromROM(uchar Address)uchar DATA = 0; Start(); /调用起始条件函数Write(WriteDeviceAddress); /让存储器准备接受命令Ack(); Write(Address); /发送要读出来的数据地址Ack();Start(); /重新调用起始函数Write(ReadDviceAddress); /发送读出数据的命令Ack();第四章 系统软件设计第 22 页_nop_ (); _nop_ (); _nop_ (); _nop_ ();DATA = Read(); /开始读出数据SCL=0;NoAc
34、k(); /读出数据成功。返回信号成功信号给存储器五、系统模式功能程序设计五、系统模式功能程序设计本系统中有三个模式分别是:等待模式、访客模式以及管理模式。系统在上电后,直接进入等待模式,等待用户输入模式切换信号。在选择好访客模式或者管理模式之后,需要输入正确的密码,才能开门。在访客模式下,输入正确的密码,只能有开门功能。而在管理模式下,在输入正确密码后,解锁并且能修改密码。需要注意的是,在访客、管理模式下,密码输入错误均发出连续的报警鸣叫。在报警后,自动进入等待模式。模式选择见图 4.7: 图 4.7 模式选择图主循环等待模式用户模式管理模式输入密码输入密码修改密码基于单片机的密码门禁系统设
35、计第 23 页六、系统软件测试六、系统软件测试经测试系统软件没有错误。调试结果见图 4.8:图 4.8 keil uvision2 调试程序图 第五章 系统测试与调试第 24 页第五章第五章 系统测试与调试系统测试与调试通过 EASY 51Pro V3.0 将程序烧录到 CPU 里面。烧录界面见图 5.1: 图 5.1 ASY 51Pro V3.0 烧录程序界面 一、门禁系统的使用说明一、门禁系统的使用说明第一步:通过一条 USB 线将系统和 PC 机相连,使 PC 机为系统供电。第二步:通过人体红外热释传感器检测是否有人进入服务区。第三步:若人体红外热释传感器检测到有人进入服务区,则数码管循
36、环点亮,系统自动转到等待模式。第四步:用户通过键盘选择进入模式,分为用户和管理员两种模式。第五步:用户选择进入模式后,输入密码,按 ENTER 键确认。第六步:若输入密码正确,继电器闭合绿色 LED 点亮。第七步:若输入密码错误,红色 LED 点亮,蜂鸣器发出错误警告。重新输入密码,密码可输入两次。两次输入错误后蜂鸣器报警。基于单片机的密码门禁系统设计第 25 页 二、门禁系统的测试二、门禁系统的测试 系统上电后,人体红外热释探头背对着人,此时,单片机的数码管全灭。将探头对着人体,数码管各段循环点亮,以示有人进入服务区,系统并进入等待模式。经过测试,模块的监测范围从 07m 左右的距离范围,角
37、度为 0150的球体范围。图 5.2 等待模式工作演示图 在没有正确密码输入时,红色 LED 点亮。通过模式键的切换,输入密码。当密码输入正确时,继电器闭合绿色 LED 点亮。当输入密码错误连续达到两次,驱动蜂鸣器以示警示。并且系统自动退出到等待模式。 图 5.3 开门、关门演示图经过测试,系统基本能实现设计的要求。结束语第 26 页结束语结束语本系统完成了红外信息采集、键盘信息采集、密码判断、通过判断给出正确的指令等功能。通过这次毕业设计,我体会到理论知识对实践有很大的指导作用,只有在正确的理论指引下,才能设计出合乎实际需要的硬件电路。同时,我也深深体会到,理论知识在解决实际问题时还是有点出
38、入,使我明白到理论与实践应该要相结合,缺一不可。而且在实践中通过具体应用所学知识解决实际问题,培养和积累了我分析问题、解决问题的能力和经验。最重要的是在硬件设计方面有了初步的探索、特别是锻炼了我的电子制作的动手能力,我收获颇多。通过这次毕业设计,我懂得了一句话“办法总比困难多” ,作为一名合格的大学生,应该要有迎难而上的精神。基于单片机的密码门禁系统设计第 27 页参考文献参考文献01 高峰单片微型计算机原理与接口技术M北京:科学出版社,200302 陈章龙常用单片机大全M哈尔滨:黑龙江科学技术出版社,198903 孙涵芳,徐爱卿MCS-51、96 系列单片机原理及应用M北京:北京航空航天大学
39、出版社,198904 何桥单片机原理及应用M北京:中国铁道出版社,200505 周航慈单片机应用程序设计技术M北京:北京航空航天大学出版社,200206 李华MCS-51 系列单片机实用接口技术M北京:北空航天大学出版社,200407 孙育才系列单片微计算机及其应用M南京:南京工学院出版社,198708 欧阳清华反汇编原理及其实现技术M武汉:武汉大学出版社,199209 张俊谟MCS-51 和 80C51 系列单片机J电子世界,2001 10 赵小侠8051 单片机数据传输接口扩展技术M北京:人民邮电出版社,2001. 11 徐爱钧单片机高级语言 C51 Windows 环境编程与应用M北京:
40、电子工业出版社,2002 年 12 月12 李维,郭强液晶显示应用技术M北京:电子工业出版社,200113 王志强MCS-51 单片机应用开发子程序M北京:人民邮电出版社,200514 李朝青单片机原理及接口技术M北京:北京航空航天大学出版社,1994附录第 28 页附录附录(源程序)源程序)#include reg52.h#include intrins.h /调用头文件#define WriteDeviceAddress 0 xa0 / AT24C02 的识别码是 1010,硬件的三个地址引脚接地为 000,最后一位为 0 时表示向存储器写入数据#define ReadDviceAddre
41、ss 0 xa1 /最后一位为 1 时表示从存储器读出数据。0 xa0=1010 000 0 ,0 xa1=1010 000 1 .sbit BCD6 = P17;sbit BCD5 = P16;sbit BCD4 = P15;sbit BCD3 = P14;sbit BCD2 = P13;sbit BCD1 = P12;sbit SCL = P11; /at24c02 串行时钟信号sbit SDA = P10; /at24c02 串行数据信号sbit P20 = P20;sbit P21 = P21;sbit P22 = P22;sbit P23 = P23;sbit P24 = P24;s
42、bit P25 = P25;sbit P26 = P26;sbit P27 = P27;sbit BEEP = P30;sbit UNLOCK = P31;sbit LOCK = P32;sbit ADMINI = P33;typedef unsigned char uchar;const uchar BCD=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,0 xBF; /定义数字显示数组为常量 /0, 1, 2 3 4 5 6 7 8 9 -uchar mode = 0;uchar Password6 = 1,2,3,4
43、,5,6; /存放从存储器中读取的原始密码uchar Input6 = 0 x0A,0 x0A,0 x0A,0 x0A,0 x0A,0 x0A; /存放从键盘输入的密码 void delay(unsigned int number) unsigned char temp; for(;number!=0;number-) for(temp=150;temp!=0;temp-) ; /起始条件,存储器的通讯起始void Start(void) 基于单片机的密码门禁系统设计第 29 页 SDA=1; SCL=1; _nop_ (); _nop_ (); _nop_ (); _nop_ (); SDA
44、=0; _nop_ (); _nop_ (); _nop_ (); _nop_ ();/停止条件,存储器的通讯停止void Stop(void) SDA=0; SCL=1; _nop_ (); _nop_ (); _nop_ (); _nop_ (); SDA=1; _nop_ (); _nop_ (); _nop_ (); _nop_ ();/应答位void Ack(void) SDA = 0; _nop_ (); _nop_ (); _nop_ (); _nop_ (); SCL = 1; _nop_ (); _nop_ (); _nop_ (); _nop_ (); SCL = 0;/反
45、向应答位void NoAck(void) SDA = 1; _nop_ (); _nop_ (); _nop_ (); _nop_ (); SCL = 1; _nop_ (); _nop_ (); _nop_ (); _nop_ (); SCL = 0;/向存储器 发送数据子程序,Data 为要求发送的数据void Write(uchar Data) uchar BitCounter=8; /位数控制 uchar temp; /中间变量控制 do temp=Data; SCL=0; _nop_ (); _nop_ (); _nop_ (); _nop_ (); if(temp&0 x80)=0
46、 x80) /如果最高位是 1 就发送 1 SDA=1; else SDA=0; /如果最高位是 0 就发送 0 SCL=1;附录第 30 页 temp = Data1; /RLC 逐位的发送数据 Data = temp; BitCounter-; /没发完一位数据就减一 while(BitCounter); /如果发送完 8 位后跳出循环 SCL=0; /释放总线 delay(20); /读一个字节的数据,并返回该字节值uchar Read(void) uchar temp=0; uchar temp1=0; uchar BitCounter=8; /定义从存储器读出的数据位数 SDA=1;
47、 do SCL=0; _nop_ (); _nop_ (); _nop_ (); _nop_ (); SCL=1; _nop_ (); _nop_ (); _nop_ (); _nop_ (); if(SDA) /如果 Sda=1 temp=temp|0 x01; /temp 的最低位置 1 else temp=temp&0 xfe; /否则 temp 的最低位清 0 if(BitCounter-1) temp1=temp1; /逐位的读出 temp=temp1; BitCounter-; while(BitCounter); /读出 8 位后跳出循环 delay(20); return(te
48、mp); /返回读出的数据/向 AT24C02 写入数据void WDToROM(uchar Data,uchar Address) Start(); /调用起始条件函数 Write(WriteDeviceAddress); /发送命令,准备写入数据到存储器,让存储器做好准备 Ack(); /调用应答函数 Write(Address); /先发送要写入数据的的存储器内存地址 Ack(); /调用应答函数 Write(Data); /开始发送要写入到存储器中的数据 Ack(); /调用应答函数 Stop(); / 调用停止发送函数,表示发送完毕 delay(10);基于单片机的密码门禁系统设计第
49、 31 页/从 AT24C02 读取数据uchar RDFromROM(uchar Address) uchar DATA = 0; Start(); /调用起始条件函数 Write(WriteDeviceAddress); /让存储器准备接受命令 Ack(); Write(Address); /发送要读出来的数据地址 Ack(); Start(); /重新调用起始函数 Write(ReadDviceAddress); /发送读出数据的命令 Ack(); _nop_ (); _nop_ (); _nop_ (); _nop_ (); DATA = Read(); /开始读出数据 SCL=0;
50、NoAck(); /读出数据成功。返回信号成功信号给存储器 Stop(); delay(10); return (DATA); /返回读出的数据/写入密码void WDPassword(uchar *tmp) uchar count = 0; while(count != 6) WDToROM(tmpcount,count); count+; /读取密码void RDPassword(uchar *tmp) uchar count = 0; while(count != 6) tmpcount = RDFromROM(count); count+; /键盘扫描uchar GetKey(void
51、) P2 = 0 xff; /扫描第一行 P20 = 0; if(P24 = 0) delay(50);附录第 32 页 if(P24 = 0) return 0 x00; if(P25 = 0) delay(50); if(P25 != 0) return 0 x01; if(P26 = 0) delay(50); if(P26 != 0) return 0 x02; if(P27 = 0) delay(50); if(P27 != 0) return 0 x03; P20 = 1; /扫描第二行 P21 = 0; if(P24 = 0) delay(50); if(P24 != 0) re
52、turn 0 x04; if(P25 = 0) delay(50); if(P25 != 0) return 0 x05; if(P26 = 0) delay(50);基于单片机的密码门禁系统设计第 33 页 if(P26 != 0) return 0 x06; if(P27 = 0) delay(50); if(P27 != 0) return 0 x07; P21 = 1; /扫描地三行 P22 = 0; if(P24 = 0) delay(50); if(P24 != 0) return 0 x08; if(P25 = 0) delay(50); if(P25 != 0) return
53、0 x09; if(P26 = 0) delay(50); if(P26 != 0) return 0 x0a; if(P27 = 0) delay(50); if(P27 != 0) return 0 x0b; P22 = 1; /扫描第四行 P23 = 0;附录第 34 页 if(P24 = 0) delay(50); if(P24 != 0) return 0 x0c; if(P25 = 0) delay(50); if(P25 != 0) return 0 x0d; if(P26 = 0) delay(50); if(P26 != 0) return 0 x0e; if(P27 = 0
54、) delay(50); if(P27 != 0) return 0 x0f; P23 = 1; return 0 xFF;/数码管显示程序void Display(uchar *tmp) uchar value; value = tmp0; BCD1 = 0; P0 = BCDvalue; delay(20); BCD1 = 1; value = tmp1; BCD2 = 0; P0 = BCDvalue; delay(20); BCD2 = 1; 基于单片机的密码门禁系统设计第 35 页 value = tmp2; BCD3 = 0; P0 = BCDvalue; delay(20); B
55、CD3 = 1; value = tmp3; BCD4 = 0; P0 = BCDvalue; delay(20); BCD4 = 1; value = tmp4; BCD5 = 0; P0 = BCDvalue; delay(20); BCD5 = 1; value = tmp5; BCD6 = 0; P0 = BCDvalue; delay(20); BCD6 = 1;/等待模式void WaitMode(void) uchar mov,speed; uchar value; uchar tmp = 0 x01; P1 &= 0 x03; LOCK = 1; UNLOCK = 0; ADM
56、INI = 0; for(mov=0;mov6;mov+) Inputmov = 0 x0A; for(mov=0;mov8;mov+) for(speed=0;speed70;speed+) P0 = tmp; delay(25); value = GetKey(); if(value = 0 x0D) mode = 1; break; if(value = 0 x0E)附录第 36 页 mode = 2; break; tmp = 1; /访客模式void GuestMode(uchar *password,uchar *input) uchar count = 0; uchar tmp
57、= 0; uchar error = 0; uchar i; while(1) tmp = GetKey(); if(tmp/10 = 0) inputcount = tmp; count+; if(tmp = 0 x0A) for(i=0;i6;i+) if(passwordi != inputi) BEEP = 1; delay(200); BEEP = 0; error+; for(i=0;i6;i+) inputi = 0 x0A; count = 0; i = 0; break; if(error = 4) BEEP = 1; delay(200); BEEP = 0; delay(200); BEEP = 1; delay(200); BEEP = 0;基于单片机的密码门禁系统设计第 37 页 delay(200); BEEP = 1; delay(200); BEEP = 0; BEEP = 1; delay(200); BEEP = 0; BEEP = 1; delay(200); BEEP = 0; mode = 0; break; if(i = 6) LOCK = 0; UNLOCK = 1; BEEP = 1; delay(200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理安全不良事件报告
- 2026-2030中国木耳行业市场发展分析及发展与投资前景研究报告
- 2025年医药区块链溯源研发数据追溯
- 传染病防治法突发公共卫生事件传染病试卷及答案
- 护理工作中的创新实践
- 河南省周口市项城市部分校2025-2026学年度下期期末考试试卷八年级英语(含答案)
- 2026新疆红星城市开发建设有限公司第一次社会招聘5人模拟试卷(各地真题)附答案详解
- 2026年合肥市中小学新任教师公开招聘笔试温馨提示笔试题库及完整答案详解(典优)
- 2026江苏苏州工业园区苏相合作区助理人员招聘6人笔试题库及参考答案详解(基础题)
- 2026湖南湘潭市湘钢一中招聘编外教师16人笔试题库(夺分金卷)附答案详解
- 拆除工程应急处置方案(3篇)
- 2025年融媒体中心全媒体记者招聘考试笔试试题(含答案)
- 2025年党史党建知识测试题库100题(含标准答案)
- 2025华晋焦煤井下操作技能人员招聘100人(山西)笔试参考题库附带答案详解析集合
- 大数据技术在电子商务中的应用研究论文
- 05 新高考必背60篇选必下理解性默写逐篇过关练(教师版)
- 2024年贵州省普通高校招生信息表(普通类本科批-历史组合)
- 初中全英文数学试卷
- 新版苏教版六年级数学下册全册教案
- 2021新安全生产法解读
- 现场应急救护知识讲座老年人课件
评论
0/150
提交评论