基于单片机的电子密码锁的设计

合集下载

毕业设计(论文)-基于单片机控制的电子密码锁设计

毕业设计(论文)-基于单片机控制的电子密码锁设计

基于单片机控制的电子密码锁设计目录摘要 (I)关键词 (I)Abstract ................................................................................................................... I I Key words ............................................................................................................... I I 1 绪论. (1)1.1 课题背景 (1)1.2 课题的目的和意义 (1)1.3 电子密码锁发展趋势 (1)1.4 本设计完成的工作 (2)2 总体方案设计 (2)2.1 电源模块 (3)2.2主控制器模块 (3)3 硬件实现及单元电路设计 (4)3.1 主控制模块 (4)3.2 单片机的时钟电路与复位电路设计 (4)3.3 单片机管脚说明 (5)3.4 键盘电路设计 (6)3.5 数码管显示电路设计 (6)3.6 存储芯片电路设计 (7)3.7 报警电路 (7)3.8 密码锁电路 (7)4 红外遥控电路设计 (8)4.1 红外通信基本原理 (8)4.2红外通信标准 (9)4.3 红外线遥控原理 (10)4.4 主要模块设计 (10)5 系统软件设计方案 (11)5.1 主程序流图 (11)5.2 开锁软件设计 (12)6 系统的安装与调试 (15)6.1硬件的安装 (15)6.2单片级密码锁的仿真 (16)结论 (16)致谢 ...................................................................................... 错误!未定义书签。

参考文献 (17)附录1 整机电路原理图 (18)附录2 部分源程序 (18)附录3:实物图 (27)基于单片机控制的电子密码锁设计摘要:本设计研究的对象是单片机密码锁,单片机密码锁由硬件和软件组成,硬件部分有电源输出电路、晶振电路、复位电路、键盘接口电路、开锁电路、报警电路、继电器、以及51单片机组成。

基于单片机电子密码锁设计论文

基于单片机电子密码锁设计论文

第1节引言1.1 电子密码锁概述随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。

而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。

传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。

另外,如:宾馆、办公大楼、仓库、保险柜等,由于装修施工等人住时也要把原有的锁胆更换,况且钥匙随身携带也诸多便。

随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能。

从而使密码锁具有很高的安全性、可靠性。

目前西方发达国家已经大量应用智能门禁系统,可以通过多种的更加安全更加方便可靠的方法来实现大门的管理。

但电子密码锁在我国的应用还不广泛,成本还很高,希望通过不断地努力使电子密码锁能够在我国及居民日常生活中得到广泛应用,这也是一个国家生活水平的体现。

很多行业的许多地方都要用到密码锁,随着人们生活水平的提高,如何实现家庭或公司的防盗这一问题也变的尤其突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,再者,普通密码锁的密码容易被多次试探而破译,所以,考虑到单片机的优越性,一种基于单片机的电子密码锁应运而生。

电子密码锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲睐。

设计本课题时构思的方案:采用以AT89C2051为核心的单片机控制方案;能防止多次试探而不被破译,从而有效地克服了现实生活中存在的许多缺点。

1.2 本设计主要任务(1)共8位密码,每位的取值范围为1~8。

(2)用户可以自行设定和修改密码。

(3)按每个密码键时都有声、光提示。

(4)若键入的8位开锁密码不完全正确,则报警5秒钟,以提醒他人注意。

(5)开锁密码错3次要报警10分钟,报警期间输入密码无效,以防窃贼多次试探密码。

(6)键入的8位开锁密码完全正确才能开锁,开锁时要有1秒的提示音。

(7)密码键盘上只允许有8个密码按键和1个发光管。

基于单片机的电子密码锁毕业论文设计

基于单片机的电子密码锁毕业论文设计

本科毕业设计(论文)题目基于单片机的电子密码锁设计院(系部)河北大学专业名称电子信息工程年级班级学生姓名指导教师2011年月日摘要本课题设计了一种基于单片机的数字电子密码锁,这种数字电子密码锁以单片机作为数据处理主控芯片。

电子密码锁的设计主要由四部分组成:4×4矩阵键盘接口电路、以AT89S52芯片为核心的密码锁的数据处理及控制电路、掉电情况下依然能保存密码的EEPROM存储器芯片,输出七段显示电路。

另外系统还有LED提示灯,报警蜂鸣器,单片机复位电路等。

电子密码锁设计的关键问题是实现密码的输入、清除、开锁、更改等功能。

同时该密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,符合住宅,办公室等场所的用锁要求,具有推广价值。

