电子信息工程毕业设计(论文)-基于单片机的十位数字密码锁电路设计-精品

更新时间:2023-05-01 12:49:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计(论文)

题目十位数字密码锁电路

学院(部) 电子信息工程学院

专业电子信息工程

学生姓名

学号级 2007级

指导教师

2011年 6 月 6 日

成都大学学士学位论文(设计)

十位数字密码锁电路

摘要:随着电子技术和计算机术的飞速发展和人们生活水平的不断提高,各种各样的智能化、微型化的电子产品已广泛地应用于日常生活的各个领域,电子密码锁就是这样一个为实现防盗而诞生的电子产品,它安全性更高,使用方便灵活,其性能远远优于传统的机械锁,能更好的满足人们的需要。单片机广泛应用于生活生产中的各个自动控制领域,单片机的应用有利于产品的小型化、智能化、多功能化,有助于提高效率,提高质量,减少能源材料消耗,保证安全等,是微控技术的发展和体现。本文从经济实用的角度出发,从加深对单片机理论的理解和熟练电子设计过程的角度出发,采用Intel公司的8051AH单片机为主控芯片加上键盘输入电路和由逻辑元器件、发光二极管等电子元件组成的简单外围电路,用汇编语言编写单片机控制程序,设计了一款可以更改密码具有错误警报提示的十位数字密码锁。经实验证明,该密码锁具有设计合理,简单易行,成本低,安全实用等特点,适合居家住宅、办公用锁等要求,具有较高实用价值。也是单片机产品开发和应用的一种体现。

关键词:电子密码锁;单片机;矩阵键盘;液晶显示器。

II

成都大学学士学位论文(设计)Ten-digit code lock circuit

Abstract:As electronic technology and the rapid development of computer technique and the continuous improvement of living standards, a variety of intelligent, miniaturized electronic products have been widely used in all areas of daily life, electronic locks is to achieve a the birth of the electronic security products, it is more secure, easy to use and flexible, its performance is far superior to traditional mechanical locks, to better meet people's needs. SCM is widely used in the production of life in all areas of automatic control, microcontroller applications, facilitating product miniaturization, intelligent, multi-function, which contributes to increase efficiency, improve quality, reduce energy consumption of materials, ensuring safety, is a micro- control technology development and expression. From the economical point of view, from the theory to deepen understanding of SCM and skilled electronic design process point of view, the use of Intel 8051AH microcontroller for the company's main chip with keyboard input circuit and by the logic components, light emitting diodes and other electronic components The simple external circuit, microcontroller assembly language program, designed a false alarm can be prompted to change your password with the ten-digit combination lock. The experiment proved that the locks with reasonable design, simple, low cost, safe and practical features, suitable for home residential, office locks, etc., with high practical value. Product development and application of SCM is a reflection.

Key words:Electronic Cipher Lock;MCU;Matrix Keyboard;LCD Monitor.

III

成都大学学士学位论文(设计)

目录

绪论 (1)

第1章系统设计方案选择 (2)

1.1系统设计方案 (2)

1.2设计方案选择 (2)

第2章单片机概述 (3)

2.1单片机的基本概念 (3)

2.2单片机的主要特点及应用 (3)

2.38051芯片介绍 (5)

2.3.151单片机简介 (5)

2.3.2 51单片机的基本组成及引脚相关功能 (5)

2.3.3 51单片机存储器及中断系统 (6)

第3章系统硬件设计 (8)

3.1 系统总体设计原理 (8)

3.2键盘电路 (9)

3.3 开锁电路 (10)

3.4 显示电路 (12)

3.5 硬件设计原理图 (14)

第4章系统软件设计 (16)

4.1 主程序 (16)

4.2 密码删除和密码修改程序 (17)

4.3 键盘扫描和按键识别程序 (18)

4.4 密码比较和显示程序 (19)

第5章调试仿真 (20)

5.1 用Keil软件进行编译连接 (20)

5.2 用Proteus软件进行仿真 (21)

结论 (26)

致谢 (27)

参考文献 (28)

附录汇编语言程序 (29)

IV

成都大学学士学位论文(设计)

绪论

在生活和生产的各个领域中,越来越多小型化、智能化、多功能化的电子产品的出现,电子密码锁就是一个服务于人们生活中很常见的小型智能化电子产品。电子密码锁是通过输入正确的秘密来控制电路或者芯片工作,从而控制机械开关完成开锁的电子产品。目前的电子密码锁产品中,它的种类很多,有简易电路的产品,也有基于芯片控制的性价比高的产品。现在计算机技术如此发达,大多电子密码锁也广泛以芯片为核心,通过编程来实现各种各样的功能。电子密码锁的性能和安全性都大大优于传统机械锁,主要有以下几个特点:

1)保密性好,密码越长保密性更高,随机开锁几率几乎为零,不像传统机械锁可能被钥匙以外的东西打开。

2)密码可变,用户可以随时改变密码,大大提高了安全性。防止密码被盗和不同人员使用。

