收藏 分销(赏)

门禁控制系统-c语言程序设计课程设计报告大学论文.doc

上传人:a199****6536 文档编号:7003589 上传时间:2024-12-24 格式:DOC 页数:22 大小:118KB 下载积分:10 金币
下载 相关 举报
门禁控制系统-c语言程序设计课程设计报告大学论文.doc_第1页
第1页 / 共22页
门禁控制系统-c语言程序设计课程设计报告大学论文.doc_第2页
第2页 / 共22页


点击查看更多>>
资源描述
学号 2016-2017学年 第二学期 《C语言程序设计》 课程设计报告 题目: 门禁控制系统 专业: 网络工程(对口) 班级: 姓名: 指导教师: 成绩: 计算机学院 2017 年 5月 10 日 门禁控制系统设计 目 录 第1章 门禁系统的概述 3 1.1 门禁系统概念 3 1.2 门禁系统的特点 3 第2章门禁系统的设计要求 4 2.1 设计要求 4 第3章 门禁系统的方案论证 4 3.1门禁系统的总体方案 4 3.2门禁系统的各个方案论证 5 3.2.1.单片机控制芯片模块 5 3.2.2.键盘控制块 6 第4章 门禁系统的软件部分 7 结  论 10 致  谢 10 参考文献 10 ABSTRACT 15 附录1:系统程序。 10 第1章 门禁系统的概述 1.1 门禁系统概念 出入口门禁控制系统采取以感应卡来取代用钥匙开门的方式。使用者用一张卡可以打开多把门锁, 对门锁的开启也可以有一定的时间限制。如果卡丢失了,不必更换门锁,只需将其从控制主机中注销。出入口门禁控制系统是通过对出入口的准入情况进行控制、管理和记录的设备,对何人何时在何地进行详细跟踪,以实现中心对出入口的24小时控制、监视及管理。 1.2 门禁系统的特点 系统将ID卡技术、计算机控制技术与电子门锁有机结合,用ID卡替代钥匙,配合计算机实现智能化门禁控制和管理,有效的解决了传统门锁的使用繁琐和无法信息记录等不足,利用数据控制器采集的数据实现数字化管理可为内部人力资源的有效管理等带来意想不到的效果。 电子钥匙:授权后的ID卡即可当作电子钥匙,将此电子钥匙感应器前一晃, 控制器对该卡进行身份验证,验证合法后即控制电子门锁自动打开。 开门权限:按门设置:可以根据持卡人身份权限设定有效开门区域(控制器号码)。系统可设有最高权限卡,该卡可以打开系统辖区内所有电子门锁。 自动报警:非法使用卡或强行打开门锁等非正常情况下系统会将自动发出报警信号,系统将自动记录非常状况的时间、门号、状态等详细信息,确保门锁安全和事后查证。 第2章门禁系统的设计要求 2.1 设计要求 (1)读卡功能 (2)添加管理卡功能 (3)增加、删除用户卡功能 (4)更改管理卡 (5)清除所有用户卡 (6)键盘控制管理卡操作 (7)蜂鸣器实现刷卡、按键提示 第3章 门禁系统的方案论证 3.1门禁系统的总体方案 本系统由51系列单片机AT89S52、按键、蜂鸣器、T7122M-I读卡等模块构成。实现了存储一张管理卡和多张用户卡的功能;同时管理人员还可以通过按键更改管理卡,增加用户卡,删除用户卡,清空所有用户卡等。因为门禁刷卡控制刷卡距离随着补尝电容的改变而改变(补尝电容大约300PF),所以最大的刷卡距离约为5—12CM;对于非管理卡或用户卡,本门禁控制器不与响应;每个按键控制器都有相应的提示音进行提示操作。正常使用时,用户持卡靠近读卡天线,门禁控制器读入卡号,并与存储在内部的卡号比较,如果有相同的卡号,说明此卡合法,门禁机响一长音,提示成功,如果读卡失败,而不响应。总体系统结构图如图3-1 蜂鸣器 门 禁 控 制 器 读卡模块 下位PC机 接口电路 图3-1 门禁系统总体结构框图 3.2门禁系统的各个方案论证 3.2.1单片机控制芯片模块 方案一:PIC16C84单片机芯片。它是8位CMOS EEPROM微控制器。它有高性能的类似于RISC的指令,共有35条单字节的指令,所有的指令除程序分支指令需要两个指令周期外,都只需要一个指令周期。程序指令的宽度为14位,在芯片内有1K×14的EEPROM程序存储器。 方案二:At89s52芯片。 它是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。易失性存储与工业80C51 产品指令和引脚完 全兼容。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 基于以上所述,根据系统需要及所学知识我选方案二。 3.2.2键盘控制模块 方案一:独立式键盘,如图3-2。它是利用单片机I/O口读取口的电平高低来判断是否有键按下,这种方式的缺点是占用的I/O 口数较多。且对键盘处理的时候涉及到了一个重要的过程,那就是键盘的抖动问题[1]。 图3-2 方案二:基于串并转换电路的键盘形式,如图3-3。7SLS164 是串并转化芯片,它把SDA(P10)上的串行数据转化为8 为的并行数据,S1/S2/S3/S4/S5/S6/S7/S8作为键盘扫描线,P11 为键盘数据回送线。键盘扫描时,从S1~S7 一次输出低电平,然后检测P11(回送线),如果P11(回送线)为高电平则表示无键闭合,如果P11(回送线)等于0,将S1~S7 上的数据经过简单处理得到对应的键值。[5] 如图3-3 方案三:行列扫描的键盘形式,如图3-4。列线通过电阻接正电源,并将行线所接的单片机I/O 口作为输出端,而列线所接的I/O 口则作为输入。当按键没有按下时,所有列的输出端都是高电平,代表没有键按下。行线输出时低电平,一旦有键按下时,则输入线就会被拉低,这样通过读入输入线的状态就可以得知是否有键按下了[6]。 图3-4 基于以上所述,根据系统需要我选方案二。 第4章 门禁系统的软件部分 程序循环中主要工作为判断是否有刷卡,若有刷卡则断判是什么卡,然后进行相应的处理。 门禁系统的总流程图4-1: 开始 定义堆栈区 AT89S52、定时器0、中断初始化 是否有刷卡 是否是管理卡 蜂鸣器响三声 是否有管理卡 添加该卡为管理卡,蜂鸣器响两声 管理卡功能子程序 是否是用户卡 蜂鸣器响一声 图4-1 管理卡功能子程序流程图如图4-2 是否有卡刷 蜂鸣器响一声,定时器T0起动 是否有按键 蜂鸣器响一声,添加用户卡 蜂鸣器响二声,删除用户卡 蜂鸣器响三声,删除管理卡 蜂鸣器响四声,清空所有用户卡 返回 定时5秒是否到 图4-2 结 论 本门禁控制器用于鉴别刷卡人员,管理人员出入。功能可实现存储一张管理卡、多张用户卡。通过按键开关可以进行各种卡管理操作,如更改管理卡、增加单个用户卡、删除单个用户卡、清空所有用户卡等。 致谢 在这次C语言课程设计中,我的老师和同学给了我及大的帮助。特别是我的指导老师程庆老师,还有我的C语言任课老师代美丽老师。在此,我对他们表示感谢!感谢他们在我面对困难时给了我帮助和支持。也感谢那些给我帮助的所有同学! 参考文献 [1]谭浩强著.C程序设计(第四版).北京:清华大学出版社,2010.6 [2]谭浩强著.C程序设计(第四版)学习辅导.北京:清华大学出版社,2010.7 附录一:系统程序 #include<reg51.h> #include<intrins.h> sbit cp=P1^0; sbit sck=P1^1; sbit so=P1^2; sbit beep=P3^7; sbit led5=P0^5; sbit KD_KEY = P2^6; sbit KEY_SDA=P2^7; sbit KEY_CLK=P2^5; unsigned char chcardno[10][5]={0}; unsigned char cardok; unsigned char j=0; unsigned char count; unsigned char a; unsigned char cardno[5]={0}; unsigned char key_value; unsigned char b=1; //---------毫秒延时子程序---------- void delay2(unsigned char ms) {unsigned char i; while(ms--) { for(i=0;i<120;i++); } } //---------蜂鸣器-------------- unsigned char feib(void) { beep=0; led5=0; delay2(250); beep=1; led5=1; delay2(250); } void send(unsigned char a) //判断是不是有键按下 { unsigned char i; for(i=0;i<8;i++) { if(_crol_(a,i)&0x80) KEY_SDA=1; else KEY_SDA=0; KEY_CLK=0; KEY_CLK=1; } } unsigned char key(void) //判断是第几键按下 { unsigned char buffer,display_bit,i; buffer=0xff; //赋初值为0xff delay2(250); //延时去抖动 display_bit=0xfe; //扫描键盘 for(i=0;i<8;i++) { send(display_bit); if(!KD_KEY) //是此键按下吗? { buffer=display_bit; //是,则保存其键值 return(i); break; //退出 } display_bit=_crol_(display_bit,1); //检测下一键 } } //------同步串行口接收一字节------- unsigned char rx1byte() { char i; char rxdata; for(i=9;--i;) { rxdata<<=1; while(sck==0) //等待始终上升沿 continue; if(so==1) //读数据 ++rxdata; while(sck==1) continue; } return rxdata; } //--------同步串行口接收------- unsigned char rx(void) { char i; if(cp==1) //检测CP脚是否出现低电平 return; EA=0; //屏蔽中断 for(i=25;--i;) //保证CP的宽度大于时钟宽度 { if(sck==0) {EA=1; return; } } while(sck==1) //等待时钟线出现低电平 continue; cardno[0]=rx1byte(); //读第一个字节 cardno[1]=rx1byte(); //读第二个字节 cardno[2]=rx1byte(); cardno[3]=rx1byte(); cardno[4]=rx1byte(); cardno[5]=rx1byte(); //读第六个字节 while(cp==0) //等待CP脚恢复高电平 continue; EA=1; //读卡结束,校验卡号 i=cardno[0]+cardno[1]+cardno[2]+cardno[3]+cardno[4]; if(i=cardno[5]) { cardok=1; } } //---------------管理卡程序----------- unsigned char zjz (void) { char i=0; while(1) { rx(); P0=0XFF; if(cardok==1)//判断是否有刷卡 { cardok=0; if(chcardno[0][5]==0)//判断是否有管理卡 { feib(); feib(); chcardno[0][5]=cardno[5];//设计为管理卡 } else { if(chcardno[0][5]==cardno[5])//判断是否是管理卡 { feib(); feib(); feib(); delay2(250); while(1) { rx(); if(cardok==1)//判断是否有刷卡 { feib(); cardok=0; TR0=1; //起动定时器0 count=0; break; } } } else { for(a=1;a<=b;a++) { if(chcardno[a][5]==cardno[5])//判断是否是用户卡 { feib(); break; } } } } } } } //----------定时器子程序--------- void timer1(void) interrupt 3 { TH0=(65536-50000)/256; TL0=(65526-50000)%256; count++; key_value=key(); switch(key_value) { case 0: //按键1 feib(); chcardno[b][5]=cardno[5];//添加用户卡 cardno[5]=0; b++; break; case 1: //按键2 feib(); feib(); for(a=1;a<=b;a++) { if(chcardno[a][5]==cardno[5]) { chcardno[a][5]=chcardno[b][5];//删除用户卡 } } break; case 2: //按键3 feib(); feib(); feib(); chcardno[0][5]=0;//删除管理卡 break; case 3: //按键4 feib(); feib(); feib(); feib(); for(a=1;a<=b;a++) { chcardno[a][5]=0; //清空所有用户卡 } break; } if(count==50)//定时5S是否到 { TR0=0; EA=0; } } //--------------------主程序-------------- void main(void) { TMOD=0x01; //定时器0 TH0=(65536-50000)/256;//定时器0初始华 TL0=(65526-50000)%256; EA=1; ET0=1; P0=0XFF; zjz(); } 22
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服