关键词单片机密码锁 4*4矩阵键盘 EEPROM存储芯片实用经济AbstractThis project designed a digital electronic lock which used a MCU as data process and control chip. The main functions digital electronic lock are as follows:The design of the electronic password lock is mainly made up of four parts: 4×4 matrix keyboard interface circuit, data processing and control circuit, eeprom memory chip that is used to keep password when the lock loses power and display circuit. In addition the system also consists of LED lights, alarm buzzers, single-chip reset circuit and so on..The key question of the electronic lock designing is the realization of functions, such as the input password, clear password, unlock, change password and other functions.And the designed cipher lock is characterized by its reasonable designing methods, simple operation, low cost and property of safety and practicality.Besides,it works well as a residence lock and has great potential for commercial development.Key words: SCM Cipher lock 4*4matrix keyboard EEPROM Practical economy目录1 绪论 (1)1.1国内外研究综述 (1)1.2选题的目的和意义 (2)1.3本论文的任务 (3)2电子密码锁总体设计 (4)2.1系统总体设计 (4)2.2单片机 (5)2.3密码存储芯片选择 (10)2.4键盘输入方案比较 (12)2.5显示方案比较 (13)3电子密码锁的硬件设计 (1)3.1系统结构框图 (1)3.2主控部分 (2)3.3显示部分 (3)3.4键盘输入部分 (4)3.5密码存储部分 (5)3.6电源部分 (5)3.7其它功能部分 (8)3.8 电子密码锁的电路原理图 (10)4电子密码锁的软件组成 (12)4.1系统软件设计流程 (12)4.2 Keil uVision2软件介绍 (13)4.3各主要部分的功能实现程序设计 (14)4.3.1初始化程序设计 (14)4.3.2按键处理程序设计 (17)4.3.3密码更改程序设计 (21)5系统仿真 (24)5.1系统仿真过程 (24)5.2仿真调试中遇到的问题及解决办法 (25)总结 (1)致谢 (2)参考文献 (3)附录 (4)1 绪论1.1国内外研究综述在电子锁出现以前人们广泛的使用机械锁,但是随着时间的推移机械锁已不能满足人们的要求,于是电子锁应用而生。

基于单片机的电子密码锁

基于单片机的电子密码锁

基于单片机的电子密码锁第一章序言电子密码锁作为一种现代化的安全防护设备,被广泛应用于家庭、商业和公共场所。

它与传统机械锁相比具有更高的安全性、更方便的使用方式以及更多的功能。

而基于单片机的电子密码锁则利用现代电子技术,结合单片机的强大功能,实现了更高级别的安全保护和智能化操作。

本文将深入探讨基于单片机的电子密码锁的原理、设计和应用。

第二章基本原理基于单片机的电子密码锁的基本原理是利用数字密码的输入和比对来控制锁的开关。

系统通过单片机将输入的密码与预设密码进行比对,如果输入正确,则单片机控制锁的电机将锁打开。

同时,还可以通过单片机对其他功能的控制,例如报警装置、指纹识别、密钥卡等。

基本原理可以总结为三个步骤:密码输入、比对判断和锁的控制。

第三章设计方案基于单片机的电子密码锁的设计方案包括硬件设计和软件设计两个方面。

硬件设计的主要组成部分有密码输入模块、单片机模块、电机控制模块和电源模块。

密码输入模块一般使用键盘或者触摸屏来实现密码的输入,单片机模块负责接收输入的密码,并与预设密码进行比对,电机控制模块用于控制锁的开启和关闭,电源模块提供系统的电能。

软件设计则是基于单片机的程序设计,包括密码输入、比对判断和控制电机的相关代码。

第四章功能拓展基于单片机的电子密码锁除了基本的密码输入和开锁功能外,还可以拓展其他功能。

例如,可以增加报警功能,当密码输入错误次数达到一定次数时,系统将触发报警器或者发送警报信息;还可以新增指纹识别功能,通过将指纹信息存储在单片机中,实现指纹的输入和认证,提高门锁的安全性;另外,还可以添加密钥卡功能,通过感应技术读取密钥卡上的信息,实现无需输入密码的开锁方式,提升用户体验。

第五章应用前景基于单片机的电子密码锁在家庭、商业和公共场所都有广泛的应用前景。

在家庭使用方面,电子密码锁可以取代传统的机械锁,提供更高的安全性,可以对家庭成员的出入进行控制;在商业使用方面,电子密码锁可以应用于办公室、酒店、银行、医院等场所,实现门禁和权限控制,保护重要信息的安全;在公共场所使用方面,电子密码锁可以应用于公共厕所、储物柜、车库等场所,提供更方便快捷的开锁方式。