3)电子密码锁轻巧方便不同于机械锁的磨损等使用弊端,因此寿命更长。

4)使用灵活性好,不像机械锁需要佩带钥匙,大大提高效率和使用方便性。

5)电子密码锁简单易用,操作方便。

6)电子密码锁使用程序来实现功能,还可以很方便的针对不同需要进行有针对性的改变,发展潜力大,应用领域广。

在日常生活和工作中,住宅和单位的安全防范、单位文件、个人资料等重要东西大多用加锁的方法来解决其安全问题。门锁主要用弹子锁,钥匙容易遗失且不方便,保险箱用的机械密码锁结构复杂,对制作要求精度很高,成本高而且易出现故障。针对这些使用机械钥匙开锁的锁具的不便,为满足人们要求,增加安全性,电子密码锁应运而生。它可以为人们日常生活和工作带来很大方便,有广阔的使用和发展前景。并且随着电子技术和电子元件的不断发展,电子密码锁也出现了很多种类,功能不断完善和强大,使用更加方便,安全保密性更强。比如由密码输入加电子感应元件的密码锁,只有其中一样是不能打开锁的,这样实现了双层加密,保密性能更强。随着电子元件、电子技术的发展,各种各样的电子密码锁相应出现而满足各种使用需求。

有许多安全兼以方便的电子密码锁已经出现在生活中,比如针对有效卡、指纹、声音等的电子密码锁,这些密码锁可以用于安全性要求高的个人使用的箱、柜、房间等。由于数字、字符、图形图像、人体生物特征和时间等因素均可以成为电子信息,这些信息可以单独作为密码使用与密码锁,也可以组合使用作为密码而获得高度的安全性和保密性,组合使用这些信息能够使电子密码锁的安全性能获得无穷扩展,是产品多元化,更好地应用于各个方面。相信使用各种电子信息作为密码是电子密码锁的发展趋势。

纵观我们生活的各个领域,凡有自动控制有智能化的地方都会有单片机的身影,单片机的应用有广大的空间。因为单片机的应用有利于产品的小型化、智能化、简单化、多功能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境,减少能源和材料的消耗,保证安全等。在计算机技术广泛应用的今天,可以看到,单片机的应用的意义绝不仅限于它的广阔范围以及带来的经济效益,更重要的意义在于单片机的应用从根本上改变了传统控制系统的设计思想和设计方法,把必须有模拟电路和数字电路实现的大部分功能变成使用单片机通过软件程序实现了。这就是微控制技术,这是现在也是以后控制技术的发展方向。

本文从经济实用的角度出发,从加深对单片机理论的理解和熟练电子设计过程的角度出发,采用Intel公司的8051AH单片机为主控芯片加上键盘输入电路和由逻辑元器件、发光二极管等电子元件组成的简单外围电路,用汇编语言编写单片机控制程序,设计一款可以更改密码具有错误警报提示的十位数字密码锁。该密码锁具有设计合理,简单易行,成本低,安全实用等特点,适合居家住宅、办公用锁等要求,具有较高实用价值。产品体积小,成本低,而且容易升级改善。

1

成都大学学士学位论文(设计)

第1章设计总体方案选择

1.1 系统设计方案

利用所学的电子技术知识和电子设计方法,设计出一个电子密码锁有以下两种基本方案可以选择:

方案一:利用数字逻辑电路,运用各种门电路,计数器,触发器,锁存器,编/译码器等数字逻辑器件实现电子控制。从而实现想要设计的电子密码锁的功能。此方法设计简单,但硬件电路比较多,操作起来比较复杂。

方案二:使用MCS-51系列单片机为核心控制附加一些简单的外围电路,利用单片机的一个I/O端口组成4×4键盘作为输入电路,采用汇编语言编写程序来实现电子密码锁的各项功能,程序语言功能强大,调试较为简单。具有很强的实用性。

1.2 设计方案选择

综上提出的两种方案,方案一给出的采用数字逻辑电路的设计方法的好处就是设计简单,因为采用数字逻辑电路可以分成各个功能模块来设计,每个模块实现各自的一个功能。这钟方法设计的密码锁电路大致包含:按键输入、密码核对、密码修改、开锁电路、错误提示电路等功能模块。采用数字电路虽然设计简单但是操作繁琐,要运用很多数字逻辑器件,硬件电路复杂,而且可能会出现较多器件故障,同时难以检查和维护。方案二提出的使用单片机为核心控制的方案,利用单片机丰富的I/O端口和灵活的编程设计,不但能实现密码锁的功能,而且控制准确性高,外围电路少硬件电路简单,方便灵活,调试简单不易出错,体积小成本低也利于现实中实现,具有较高的实际意义和实用价值。这个设计方案的最关键的地方就在于编程,利用程序的执行来实现密码锁的基本功能,因此单片机方案还有较大活动空间,能在很大程度上扩展功能,方便对系统进行升级。

