


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. . .职业技术学院毕业设计论文论文题目: 姓 名: 所在院系: 班 级:学 号: 指导老师:职业技术学院二一三年十二月二十六日1 / 41. . .基于单片机的门禁系统的设计摘 要门禁系统接受 89c52 单片机作为把握核心,外围加蜂鸣器把握电路、开门指示灯电路、电控锁把握电路以与lcd 液晶显示电路等。门禁系统主要由cpu、工作指示电路、振荡电路、蜂鸣器电 路、门控锁电路、矩阵键盘、读卡模块、显示模块等组成。该门禁系统接受射频卡完成刷卡进门,按刷卡出门等功能。其工作原理 为:当刷卡时,蜂鸣器响一下,如卡权限获得允许,显示模块显示卡号,同时继电器动作将门锁打开,指示灯点亮,延时一段时间后继
2、电器再次动作将门锁锁闭,指示灯熄灭。当按下出门按钮时,继电器动作将门锁打开,指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭,指示灯熄灭。当输入初始密码时,若输入正确,继电器动作将门锁打开,指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭。此外,程序中还增加了射频卡权限推断的功能,当遇到合法卡时显示卡号,门锁打开,延时 10s 自动关闭,当遇到非法卡时不显示卡号门锁不开。本系统设计简洁、性能优良,具有肯定的有用性。关键词:门禁,射频卡,电控锁,液晶显示,单片机把握3 / 41第 1 章 概述1.1 系统方案的比较1.1.1 选题论证在现今社会,随着人们对门禁系统各方面要求的不断提高,门禁系
3、统的应用围越来越广泛,因此门禁系统的研发已成为现代科技领域的一个热门课题。目前,门禁系统已成为平安防系统中极其重要的一部分,在一些发达国家,门禁系统正以远远高于其它类安防产品的进度迅猛进展;门禁系统之所以能在众多安防产品中脱颖而出,根本缘由是由于其转变了以往安防产品,如:闭路监控,防盗报警等被动的安防方式,以主动的把握替代了被动监视的方式,通过对主要通道的把握,大大的防止了罪犯从正常通道的侵入,并且可以在罪案发生时通过对通道门的把握限制罪犯的活动围,制止犯罪或削减损失。此外,人们对门禁系统的应用已不局限在单一的出入口把握,而且还要求它不仅可应用于智能大厦或智能社区的门禁把握、考勤治理、安防报警
4、、停车场把握、电梯把握、楼宇自控等,还可与其它系统联动把握等多种把握功能。安装有门禁系统的建筑具有以下优点:(1) 具有对门户出入把握,保安防盗,报警等多种功能。(2) 便利部员工或住户出入,同时杜绝外来人员任凭进出,既便利了部治理,又增加了部的保安。(3) 门禁治理系统作为智能建筑中不行缺少的安保自动化的一部分,为用户供应一个高效的工作环境,从而提高治理的层次。也正是由于门禁系统有用性强,市场需求大,应用广泛,我们便选此作为争辩设计的课题。1.1.2 方案选择门禁系统有很多种方案:主要有联网和不联网型。. . .联网型:结构图如图 1-1 示:图 1-1 联网型结构图联网型门禁系统的优点:(
5、1) 实时联网;(2) 刷卡后马上把数据传输到主机上;(3) 便于查询并能生成报表; 缺点:(1) 计算机要求 24 小时开机;(2) 计算机或治理机万一有故障系统瘫痪;(3) 有问题影响面大。不联网型门禁系统的优点:(1) 单台刷卡机就能工作;(2) 不用布线;(3) 操作简洁便利。缺点:不便于查询。依据以上分析,我们的课题选择了不联网型。由于此设计简洁,提交作品便利, 易操作。1.1.3 cpu 的选择我们在这个课题的设计上接受了 51 单片机系统,之所以接受单片机系统是4 / 41. . .由于成本较低,功能完全可以满足,进展也比较成熟且完善。而 dsp、arm 系统虽然科技含量高于 5
6、1 单片机系统,但是其价格昂贵并且进展尚未成熟。因此, 依据我们学的学问和市面上的应用,经过比较我们选择了技术成熟、价格便宜、设计简洁、使用便利的单片机平台。1.1.4 射频卡的选择目前市面上的卡有很多种类:条码、磁卡、接触式 ic 卡,非接触式 ic 卡等,条码和磁卡,在超市和银行方面应用的比较多,接触式 ic 卡,以前在公共中用的比较多,但接触式 ic 卡,芯片外露易坏、易折,而非接触式 ic 卡既射频卡,它把芯片和线圈封装卡片,不简洁损坏、不怕恶劣的环境,现在社会上很流行,牢靠性也高。依据卡的分析,我们选择目前流行最广,牢靠性高,成本低的只读卡,即接受em4000 型的id 卡。1.1.
7、5 液晶显示的选择1602 液晶也叫 1602 字符型液晶它是一种特地用来显示字母、数字、符号等的点阵型液晶模块它有若干个 5×7 或者 5×11 等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正由于如此所以它不能显示图形。目前市面上字符液晶绝大多数是基于hd44780 液晶芯片的,把握原理是完全相同的,基于hd44780 写的把握程序可以很便利地应用于市面上大部分的字符型液晶。因此,选择lcd1602 能够满足门禁系统设计的需要。5 / 41. . .第 2 章 硬件电路的设计2.1 电路原理2.
8、1.1 门禁系统主要组成由单片机、电源指示、工作指示、振荡电路、蜂鸣器电路、门控锁电路、4×4 矩阵键盘、读卡模块、显示模块组成。如图 2-1 示:图 2-1 电路原理图2.1.2 门禁系统工作原理1、当刷卡时,蜂鸣器响一下,如卡权限获得允许,显示模块显示卡号,同时继电器动作将门锁打开指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭指示灯熄灭;当非法卡刷卡时,没有任何动作。2、当按下出门按钮时,继电器动作将门锁打开指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭指示灯熄灭。3、当进门输入密码时,密码正确则继电器动作将门锁打开指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭指示灯
9、熄灭;密码错误则蜂鸣器报 警,延时一段时间后蜂鸣器停止报警。6 / 41. . .2.2 资源安排软、硬件设计是设计中不行缺少的,为了满足功能和指标的要求,资源安排如下:1晶振接受 11.0592mhz;2单片机资源安排如表 2-1、2-1 示:表 2-1 单片机资源安排表(1)p0.0- p0.7p1.0- p1.7p2.0p2.1p2.2lcd 显示矩阵键盘rsrwe表 2-2 单片机资源安排表(2)p2.3锁p2.4蜂鸣器p2.5ledp3.0读卡p3.2按键中断0 开0 响0 亮1 不开1 不响1 不亮3、计算:由于射频卡的读卡头选用em4000 型,读卡频率是 11.0592mhz,
10、所以最小系统晶振,必需用 11.0592mhz 才能读卡。(1) 定时把握字确定:选用定时器t1,方式 2,所以 tmod 是 20h。(2) 计算初值x = 256 -(foxc*(smod+1)/384*波特率= 256 -(11.0592 *106 *(0+1)/384*9600 = 253th1=0fdhtl1= 0fdh2.3 最小系统设计2.3.1 89c52 的简述1.89c52 的简介7 / 41. . .89c52 是 intel 公司 mcs-51 系列单片机中基本的产品,它接受 atmel 公司牢靠的 cmos 工艺技术制造的高性能 8 位单片机,属于标准的 mcs-51
11、 的hcmos 产品。它结合了 cmos 的高速和高密度技术与 cmos 的低功耗特征,它基于标准的 mcs-51 单片机体系结构和指令系统,属于 89c51 增加型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达 把握等应用场合。 89c52 置 8 位中心处理单元、256 字节部数据存储器 ram、8k 片程序存储器( rom)32 个双向输入/输出(i/o) 口、3 个 16 位定时/计数器和 5 个两级中断结构,一个全双工串行通信口,片时钟振荡电路。此外, 89c52 还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结 cpu 而 ram
12、定时器、串行口和中断系统维持其功能。掉电模式下,保存 ram 数据,时钟振荡停止,同时停止芯片其它功能。 89c52 有pdip(40pin) 和 plcc(44pin) 两种封装形式。89c52 引脚图如图 2-2 示:图 2-2 89c52 的引脚图89c52 单片机外部有 32 个端口可供用户使用,其功能如表 2-3 示:端引脚表 2-3 89c52 外部端口功能表第一功能区其次功能区8 / 41. . . 位置393p0符号功能p0.0p通用符号ad0ad功能地址/数据总线(低2p118p28.7i/o 口a8a15地址总线(高位)10p3.0rxd串行通信发送口11p3.1tx0串行
13、通信接收口12p3.2int0外部中断 0p31314p3.3 p3.4通用i/o 口int1 t0外部中断 1计数器 0 输入端口15p3.5t1计数器 1 输入端口16p3.6wr外部储存器写使能17p3.7rd外部储存器读使能2120.7.7p1.0p1p2.0p2i/o 口7位)通用i/o 口通用门禁系统数控部分接受 89c52 单片机作为把握核心,其部组成包括:一个8 位的微处理器 cpu 与片振荡器和时钟产生电路,但石英晶体和微调电容需要外接;片数据存储器 8kb ram 低 128 字节,存放读/写数据;高 128 字节被特别功能寄存器占用;片程序存储器 rom;四个 8 位并行
14、 i/o(输入/输出)接口 p3p ,每个口可以用作输入,也可以用作输出;两个定时/计数器,每个定时/计- 0数器都可以设置成计数方式,用以对外部大事进行计数,也可以设置成定时方式,并可以依据计数或定时的结果实现计算机把握;五个中断源的中断把握系统;一个全双工 uart(通用异步接收发送器)的串行 i/o 口。在 89c52 单片机的基础上,外围增加蜂鸣器把握电路、开门指示灯电路、电控锁把握电路以与 1602 显示电路等,构成了门禁系统的把握电路。2.4 最小系统的设计门禁系统数控部分接受 89c52 单片机作为把握核心,其部组成包括:一个8 位的微处理器 cpu 与片振荡器和时钟产生电路,但
15、石英晶体和微调电容需要外接;片数据存储器 8kb ram 低 128 字节,存放读/写数据;高 128 字节被特别9 / 41. . .功能寄存器占用;片程序存储器 rom;四个 8 位并行 i/o(输入/输出)接口 p3 p0,每个口可以用作输入,也可以用作输出;两个定时/计数器,每个定时/计数器都可以设置成计数方式,用以对外部大事进行计数,也可以设置成定时方式,并可以依据计数或定时的结果实现计算机把握;五个中断源的中断把握系统;一个全双工 uart(通用异步接收发送器)的串行 i/o 口。在 89c52 单片机的基础上,外围增加蜂鸣器把握电路、开门指示灯电路、电控锁把握电路以与 1602
16、显示电路等,构成了门禁系统的把握电路。其原理图如图 2-3 示:图 2-3 门禁系统把握原理图第 3 章 硬件电路原理3.1 门控锁电路10 / 41. . .工作原理:当p2.3 口输出高电寻常q2 导通,q3 截止,此时继电器的把握线圈为开路,继电器不动作。门锁接于继电器常闭端,门锁闭合,门处于锁死状态。当p2.3 口输出低电寻常q2 截止,q3 导通,此时继电器的把握线圈闭合,继电器动作。继电器常闭端断开,门锁打开,门处于打开状态。门控锁电路如图3-1 示:图 3-1 把握锁电路图3.2 蜂鸣器电路工作原理:当 p2.4 输出高电寻常,q4 导通,q5 截止,蜂鸣器回路开路,蜂鸣器不响。
17、当 p2.4 输出高电寻常,q4 截止,q5 导通,蜂鸣器回路闭合,蜂鸣器发出响声。电路组成如图 3-2 示:11 / 411zbu. . .日 阳 山r .u .5 p q. . .4r 5 q4 :2p np .图 3-2 蜂鸣器电路图3.3 把握指示灯工作原理:当p2.5 口输出高电寻常,q1 截止,发光二极管熄灭。当p2.5 口输出低电寻常,q1 导通,发光二极管点亮。电路组成如图 3-3 示:r25.1k. 26q1npn .-图 3-3 工作指示灯电路图3.4 4×4 矩阵键盘12 / 41. . .工作原理: p1 口高四位为低电平,低四位为高电平。当有键按下时,p1.
18、0-p1.3 给 p3.2 口输入低电平,触发int0 中断,程序作出相应处理,如 3-4 示:图 3-4 4×4 矩阵键盘电路图3.5 读卡模块设计上我们接受 id 射频卡读卡器。em9913bf 125khz 感应式读卡模组是针对 125khz 非接触式 rfid 晶片而设计的读卡模组,它能针对目前市面上 125khz 非接触式 rfid 晶片如凌航科技 gk4001 晶片或其它规格现相近产品进行资料读取与资料推断,使用者可以一次开发感应式读卡与相关应用系统,该模块主要围为互动式玩具、门禁管制系统、人员考勤治理、动物或物品辨识与产品管 理,此读卡模组主要优缺点表达如下:优点:(1
19、) 独立性高,(2) 二次开发简洁,安装简洁资料读取稳定性高(3) 统平安性高,rfid 资料不重复且难以复制(4) 可选择数据输出格式缺点:电脑必需 24 小时开机,便于数据传送。硬件/软件功能:13 / 41. . .125khz 感应式读卡机系统如图 3-5 示:感应线圈读卡器模组rs232out pu 接 cpu3.0图 3-5 读卡器示意图读卡器引脚连接图如 3-6 示:图 3-6 读卡器引脚连接示意图使用 em9913bf 模块,在 5-15cm 距离读取 gk4001 的时间不超过 70ms。感应式读卡系统电源 dc 5v,感应线圈(antenna)为系统必需,感应线圈可以与系统
20、分开放置,亦可设计与系统中,为防止感应电磁场干扰,请勿将金属板置于感应线圈前后。每个卡片部有一个小芯片和感应线圈,价格低廉,国最普与的 em id 卡, 大多为瑞士 nem 或 gk 公司的 4100、4102 系列芯片+线圈+卡基封装而成。每卡14 / 41. . .有且只有一个唯一的,不行更改和复制的 id 码(64 位 2 进制的永不重复的卡号),因其平安牢靠,价格低廉而大量应用于身份识别、产品防伪等领域。读卡器卡号输出格式的说明:由于历史的缘由,或者不同领域习惯的缘由,最常见到的有五种读卡方 式,我们接受的读卡格式为:将 10 位十六进制的 asc字符串,即 10hex 格式的倒数第
21、5、第 6 位,转换为 3 位十进制卡号,在将后 4 位,转换为 5 位十进制卡号,中间用“,”分开,即“2h+4h”,马上 2h“6f”转换为“111”,4h “6c3a”转换为“27706”,最终将 2 段连在一起输出为“111,27706”。3.6 显示模块lcd1602 是指显示的容为 16×2,即可以显示两行,每行 16 个字符液晶模块。它是一种特地用来显示字母、数字、符号等的点阵型液晶模块它有若干个5×7 或者 5×11 等点阵字符位组成,每个点阵字符位都可以显示一个字符。目前市面上字符液晶绝大多数是基于hd44780 液晶芯片的,把握原理是完全相同的
22、,因此基于hd44780 写的把握程序可以很便利地应用于市面上大部分的字符型液晶。3.6.1 lcd1602 主要技术参数显示容量:16×2 个字符芯片工作电压:4.55.5v 工作电流:2.0ma(5.0v) 模块最正确工作电压:5.0v字符尺寸:2.95×4.35(w×h)mm3.6.2 引脚功能说明1602 引脚如图 3-8 示:15 / 41. . .图 3-7 1602 引脚示意图1602 引脚功能如表 3-2 示:表 3-2 1602 引脚功能表编符号引脚说明编符号引脚说明1vss电源地9d2数据2vdd电源正极10d3数据3vl液晶显示偏11d4数据
23、4rs数据/命令选12d5数据5r/m读/写选择13d6数据6e使能信号14d9数据7d0数据15bla背光源正极8d1数据16blk背光源负极1602 接受标准的 16 脚接口,其中: 第 1 脚:vss 为电源地第 2 脚:vdd 接 5v 电源正极第 3 脚:v0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个 10k 的电位器调整对比度)。第 4 脚:rs 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指令寄存器。第 5 脚:rw 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第
24、 6 脚:e(或 en)端为使能(enable)端。第 714 脚:d0d7 为 8 位双向数据端。第 1516 脚:空脚或背灯电源。15 脚背光正极,16 脚背光负极16 / 41. . .3.6.3 1602 指令集1602 液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的(说明 1 为高电平,0 为低电平)。如表 3-3 示:表 3-3 1602 指令集指令 1:清显示,指令码 01h,光标复位到地址 00h 位置。指令 2:光标复位,光标返回到地址 00h。指令 3:光 3 标和显示位置设置i/d,光标移动方向,高电平右移,低电平左移, s:屏幕上全部文字是否左移或右移,高
25、电平表示有效,低电平表示无效。指令 4:显示开关把握。d:把握整体的显示开与关,高电平表示开显示,低电平表示关显示。c:把握光标的开与关,高电平表示有光标,低电平表示无光标 b:把握光标是否闪耀,高电平闪耀,低电平不闪耀。指令 5:光标或显示移位 s/c :高电寻常显示移动的文字,低电寻常移动光标。指令 6:功能设置命令 dl:高电寻常为 4 位总线,低电寻常为 8 位总线 n:低电寻常为单行显示,高电寻常为双行显示,f:低电寻常显示 5x7 的点阵字符,高电寻常显示 5x10 的显示字符。指令 7:字符发生器ram 地址设置。指令 8:ddram 地址设置。17 / 41. . .指令 9:
26、读忙信号和光标地址 bf:忙标志位,高电平表示忙,此时模块不能接收命令或数据,假如为低电平表示不忙。3.6.4 与 hd44780 相兼容的芯片时序表基本操作时序表如表 3-5 示:读状态入写表 3-5 基本操作时序表输rs=l,r/w=h,e=h输出输rs=l,r/w=h,d0-d7=指令输d0-d7=状态字无指令入读输数据入码,e=高脉冲rs=h,r/w=h,e=h出输d0-d7=数据出写数据入输rs=h,r/w=l,d0-d7=数输无据, e=高脉冲出读操作时序如图 3-8 示:图 3-8 读操作时序图18 / 41. . .写操作时序如图 3-9 示:1邸xl厂臼”:田1e“1va|
27、id 加 t a嘈忙图 3-9 写操作时序图第 4 章 软件设计4.1 系统主程序分析4.1.1 主程序流程图主程序流程图如图 4-10 示:婢鸣器响 一下,t.eo亮一卜g lc c-thw断中待等五中断, 时器初始化, 部中断初始卖:王图 4-10 主程序流程图19 / 41. . .4.1.2 主程序清单#include<reg52.h> #include<intrins.h> #include<define.h> #include<delay.h> #include<enter_out.h> #include<lcd.h
28、> #include<keyboard.h> #include<display.h> #include<t1.h>/*主程序*/ void main()led = 0;/led 亮buzzer = 0; /蜂鸣器 响20 / 41ea = 1;int0_init(); t1_init(); lcd_init(); p1 = 0x0f;delay(100);/开全部中断/键盘初始化led = 1;/熄灭 ledbuzzer=1;/关 蜂鸣器while(1)display(); delay(50);. . .4.2 子程序分析4.2.1 显示程序1. 显示
29、程序流程图如图 4-11 示:图 4-11 显示程序流程图2. 显示程序清单:/*函数功能:与最近一次 lcd 显示界面比较,以此作是否清屏处理入口参数:出口参数:*/ void judge_clear_lcd()21 / 41. . .if( n_display != n_display_history )lcd_wcmd(0x01);/清屏/*函数功能:lcd 显示第 0 幕入口参数:出口参数:*/ void display0()uchar i;judge_clear_lcd(); /是否清屏处理29 / 41lcd_pos(0x00);delay1(1);/设置显示位置for(i=0;
30、weli!=”0”; i+)lcd_wdat(weli);n_display_history=0; /记录 历史显示界面编号/*函数功能:lcd 显示第 1 幕入口参数:出口参数:*/ void display1()uchar i;judge_clear_lcd();/是否清屏处理lcd_pos(0x00);/设置显示位置delay1(1);for(i=0; _ini !=”0”; i+)/显示“come in please !“lcd_wdat(_ini);lcd_pos(0x40);/设置显示位置delay1(1);for(i=0; pushi !=”0”; i+)/显示“push the
31、 door !“lcd_wdat(pushi);n_display_history=1;/记录 历史显示界面编号/*函数功能:lcd 显示第 2 幕入口参数:出口参数:*/ void display2()uchar i;judge_clear_lcd();/是否清屏处理lcd_pos(0x00);delay1(1);/设置显示位置for(i=0; pulli!=”0”; i+)/显示“pull the door !“lcd_wdat(pulli);n_display_history=2;/记录 历史显示界面编号/*函数功能:lcd 显示第 3 幕入口参数:出口参数:*/ void displa
32、y3()uchar i;bit j = 0;/ 已显示* 标志judge_clear_lcd();/是否清屏处理lcd_pos(0x00);/设置显示位置delay1(1);for(i=0; inputi!=”0”; i+)/显示“intput password“lcd_wdat(inputi);lcd_wcmd(0x0d);delay1(1);/显示闪耀光标lcd_pos(0x43); delay1(1);do/设置显示位置if( (v_key>=13) && (v_key<=15) )lcd_wcmd(0x0c); delay1(1);/不显示闪耀光标retur
33、n;/跳出本界面if( f_passw = 1 )/是否有密码输入lcd_wdat(”*”);f_passw = 0;j = 1; /置位 已显示* 标志if( (v_key = 12) && (j = 1) )/是否在 已显示*下状况下按“输入密码”键/清除之前显示的字符”*”j = 0; /清除 已显示*标志lcd_pos(0x43); for(i=0; i<6; i+)/设置显示位置lcd_wdat(0x0a);/显示空格lcd_pos(0x43);/设置显示位置while( f_passw_o != 1 );lcd_wcmd(0x0c); delay1(2);/不
34、显示闪耀光标n_display_history = 3;/记录 历史显示界面编号/*函数功能:lcd 显示第 4 幕入口参数:出口参数:*/ void display4()uchar i;judge_clear_lcd(); lcd_pos(0x00);/是否清屏处理/设置显示位置delay1(1);for(i=0; passw_erri!=”0”; i+)/显示“error !“lcd_wdat(passw_erri);n_display_history=4;/记录 历史显示界面编号/*函数功能:lcd 显示第 5 幕入口参数:出口参数:*/ void display5()uchar i;j
35、udge_clear_lcd(); lcd_pos(0x42); delay1(1);/是否清屏处理/设置显示位置for(i=0; passw_erri!=”0”; i+)/显示“test .“lcd_wdat(testi);n_display_history=5;/记录 历史显示界面编号/*函数功能:lcd 显示幕判别入口参数:出口参数:*/ void display(). . .switch( n_display )/依据当前界面编号n_display 进行显示case0 :display0();break;case1 :display1();break;case2 :display2()
36、;break;case3 :display3();break;case4 :display4();break;case5 :display5();break;4.2.2 键盘程序1. 键盘程序流程图如图 4-12 示:图 4-12 键盘程序流程图27 / 41. . .2. 键盘程序清单:/* 函数功能:键值计算程序,返回键值 015入口参数:i 出口参数:v*/ uchar key_calcu(uchar i, uchar m)uchar v; switch(m)case 0x0e: v=(i*4)+0;break; /第 i 行第 1 列case 0x0d: v=(i*4)+1;break
37、; /第 i 行第 2 列case 0x0b: v=(i*4)+2;break; /第 i 行第 3 列case 0x07: v=(i*4)+3;break; /第 i 行第 4 列default : v=0xff;return v;/* 函数功能:键盘扫描程序,返回键值 015入口参数:出口参数:(键值)*/uchar key_scan(void) /使用行列逐级扫描法uchar i, temp=0, m, v_key;p1 = 0x0f;/高四位低电平,低四位高电平41 / 41if(p1 != 0x0f)/确认是否有键按下delay(5);/去抖动,延时 0.01s if(p1 != 0
38、x0f)/有键按下for(i=0; i<4; i+) /逐行扫描temp = ( 1<<(4+i) ); p1 = temp;/p1.4p1.7 逐次给低电平,p1 口其他引脚为高if(p1 != temp)/确认第i 行是否有键按下m = p1 & 0x0f;/取 p1.0p1.3 的状态,用于计算键值while( p1 != temp ) ; delay(5);/去抖动,延时 0.01s/等待按键松开while( p1 != temp ) ;/等待按键松开v_key = key_calcu( i, m );/计算键值if(v_key != 0xff)return
39、v_key;/返回有效键值return 0xff; /无键按下或扫描特别时,返回 0xff 作为键值/*函数功能:密码验证程序入口参数:出口参数:*/void passw_check()uchar i, j = 0;rec_passwn_passw = v_key;/暂存输入密码f_passw = 1; /置位新密码输入标志n_passw+;/密码存放位加 1if(n_passw = 6)/6 位密码是否输入完毕f_input = 0; /清零 进入输入密码程序标志f_passw_o = 1;/置位 密码输入完毕标志for(i=0; i<6; i+)if( rec_passwi = pa
40、ss_wordi )j+;/记录正确密码个数elsebreak; /若有一位密码错误,则跳出、不再比较if(j = 6)/密码正确n_display = 1;/显示请进提示界面go_out_or_enter(); /开锁等处理else/密码错误buzzer = 0; /蜂鸣器响n_display = 4;/显示密码错误提示界面set_origscr();/置位返回初始界面标志/*函数功能:键值处理程序入口参数:出口参数:*/ void key_dispose()if( (f_input = 1) && (v_key >= 0) && (v_key <
41、= 9) )/是否输入密码为 09 有效且进入输入密码程序标志为 1passw_check();/密码验证处理elseswitch(v_key)case 12 :/输入密码 键n_display=3; /转变显示界面f_input = 1; /置位进入输入密码程序标志f_passw_o = 0;/清零密码输入完毕标志n_passw = 0; /密码比较位置零break;case 13 :/出门按钮 键n_display=2; /转变显示界面go_out_or_enter(); /开锁等处理f_input = 0; /清除 进入输入密码程序标志break;case 14 :/模拟刷卡 键n_di
42、splay=1; /转变显示界面go_out_or_enter(); /开锁等处理f_input = 0; /清除 进入输入密码程序标志break;case 15 :/确认/返回 键n_display=0; /转变显示界面if(f_input = 1)buzzer = 0; /蜂鸣器 响n_display = 4;set_origscr();/转变显示界面/置位返回初始界面标志elsebuzzer = 1; /在密码错误使蜂鸣器响的状况下,按“确认/返回”键可关蜂鸣器f_inputbreak;= 0;/清除 进入输入密码程序标志/*函数功能:into 初始化入口参数:出口参数:*/ void int0_init(void)it0 = 0;/低电平触发 it0=1; /边沿触发方式ex0 = 1;/允许外部中断 0 中断/*函数功能:int0 中断服务程序入口参数:出口参数:*/ void int0_irq(void) interrupt 0v_key = key_scan(); /取键值if(v_key != 0xff)key_dispose();/键值处理p1 = 0x0f;结 论经过全组人员的多次探讨争辩,翻阅大量文献资料
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 缩句 教学课件
- 叮当老师教学课件
- 教育整顿说课课件
- 教学课件大学怎么设计
- 【阜新】2025年辽宁阜新市事业单位招聘工作人员195人笔试历年典型考题及考点剖析附带答案详解
- 教育扶贫政策班会课件
- 【河池】2025年广西河池罗城仫佬族自治县医疗保障局招聘2人笔试历年典型考题及考点剖析附带答案详解
- 文艺论坛活动方案
- 春季种植活动活动方案
- 春节体育活动活动方案
- 中央企业合规管理系列指南
- 贵州省贵阳市2025年中考语文一模试卷附参考答案
- 新疆维吾尔自治区2024年普通高校招生单列类(选考外语)高职(专科)批次投档情况 (理工)
- 定向士官面试题及答案
- 食品行业质量安全风险管理措施
- 烟草行业的安全知识培训
- 微信缴费合同范本
- 餐饮业顾客投诉处理的整改措施
- 《危险房屋鉴定标准JGJ125-2016》
- 网络安全应急响应队伍建设-洞察分析
- 2018-2024年中国轨道交通智能化系统未来趋势预测分析及投资规划研究建议报告
评论
0/150
提交评论