基于单片机电子密码锁的设计原理

基于单片机电子密码锁的设计原理

本科生毕业设计目录设计总说明 (I)DESIGN INTRODUCTION ................................................................ 错误!未定义书签。

第1章绪论 . (1)1.1背景 (1)1.2电子锁 (1)1.3电子密码锁的特点 (1)1.4电子密码锁的发展趋势 (2)第2章系统总体设计 (2)2.1系统结构 (3)2.2 系统组成 (3)2.3 系统可行性分析 (3)第3章硬件电路设计 (4)3.1单片机AT89C51简介 (4)3.1.1 主要特性 (5)3.1.2 管脚说明 (5)3.1.3 震荡特性 (7)3.1.4 芯片擦除 (7)3.2 4×4矩阵键盘 (7)3.3复位电路 (8)3.4 振荡电路 (8)3.5 数码管 (8)3.6 发光二极管LED (9)3.7 电动锁 (10)3.8 蜂鸣器 (10)3.9 完整电路图 (11)第4章软件程序设计 (13)4.1软件设计流程图 (14)4.2 具体功能软件实施 (15)第5章结束语及展望 (21)第6章鸣谢 (22)第7章参考文献 (23)附录 (22)设计总说明在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。

若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。

随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。

为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。

密码锁具有安全性高、成本低、功耗低、易操作等优点。

在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。

随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。

基于单片机的指纹识别电子密码锁设计

基于单片机的指纹识别电子密码锁设计

基于单片机的指纹识别电子密码锁设计引言指纹识别技术的发展得益于现代电子集成制造技术和快速可靠的算法的研究。

尽管指纹只是人体皮肤的小部分,但用于识别的数据量相当大,对这些数据进行比对也不是简单的相等与不相等的问题,而是使用需要进行大量运算的模糊匹配算法。

现代电子集成制造技术使得我们可以制造相当小的指纹图像读取设备,同时飞速发展的个人计算机运算速度提供了在微机甚至单片机上可以进行两个指纹的比对运算的可能。

另外,匹配算法可靠性也不断提高,指纹识别技术己非常实用。

指纹识别原理指纹识别技术的原理和其它生物识别技术的原理相似。

它是利用人体的指纹特征对个体身份进行区分和鉴定。

在所有的生物识别技术中指纹识别技术是目前最为成熟,也被应用最广的生物识别技术。

这主要因为指纹采用的过程对人们来讲非常简单,指纹识别的准确率高的原因。

严格来讲,指纹识别的原理包括指纹采集原理、指纹特征提取原理和指纹特征匹配原理三大部分。

指纹采集原理主要是根据指纹的几何特性或生理特性,通过各种传感技术把指纹表现出来,形成数字化表示的指纹图案。

由于指纹的嵴和峪的几何特征不同,主要表现为嵴是突起的,峪是凹下的,所以在接触到光线时,其反射光的强度也就不同。

在接触到平面时,其在平面上形成的压力也就不同。

另一方面,由于指纹的嵴和峪的生理特征不同,主要表现为:嵴和峪的温度不同,其导电性也不同,其对波长的反馈也就不同。

通过这些几何的、生理的特性的不同,把人的指纹采集到计算机系统中形成指纹图像。

指纹特征分析的原理是对指纹图案的整体特征和细节特征进行提取、鉴别的原理。

其分析的对象包括纹形特征和特征点的分布、类型,以及一组或多组特征点之间的平面几何关系。

特征点的平面几何关系表现为某个特征点之间的距离等,或者某三个或更多特征点之间组成的多边形的几何特性。

不论是特征点的单体特征,还是特征点的组合特征都是指纹特征的组成部分。

把这些指纹特征用数字模板的形式表示出来,就实现了一个指纹特征分析的过程。

毕业设计(论文)-基于单片机的电子密码锁设计

毕业设计(论文)-基于单片机的电子密码锁设计

目录单片机电子密码锁的设计 (1)第1章绪论 (3)1.1引言 (3)1.2电子密码锁的背景 (3)1.3电子锁设计的意义的本设计特点 (4)第2章系统总体方案设计 (5)第3章硬件电路设计 (8)3.1键盘电路设计 (8)3.2LED显示电路 (9)3.3开锁电路 (11)3.4报警电路 (12)第4章软件设计 (12)4.1软件设计思路 (12)4.2各子程序设计 (13)第5章系统调试 (18)第6章单片机电子密码锁的应用趋势 (19)第7章设计总结与展望 (19)附录 (23)源程序清单 (23)单片机电子密码锁的设计摘要:随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。