综上所诉,通过比较两种方案,本次设计拟采用以Intel公司的8051单片机为核心的单片机控制方案,利用单片机丰富的I/O端口和灵活的编程设计及其控制的准确性,实现基本密码锁功能。设计方框图如图1-1:

图1-1 单片机控制方案

2

成都大学学士学位论文(设计)

第2章单片机概述

2.1 单片机的基本概念

单片机是把微型计算机中的微处理器、存储器、I/O接口、定时器/计数器、串行接口、中断系统等电路集成到一片集成电路芯片上形成的微型计算机。因而被称为单片微型计算机,简称为单片机。

单片机属于微型计算机的一种,它集成了微型计算机中的大部分功能部件,工作的基本原理一样,但具体结构和处理方法不同。我们知道,微型计算机由微处理器CPU、存储器、I/O接口三大部分通过总线有机连接而成,各种外部设备通过I/O接口与微型计算机链接。各个功能部件分开,功能强大。

单片机是应测控领域的需要而诞生的,用以实现各种测试和控制。它的组成结构既包含通用微型计算机中的基本组成部分,又增加了具有实施测控功能的一些部件。在主芯片上集成了大部分功能部件,另外,可在外部扩展A/D转换器、D/A转换器、脉冲调制器等用于测控的部件,现在一部分单片机已经把A/D、D/A转换器及HSO、HIS等外设集成在单片机中以增强处理能力。

单片机按照用途可分为通用型和专用型两大类。

(1)通用型单片机的内部资源丰富,性能全面,适应能力强。用户可以根据需要设计各种不同的应用系统。

(2)专用型单片机是针对各种特殊场合专门设计的芯片。这种单片机的针对性强,设计时根据需要来设计部件。因此,他能实现系统的最简化和资源的最优化,可靠性高、成本低、在应用中有很明显的优势。

2.2 单片机的主要特点及应用

单片机的基本组成和基本工作原理与一般微型计算机相同,但在具体结构和处理过程上又有自己的特点,其主要特点如下。

(1)在存储器结构上,单片机的存储器采用哈佛结构

ROM和RAM是严格分开的。ROM称为程序存储器,只存放程序、固定常数和数据表格。RAM则为数据存储器,用作工作区及存放数据。两者的访问方式也不同,即使用不同的寻址方式,通过不同的地址指针访问。程序存储器的存储空间较大,数据存储器的存储空间小,这样主要是考虑单片机用于控制系统中的特点。程序存储器和数据存储器又有片内和片外之分,而且访问方式也不相同。所以,单片机的存储器在操作时可分为片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器。

(2)在芯片引脚上,大部分采用分时复用技术

单片机芯片内基础了较多的功能部件,需要的引脚信号较多。但由于工艺和应用场合的限制,芯片上的引脚数目又不能太多。为解决实际的引脚数和需要的引脚数之间的矛盾,一根引脚往往涉及了两个或多个功能。每条引脚在当前起什么作用,由指令和当前机器状态来决定。

(3)在内部资源的访问上,采用特殊功能寄存器(SFR)的形式

单片机中集成了微型计算机的微处理器、存储器、I/O接口、定时器/计数器、串行接口、中断系统等电路。用户对这些资源的访问是通过对对应的特殊功能寄存器(SFR)进行访问来实现的。

(4)在指令系统上,采用面向控制的指令系统

为了满足控制系统的要求,单片机有很强的逻辑控制能力。在单片机内部一般都设置有一个独立的位处理器,又称为布尔处理器,专门用于位运算。

(5)内部一般都集成一个全双工的串行接口

3

成都大学学士学位论文(设计)

通过这个串行接口可以很方便地和其他外设进行通信,也可以与另外的单片机或微型计算机通信,组成计算机分布式控制系统。

(6)单片机有很强的外部扩展能力

在内部的各功能部件不能满足应用系统要求时,单片机可以很方便地在外部扩展各种电路,它能与许多通用的微机接口芯片兼容。

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。

单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:

(1)在智能仪器仪表上的应用

单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。

(2)在工业控制中的应用

用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。

(3)家用电器中的应用

可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。

(4)在计算机网络和通信领域中的应用

现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。

(5)单片机在医用设备领域中的应用

单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。

(6)在各种大型电器中的模块化应用

某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。

(7)单片机在汽车设备领域中的应用

单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器,GPS导航系统,abs防抱死系统,制动系统等等。

此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。

4

成都大学学士学位论文(设计)

2.3 8051芯片介绍

2.3.1 51单片机简介

8051单片机是美国Intel公司的MCS-51系列单片机中的一种高性能8位单片机。MCS51系列单片机包含51和52两个子系列,对于51子系列,主要有8031、8051、8751三种机型,它们的指令系统与芯片引脚完全兼容,仅片内程序存储器有所不同,8031芯片不带ROM,8051芯片带4KB的ROM,8751芯片带4KB的EPROM。51子系列单片机的主要特点如下:

(1)一个8位CPU。

(2)片内带振荡器,频率范围1.2MHz—12MHz。

