毕业论文
办公用门禁系统的研究与设计
2015年 6 月
太原工业学院毕业设计(论文)
诚信声明
本人郑重申明:
本人所呈交的毕业论文,是本人在指导老师的指导下,独立地进行研究工作所取得的成果。除文中已经注明引用的相关内容外,本论文不包括任何其他个人或集体已经发表或撰写过的作品成果。对这篇文章的研究做出重要贡献的个人或集体,全部都已经在文章中用明确方式标明。本人能够完全意识到这个声明的法律结果,并且本人愿意承担。
本人签名:
太原工业学院毕业设计(论文)
目 录
办公用门禁系统研究与设计 .......................................... 1 摘 要 ............................................................. 1 ABSTRACT .......................................................... 2 第1章 绪论 ...................................................... 3 1.1 选题背景与意义................................................ 3 1.2 国内外研究进展................................................ 3 1.3 本文研究的主要内容............................................ 4 第2章 总体方案的论述 ............................................ 5 2.1 系统设计的原则................................................ 5
2.1.1系统的实用性 .......................................... 5 2.1.2 系统的稳定性.......................................... 5 2.1.3 系统的安全性.......................................... 5 2.1.4 系统的维护性.......................................... 5 2.1.5 系统的可靠性.......................................... 5 2.2 门禁系统的组成.......................................... 5
2.3门禁系统的总体方案 ............................................ 6 2.4 门禁系统每个模块的方案........................................ 6
2.4.1 单片机控制芯片模块.................................... 6 2.4.2 键盘控制模块.......................................... 7 2.4.3 蜂鸣器控制部分........................................ 7
第3章 硬件设计部分 ............................................... 9 3.1 主控芯片部分.................................................. 9 3.2 RFID 卡....................................................... 9
3.2.1 射频卡的内容.......................................... 9 3.2.2 射频IC卡的优点...................................... 10
3.3 单片机AT89C52 ............................................... 10
太原工业学院毕业设计(论文)
3.3.1 AT89C52的概述 ....................................... 11 3.3.2 AT89C52的引脚图如下图3.2............................ 12 3.3.3 各个引脚说明......................................... 13 3.3 .4存储器结构 .......................................... 15 3.3.5 振荡特性............................................. 15 3.3.6 芯片擦除............................................. 15
第4章 软件设计部分 .............................................. 16 4.1 软件的语言................................................... 16
4.1.1 C语言的概述 ......................................... 16 4.1.2 C语言的特性 ......................................... 16 4.1.3 C语言的优点、缺点 ................................... 17
4.2 门禁系统的流程图............................................. 18
4.2.1 系统的总流程图....................................... 18
4.2 管理卡功能子程序流程图如图................................... 19 第5章 门禁系统的软、硬件调试 .................................... 21 5.1 硬件调试..................................................... 21 5.2 软件调试..................................................... 21 5.3 软、硬件设计注意事项......................................... 22 第6章 总结 ..................................................... 23 感谢 ............................................................. 24 参考文献 ......................................................... 25 附录 1 ........................................................... 26
太原工业学院毕业设计(论文)
办公用门禁系统研究与设计
摘 要
如今随着人类文明的进步,经济、科技的不断的发展,人们的安全意识的提高,现在许多企业的写字楼或办公楼都采用了现代化智能门禁系统。门禁系统的种类繁多,因为它们具有不同的保密安全等级,因而在不同的场合运用到了,并带动了其的发展。IC卡门系统具有方便、安全和具有成本效益的优势等,现代访问控制系统的主流。目前IC卡技术已广泛应用于各个行业,特别是公共交通,无线通信,身份识别,金融交易安全和国防工业。门禁控制系统通过门内的和门外的控制,控制人员进入控制范围,从而保证控制区的安全。
这篇文章研究的对象是办公用门禁系统,这就对本次毕业设计指明了方向。这次设计采用射频识别技术进行识别实现对门的识别功能;采用89C51这个来控制读卡器对IC卡进行读和写的操作;Keil 4软件作为编程软件以Visual C语言进行程序编写,调试。
这篇文章的IC卡控制管理系统软件的使用方便,操作简单,安全性能好,成本低,可以让不是高水平的计算机操作水平的使用者使用。 关键词: IC卡,门禁系统,Keil 4,Visual C
1
太原工业学院毕业设计(论文)
Research and design of access control system for office work
Abstract
Now with the progress of human civilization, the development of economy, science and technology constantly, the improvement of people's safety consciousness, now many enterprise office or offices of modern intelligent entrance guard system has been adopted. A wide range of entrance guard system, because they have different secret security levels, and in different occasions to use, and promote the development of it. IC card system has the advantages of convenient, safe and cost-effective, such as the mainstream of modern access control system. The current IC card technology has been widely used in various industries, especially public transport, wireless
communication, identity, financial transaction security and defense industry. Entrance guard control system through the door and door control, control personnel into the control range, so as to ensure the safety of the control.
This article research object is the office entrance guard system, it is pointed out the direction of the graduation design. This design USES radio frequency identification technology for identification to realize the recognition of opposite; Using the 89 c51 to control of IC card reader to read and write operations; Keil software 4 as programming software with Visual C language programming and debugging.
This article of IC card control system software easy to use, simple operation, good safety performance, low cost, can let not a high level of computer operation level of users.
Key words: IC CARDS, entrance guard system, Keil 4, Visual C
2
太原工业学院毕业设计(论文)
第1章 绪论
1.1 选题背景与意义
英文Access Control System的中文翻译为门禁系统,它的简称为ACS。门禁系统是在对内和向外的渠道控制的安全保护系统;它是在古代的锁的基础上发展起来的。门禁系统是新型现代化安全管理系统,具有自动识别技术和现代安全管理措施相结合的办公门禁系统。在社会物质文明、精神文明不断发展的今天,厂房区内的主要管理区、核电站的出入口、贵重物品的存放地、仪器仪表控制中心、军事机密要处等重要部门的通道出入口都不可避免的需要加强安全保护措施。各种技术的创新和发展,访问控制系统的功能越来越多样化,这就需要研究和发展与它对应的安全级别的访问控制系统,识别目标的权限和控制入口。
使用智能卡和锁是现代办公与访问控制系统常见的实践相结合。用IC卡代替了以往的门钥匙,用计算机等相关的智能仪器,从而达到智能安全管理,比较好的解决了传统门锁的许多种的缺陷,并且在经济效益和社会效益上更加有利。随着人类在对办公用门禁系统性能等在其他方面的需求,现代化的门禁系统运用的前景更加广阔。
目的:综合运用学生已经学过的基础理论知识,深入了解办公用门禁系统,为学生在毕业后从事测量工作打好基础。
1.2 国内外研究进展
根据门禁系统的发展状况和国内市场的变化状态,我们可以预测一些国内门禁系统的需求。
(1)大范围的读和写IC卡是RFID卡的发展方向,使得一卡通系统得以实现。当然对必须要求应用于DNA技术或其他更高级别的门禁系统,在特殊的场合和地点才会被使用。
(2)国内的门禁系统在新的领域应用中提出了新的待解决方案和相应的技术问题。
(3)大流量的人流快速计数、快速通过、快速考勤、快速验证等成为门禁系统的发展方向。
(4)在全国乃至整个世界的连锁企业之中,鉴于LIN或WAN网络的异地化管理、数据共享门禁管理系统。
在如今,访问控制系统的研究在中国已经进入研究阶段。但是对门禁系统的
3
太原工业学院毕业设计(论文)
研究设计与制造过程中还有诸多种缺陷,主要表现在使用外国现成的集成模块,比如读写器、门禁控制器、天线模板等;对国外已有的系统进行改造,缺少一定的创新;产品比较单一、开发成本比较高。国外在对IC卡的研究和运用比较早,特别是如今的欧美等国,但是在对非接触式IC卡方面的研究应用也是近几年的事情。现在Philips公司的Mifare技术在整个世界上制作非接触式IC卡的处于领先水平,而且也己经被当做是国际标准ISO/IEC14443 Type A标准。欧洲一些IC卡及读卡器制造商绝大部分都是在Mifare技术为标准发展自己的IC卡事业。
目前,因为在国内外的市场不断地发展变化,竞争也已经越来越激烈。对于在门禁系统需求方面和它的技术发展已经呈现出多样性、集成化发展趋势,随着其门禁系统用途的发展也不再满足门禁控制应用这方面的需求,门禁技术也应该去适应市场的需求,从而使其得到进步、发展、革新。当然在门禁控制器方面,32位嵌入式ARM技术拥有更加突出的性能、高的性价比和功耗更低。
在门禁和考勤由生物识别技术来实现,使得门禁系统变得更加可靠。生物识别有脸部进行识别;指纹进行识别;虹膜进行识别;掌形进行识别;最新的DNA技术进行识别。由于人类的基因具有唯一性和独特性,使得这种生物识别是不能够随便被复制、遗失或被遗忘。利用DNA技术进行身份检测,使得门禁系统的解决方案变得更加安全。
网络化门禁系统是指的TCP/ IP通信技术的门禁系统。使用 TCP/ IP通信协议具有快速传播的优势;网络不限制距离;网络资源更容易获取的优点,该系统可以管理的大量控制器。当然来自市场方面,采用该协议作为访问控制设备组网模式已经成为众多门禁系统项目和远程管理门禁系统项目的主流产品。
1.3 本文研究的主要内容
本次设计主要是完成一个办公用的门禁系统,这个系统使用的是进行读卡进入门的方式。用已经写好的专用IC卡进行读卡操作,有提示音来显示正确,然后门会自动打开。如果用其他的非识别的没有授权的IC卡进行操作时,是不会显示门打开的,并且门也不会自动打开,从而达到控制门的目的。
4
太原工业学院毕业设计(论文)
第2章 总体方案的论述
2.1 系统设计的原则 2.1.1系统的实用性
门禁系统的设计应该要切身的考虑到实际需要,不需要过多的华丽包装而缺乏实际运用。系统的设计实用性是摆在首要位置,不容质疑。不能在过多的美观、华丽等包装因素的投入,而忽略了系统的实用与否,从而偏离实际运用,系统也应该与市场相结合。第二个也要考虑到客户,能够使客户容易上手操作等客观原因,而不是盲目的追求高技术,使用复杂的和不易上手的等因素。这样系统才有设计的价值和意义。
2.1.2 系统的稳定性
因为门禁系统是需要长期运行,所以应该要有稳定地运行状态,而不是三天两头的修理,这样的系统势必是不合格的。一个稳定与否的系统是判断这个产品是否合格一个重要因素。
2.1.3 系统的安全性
门禁系统的安全性是这个系统的核心,一个优良的门禁系统产品就必须要有非常好的安全性能,这样才能保证其的运行,也应该至少满足国际的相应标准,从而实现它的功能。
2.1.4 系统的维护性
门禁系统因为时间或其他因素不可避免的造成损伤,而这种作为长期使用的产品这时候就需要维护、维修,而不是作为一次性产品进行报废。所以这就使得它应该容易维修和保养。
2.1.5 系统的可靠性
门禁系统作为一个安全防护系统,就必须满足国家或者国际的可靠性标准,从而让人们使用放心。这是一个企业在选择系统方面最为关心的一个问题,也是最为重要的因素。
2.2 门禁系统的组成
门禁系统是由软件和硬件两部分组成,主要包括可识别IC卡、前端设备(读卡器、电动门锁、门状态感应器、门复位器、控制器等)、传输设备、通信设备
5
太原工业学院毕业设计(论文)
及相关软件。
(1)硬件方面是门禁控制器,门禁控制连接读卡器,门磁,开门按钮,并能提供相应的控制电锁继电器输出,还能够识别出和身份信息,从而控制的相关门设施和设备。
(2)软件安装在电脑上,管理者使用门禁系统软件,系统设置和信用卡授权管理,查看每个信道访问对象,控制或设定程序控制的目标。
2.3门禁系统的总体方案
本系统是由51系列单片机AT89C52、按键、蜂鸣器、T7122M-I读卡等模块构成。这个系统可以实现了存储一张管理卡和多张用户卡的功能,同时管理人员还可以通过特定的方法进行修改管理卡,增加客户卡,删除客户卡,清空所有客户卡等。由于门禁刷卡控制刷卡的距离是跟着补尝电容的变化而变化的(补尝电容大概在300皮法左右),因此大概在5—12厘米是它的最大刷卡距离。对于不是管理卡或用户卡,这个门禁控制器是不会进行响应,任何一个按键控制器都配有相应的提示音进行提示操作。正常使用时,用户拿着IC卡去靠近读卡天线,门禁控制器读入卡号,和存储在内部的卡号进行相比较。如果拥有相同的卡号,说明这张卡是正确的,此时门禁系统会有一个提示的长音,提示成功。如果读卡失败,就不会进行响应,也没有相应的提示音。总体系统结构图如图2.1
门 读卡模块 禁 控 制 蜂 鸣 器 下接口电路 位PC机
图2.1 门禁系统总体结构框图
2.4 门禁系统每个模块的方案 2.4.1 单片机控制芯片模块
6
太原工业学院毕业设计(论文)
AT89C52芯片:它拥有功耗小、性能高CMOS的8位微控制器,存在着8K在系统可编程闪存存储器。工业中80C51 产品和易失性存储与指令和引脚完美兼容。在整个芯片中,拥有灵动的八位CPU和在系统可编程闪存存储器,让AT89C52成为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
2.4.2 键盘控制模块
鉴于串行并行转换电路的键盘形式,如图2.2。74LS164是串行、并行相互转化的芯片。它把SDA(P10)上的串行数据转变到8位的并行数据
S1/S2/S3/S4/S5/S6/S7/S8作为键盘扫描线,P11为键盘数据回送线。键盘扫描时,从S1~S7一次输出低电平,然后检测P11(回送线),如果P11(回送线)为高电平则表示无键闭合,如果P11(回送线)等于0,将S1~S7 上的数据经过简单处理得到对应的键值。
图2.2键盘控制电路
其功能说明
KEY1:增加用户卡 KEY2:删除用户卡 KEY3:删除管理卡 KEY4:清除所有用户卡
2.4.3 蜂鸣器控制部分
1、蜂鸣器电路原理图2.3
7
太原工业学院毕业设计(论文)
图2.3 蜂鸣器电路原理图
2、工作原理
单片机通过P3.7来控制蜂鸣器的工作与关闭。 如果P3.7=1时,PNP三极管关闭,蜂鸣器停止工作。 当P3.7=0时,PNP三级管导通,蜂鸣器开始工作。
因此只要让单片机的管脚P3.7输出是低电平或者是高电平来控制蜂鸣器开关即可。 3、功能说明
(1)刷卡时蜂鸣器响一声,说明读到用户卡。 (2)刷卡时蜂鸣器响两声,说明读到管理卡。 (3)相应的按键时给于相应的提示音。 (4)蜂鸣器没有响应,说明没有读到卡。
8
太原工业学院毕业设计(论文)
第3章 硬件设计部分
3.1 主控芯片部分
它的电路原理图如图3.1
3.1 电路原理图
3.2 RFID 卡 3.2.1 射频卡的内容
在确定这个系统方案前,我从网上和其他方面了解到办公用门禁系统,现今的门禁系统主要都是采用IC卡门禁系统。并且IC卡门禁系统的未来前景十分广阔。所以我确定下门禁系统设计的方案,即使用射频识别技术来完成这次的毕业设计。
RFID是Radio Frequency Identification的英文缩写,是在上个世纪80年代随着网络技术的发展而被发掘出来的一种新兴自动ID识别技术。射频识别技术是一种使用射频信号通过空间耦合实现无接触信息传递并且通过传递信息进行识别从而达到识别的技术。1948年哈里斯托克曼发表“利用反射功率的通信”奠定了射频识别技术的基础。IC卡技术在全世界的发展是极不均衡,被发达国家所垄断了。每个国家的发展方向也不尽相同,比如政府占据主导地位的生产模式的法国,日本是官方和民营相结合的产业类型,美国大部分属于是民间主导型。
9
太原工业学院毕业设计(论文)
这么多国家当中,由于第一个推出IC卡的国家是法国,使得法国在IC卡领域当中处于顶尖水平的国家。再者由于市场方面的影响更进一步地带动法国在IC卡领域生产技术的创新。而且法国也拥有Gem plus这样的国际著名的制卡公司。美国也在IC卡的研究方面虽然是落后于欧洲国家,在IC卡的使用方面上也跟不上法国和日本,但是美国在磁卡研究制作方面是世界领先水平,因此现在美国市场仍然还是以磁卡为主,然而欧洲是用晶体卡为主。在IC卡的研制和应用领域上日本跟法国的水平是不相上下。并且她具备有强大的制卡商队伍,比如NEC、Fujitsu、Toshiba、ST等制造商。由于中国的计算机技术起步晚,所以中国的IC卡发展比较落后,但近年来发展迅速。虽然IC卡技术在金融、通信、交通、楼宇建筑、国防科技等方面被广泛的应用到。但是令人感到惭愧的是中国也只是停留在应用层面上,对于国外IC卡的研究制作的核心技术还是得仰望。在国内也只是做一些进行简单的封装。国内的IC卡还需要加速发展,缩小与核心技术之间的差距。避免与技术脱节,跟上时代步伐。
RFID是一个容易操控,简单实用且能够灵活运用的技术。可以在恶劣的环境下正常使用,也可以代替条码进行使用。它分为接触式IC卡和非接触式IC卡。
(1)接触式IC卡指的是必须插入或与感应设备相接触才能识别的卡,我们生活中经常见到的手机卡、饭卡,电话IC卡和银行卡等都是接触式的IC卡。
(2)非接触式IC卡又被称做射频卡,是用IC芯片和感应天线组成,是通过射频识别技术与IC卡相结合。使得无源和免接触这样的技术难题得以解决,是电子领域一个重大突破,通过无线电来传播。
3.2.2 射频IC卡的优点
(1)快速扫描,射频识别技术可以同时进行识别多个RFID的标签,并能够快速地进行应答。
(2)体形小,容易携带,形状多样化,美观大方,运用于多种场合。 (3)抗污染性高和抗耐久性强,可以工作在油污、灰尘等恶劣的环境下。 (4)可以重复使用,只要消除里面的信息就可以重新使用,减少成本。 (5)数据的记忆容量大。
(6)安全性能高,RFID是承载着电子信息,并且它的数据是通关密码加密,使它不容易进行伪造。
3.3 单片机AT89C52
10
太原工业学院毕业设计(论文)
3.3.1 AT89C52的概述
AT89C52单片机是由8大部分组成的,这8大部分是:
(1) 一个8位的运算核心CPU。它由操作组件和控制组件构成,包括振荡电路和时钟电路,这是完成微控制器的操作和控制功能的主要核心元件。
(2) 256个字节的片内数据存储器RAM[6]。它的片外存储读写数据寻址范围为64KB,例如作为中途和最后的操作结果,还可以加快MCU的速度,并且该结构可降低功耗。
(3)8KB的片内程序只读存储器ROM或EPROM。其芯片寻址范围为64KB,它主要用于存储的过程中,并可以存储一些基本表格数据。AT89C52片内集成有8KB的Flash存储器。
(4)21个具有特殊功能的专用寄存器。它致力于控制,管理微控制器组件的内部逻辑,并行I / O端口锁存器,串口数据缓存区,中断系统工作,定时计数功能等等。其具有一定字节的空间地址。
(5)4个8位的并行输入输出I/O接口。4个接口一共32线,起到输入或输出数据的作用。
(6)1个串行I/O接口。它可以是在计算机和外围设备之间传输数据,可用的软件设置为四种工作模式,进行多处理器通信,I / O端口扩充和通用异步接收器(UART)。
(7)3个16位定时器/计数器。它可以设置成对计算的外部事件计数,也可用于定时的定时设定。计数定时由软件决定,在对计算机或外围设备控制取决于计数和定时的基础,结束一次计数或定时则是向CPU发出中途停止和断绝这一请求。
(8)1个具有6个中断源,可编程为2个优先级的中断系统。它可以接受外部中途停止断绝的应用,定时/计数器中途停止应用程序和串口中途停止应用程序。公共语言实时控制,故障自动处理,计算机和数据外围传输和人机对话等等。它的主要特性如下表3.1
表3.1 主要特性
跟MCS—51产品指令兼容; 有8K字节可编程闪烁存储器,使用寿命长,保留时间久; 全静态工作:0Hz—24Hz; 具有三级程序存储器锁定;
11
太原工业学院毕业设计(论文)
有128*8位内部RAM; 有32位可编程I/O线; 两个16位定时器/计数器; 有5个中断源; 拥有可编程串口总线; 低功耗的闲置和掉电模式; 片内的振荡器和时钟电路。 3.3.2 AT89C52的引脚图如下图3.2
12
太原工业学院毕业设计(论文)
3.2单片机89C52引脚图
3.3.3 各个引脚说明
VCC:供电电压。 GND:接地。
13
太原工业学院毕业设计(论文)
P0口:在闪存编程的时候,P0口作为原码输入口。当校准闪存,P0输出原码,这时P0外部必须连接到上拉电阻。
P1口:处于高电平时作为输入,低电平时作为输出电流,P1口还具有第二功能如表3.2;
P1口第二功能3.2 引脚号 P1.0 P1.1 第二功能 T2(定时器/计数器T2的外部计术输出),时钟输出 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制 P2口:P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:在P3口写入“1”时,为高电平,当作输入。由于外部下拉为低电平,P3口将输出电流。P3口每个引脚还具有第二功能,P3口第二功能如表3.3所示:
P3口第二功能表3.3 引脚号 P3.0 P3.1 ————第二功能 RXD(串行口输入); TXD(串行口输出); INT0(外部中断0请求输入端,低电平有效); ————P3.2 P3.3 P3.4 P3.5 ______INT1(外部中断0请求输入端,低电平有效); T0(定时器/计数器0计数脉冲输入端); T1(定时器/计数器1计数脉冲输入端); WR(外部数据存储器写选通信号输出断,低电平有效); RS(外部数据存储器写选通信号输出断,低电平有效); ——P3.6 P3.7 RST:复位输入。
ALE/PROG:不同电平的输入可以它具有不能的功能。它的晶振为1/6振荡周期。 PSEN: 外部选通信号的存储器。 XTAL1:输入反向振荡放大器和输入的内部时钟电路。 XTAL2:来自反向振荡器的输出。
14
太原工业学院毕业设计(论文)
3.3 .4存储器结构
程序存储器:当EA引脚处于接地状态,外部存储器开始被程序读写。对于AT89C52,如果EA接VCC,程序读写先从内部存储器(地址为0000H~1FFFH)开始,接着从外部寻址,寻址范围为:2000H~1FFFH。
数据存储器:AT89C52具备128个字节片内存储器。它由随机存储器(RAM)块和特殊功能寄存器(SFR)块组成。随机存储器块具有128个字节,其编址地址是00H~7FH;特殊寄存器块占用128个字节,其编址地址是80H~FFH,他们可以连续但是不会重复。
3.3.5 振荡特性
XTAL1和XTAL2是分别输入和输出的反向放大器。装上片内振荡器的这种反向放大器在陶瓷振荡和石晶振荡都可以被应用到。当作为驱动外部时钟电路装置时,XTAL2应该悬空。有余输入通过一个二进制频率触发内部时钟信号,所以没有任何外部时钟信号的脉冲宽度所需,但这个脉冲在高和低级别要求的宽度上应该得到保证。
3.3.6 芯片擦除
整个阵列和三个锁PEROM电擦除可结合正确的控制信号,并要求在十毫秒内ALE的引脚处于低电平状态。芯片刷操作数组,代码写的是“1”而不是在办公室所有空的内存字节的重复编程,必须采取行动。此外,AT89C51设有静态逻辑,可低至零频率的条件下静态逻辑,软件支持两种可选的掉电模式。在空闲模式下,CPU将停止工作。但是RAM,计数器,定时器,中断系统,串行和并行口依然处于工作当中。在掉电这一模式下,保存的RAM并且冻结振荡器的内容,禁止芯片的其他功能使用,直到下一次硬件复位。
15
太原工业学院毕业设计(论文)
第4章 软件设计部分
4.1 软件的语言 4.1.1 C语言的概述
什么叫做C语言?它是一种高级程序编程语言。既拥有高级语言的特点,又拥有汇编语言的特点。它不仅能够作为操作系统的设计语言进行编写应用程序,也能够作为程序应用语言编写应用程序。C语言,是一种通用的、过程式的编程语言,广泛用在系统跟应用软件的研发。拥有效率高,灵活性,功能丰富,表达能力强和高可移植性等优势,在程序的设计中广泛受到好评。在最近几十年来,C语言是最广泛使用的编程语言。C语言由BCPL语言发展而来,1972年,美国博士里奇在B语言为基础设计一门新的语言。他以BCPL第二个字母作为语言的名称,这是C语言的由来。随着国际上对C语言的标准进行了一次又一次的完善和相关技术的修改,如今的C语言的使用已经正规化、标准化,而且得到了不断地发展,具有非常强大的编程功能。
4.1.2 C语言的特性
它的基本特性:
1、C语言是高级语言,它具有高级语言的特性。
2、C语言是一种结构性的语言。C语言的结构特点是代码和数据分离,即程序的每个部分除了必要的信息交流,其他是相互独立的。这种结构可以使程序的层次更清晰,使得编码,维护和调试更加容易。因为C语言是用函数的方式提供给用户,这些函数的功能方便调用和具有许多环,条件语句来控制程序的方向,这样的程序变得完全结构化。
3、C语言功能多样化特点,拥有各种各样的数据类型,并且引入指针这个概念,可以使程序变得更加有效,而且更快。计算功能、逻辑判断也非常强大,可以实现决策的语言。
4、C语言适用于不同的操作系统。比如Windows,DOS,Linux,UNIX和其他操作系统,也适用于许多模型。C语言的准备需要硬件的操作,优于其他高级语言,用C语言也可以写出一些大型的应用软件和操作系统。
5、使用C语言指针:可直接贴近硬件的操作,因为C语言的指针操作不能做好防护,因此给它带来了诸多不稳定、不安全的因素。但是C++在这里头做了完善和补偿,在保留指针操作的基础上增强了其安全性,受到了人们的青睐,但是,
16
太原工业学院毕业设计(论文)
因为这样地举措加大了语言的繁琐度,从而让C语言在设计语言上不可以广泛的传播。Java则吸取了C++的教训,完善了一些C++改进中惹人争议的地方,还取消了指针操作,它的安全性能和适用性能等方面都获得巨大的影响力。但是Java也有缺陷:第一个它只可以在虚拟机上运行;第二个跟C++/C运行效率相比较,它的效率偏低。总的来说,C语言,C++,java被认作为同一系列的语言,在编程语言当中占据着前列地位。 6、C语言文件由数据序列组成:可以构成二进制文件或文本文件常用的C语言IDE(集成开发环境)有Microsoft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++,Borland C++ Builder,GNU DJGPP C++,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc,xcode(mac os x)等。 (2)新的特性如下表4-1 新的特性表4-1 对齐处理(Alignment)的标准化(包括_Alignas标志符,alignof运算符,aligned_alloc函数以及 17 太原工业学院毕业设计(论文) 优点: 1、简洁紧凑、灵活方便; 2、运算符丰富; 3、数据类型丰富; 4、表达方式灵活实用; 5、允许直接访问物理地址,对硬件进行操作; 6、程序执行效率高,生成目标代码质量好; 7、可移植性好; 8、表达力强; 9、运用十分广泛。既可以编程系统软件,也可以编程开发应用软件。 10、作为通用的计算机语言。 缺点: 1、由于它的数据封装性,使得它的安全性能受到了极大的冲击,在使用上不够安全,容易被人抛弃; 2、C语言和其他的语言相比更加难掌握,对程序员的要求相比较其他语言来说是要求更高,更为熟练,因此其更不易于被常人使用,大大加强了初学者的所具备的要求; 3、C语言的简洁性与它的丰富的运算符和大量的函数相结合,使它可能会编写出不易于理解的代码,使人很难修改; 4、C语言表达方面的更加自由,这样势必带来了一定的风险。尤其是C语言对指针的运用。 4.2 门禁系统的流程图 4.2.1 系统的总流程图 18 太原工业学院毕业设计(论文) 4.1 总流程图 4.2 管理卡功能子程序流程图如图 19 太原工业学院毕业设计(论文) 4.2 子程序流程图 20 太原工业学院毕业设计(论文) 第5章 门禁系统的软、硬件调试 当完成了硬件的设计、生产和软件编写之后,要系统能够按设计正常运行,就应该对硬件和软件进行一系列的调试和修改。 5.1 硬件调试 硬件调试的主要工作就是检查硬件相关问题,当中包含了设计性的错误和工艺性故障。 (1) 脱机检查。按照电路原理图用万用表一步步地检查电路板当中器件的各个引脚连接问题,特别是电源是否正确的连接。查看每个开关按键是否能够正常工作。在为了保护芯片,但还必须检查每个IC插座尤其电源端的电位。然后插入要检查的芯片,以确保前有在它前没有错误。 (2) 联机调试。首先关闭电源并拔掉AT89C52芯片,仿真器的40引脚仿真插头直接插入AT89C52芯片上进行调试。然后测试键盘电路能否满足设计要求。通过一些简单的测试,看看软件接口是否正常工作。比如,我们可以设计在按下键盘然后通过蜂鸣器的声音来检测电路。 。当运行测试结果和预期不相符合,可以通过故障现象来辨别出故障的原因,并采取针对性措施排除故障。 5.2 软件调试 软件调试的任务是使用开发Keil 4工具进行在线调试,发现和找出程序错误,并且也可以发现硬件故障。 调试应该在各自独立的模块中进行。最先开始调试每个功能的子程序,检查该程序是否能实现预期的功能,控制接口电路是否正常等。然后才将逐步连接每一个子程序进行调试。 联调应该注意的是,程序模块之间传递参数是否成功,特别是要注意保护现场每个子程序和恢复。调试的基本步骤如下: (1)编写蜂鸣程序程序,调试是蜂鸣器是否会响。 (2)编写简单程序调试刷卡时是读卡模块是否有读入。 (3)编写键盘控制程序,调试能否有键按下及它的按键值。 (4)编写添加、删除用户卡程序,调试能否可以实现。 (5)编写修改管理卡,删除全部用户卡程序,对程序进行相关的调试,并解决程序问题。 (6)进行大体部分的调试,确定能否实现存放一张管理卡,多张用户卡。通过 21 太原工业学院毕业设计(论文) 这个按键能否可以实现修改管理卡,添加、删除用户卡,并且删除全部用户卡等设计要求。 5.3 软、硬件设计注意事项 (1)当外部电源接触不良或者受到严重的电磁干扰,读卡模块内部软件也许会断开或偏离。 (2)如果在天线一定范围内存在着金属,可能会让工作频率受到影响,读卡距离也受到干扰,严重的时候读卡反应变慢,甚至会不可以进行读卡。规避这类事情的方法是将全部的金属材料尽量远离天线线圈的范围,尤其是天线前面不要有金属封板。电磁波能够被屏蔽金属封板,从而使得读卡完全失败。如果天线后面有金属封板,就应该远离天线线圈最少3个厘米或者更远。 (3)读卡模块与模板注意是否有共地。 (4)当使用的电源不足够优良,可能会引起电压不稳定,起伏太大的话会对读卡距离产生一定的影响。 (5)外面的无线电磁波也可能会对读卡产生一定的干扰。 22 太原工业学院毕业设计(论文) 第6章 总结 经过这一学期的工作,最终完成了这次毕业设计。这个设计的门禁系统可以辨别出刷卡人员是否有权限进入、出入。在杨新艺、尚海燕老师的指导和舍友的帮助下基本达到了本次设计的目的。 经过本次设计的锤炼,我对AT89C51单片机设计与应用的单片机原理功能有一个宏观的了解,对C语言程序的编写和实际应用的结合有了进一步的掌握。 在微控制器设计控制的简单LCD液晶显示器过程中,从电路的设计,元器件的选型和硬件系统的绘制和测试,代码的设计,我可以独立的设计和制作,这让我对理论知识的理解有了新的认识与并且可以和实践结合。 在本次设计中,我通过在图书馆和互联网寻找各类资料,积极和老师沟通学习,从而完成了设计工作,各个硬件模块的选择,各个模块间的连接,系统结构电路图绘制和软件编写。但迫于自我才疏学浅和有限的时间,所设计的系统,还有很多有待改进的区域。如:软件编写不够合理和完善,在硬件上,由于受知识水平的局限和紧迫的光阴,还存在很多需要改进的地方,感到十分遗憾。 在设计过程中,我查阅了大量相关资料,与老师和同学们不断交流,对自己知识的理解有了很大的帮助,由于阅历和学识的不同,导致每个人思维的出发点不同,在沟通中可以触发自己的灵感,从而可以发散自己的思维,找到最优的答案。从而使我明白,在今后的学习与工作中需要多于周围的人交流, 这可能是学校要教我学习的另一门课程。此外,毕业论文结束的那一刻,感觉自己也成长那个了许多,思考分析问题更全面,对待工作更加认真负责,也培养了我坚持到底的毅力和耐力。我相信这次的锻炼在我今后的学习工作生活会产生深远的影响,让我充分体会到了在创造过程中探索求知所带给自己的喜悦,获得胜利后的充实。虽然这个设计比较不够全面和完善,但通过本次设计的过程中学习到的其它知识和经验是最伟大的财富。能够使我在以后的学习生活变得更加顺利。 23 太原工业学院毕业设计(论文) 感谢 通过这次的毕业设计,学习到了许多。这几个月来是大学期间人生中一次比较完整的学习过程。不仅学习到了语言编程,软件设计、程序调试等科目,了解并学习了KEIL4等软件工具。更值得一提的是学会了如何从遇到问题、然后查找资料。并且运用已经学到的知识解决一些现实中问题。 在这次毕业设计完成之前,我想要对无论是在生活还是在学习上给予过我帮助的人表示诚挚的谢意! 首先,对我的指导老师杨新艺老师致以衷心的感谢!从上个学期拿到毕设题目之初到现在,从论文的选题、开题报告和中期检查的书写,到论文的组织、撰写、修改和完善,杨老师都给了我许多的关心、理解、指导和帮助。 这当中非常感谢尚海燕老师和其他给予我帮助的老师和同学。无论我是在学校还是在外实习工作,尚老师依然用现代通讯软件、电话等其他方式来通知我一些问题,指导毕业设计的开题报告、中期检查、最终论文格式书写的规范。尚老师勤勉务实的教学态度,认真笃实的教学方法深深感染着我。 最后,非常感谢我的同学,感谢他们无论是在生活中还是在毕业设计学习过程中给予过我启发和帮助。感谢他们一路与我相伴,不曾离去。 真心感谢院、系领导及参加答辩的老师。谢谢大家! 24 太原工业学院毕业设计(论文) 参考文献 [1]李民权,高顺利,吴先良,远距离非接触IC卡考勤系统的软件设计与实现[J].安徽大学学报 (自然科学版)2003(3):4. [2]黄菊生,基于智能IC卡的网络门禁系统设计与开发[D]。硕士论文长沙;湖南大学,2003:69-95. [3] 游战清,李苏剑,张益强等.无线射频识别技术(RFID)理论与应用[M].北京:电子工业出版社,2004:95-121. [4]安静宇,基于非接触式IC卡门禁系统的设计[D].西安科技大学,2006:12-45. [5]康行健,天线原理与设计[M],北京:国防工业出版社,1998:65-73. [6]韩瑜,焦小澄.高效的LCD模块显示程序设计方法[J],计算机工程与应用.2004,22(1):123-126. [7]汤竞南,沈国琴.51单片机C语言开发与实例[M].北京:人民邮电出版社,2008:1-4,89-95. [8]赵妍妮,I2C总线的单片机C语言实现及应用[J].微机发展,2001,12(4):172-174. [9]荣锋,厉彦峰,基于网络的门禁系统的设计[J].天津工业大学学报,2008,27(1):56-60. [10]International standard ISO/IEC,FCD 14443.Identification cards—Contactless integrated circuit(s)cards—Proximity cards. Partl:Physical Charaeteristies. Part2:Radio frequency power and signal interface. Part3:Initialization and antieollision. [11]谢振辉,《改进式MCS-51单片机实验》,北京,科学出版社,2006,76-99 [12]赵建领,《51系列单片机开发宝典》北京,电子工业出版社,2007,78-108 [133]杨恢先,黄辉先《单片机应用系统设计与仿真调试》北京,北京航空航天大学出版社,2005,75-103 [14]王为青,程国钢,《单片机KEIL CX51应用开发技术》北京,人民邮电出版社,2007,51-76,98-120 [15]李玉梅,《基于MCS-51系列单片机原理的应用设计》北京,国防工业出版 25 太原工业学院毕业设计(论文) 社,2006,39-76 [16]李群芳,黄建《单片机微型计算机与接口技术》.北京,电子工业出版社,2001,54-94。 [17]陈龙三.《8051单片机C语言控制与应用》北京,清华大学出版社,2002,59-86。 [18]张大波.《嵌入式系统原理设计与应用》北京,机械工业出版社,2004-11,36-78。 [19]沙占友,孟志永,王彦明《单片机外围电路设计》.北京,电子工业出版社,2006,44-85。 附录 1 /****************************************Copyright (c)************************************************** M1卡使用情况: 1.卡号对应不同人员 2.块号1存放该人员可进入的区域编号,从第一字节表示区域编号为1, 3.如果通过,则红灯亮,否则,不亮。 4.每次刷卡,RC522上传卡号以及块号1内容到上位机 ********************************************************************************************************/ 26 太原工业学院毕业设计(论文) #include \"STC12C54xx.h\" #include \"eeprom.h\" #include \"mfrc522.h\" //uchar code data1[16] ={0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE}; #define len 2 //为一共被选定卡的个数 //M1卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令 //4字节金额(低字节在前)+4字节金额取反+4字节金额+1字节块地址+1字节块地址取反+1字节块地址+1字节块地址取反 //uchar code money[4] = {1,0,0,0}; uchar code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; //初始密码 //uchar code administer_key[6]={0,0,0,0,0,0};//管理员卡密码 uchar code this=0x01; uchar code bianhao[16]={0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; uchar code ID[len+1][4]={ 0x13,0xB5,0x62,0xF6, 0x73,0xCF,0x8C,0xF6, //ID为被选定的卡的ID号 0x33,0xBD,0x7C,0xF6}; uchar code password[6] = \"456789\"; //*********全局变量定义*********************************// //static uchar xdata Rec_Buffer[REC_BUFFER_SIZE]; //static uchar Recvd_Count; //串口接收缓冲区 //串口已接收数据的个数 unsigned char g_ucTempbuf1[4]; //返回卡号 unsigned char g_ucTempbuf2[16]; //返回块中16位数据 27 太原工业学院毕业设计(论文) //bit time_flag=0;//1秒时间标志位 //bit mode =0;//模式选择标志位,0为定时计费模式,1为流量计费模式 //static uint gather_money=0;//汇总金额变量,需要充分考虑停电问题???????????????????? LCD_show=0; /***************************************************************************** *原型:void time0_init(void) *功能:定时器0初始化 *input:无 *ouput:无 用于定时计费 ******************************************************************************/ /*void time0_init(void) { if(mode==0) { TMOD = TMOD|0x01; TH0 = 0x10; TL0 = 0x00;//4096,定时15次就是1S,11.0592M } if(mode==1) { TMOD = TMOD|0x05;//计外部脉冲 TH0 = 0xff; TL0 = 0xfe;//一个脉冲来则溢出 TR0 =1; } 28 太原工业学院毕业设计(论文) } TR0 =1; ET0 =1; void timer0() interrupt 1 { static uchar overflow=0; if(mode==0) { TH0 = 0x10; TL0 = 0x00;//4096,定时15次就是1S,11.0592M overflow++; if(overflow>=15)//注意:如果overflow未付初值,此处if(overflow==15),第 一次得不到立即响应,改成>=则可以立即响应 { overflow=0; } if(mode==1) { TH0 = 0xff; } } */ 29 time_flag=1; LED=~LED;//绿色指示灯闪烁,表示正在计费 } TL0 = 0xfe;//一个脉冲来则溢出 time_flag=1; 太原工业学院毕业设计(论文) //-------------------------------- ------------------------------------------------------------------ // 函数名称: delay // 入口参数: N // 函数功能:延时子程序,实现(16*N+24)us的延时 // 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动 //-------------------------------------------------------------------------------------------------- void Delay_ms(uint N) { uint i,j; for(j=0;j<1000;j++) for(i=0;i<=N;i++); } void Delay_us(uint N) { uint i; for(i=0;i<=N;i++); } //void Motoropen() //{ // motorint1 = 0; // motorint2 = 1; // Delay_ms(2); //// motorint1 = 0; //// motorint2 = 0; //} 30 太原工业学院毕业设计(论文) void Pass() { static uchar count = 0; uchar i,lcd_ch[2]; beep=0; LCD_clr(); if(JudgeCards(g_ucTempbuf1)) { Delay_ms(15); beep=1; LCD_prints(0,0,\"ID:\"); for(i=0;i<4;i++) { x16tochar(g_ucTempbuf1[i],lcd_ch); LCD_prints(3+3*i,0,lcd_ch); } LCD_prints(1,1,\"The Door Open!\"); relay=0; Delay_ms(15); relay=1; Motoropen(); count = 0; // } else { Delay_ms(15); beep=1; LCD_prints(0,0,\"Error card!!!\"); count++; 31 太原工业学院毕业设计(论文) } } if(count == 3) { } count =0; for(i=0;i<20;i++) { } beep=0; Delay_ms(15); beep=1; /******************************************************************************* * Function Name : UART_Init * Description : 初始化串行口和波特率发生器(用定时器1) * Input : None * Output : None * Return : None *******************************************************************************/ /*void UART_Init(void) { SCON =0x50; //选择串口工作方式,打开接收允许 TMOD =TMOD|0x21; //定时器1工作在方式2,定时器0工作 在方式1 PCON|=0x80; //BaudRate=57600(系统时钟11.0592MHZ) 32 TH1=0xff; 太原工业学院毕业设计(论文) TL1=0xff; TR0 =1; =1; //启动定时器T0 //允许定时器0中断 TR1 =1; //启动定时器T1 ET1 =0; ET0 ES =1; //允许串行口中断 } */ /******************************************************************************* * Function Name : Sent_Byte * Description : 发送一个字节到主机 * Input : Sdata:要发送的字节 * Output : None * Return : None *******************************************************************************/ /*void Sent_Byte(unsigned char Sdata) { TI=0; SBUF=Sdata; while(TI==0) ; TI=0; }*/ /******************************************************************************* * Function Name : Sent_String * Description : 发送字节串到主机 * Input : pt_send:要发送的字符串 * Output : None 33 太原工业学院毕业设计(论文) * Return : None *******************************************************************************/ /*void Sent_String(unsigned char *pt_send) { TI=0; while(*pt_send!='\\0') { Sent_Byte(*pt_send++); } }*/ /******************************************************************************* * Function Name : Sent_Buffer * Description : 向串口1发送指定长度的数据 * Input : string:发送缓冲区指针;len:发送长度. * Output : None * Return : None *******************************************************************************/ /*void Sent_Buffer(uchar *string,uchar len) {uchar i; ES = 0; for(i=0;i Sent_Byte(*string++); } ES = 1; } */ 34 太原工业学院毕业设计(论文) /*自己加的函数*/ ///////////////////////////////////////////////////////////////////////////////// //判断卡号是否为选定的第n张卡的卡号 //是则返回1,否则返回0 ///////////////////////////////////////////////////////////////////////////////// bit JudgeCard(uchar *CardID,uchar n) { } ///////////////////////////////////////////////////////////////////////////////// //判断卡号是否为选定的卡号 //是则返回卡的编号,否则返回0 ///////////////////////////////////////////////////////////////////////////////// uchar JudgeCards(uchar *CardID) { uchar i; for(i=0;i<4;i++) { } return 1; if(*(CardID+i)!=ID[n][i]) { } return 0; uchar i; for(i=1;i 35 return i; 太原工业学院毕业设计(论文) } } return 0; ///////////////////////////////////////////////////////////////////////////////// //将16进制的数据转换为字符 //s为要转换的16进制数 //ch为转换后输出的字符数组指针 ///////////////////////////////////////////////////////////////////////////////// void x16tochar(uchar s,uchar *ch) { } ///////////////////////////////////////////////////////////////////////////////// //密码部分,当用户忘记带卡时可以输入固定密码开门 ///////////////////////////////////////////////////////////////////////////////// void key(char key_num) { if(s/16>=0&&s/16<=9) *ch=s/16+48; else *ch=s/16+55; if(s%16>=0&&s%16<=9) *(ch+1)=s%16+48; else *(ch+1)=s%16+55; static i=0; LCD_show=0; if(key_num == password[i]) { i++; 36 太原工业学院毕业设计(论文) } else { } if(i == 6) { LCD_prints(1,1,\"The Door Open!\"); beep=0; Delay_ms(15); beep=1; relay=0; Delay_ms(15); relay=1; Motoropen(); Delay_ms(100); i = 0; // } } //********************主函数****************************************** main() { char key_num; uchar status,flag=0; unsigned long int display_data=0; WDT_Disable; // motorint1 = 0; // motorint2 = 0; LCD_init(); LCD_clr(); 37 太原工业学院毕业设计(论文) LCD_prints(5,0,\"System\"); LCD_prints(3,1,\"Initialize\"); //初始化串口 // UART_Init(); EA =1; //单片机中断允许 //初始化射频芯片 PcdReset(); PcdAntennaOff(); PcdAntennaOn(); Delay_ms(100); // time0_init(); //初始化定时器0,要在读mode以后 //寻卡,输出为卡类型 status=PcdRequest(PICC_REQALL, LCD_clr(); while(1) { if(flag == 0 && LCD_show == 0) { LCD_show = 1; LCD_clr(); LCD_prints(0,0,\"Please show card\"); } if((key_num = key_scan()) != -1) { // LCD_printc (0, 1, key_num); } key(key_num); g_ucTempbuf1);//*PICC_REQALL=0x52:寻天线区内所有符合14443A标准的卡 38 太原工业学院毕业设计(论文) PICC_REQIDL=0x26:只寻未进入休眠状态的卡 if (status == MI_OK) status = PcdAnticoll(g_ucTempbuf1); //防冲撞处理,输出卡片序列 号,4字节 if (status == MI_OK) status = PcdSelect(g_ucTempbuf1); //选择卡片,输入卡片序列号, 4字节 if (status == MI_OK) status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf1); if (status == MI_OK) status = PcdRead(1, g_ucTempbuf2);//读卡 // if (status == MI_OK) // // // // // // // // 39 //{ //status=PcdWrite(1,bianhao); // } if (status == MI_OK) status = PcdRead(1,g_ucTempbuf2);//读卡 if(count == 20) { } count++; flag = 1; count = 0; 太原工业学院毕业设计(论文) if(status == MI_OK) { if(flag==0) { } flag=10; LCD_show = 0; Pass(); Delay_ms(100); //Sent_Byte(this); // Sent_Byte(g_ucTempbuf1[0]);Sent_Byte(g_ucTempbuf1[1]);Sent_Byte(g_ucTempbuf1[2]);Sent_Byte(g_ucTempbuf1[3]); //卡号 // // Sent_Byte(g_ucTempbuf2[0]);Sent_Byte(g_ucTempbuf2[1]);Sent_Byte(g_ucTempbuf2[2]);Sent_Byte(g_ucTempbuf2[3]); //卡中第一块数据内容 // Sent_Byte(g_ucTempbuf2[4]);Sent_Byte(g_ucTempbuf2[5]);Sent_Byte(g_ucTempbuf2[6]);Sent_Byte(g_ucTempbuf2[7]); // Sent_Byte(g_ucTempbuf2[8]);Sent_Byte(g_ucTempbuf2[9]);Sent_Byte(g_ucTempbuf2[10]);Sent_Byte(g_ucTempbuf2[11]); // Sent_Byte(g_ucTempbuf2[12]);Sent_Byte(g_ucTempbuf2[13]);Sent_Byte(g_ucTempbuf2[14]);Sent_Byte(g_ucTempbuf2[15]); } if(status == MI_OK) status=PcdHalt(); if(flag > 0) 40 太原工业学院毕业设计(论文) flag--; // // } } else if(LCD_show == 0) LCD_clr(); /******************************************************************************* * Function Name : Serial () * Description : 串口中断函数 * Input : None * Output : None * Return : None *******************************************************************************/ /*void Serial () interrupt 4 { EA = 0; using 2 if(RI) { RI=0; if(Recvd_Count>=REC_BUFFER_SIZE) Recvd_Count=REC_BUFFER_SIZE-1; Rec_Buffer[Recvd_Count++]=SBUF; } EA = 1; } */ 41 太原工业学院毕业设计(论文) 42 因篇幅问题不能全部显示,请点此查看更多更全内容