本设计以单片机AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构(本设重点介绍主机设计),实现钥匙信息在主机上的初步认证注册、密码信息的加密、钥匙丢失报废等功能。

根据51单片机之间的串行通信原理,这便于对密码信息的随机加密和保护。

而且采用键盘输入的电子密码锁具有较高的优势。

采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。

软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。

测试结果表明,本系统各项功能已达到本设计的所有要求。

关键词:单片机;密码锁;单片机设计,电子锁。

The design of electronic locks SCMABSTRACT:Along with the exaltation of social science and the living level of people, how carry out the family to guard against theft, this problem also change particularly outstanding.Because of the simple construct of traditional machine lock,the affairs of theft is hackneyed.the electronics lock is safer because of its confidentiality, using the vivid good, the safe coefficient is high, being subjected to the large customer close.It can carry out the key information to register in the main on board initial attestation, the password information encrypt etc. Go to correspond by letter the principle according to the string between 51 machines, this is easy to encrypt and protect to the passwords information random. Adopt the numerical signal codes,not only can carry out many controls of the road information, raise the anti- interference that signal deliver, reduce the mistake action,but also the power consume is low,Respond quickly,the efficiency deliver is high, work stable credibility etc. The software design adoption the design thought from top to bottom, to make the system toward wear distribute type,turn to the direction development of small, strengthen the system and can expand the stability and circulate.Test the result enunciation, various functions of this system are already all request of this design.KEYWORD:singlechip;cryptogram lock;singlechip design; electronics lock.第1章绪论1.1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的喜爱。

基于单片机的电子密码锁设计

基于单片机的电子密码锁设计

基于单片机的电子密码锁设计
电子密码锁是一种常用的智能锁具,它使用数字密码代替传统的钥匙,能够提供更高的安全性和方便性。

基于单片机的电子密码锁能够实现简单的密码输入、校验和控制逻辑,下面是一种基于单片机的电子密码锁设计方案。

硬件部分:
1、MCU:选择一款高性价比的8位单片机,如AT89C51,具备足够的存储空间、操作速度和通用IO口。

2、键盘:选用16键或12键矩阵键盘,提供数字、字母和功能键,可灵活设置密码。

3、数码管:用于显示输入密码和状态信息,一般采用4位共阳数码管。

4、电路保护:此处需添加过流保护、短路保护、反向保护以及过压保护等电路。

5、电源:选择电池供电模式,例如4节AA碱性电池并联,以保证足够的电量和使用寿命。

软件部分:
1、键盘输入检测:通过IO口扫描矩阵键盘输入状态,检测按下的键位并读取对应键值,避免误触。

2、密码存储:将设定好的开锁密码存储在MCU内部的Flash或EEPROM中,以保证密码安全并避免意外丢失。

3、密码校验:将输入的数字密码与存储的密码进行比较,如一致则允许开锁,否则拒绝开锁并显示“密码错误”。

4、状态显示:通过4位共阳数码管显示输入密码、开锁状态、警报状态等信息,方便用户操作。

5、警报功能:若输入错误密码超过规定次数,则触发警报,并向指定手机号或邮箱发送警报信息。

总之,基于单片机的电子密码锁设计需要合理安排硬件和软件功能,充分保证安全性和可靠性,并考虑升级和扩展的可能性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机的电子密码锁设计我国工业企业的自动化程度普遍较低,单片机产品有很大的应用空间,如机械行业80%以上的设备仍采用传统的继电器和接触器进行控制。

因此,单片机在我国的应用潜力远没有得到充分发挥。

我国大中型企业普遍采用了先进的自动化系统对生产过程进行控制,但绝大部分小型企业尚未应用自动化系统和产品对生产过程进行控制,以提高企业的经济效益和竞争实力。

基于单片机设计的电子密码锁,具有设计简单,操作方便的特点,该产品有很大的市场前景。

该设计运用Proteus等仿真软件仿真电子锁,解决了手工绘图慢的缺点,同时设计过程还引用了电子锁常用的标准件和常用件,尽量将所设计的电子锁标准化,这样就大大缩短了电子锁设计周期,进而缩短了新产品的开发周期并降低了电子锁的制造成本;增强了产品的竞争力,公司的整体实力也得到增强。

第一章概述1.1 设计目的1.通过本次课程设计进一步熟悉和掌握单片机的结构及工作原理,巩固和加深“单片机C语言”课程的基本知识,掌握电子设计知识在实际中的简单应用。