(3)片内带128B的数据存储器。

(4)片内带4KB的程序存储器。

(5)程序存储器的寻址空间为64KB。

(6)片外数据存储器的寻址空间为64KB。

(7)128个用户位寻址空间。

(8)21个字节特殊功能寄存器。

(9)4个8位的并行I/O接口:P0、P1、P2、P3.

(10)两个16位定时/计数器。

(11)两个优先级别的5个中断源。

(12) 1个全双工的串行I/O接口,可多机通信。

(13) 111条指令,含乘法指令和除法指令。

(14)片内采用单总线结构。

(15)有较强的位处理能力。

(16)采用单一+5V电源。

2.3.2 51单片机的基本组成及引脚相关功能

MCS-51系列单片机虽然有多种芯片类型,但它们的基本组成相同。单片机的基本结构如图2-1。

图2-1 MCS-51的基本结构

MCS-51系列单片机有40个引脚,用HMOS工艺制造的芯片采用双列直插式封装。引脚图如图2-2所示。

40个引脚按引脚功能大致可分为四个种类:电源、时钟、控制和I/O引脚。

1. 电源。

⑴ VCC - 芯片电源,接+5V;

⑵ VSS - 接地端;

5

成都大学学士学位论文(设计)

6 注:用万用表测试单片机引脚电压一般为0v 或者5v ,这是标准的TTL 电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v 之间,其实这是万用表的响应速度没这么快 而已,在某一个瞬间单片机引脚电压仍保持在0v 或者5v 。

2. 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出

端。

3. 控制线:控制线共有4根。

⑴ ALE/PROG:地址锁存允许/片内EPROM 编程脉冲。

① ALE 功能:用来锁存P0口送出的低8位地址。

② PROG 功能:片内有EPROM 的芯片,在EPROM 编程期

间,此引脚输入编程脉冲。

图2-2 MCS-51单片机引脚图

⑵ PSEN:外ROM 读选通信号。

⑶ RST/VPD:复位/备用电源。

① RST(Reset )功能:复位信号输入端。

② VPD 功能:在VCC 掉电情况下,接备用电源。

⑷ EA/Vpp:内外ROM 选择/片内EPROM 编程电源。

① EA 功能:内外ROM 选择端。

② Vpp 功能:片内有EPROM 的芯片,在EPROM 编程期

间,施加编程电源Vpp 。

4. I/O 线。 图2-2 单片机引脚图

80C51共有4个8位并行I/O 端口:P0、P1、P2、P3口,共32个引脚。 P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

5. P3口第二功能。

P30(RXD ):串行输入口。

P31(TXD ):串行输出口。

P32(INT0):外部中断0(低电平有效)。

P33(INT1):外部中断1(低电平有效)。

P34(T0):定时计数器0。

P35(T1):定时计数器1。

P36(WR ):外部数据存储器写选通(低电平有效)。

P37(RD ):外部数据存储器读选通(低电平有效)。

2.3.3 51单片机存储器及中断系统

MCS-51单片机的存储器结构与一般微机的存储器结构不同,分为程序存储器ROM 和数据计数器RAM 。程序存储器存放程序、固定常数和数据表格,数据存储器用作工作区及存放数据,两者完全分开。程序存储器和数据存储器都有各自的寻址方式、寻址空间和控制系统。程序存储器和数据存储器从物理结构上分为片内和片外两种。它们的寻址空间和访问方式也不相同。

数据存储器在单片机中用于存取程序执行时所需的数据。MCS-51系列单片机的片内数据存储器除了RAM 块外,还有特殊功能寄存器(SFR )块。对于51子系列,前者有128字节,编址为00H-7FH ;后者也占128字节,编址为80H-FFH ;二者连续不重叠。片内数据存储器按功能可以分成以下几个部分:工作寄存器组区、位寻址区、一般RAM 区和特殊功能寄存器区,其中还包含堆栈区。00H-1FH 单元为工作寄存器组区,共32个字节。工作寄存器也称为通用寄存器,用于临时存放8位信息。工作寄存器共有4组,称为0组、1组、2组、3组、每组8个寄存器,依次用R0-R7表示。也就是说,R0可能表示0组的第一个寄存器,也可能表示1组的第一个寄存器,还可能表示2组、3组的第一

成都大学学士学位论文(设计)

个寄存器。使用哪一组当中的寄存器由程序状态寄存器PSW中的RS0和RS1两位来选择。20H-2FH 为位寻址区,共16字节,128位。这128位每位都可以按位方式使用,每一位都有一个位地址,位地址范围为00-7FH。30H-7FH是一般RAM区,也称为用户RAM区,共80字节,对于52子系列,一般RAM区从30H-FFH单元。另外,对于前两区中未使用的单元也可以作为用户RAM单元来使用。堆栈是按先入后出、后入先出的原则进行管理的一段存储器区域。在MCS-51单片机中,堆栈占用片内数据存储器的一段区域,在具体使用时应避开工作寄存器、位寻址区,一般在2FH以后的单元,为实现堆栈的先入后出、后入先出的数据处理,单片机中专门设置了一个堆栈指针SP。堆栈指针SP 是一个8位特殊功能寄存器。它指向当前堆栈段得位置,MCS-51单片机的堆栈是向上生长型的,存入数据是从低端向高端延伸,取出数据则相反。入栈和出栈数据是以字节为单位。入栈时先把SP指针的内容加1,然后把数据存入SP指向的单元,出栈时先把SP指针指向单元的数据取出,然后把SP的内容减1.复位时,SP的初值为07H,因此堆栈实际上是从08H开始存放数据。用户也可以通过给SP赋值来改变堆栈的初始位置。特殊功能寄存器(SFR)也称为专用寄存器,专门用于控制、管理片内算术逻辑部件、并行I/O接口、串行口、定时/计数器、中断系统等功能模块工作。用户在编程时可以给其设定值,但不能移作他用。SFR分布在80H-FFH的地址空间,与片内数据存储器统一编址。

MCS-51单片机提供5个硬件中断源:两个外部中断源INT0(P3.2)和INT1(P3.3),两个定时/计数器T0和T1的溢出中断TF0和TF1;一个串行口发送T1和接收R1中断。设计中用了两个外部中断。外部中断源INT0和INT1的中断请求信号从外部引脚P3.2和P3.3输入,主要用于自动控制、实时处理、单片机掉电等。

外部中断请求有两种触发方式:电平触发及边沿触发。这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。TCON的高四位用于定时/计数器控制,低四位用于外部中断控制,IT0和IT1位为外部中断0和外部中断1的触发方式控制位。设置0选择为电平触发方式;设置1选择为边沿触发方式。边沿触发方式时,CPU响应中断后能够由硬件自动将IE0(或IE1)清零。对于电平触发方式,CPU响应中断后不能够由硬件自动将标志位清零。MCS-51单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断允许寄存器IE的各位来控制的。IE的最高位(EA)为中断允许控制位。EA=0屏蔽所有中断请求,EA=1开放中断。IE的最低位(EX0)为外部中断0的中断允许控制位,EX0=0禁止外部中断0中断,EX0=1允许外部中断0中断;IE的第三位(EX1)为外部中断1的中断允许位。EX1=0禁止外部中断1中断,EX1=1允许外部中断1中断。MCS-51单片机5个中断源可以通过内部的中断优先级寄存器IP来设置,中断优先级寄存器IP的字节地址为B8H,可以进行位寻址,如果某位被置1,则对应的中断源被置为高优先级,对于同级中断源,系统有默认的优先权顺序,默认优先权顺序下外部中断0优先级高于外部中断1。通过中断优先级寄存器IP改变中断源的优先级顺序可以实现两个方面的功能:改变系统中断源的优先级顺序和实现二级中断嵌套。通过中断优先级寄存器组成的两级优先级实现二级中断嵌套有以下三条规定:第一,正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU才响应新的中断请求。第二,正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。第三,CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求。这是此次设计中要用到的。外部中断0的入口地址为0003H,外部中断1的入口地址为0013H。

7

成都大学学士学位论文(设计)

第3章系统硬件设计

3.1 系统总体设计原理

本设计利用所学电路知识,单片机知识和EDA方面的知识设计一电子密码锁。目的是要有较高的安全性, 密码位数高,错误提示,使用方便,显示界面友好等特点。确定方案与原理框图,设计出硬件线路,给出软件程序。

根据设计目的,本设计以单片机8051AH为核心,用单片机的通用I/O接口P1口组成一个4×4键盘作为输入电路,用发光二极管和蜂鸣器作为指示和警报提示设计一个十位数字电子密码锁电路。密码锁的开锁密码应是(0-9)中的十位数字,密码输入完全正才确能控制开锁装置打开密码锁,并且指示灯亮;输入的密码错误则不能打开密码锁,并且发出声音警报提示。采用单片机来完成此电路设计,硬件电路简单,但是需要编程序来实现相应功能。完成此密码锁设计主要有几个方面问题需要解决:1、输入的问题,输入键中包含0-9十位数字键、一个删除键(删除上一个输入的数字)、开锁键、确认键、改密码键和复位键;2、开锁和改密码的问题,密码输入正确了怎样控制电路开锁,密码输入不正确则不能开锁,如何实现修改密码,必须输入了正确的密码后才能修改密码;3、设计出电路图,编出程序,然后仿真,看是否能实现相应功能。