2.综合运用“单片机C语言”课程的技巧以及生产实际知识去分析和解决电子设计问题,进行电子设计的训练。

3.学习电子设计的一般方法,掌握AT89C51芯片以及简单的电子设计过程和运行方式,培养正确的设计思想和分析问题、解决问题的能力、特别是总体设计能力。

4.通过计算和绘制原理图、布局图和流程图,学会运用标准、规范、手册、图册、和查阅有关技术资料等,培养电子设计的基本技能。

1.2 设计要求1.若不小心输入错误数字,可以返回重新输入。

2.输入错误次数达到3次时,将锁定键盘一定时间。

3.可以更改密码。

4.显示解锁键盘余剩时间。

第二章系统的硬件结构设计2.1 实验原理主体电路:电子密码锁控制模块。

这部分电路主要由AT89C51单片机的I/O端口、定时计数器、外部中断扩展等组成。

本设计的P0端口为段码端口,P2端口为位码端口,P1和P3为键盘端口。

初始时红灯亮,绿灯灭,并且数码管无任何显示。

当输入数字时,数码管不会显示所输入的数字,但会显示出一横表示输入了数字,输入“返回”时可以返回上一步。

当输入了4个数字时,再按“确定”,若输入的密码正确,红灯灭,绿灯亮,输入“锁定”后可以重新上锁;若输入的密码不正确,红灯将会闪烁3次,之后重置输入的数字。

如果输入错误次数达到3次,键盘将会被锁定,红灯和绿灯均熄灭,无法输入任何数字,数码管显示1800并且开始倒数1800秒。

1800秒后,电子锁将会自动解锁。

若在电子锁解锁期间按“更改密码”可以改变密码,此时若按数字键时会显示输入的密码,输入“返回”可以返回上一步。

输入完毕后,按“确定”键绿灯将会闪烁3次表示更改密码完成。

本设计的程序中采用定时器中断的方式设计。

2.2.工作流程图流程如图2.2-1图2.2-1 工作流程图2.3 硬件设计2.3.1 单片机结构单片微机(Single-Chip Microcomputer)简称为单片机。

他在一块芯片上集中了中央处理单元CPU、随机存储器RAM、只读存储器ROM、定时/计数和多功能输入/输出I/O口,如并行I/O、串行口I/O和转换A/D等。

就其组成而言,一块单片机就是一台计算机,由于它具有体积小、功能强和价格便宜等优点,因而被广泛地应用于产品智能化和工业控制自动化上。

2.3.2 主要元器件选择如图2.3.2-1图2.3.2-1 主要元器件选择第三章控制系统的软件设计3.1 软件设计3.1.1 单片机中中断系统基本结构中断是一项重要的计算机技术,是处理正常工作与紧急状态的好办法,是实现人机实时交互的重要途径,在单片机应用系统中,终端技术得到了广泛应用。

下面详细介绍单片机中断系统基本结构、与中断相关的特殊寄存器的设置及中断应用系统编程方法。

当CPU查询到系统有中断请求时,如果系统处于中断允许状态,CPU将停止当前的工作,相应中断请求,转向中断服务,中断服务完成后,返回源程序继续执行当前任务,这叫单片机中断。

能让CPU产生中断的信号源叫中断源。

8051单片机有INT0、INT1、T0、T1、TI、RI 六个中断源,但是只有EX0、ET0、EX1、ET1、ES五个向量,下面简要介绍六个中断源。

INT0、INT1:外部中断源,右P3.2和P3.3引脚输入。

具有低电平和脉冲两种出发方式,在每个机器周期的S5P2采样引脚信号,如有效则由硬件将它的中断请教标志IE置1,请求中断.当CPU响应中断时,由硬件复位。

T0、T1:定时/计数器中断,当定时/计数器产生溢出时,置位中断请求标志TF请求中断处理。

RI、TI:串行中断,RI是接受,TI为发送。

单片机串行口接受到一个字符后RI置1,发送完一个字符TI置1。

值得注意的是,RI、TI在响应中断后,必须由用指令将其复位。

3.1.2 中断响应CPU在执行程序的过程中,在每个机器周期的S5P2对中断位置位按中断优先级进行查询,一旦查询到有中断请求,CPU只要不在执行同级或高级的中断服务程序和当前指令(RETI指令或访问IE、IP的指令除外)执行完毕两种情况,则响应中断。

如果当前正在执行的指令是RETI或访问IE、IP的指令,则当前指令执行完毕后,CPU才可响应中断。

中断响应时间可以从中断信号被查询开始算起,中断响应时间在以下三种情况,响应还会更长:①CPU正在执行一个比响应的中断源优先级相当或更高的中断源的中断服务程序,此时必须等到中断服务程序执行完毕才可中断响应。