综上所述,决定采用以下思路来完成十位数字密码锁电路的设计。用单片机的P1口8根I/O接口线组成4×4键盘有16个按键,本设计用到其中11个键,这11个键包括0-9十个数字键和A(十)键,将A键用作确认键。此外,拟用单片机的外中断0来用作删除(删除上一位输入值),利用单片机的外中断1来修改密码,通过中断优先级寄存器IP把外中断0的中断优先级顺序设为高,这样外中断0优先级高于外中断1,所以即使在执行外中断1的中断服务程序时可以利用中断嵌套来响应外中断0,即当用户修改密码时一样可以使用删除键。这样以来,删除(删除上一位输入)程序和改密码程序只需要写作单片机的外中断0和1的中断服务程序即可。另外要注意的是,改密码只能在输入正确密码后进行改密码,所以外中断1在输入正确的密码时才允许中断,也就是说必须先输入正确的密码后改密码键才能有效,这时按改密码键就可以进行密码修改。如果在输入了正确的十位密码后的十秒时间内没有其他任何动作,那么密码锁将自动结束本次运转,回到程序初始位置执行等待输入密码,即用户需在输入正确密码后的十秒时间内执行需要的操作—开锁或者修改密码。最后,由于此设计的为十位数字密码锁,有十位密码,密码位数较多,所以使用一般的数码管显示电路已不能满足要求,这里选用1602LCD显示器作为显示电路,这样不仅能方便的显示密码,而且显示界面更加友好,显示内容也可以更加丰富。本设计中设有复位键,实际运用中可以将复位键设在锁内,即开锁后才能按到复位键,因为按了复位键单片机将恢复默认设置,密码也将恢复为默认密码。当然复位键也可以不设,可以将单片机复位方式设为上电复位。总体设计框图如第一章的图1-1所示。

单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。整个系统由单片机、时钟电路、复位电路等组成。本系统采用的8051AH单片机,它是一款MCS-51系列中的高性能单片机内部自带有4KB的Flash存储器及256KB RAM单元的芯片,因此可以不需另外扩展EEPROM及静态RAM就可以实现所需功能。单片机最小系统是软硬件系统连接的桥梁。其中单片机最小系统的电路图如图3-1所示。

单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图3-1所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐

8

成都大学学士学位论文(设计)

9 振器一起可构成一个自激振荡器并产生振荡时钟脉冲。图3-1中C1和C2构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为30PF 左右,晶振频率选12MHz 。

为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使CPU 及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST 引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST 引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(I/O)端口寄存器置为FFH ,堆栈指针SP 置为07H, SBUF 内置为不定值,其余的寄存器全部清0,内部RAM 的状态 不受复位的影响,在系统上电时RAM 的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。图3-1中就是上电复位方式, R2和C3组成上电复位电路,其值R 取为1K ,C 取为22μF 。

图3-1 单片机最小系统

3.2 键盘电路

本设计用的按键较多,所以这里采用矩阵键盘,用了4×4矩阵键盘的16个键中的11个。矩阵键盘又叫行列式键盘,行列式键盘的特点是能减少键盘与单片机接口时所占用的I/O 线的数目,使硬件资源得到合理利用,但判键速度慢,在按键比较多时,往往采用矩阵式键盘。

矩阵式键盘的链接方法有多种,可以利用扩展的并行I/O 接口线;可以利用可编程的键盘、显示接口芯片进行连接、也可以直接连接于单片机的I/O 接口线;利用扩展的并行I/O 接口连接方便灵活,在单片机应用系统中比较常用。这里直接用单片机的P1口连接,P1的低四位作为行线,高四位作为列线。第一行的首键码就是0,第二行的首键码是4,第三行的首键码是8,第四行首键码是12。编码情况如图3-2所示。

矩阵键盘的每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N 条行线和M 条列线,即可组成具有N ×M 个按键的键盘。

在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。

当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。

矩阵键盘的工作过程可分为两步;第一步是CPU 首先检测键盘上是否有键按下;第二步是识别哪一个键按下。对照图3-2的4×4矩阵键盘,说明键盘的工作原理。

判断键盘中有无键按下的处理方法是:由单片机I/O 口向键盘送全扫描字,然后读入行线状态

成都大学学士学位论文(设计)

10 来判断。其具体过程如下:先向P1口输出#0F0H ,把全部行线置为低电平,然后将列线电平状态读入累加器A 中。如果有键按下,总会有一根列线电平被拉至低电平,从而使列输入状态不全为“1”否则则可判定无键按下。本设计中还用类似的方法将列线置为低电平,读行线状态,这样用两次读得的结果判断是否有键按下。具体设计方法在第四章中详细介绍,这里先说明原理。

辨别键盘中哪一个键被按下的处理方法是:将列线逐列置低电平后,检查行输入状态来实现的,称为逐列扫描。其具体过程如下:从P1.4开始,依次给列线送低电平(通过向P1口写入扫描字实现,然后读入所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在此列与零电平行线相交的交点上的那个键。

为求取键码,在逐列扫描时,可用计数器或寄存器记录下当前扫描的列号,检测到第几行有键按下,就用该行的首键码加列号得到当前按键的编码。

本设计用到4×4矩阵键盘的16个键中的11个,这11个键如图3-2中所示,图3-2中还有5个键的另一端未连线,表示这5个键未被使用,为了方便理解键盘的组成原理于是将所有按键全部画出,这样更清楚地看到P1口被用作矩阵键盘的连接状况。

图3-2 4×4矩阵键盘

3.3 开锁电路

当密码输入后并经过与约定的密码对比后,如果输入的密码正确,那么单片机将输出开锁信号给开锁执行机构,才能开锁。实际运用中,开锁机构一般就是利用电磁吸合原理构成的电磁锁,单片机输出的微弱信号需要经过驱动电路的放大处理后才能驱动电磁锁吸合,从而达到开锁的目的。开锁电路如图3-3所示。

开锁电路由驱动电路和开锁两级组成。由D5、R1、T10组成驱动电路,其中T10可以选择普通的小功率三极管如9014、9018都可以满足要求。发光二极管D5作为开锁的提示,亮表示开锁;开锁电路由D6、C24、T11和电磁锁组成。其中D6、C24

是为了消除电磁锁可能产生的反向高电压以及

成都大学学士学位论文(设计)

11 可能产生的电磁干扰。T11可选用中功率的三极管如8050,电磁锁的选用要视情况而定,但是吸合力要足够且有一定的余量。

在本次设计中,着重于密码锁的核心部分的设计,为了简明的讲清设计原理和方便仿真调试,暂时用发光二极管和蜂鸣器来代替此部分电路,发光二极管亮时蜂鸣器不会响,表示开锁;灭,表示没有开锁,并且蜂鸣器鸣响。

来自微控

图3-3 开锁电路 本设计中用发光二极管D1代替以上开锁电路。电路中有两个指示灯通过P0口的P0.0和P0.1驱动点亮,P0.0和P0.1在正常情况下均输出高电平,P0.0口接开锁键后接蜂鸣器并且通过反相器(非门)发光二极管D1,当密码输入正确时,会将P0.0口置为低电平,这样按下开锁键后D1会点亮,蜂鸣器不会鸣响,表示密码输入正确,开锁;如果密码输入错误,P0.0口不会动作(继续输出高电平),这样,按下开锁键后D1不会点亮并且蜂鸣器会鸣响。表示密码错误不能开锁。P0.1口接发光二极管D2并通过反相器(非门)接蜂鸣器,一般情况下,P0.1做电源指示灯作用,是常亮的,蜂鸣器也不会响,只有在改密码错误时,P0.1会被置为低电平,指示灯D2熄灭,并且蜂鸣器会鸣响,表示修改密码不成功。此部分电路图如图3-4所示。

图3-4 开锁指示电路

成都大学学士学位论文(设计)

由于P0口在用作通用I/O接口输出使用时需要外接上拉电阻才能使“1”信号正常输出,所以图3-5中的电阻R3和R4为上拉电阻,U2:A和U2:B是两个非门,D3和D4两个二极管起单向导通作用,BUZ1是蜂鸣器,KP为开锁键。图中左边部分由电阻R1、R2、电容器C1和复位按键KS组成按键复位电路。为了使用Proteus进行仿真时方便,所以使用了按键复位方式,当然复位电路也可以设计成为上电复位方式,上电复位方式的电路如图3-2中所示。

3.4 显示电路

由于密码位数较多,所以显示电路选用字符型液晶显示模块RT-1602来显示,设计中LCD的8位双向数据口连接单片机的P2口,RS连接单片机的P0.5,RW连接单片机的P0.6,使能端E连接单片机的P0.7。需要注意的就是P0口需要外接上拉电阻。连接情况如图3-6中所示。下面简单介绍下RT-1602的功能及使用方法。

液晶显示器型号为1602,意思是每行显示16个字符,一共可以显示两行。1602液晶模块内部的字符发生存储器(ROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值。1602液晶的引脚图如图3-5所示。

图3-5 1602液晶显示器引脚图

接口说明如下:

1、液晶1,2端为电源;Vss,电源地;Vdd,+5V电源。

2、液晶3端为液晶对比度调节端,通过一个10K欧姆电位器接地来调节液晶显示对比度。首次使用时,在液晶上电状态下,调节至液晶上面一行显示出黑色小格为止。

3、液晶4端为向液晶控制器写数据/写命令选择端。

4、液晶5端为读/写选择端,因为我们不从液晶读取任何数据,只向其写入命令和显示数据,因此此端始终选择写状态,我们直接将它接地。

5、液晶6端为使能信号,是操作时必需的信号。

6、液晶7-14端为八位双向数据口。

RT-1602控制器采用的HD44780,驱动器采用的HD44100。HD44780是集控制器、驱动器、于一体,专用于字符显示控制驱动的集成电路。HD44100是作扩展显示字符位的。HD44780是字符型液晶

12

成都大学学士学位论文(设计)

显示控制器的代表电路。HD44780内置了显示缓冲区DDRAM、字符发生存储器ROM和用户自定义的字符发生器CGRAM。HD44780有80个字节的显示缓冲区,和屏幕的对应关系如表3-1:

表 3-1

那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下:

也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码就行了。但具体的写入是要按LCD模块的指令格式来进行的,下面会说到的。

LCD控制器HD44780内有多个寄存器,通过RS和R/W引脚共同决定选择哪一个寄存器,选择情况如下:

RS=0,R/W=0:指令寄存器写入; RS=0,R/W=1:忙标志和地址计数器读出;

RS=1,R/W=0:数据寄存器写入; RS=1,R/W=1:数据寄存器读出;

液晶显示器RT-1602总共有11条指令:

13

成都大学学士学位论文(设计)

基本操作时序:

读状态输入:RS=L,RW=H,E=H 输出:DB0~DB7=状态字

写指令输入:RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码

读数据输入:RS=H,RW=H,E=H 输出:DB0~DB7=数据

写数据输入:RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据

3.5 硬件设计原理图

51单片机是整个电路的核心部分,利用51单片机内部自带振荡器产生12MHz的时钟信号作为赖以工作的时序;指示灯发光二极管和蜂鸣器是通过CPU输出的电平信号来控制亮灭和是否发声;密码通过4×4键盘输入,密码存储就是地址位加1,密码位数减1,当十位密码全部输入时密码位数减为零,输入完毕。此时按下确认键即进行密码检测工作,密码位数输入不够就按下确认键时会退出当前密码输入,需要从新输入;CPU输出的控制开锁与否的电平信号即为检测结果的反映;密码删除即为覆盖输入,通过地址位减一,密码位数加1即可实现;密码修改功能需先输入正确密码后才开放次功能,而且必须在10秒内按下改密码键,方可进入改密码程序,改密码就是将输入的新密码覆盖旧密码的过程,输入的密码位数不够时按下确认键会退出密码修改并且有指示灯和声音提示,退出密码修改后CPU继续先前的等待,10秒的等待结束后返回待机检测等待下一次密码输入;开锁的前提条件是密码输入正确,CPU通过将P0.0口置0反映密码正确,这时按下开锁键即可开锁,同样,开锁也必须在10秒的时间内按下才能开锁。系统设计原理图如图3-6.

14

成都大学学士学位论文(设计)

图3-6 系统原理图

15

成都大学学士学位论文(设计)

第4章系统软件设计

4.1 主程序

本设计的软件设计思路主要有这么几个模块:主程序模块、键盘扫描模块、按键识别模块、删除模块和修改密码模块以及显示模块等。其中删除模块在写为外中断0的中断服务程序;修改密码模块写为外中断1的中断服务程序;键盘扫描模块写一个子程序,通过子程序调用实现键盘扫描;按键识别模块也写成一个子程序,通过调用子程序来辨别输入的值;这样主程序里面主要是写一些相关设置的东西及串联这些模块加上存储密码和比较密码即可。下面介绍下这几个部分设计思路。

主程序中主要是完成初始化,合理连贯协调各功能模块,完成输入数据的存储和密码比较以及输出控制外电路的控制信号。主程序中首先向密码存储区(30H-39H)写入初始密码,本设计写入的初始密码是0123456789,然后不断地调用键盘扫描程序,当检查到有信号从键盘输入时,再调用按键识别程序识别出输入值并压入堆栈,再调用键盘扫描程序检查到按键松开再把输入的值出栈,如果按下的键不是确认键并且输入的密码不超过十位就把此值存储(临时存储区为40H-49H),并调用显示程序显示此值,如果按下的键是确认键,那么看输入的密码是否已有十位,如果不够十位就直接结束不输出开锁控制信号(开锁控制信号低电平有效)并调用显示(FAIL)的子程序提示错误。如果输入的密码是十位了,转向密码比较,检查是否正确,如果检查结果正确则调用显示“OK“子程序表示输入密码正确并开启相应功能。如果检查结果为不正确,则显示FAIL。一段时间后返回主程序开始等待新一次的密码输入。在整个过程中外中断0都是开放的,可以删除一位密码。主程序流程图如图4-1所示:

16

成都大学学士学位论文(设计)

图4-1 主程序流程图

4.2 密码删除和密码修改程序

密码删除是删除上一位输入的密码,密码输入时会有一个寄存器或一个存储单元来记录密码位数,这个位数的初始值为10,表示一共要输入十位密码,每输入一位密码此值减一。同时,在密码输入时有一个地址指针,指向输入的密码临时要存储的位置,因此要实现密码删除也很简单,因为用外中断0来实现密码删除,所以在外中断0的中断服务程序里面将待输入密码位数加1,把存储地址减一即下一次输入时覆盖即可。同时在显示器上把光标前显示的一位数值写入空格,并将光标移到空格的左边,下一次输入时及在此空格上显示下一次输入的数值。

修改密码其实就是一个存储的过程,此设计中修改密码通过外中断1来完成的。即再外中断1的中断服务程序中调用键盘扫描和查询识别程序,输入十位数字后将它们覆盖存储在密码存储区域,即实现了密码修改。输入新密码部分这部分程序和主程序里面的输入密码程序类似,都是一位一位

17

本文来源:https://www.bwwdw.com/article/1jze.html

Top