②正在执行的当前指令不是在最后一个机器周期,只有指令执行完后才响应中断。

③如果当前执行的是RETI或访问IE、IP的指令,则当前指令执行完毕后,CPU需再执行一条指令才可以中断响应,因此附加等待响应时间不会超过5个机器周期。

3.1.3 中断入口:单片机响应中断后,将转向特定的入口进行中断服务,单片机的中断入口地址如下表3.1.3-1表3.1.3-1单片机中断入口地址表从表中可以看出,两相邻中断源的入口地址间隔为8个单元。

这意味着如果要把中断源对应的中断服务程序从入口地址开始存放,则程序的长度不能超过8个字节,否则会影响到下一个中断源的入口地址的使用。

而通常情况下,中断服务程序的长度不止8个字节,因此,常见的处理方法是:在入口地址处存放一条无条件转移指令,通过这条转移指令转向对应的中断服务程序入口,中断服务程序以RETI为结束。

3.1.4 中断请求的撤销CPU响应中断请求,在中断返回(RETI)之前,该中断请求应被撤除,否则会引发另一次中断。

定时/计数器中断请求撤销:CPU在响应中断之后,由硬件自动清除中断请求标志TF。

外部中断请求撤销:如果采用脉冲触发方式,CPU在响应中断后,由硬件自动清除中断请求标志IE;对于电平触发方式的外部中断请求,中断标志的撤销是自动的,由于造成中断请求的低电平继续存在,所以在响应中断后再次会产生中断请求,为此响应中断后要撤销外部信号。

3.1.5 每秒钟的设定延时方法可以右两种,一种是利用MCS-51内部定时器溢出中断来确定1秒的时间,另一种是采用软延时的方法。

3.1.6 计数器初值计算定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。

我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算公式:TC=M-C。

3.2 实验程序#include<reg51.h>#include<intrins.h>#define INT8U unsigned char#define INT16U unsigned intsbit red=P3^6;//定义红灯,即锁定状态sbit green=P3^7;//定义绿灯,即解锁状态sbit k1=P1^0;//定义数字键“1”sbit k2=P1^1; //定义数字键“2”sbit k3=P1^2; //定义数字键“3”sbit k4=P1^3; //定义数字键“4”sbit k5=P1^4; //定义数字键“5”sbit k6=P1^5; //定义数字键“6”sbit k7=P1^6; //定义数字键“7”sbit k8=P1^7; //定义数字键“8”sbit k9=P3^0; //定义数字键“9”sbit k0=P3^1; //定义数字键“0”sbit ka=P3^2;//定义“返回”键sbit kb=P3^3;//定义“确定”键sbit kc=P3^4;//定义“更改密码”键sbit kd=P3^5;//定义“锁定”键INT8U mod=1,i,error,j,change,state,right;//定义初始模式、位码、错误次数、取反次数、更改密码模式、按键状态、密码是否相等INT16U t=0,poi=1800,tt=0;//定义定时、倒计时数、时间累计INT8U code DSY_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF};//定义段码INT8U array[]={0,0,0,0};//保存数位分解结果的数组INT8U nico_A[]={0,0,0,0};//密码A数组INT8U nico_B[]={0,0,0,0};//密码B数组void INT_TO_4Digit(INT16U n)//数位分解函数{array[0]=0;while(n>=1000){array[0]++;n-=1000;}array[1]=0;while(n>=100){array[1]++;n-=100;}array[2]=0;while(n>=10){array[2]++;n-=10;}array[3]=n;}void DSY_Show() interrupt 1//T0中断函数{TH0=-1000/256;//1ms定时TL0=-1000%256;if(k1==0||k2==0||k3==0||k4==0||k5==0||k6==0||k7==0||k8==0||k9==0||k0== 0) state=1;//若任意数字键按下,state=1if(k1!=0&&k2!=0&&k3!=0&&k4!=0&&k5!=0&&k6!=0&&k7!=0&&k8!=0&&k9!=0& &k0!=0&&state==1) state=2;//若无数字键按下,且按键状态为1时,按键状态更改为2if(ka==0&&state==0) state=3;//若“返回”键按下,且按键状态为0,按键状态更改为3if(ka!=0&&state==3) state=4;//若“返回键”没有按下,且按键状态为3,按键状态更改为4if(nico_A[0]!=nico_B[0]||nico_A[1]!=nico_B[1]||nico_A[2]!=nico_B[2]||nico_A[3] !=nico_B[3]) right=1;//若密码A数组任一位不等于密码B数组,即密码不相等if(nico_A[0]==nico_B[0]&&nico_A[1]==nico_B[1]&&nico_A[2]==nico_B[2]&&nico_ A[3]==nico_B[3]) right=2;//若密码A数组与密码B数组完全相等,即密码相等if(ka==0||kb==0||kc==0||kd==0) tt=0;//如果“返回”、“确定”、“更改密码”、“锁定”任意一键按下,时间累计清零switch(mod)//选择模式{case 1:if(change==0) {red=0;green=1;}//若不是在更改密码模式,红灯亮,绿灯灭if(change==1&&state==4) {change=0;mod=5;state=0;}//若在更改密码状态,且按键模式为4时,变为输入密码状态,且模式变为5,按键状态变为1P0=0xFF;//关闭段码if(k1==0) nico_B[0]=1;//若按下数字键“1”,密码B的第0位为1if(k2==0) nico_B[0]=2;if(k3==0) nico_B[0]=3;if(k4==0) nico_B[0]=4;if(k5==0) nico_B[0]=5;if(k6==0) nico_B[0]=6;if(k7==0) nico_B[0]=7;if(k8==0) nico_B[0]=8;if(k9==0) nico_B[0]=9;if(k0==0) nico_B[0]=0;if(t++==1000) {t=0;tt++;}//定时1秒,然后t清零,时间累计+1 if(tt==1800) {tt=0;error=0;}//半小时内无任何操作,错误次数清零if(state!=2) return;//如果按键状态不为2,返回tt=0;//时间累计清零state=0;//按键状态变为0mod=2;//模式变为2break;//退出本次循环case 2:if(change==1)//若为更改密码状态,会显示数字{P0=0xFF;//关闭段码P2=(1<<0);//输出位码P0=DSY_CODE[nico_B[0]];//输出段码}if(change==0)//若为输入密码状态,会显示一横{P0=0xFF;P2=(1<<0);P0=DSY_CODE[10];}if(state==4) {mod=1;state=0;}//若按键状态为4,模式变为1,且按键状态变为1if(k1==0) nico_B[1]=1;if(k2==0) nico_B[1]=2;if(k3==0) nico_B[1]=3;if(k4==0) nico_B[1]=4;if(k5==0) nico_B[1]=5;if(k6==0) nico_B[1]=6;if(k7==0) nico_B[1]=7;if(k8==0) nico_B[1]=8;if(k9==0) nico_B[1]=9;if(k0==0) nico_B[1]=0;if(t++==1000) {t=0;tt++;}if(tt==1800) {tt=0;error=0;}if(state!=2) return;tt=0;state=0;mod=3;break;case 3:if(change==1){P0=0xFF;P2=(1<<i);P0=DSY_CODE[nico_B[i]];}if(change==0){P0=0xFF;P2=(1<<i);P0=DSY_CODE[10];}i=(i+1)%2;//i的输出结果在0、1之间循环if(state==4) {mod=2;state=0;}if(k1==0) nico_B[2]=1;if(k2==0) nico_B[2]=2;if(k3==0) nico_B[2]=3;if(k4==0) nico_B[2]=4;if(k5==0) nico_B[2]=5;if(k6==0) nico_B[2]=6;if(k7==0) nico_B[2]=7;if(k8==0) nico_B[2]=8;if(k9==0) nico_B[2]=9;if(k0==0) nico_B[2]=0;if(t++==1000) {t=0;tt++;} if(tt==1800) {tt=0;error=0;} if(state!=2) return;tt=0;state=0;mod=4;break;case 4:if(change==1){P0=0xFF;P2=(1<<i);P0=DSY_CODE[nico_B[i]]; }if(change==0){P0=0xFF;P2=(1<<i);P0=DSY_CODE[10];}i=(i+1)%3;if(state==4) {mod=3;state=0;} if(k1==0) nico_B[3]=1;if(k2==0) nico_B[3]=2;if(k3==0) nico_B[3]=3;if(k4==0) nico_B[3]=4;if(k5==0) nico_B[3]=5;if(k6==0) nico_B[3]=6;if(k7==0) nico_B[3]=7;if(k8==0) nico_B[3]=8;if(k9==0) nico_B[3]=9;if(k0==0) nico_B[3]=0;if(t++==1000) {t=0;tt++;}if(tt==1800) {tt=0;error=0;} if(state!=2) return;tt=0;state=0;mod=5;break;case 5:if(change==1){P0=0xFF;P2=(1<<i);P0=DSY_CODE[nico_B[i]];}if(change==0){P0=0xFF;P2=(1<<i);P0=DSY_CODE[10];}i=(i+1)%4;if(ka==0||kb==0||kc==0||kd==0) t=0;//如果“返回”、“确定”、“更改密码”、“锁定”任意一键按下,定时清零if(change==1&&kb==0&&green==0){nico_A[0]=nico_B[0];nico_A[1]=nico_B[1];nico_A[2]=nico_B[2];nico_A[3]=nico_B[ 3];mod=8;}//若在更改密码状态且绿灯亮时按下确定,密码B会代入密码A,且模式变为8if(state==4&&red==0||state==4&&green==0&&change==1) {mod=4;state=0;}//若在按键状态为4且红灯亮时或者按键状态为4,绿灯亮且为更改密码状态时,模式变为4,按键状态变为1if(kb==0&&right==2&&red==0) {red=1;green=0;error=0;}//若在密码相同且红灯时按下“确定”,红灯灭,绿灯亮,错误次数清零if(kd==0&&green==0&&change==0) mod=1;//若在绿灯亮且在输入密码状态时按下“锁定”键,模式变为1if(kb==0&&right==1&&red==0) mod=6;//若在密码不相等且红灯时按下“确定”,模式变为6if(kc==0&&green==0&&change==0) {mod=1;change=1;}//若在绿灯且输入密码状态时按下“更改密码”,模式变为1,且变为更改密码状态if(kb==0&&error==2&&right==1&&red==0) {red=1;green=1;mod=7;}//若在错误次数为2,且密码不相等并且红灯亮时按下确定键,红灯绿灯均熄灭并且模式变为7if(t++==1000) {t=0;tt++;}if(tt==1800) {tt=0;error=0;}break;case 6:P0=0xFF;P2=(1<<i);P0=DSY_CODE[10];i=(i+1)%4;if(t++!=500) return;//定时500mst=0;red=~red;j++;//t归0,红灯取反,j=j+1if(j!=6) return;//如果没有取反6次,返回j=0;error++;//取反次数归0,累计1次错误次数mod=1;break;case 7:INT_TO_4Digit(poi);P0=0xFF;P2=(1<<i);P0=DSY_CODE[array[i]];i=(i+1)%4;if(t++!=1000)return;//定时1秒t=0;poi--;//每过1秒,倒计时数减1if(poi!=0)return;//如果倒计时数不等于0,就返回error=0;mod=1;poi=1800;//错误次数清零,模式变为1,倒计时数变为1800 break;case 8:P0=0xFF;P2=(1<<i);P0=DSY_CODE[10];i=(i+1)%4;if(t++!=500) return;t=0;green=~green;j++;if(j!=6) return;j=0;change=0;mod=5;break;}}void main(){TMOD=0X01;//T0工作于方式1IE=0x82;//使能T0中断TR0=1;//启动T0while(1);//主程序无限延时,定时器中断持续触发}第四章控制系统的运行与调试4.1 系统仿真4.1.1 元件位置摆放,如图4.1.1-1图4.1.1-1 元件摆放图4.1.2 各个元件的连线标号,如图4.1.2-1图4.1.2-1(1)连线标号图图4.1.2-1(2)连线标号图图4.1.2-1(3)连线标号图4.2 图文说明★★★初始密码为0000 ★★★开始时,红灯亮,绿灯灭,数码管无任何显示,电子锁为锁定状态当按下任意一个数字键时,数码管会显示一横表示已经输入了一个数字按下“返回”键时,可以返回上一步当按下四个数字键时,再按下“确定”,如果输入的密码错误,红灯会闪烁3次,并且累计1次错误次数然后返回初始状态如果输入密码错误次数在半小时内达到3次,红灯和绿灯均熄灭,并且数码管显示1800,每过一秒减少1倒计时结束后,电子锁将返回初始状态,并且将错误次数清零若输入的密码正确,红灯灭,绿灯亮,错误次数清零,电子锁进入解锁状态若在电子锁解锁状态时按下“锁定”键,电子锁将重新上锁,进入锁定状态若在解锁状态按下“更改密码”,电子锁将进入更改密码模式若在更改密码模式时按下“返回”,电子锁将返回开锁状态在更改模式输入数字键,数码管会显示数字输入“返回”,可以返回上一步在输入四个数字后再按“确定”,绿灯会闪烁3次,表示密码已经更改完成,然后返回开锁状态总结在本设计中,本人使用了涉及I/O控制,包括LED、数码管、按键等程序设计,使用了使用外部中断与定时计数器程序设计。

相关文档
最新文档