已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京理工大学 毕业设计说明书(论文) 作作 者者:* 学学 号:号: 1004220* 系系:电子工程与光电技术学院 专专 业业:通信工程 题题 目目:基于单片机的保险柜电子密码锁的 设计与实现 指导者:指导者: (姓 名) (专业技术职务) 评阅者:评阅者: (姓 名) (专业技术职务) 2014 年 5 月 * 高级工程师 设设计计说说明明书书 摘摘要要 摘要摘要 在日常生活和工作中,锁是每个人都离不开的,它是保护个人财产安全、保 护资料档案的关键元素。随着电子技术的飞速发展,传统弹子锁的缺点渐渐被放 大,社会对新式电子密码锁的需求越来越大,前景广阔。 本次设计基于单片机,其主控芯片选择了单片机 AT89S51,显示模块选择了 LCD1602,结合了自行设计的矩阵键盘、报警模块等外围电路,主控芯片的控制 程序则使用 C 语言写成,完成了一套具有按键输入、显示、解锁、报警及密码修 改等多种功能的电子密码控制系统。 本论文详细叙述了各个模块的功能和设计方案,给出了系统各个功能的仿真 结果截图。 关键词 单片机 电子密码锁 矩阵键盘 LCD 显示 报警 毕毕业业设设计计说说明明书书(论论文文)外外文文摘摘要要 TitleTitle The Design of Electronic Password Lock Based on SCM AbstractAbstract In daily life and work, everyone is inseparable from the lock, which is the protection of personal and property safety, the protection of data files. With the rapid development of electronic technology, the shortcomings of traditional tumbler lock gradually been enlarged, the demand for new electronic locks increasingly broad prospects. This design is based on the microcontroller, its main chip microcontroller chosen AT89S51, display module chosen LCD1602, a combination of self-designed matrix keyboard, alarm module and other peripheral circuits, the master chip control program is written in C language . From the design, we got an electronic password control system which has variety of functions: key input, display, unlock, password changing and alarm. This article details the features and design of each module, the simulation results of the various functions of the system screenshot. Keywords Electronic password lock SCM Matrix keyboard LCD Display Alarm 目 录 1 引言1 1.1 课题背景和意义1 1.2 电子密码锁的发展趋势1 1.3 本设计要实现的目标2 1.4 设计方案的选择2 2 主要原件介绍5 2.1 主控芯片 AT89C51 简介5 2.2 LCD1602 显示器介绍 7 2.3 晶体振荡器9 3 系统设计10 3.1 整体思路 10 3.2 系统硬件部分设计 11 3.2.1 键盘输入电路 11 3.2.2 复位电路 12 3.2.3 晶振电路 12 3.2.4 显示电路 13 3.2.5 报警、解锁提示电路 14 3.3 系统软件部分设计 15 3.3.1 主要程序流图 15 3.3.2 按键检测子程序设计 15 3.3.3 LCD 显示子程序设计 17 3.3.4 密码修改子程序设计 18 3.3.5 报警声音子程序设计 19 4 仿真调试 22 4.1 PROTEUS ISIS 简介22 4.2 软件调试 22 4.3 PROTEUS 仿真 24 5 结论 29 致谢30 参考文献31 附录 A 电子密码锁程序源代码 32 1 1 引言引言 1.11.1课题背景和意义课题背景和意义 自从人类脱离原始社会、开始有私有财产的概念以来,锁就是人们生活中 的重要组成部分。它的存在,维护了人们的财产安全、人身安全,增加了人们 的安全感,促进了社会和谐。因此,人们对锁的研究从未停止,但几千年来都 未有较大的变化,直到 20 世纪 30 年代后,电子密码锁的概念出现,这一领域 终于出现了日新月异的进步。得益于电子技术的飞速发展,电子密码锁的功能 愈来愈完善,取密码量相对较少、安全性不好的常规锁具已然是大势所趋。电 子密码锁拥有太多机械锁完全无法相比的优点。它不但能完成“锁”自身的功 用,还可以具有记忆、辨识、警报等特别的作用。因为电子密码锁更安全性、 更便宜、易操作,越来越多人开始关注这一领域。 当前在第一世界国家中,密码锁技术已经比较成熟,拥有不同的种类,在 各类智能门禁系统中,电子密码锁的使用十分普遍,使得门禁的实现有了数种 安全、可靠的技术来支持。总的来说,中国目前的密码锁技术还只有世界上 70 年代左右的水平,生产仍显昂贵。当前,按键式电子锁仍占据了中国市场的大 头,国内有若干厂家引进了海外较为先进的按键式和卡片钥匙型锁。另一方面, 中国自主研发的电子锁还没有形成成型的产业链,尚未普及。现在国内有不少 企业引进了当前世界上先进的技术,发展前景非常可观1。相信国内的厂商也 会不断进步,使得电子密码锁普及在中国的土地上。 1.21.2 电子密码锁的发展趋势电子密码锁的发展趋势 在大家的日常生活中,住所和单位的安全保障,档案、财务报表和大多数 私人资料、文件的保护基本用上锁的办式来实现。现在门锁大都使用弹子锁, 这种锁钥匙易丢失、仿制也并不困难;保险箱最常见的就是使用机械密码锁, 它的构造很麻烦,制作精度要有相当高的保障,这种情况下,成本就很难降下 来,不仅如此,机械密码锁的缺点依然明显:故障率居高不下,使用者往往要 携带数把钥匙,易用性很成问题。前述锁具有着这样多的不便,而人们对锁的 需求又是巨大的,一种使用密码来代替钥匙的锁具就成为了必然出现的产品。 电子密码锁的出现,大大提高了人们的生活水平,提供了诸多便利,这也同时 意味着巨大的市场,前景一片光明。由于电子器件的限制,上世纪制造的电子 密码锁,不仅类型少、易破解,锁具最关键的开锁环节也仅仅是依赖基础的模 拟电子开关,工艺简单却存在相当大的安全隐患;之后,数字电路的飞速发展, 使得电子密码锁的电路结构复杂性逐渐增加、元件数量逐渐增多,早先单片机 刚普及时也曾使用 2051 系列单片机来实现,但密码简单,易破解2 。随着电 子技术的进一步发展和大众对保密要求的增强,电子密码锁的种类日益繁多、 功能渐趋全面,操作更加便捷,安全保密性更强:由以往单纯的键入口令发展 到今天新增了感应元件(想要开锁,必须同时有密码和电子钥匙),做到了更 加稳妥的电子保密。 社会对电子密码锁安全性、易用性的需求,使得多种产品相继问世。但它 们中的大多数仅仅是针对特定的声纹、指纹,并且无法做到远程控制,只能用 在保密要求较高的私人用途上。事实上,数字、字母、图象、生物体征以及地 点等因素都能够作为密钥的信息来源,上述信息的排列组合完全可以把电子密 码锁的保密性推向更高的高度。与此同时,信息要素的组合也使得电子密码锁 得到了无限拓展的可能性,产品将越来越多变,对用户而言就有了很大的挑选 余地。由此可以看出组合使用电子信息是电子密码锁今后发展的趋势3。 1.31.3 本设计所要实现的目标本设计所要实现的目标 本设计基于单片机。使用 AT89C51 作为主控芯片,结合外围电路组成一个 电子密码控制系统。用户若想开锁,必须输入正确的密码,错误则有文字及声 音提示并要求重新输入。密码锁同时具有修改密码的功能,修改密码时,必须 键入正确的原密码进行验证,然后输入新密码。 1.41.4 设计方案的选择设计方案的选择 1.4.1 主控部分选择 方案一方案一:采用数字电路控制。 把 74LS112 双 JK 触发器当作系统的中心,搭配其他原件组成数字逻辑电路。 在功能上,可以设置 9 个按键,选择其中 4 个作为有效的密码按键,并将其它 按键均设定为干扰按键,当按下干扰按键时,就将键盘输入电路复位,使得前 面输入的密码无效化,要求重输;如果用户输入密码的时间超过 10 秒,电路将 报警 20 秒,若电路连续报警三次,电路将锁定键盘 2 分钟,防止他人的非法操 作4。采用数字电路设计方案时设计虽然简单,但控制的准确性和灵活性差。 故不采用。 方案二方案二:采用单片机控制方案 单片机当前的类型很多,各种型号的应用环境都各有不同,在选用时就有 了更多的选择,使我们可以多加比较、以便选择最为合适的型号,获得更好的 性能/价格比。下列关键词往往应该成为考虑时最需关注的方面:性能、串行接 口、工作电压、存储器、模拟电路功能、抗干扰性、运行速度、封装形式、I/O 口、功耗、定时/计数器、保密性。除此以外,在单片机开发过程中还会产生影 响有开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等因 素 5。 考虑到方方面面,本设计采用了 AT89C51 作为核心芯片,单片机提供的 I/O 端口虽有限,但端口复用或扩展、结合有效的控制程序,实现基本的密码控制 功能是十分简单的。单片机的外围电路主要包括:一块外接矩阵键盘(用来密 码输入、控制程序流向) ,一块 LCD 显示屏(用来作为系统的输出,对用户的操 作进行反馈) 。当用户进行开锁时,首先利用键盘上的 09 完成密码的输入, 而后确认,若正确则解锁,否则保持锁定状态并要求重新输入,在适当的时机 可发出报警声。在用户进行密码修改操作时,首先要输入原密码,只有当输入 和原密码匹配时才会允许设置新密码,新密码设置完成后按确认键则保存。 显然,方案二的功能丰富,控制方便,有较好的准确性,在保证保密的同 时还能进行功能的拓展。基于以上原因,我在此采用方案二,即使用单片机 AT89C51 结合外围接口电路来完成本此设计。 1.4.2 密码输入方式选择 方案一方案一:声纹输入识别 所谓声纹(Voiceprint),是用电声学仪器显示的携带言语信息的声波频谱, 人类语言的产生是人体语言中枢与发音器官之间一个复杂的生理物理过程6。 人的发声器官大致有以下几种:舌、齿、头、肺、鼻,虽然人们都是用这些器 官来发声,但不同人的这些器官会存在尺寸或外形的较大差别,因此任意两人 的声纹图谱都会存在差别。另一方面,在一定的年龄段内,每个人的声音特征 都不会发生太大变换,相对稳定,所以人们一般可以区分出不同人的声音或判 断是否是某一个特定人的声音。 在作为电子锁的输入时,系统会分析所输入声音的声学特征(如反射系数、 共振峰、频谱、倒频谱、基音等),并与先前保存的样本进行对比,通过计算机 计算出两者的相似度,并以此判定输入的正确性。考虑到本方案过于复杂,且 有不低的成本,因此我们不采用。 方案二方案二:矩阵键盘输入识别 矩阵键盘的每一行、每一列均相连,引出连接到一个 I/O 口上,按键设在 每一个行线和列线的交叉处,每当有一个键按下就使得某一条行线与某一条列 线相接通,只要确定接触的是哪两条线,即哪两个 I/O 口线,就可以确定哪一 个键被触动7。此方案相对简单、易于实现,因此采用之。 2 2 主要元件介绍主要元件介绍 2.12.1 主控芯片主控芯片 AT89C51AT89C51 简介简介 AT89C51 是一款工作电压低、高性能的 8 位微处理器(即通常所说的单片 机) 。这款单片机拥有自己的可编程可擦除只读存储器,容量为 4K 字节,可以 反复擦写 100 次。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中, ATMEL 的 AT89C51 是一种高效微控制器8。 2.1.1 主要特性 与 MCS-51 兼容 4K 字节可编程闪烁存储器 寿命:1000 写/擦循环 数据保留时间:10 年 全静态工作:0Hz-24MHz 三级程序存储器锁定 1288 位内部 RAM 32 可编程 I/O 线 两个 16 位定时器/计数器 5 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 2.1.2 管脚功能说明: AT89C51 芯片的引脚图如下: 图 2.1 AT89C51 芯片引脚图 VCC:供电电压。 GND:接地。 P0-P3 口均为 8 位双向 I/O 端口,但又有所不同。 P0 口:第一次将 P1 口的管脚写为“1”的时候,这 8 位的端口都会变为高 阻状态。P0 可以用于连接外部程序数据存储器,同时,P0 口也能被定义成数据 /地址的低八位。 P1 口:内部提供上拉电阻,其缓冲器可以吸收的门电流量为 4TTL。将 P1 口的管脚写为“1”时,整个 P1 端口会被内部的上拉电阻上拉为高电平。 P2 口:内部同样带有上拉电阻。P2 口缓冲器既允许接收电流,又允许输出 电流。当 P2 口被写“1”时,其作用与 P1 口完全相同。 P2 口的特殊用途在于 连接外部的程序存储器和 16 位地址的外部数据存储器。若作为 16 位地址的一 部分时,P2 口输出所需地址高八位,和 P0 口相配合。除此以外,它还可以利 用内部拥有上拉电阻的便利,当对外部的数据存储器实行读写操作(仅限 8 位 地址)时,输出它特殊功能寄存器中的内容。 P3 口:P3 口的基本用途和性质与其他端口并无不同,只是它可以作为单片 机的特殊功能口,列于下表中: 表 2.1 P3 口功能 (P3 口同时为闪烁编程和编程校验接收一些控制信号) 2.1.3 振荡器特性 单片机 AT89C51 允许用户自行外接合适频率的晶体振荡器,最常使用的不 外乎石晶振荡和陶瓷振荡。当配置为片内振荡器时,反向放大器输入端口应接 XTAL1、输出端口应当接 XTAL2。当使用外部时钟源时,不接 XTAL2。此处外部 时钟信号的脉冲宽度可以是任意的。 2.1.4 芯片擦除 想在任何已存有信息的存储字节上重复编程,首先必须对芯片进行擦出操 作。 AT89C51 芯片的擦出方法为:ALE 管脚接低电平 10ms,同时搭配以适当的 控制信号组合,此种操作会将代码阵列全部写为“1” 。此外,AT89C51 设有两 种掉电模式。用户可以自主选择:一是“闲置模式” ,此模式下 CPU 将会挂起, 但 RAM,定时器,计数器,串口以及中断系统仍会处于工作状态;二是“掉电 模式” ,此时保存 RAM 的内容并且冻结振荡器,禁止所用其他芯片功能,直到下 一个硬件复位为止9。 2.22.2 LCD1602LCD1602 显示器介绍显示器介绍 液晶显示模块主要用于为系统提供输出,可显示图形、数字或专用符号等 信息,这一元件在电子产品中相当常见。在本次设计中我们选用 LCD1602 显示 模块,这一型号有诸多优点,如显示自由度高、体积小、耗能少等。 LCD1602 可显示 2*16 个字符,有 RS,R/W,EN 三个控制端口和 8 位数据总线 D0-D7,工作 电压为 5V,并且具有字符对比度调节和背光功能10。 它的主要特性如下: 内含复位电路,对比度可调 1 通过控制命令可以实现实现多种功能。 2 内部有一显示数据存储器 DDRAM,其容量为 80 字节。 3 拥有 200 个 5*7 的字符发生器 CGROM,其中 8 个可由用户自定义。 4 1602 型 LCD 的接口引脚说明如表 2.2 所示。 表 2.2 LCD1602 引脚说明 编号符号功能编号符号功能 1VSS 电源地 9D2 数据 2VDD 电源正极 10D3 数据 3VL 液晶显示偏压 11D4 数据 4RS 数据/命令选择 12D5 数据 5R/W 读/写选择 13D6 数据 6E 使能信号 14D7 数据 7D0 数据 15BLA 背光源正极 8D1 数据 16BLK 背光源负极 1602 型 LCD 主要技术参数: 显示容量:162 个字符 芯片工作电压:4.55.5V 工作电流:2.0mA 模块最佳工作电压:5.0V 字符尺寸:2.954.35mm(宽高) 常用指令见下表: 表 2.3 LCD1602 常见指令 2.32.3 晶体振荡器晶体振荡器 晶体振荡器(简称晶振)可以产生一定频率的时钟信号,这一信号经过调 频后可成为处理器中各处的总线频率。 现在使用最多当属石英晶体振荡器,也称石英晶体谐振器。石英晶体振荡 器具有精度高和稳定度高的优点,它同时可以作为一种晶体谐振元件实现 LC 谐 振回路的功能:稳定频率和选择频率。石英晶体振荡器在生活中的电子设备里 随处可见,为它们产生时钟信号,应用在在单片机中时也是如此。 石英晶体具有压电效应,石英晶体振荡器就是利用这一特点制作成的,简 称为石英晶体或晶体、晶振。大多数晶振是这样构成的:从特定角度切下矩形 或圆形的石英晶体薄片,并在其对应面上敷银制成电极,并在上面各焊一根引 线接到管脚上,再加上封装外壳 11。 3 3 系统设计系统设计 3.13.1 整体思路整体思路 本系统主要包括单片机、矩阵键盘、复位电路、晶振电路和液晶显示器等 部分。作为整个系统的输入,矩阵键盘担当着与用户交互的核心任务,用户可 以再此输入密码或控制程序的运行方向。 功能上,首先由用户由矩阵键盘输入密码,而后与事先存储的密码进行比 较,判断出密码的正确与否,然后单片机会控制特定引脚的电平以触发开锁电 路或者报警电路。实用产品只须将单片机的负载由发光二极管替换为实际锁具 的开锁电路即可,当然也可以用继电器的常开触点去控制电磁铁吸合线圈12。 具体的讲,本设计可以分为硬件部分与软件部分俩大部分。其中硬件部分 又分为键盘输入电路、复位电路、晶振电路、显示电路、报警或解锁提示电路 等几大模块;相应的,软件部分由主程序、按键检测子程序、LCD 显示子程序、 密码修改子程序、报警声音子程序等组成。 图 3.1 系统框图 3.23.2 系统硬件部分设计系统硬件部分设计 本系统外围电路包括键盘输入电路、复位电路、晶振电路、显示电路、报 警或解锁提示电路等。结合本设计的原定目标,键盘输入电路选择 43 矩阵键 盘,显示电路选择显示屏 LCD1602 来完成。其原理图如图 4.1 所示。 图 3.2 系统原理图 3.2.1 键盘输入电路 单片机系统中,常用的键盘设计方式有独立式键盘和矩阵式键盘两种。 独立式键盘是指每个 I/O 输入端口对应一个物理按键的键盘。其优点是键 盘结构简单,按键识别容易;缺点是占用 I/O 口较多。 矩阵式键盘适合用在按键数量较多的系统中,它将 I/O 口分别引出线,并 分为行线和列线,在每一个行线和列线相交的地方放置一个按键,这种方案下, 一个占用 7 个 I/O 端口的 43 的行列结构可以构成一个 12 键的键盘。显然这 种方式与独立式键盘相比节省了很多 I/O 端口,但算法相对复杂13。常用的矩 阵式键盘扫描原理有反转和行/列扫描法。本设计中采用行扫描法,具体原理将 在软件部分介绍。 键盘功能及其引脚接法如图 4.2 所示: 图 3.3 键盘输入原理图 3.2.2 复位电路 单片机复位可以让整个系统(单片机芯片本身)从一个确定的初始状态开 始工作。在单片机刚刚上电时、断电后和执行出错,复位都是必须的操作。RST 为高电平并保持一定时间后,单片机进入复位状态,在此期间,P0 口呈现高阻 态,P1P3 口均呈现高电平,同时 PSEN 信号无效、ALE 为高电平。 本设计在最基础的复位电路基础上,添加了一个按键以实现手动复位功能。 在刚接通电源时电容 C1 两端电势差很小,电阻 R1 上的电压接近电源电压,这 会使得 RST 为高电平,接着,电容进入充电过程,RST 端电势步降低,当 RST 端的电压表现为低电平时,CPU 脱离复位状态,只要电容 C3 大小适当,就能够 保证 RST 的高电平有效持续时间多于 24 个振荡周期,此时单片机就能够实现可 靠的复位。手动复位按键的加入,使得死机时有了可靠的复位方法。在按下复 位键后,电容 C3 将会经由 R6 进行放电,此过程结束后,RST 端的电位就会由 两个电阻的分压情况决定14。复位电路的原理如下图所示: 图 3.4 复位电路原理图 3.2.3 晶振电路 将晶体振荡器按下图所示方式连接到 XTAL1 引脚和 XTAL2 引脚上,就构成 了晶振电路。图示是一种电容三点式振荡器,振荡信号的频率取决于晶振频率 和两个电容的容量,其中,晶振频率又是主要因素。一般而言,晶振频率的取 值范围在 033MHz 之间,两个电容的取值范围在 530pF 之间。根据实际情况, 本设计中采用 24MHZ 做系统的外部晶振。电容取值为 22pF15。晶振电路原理图 如图 4.4 所示: C1 22pF C2 22pF X1 CRYSTAL 图 3.5 晶振电路原理图 3.2.4 显示电路 为了使密码锁的显示效果使人满意、电路简洁,此处使用了 LCD1602 作为 显示模块的核心,而不是普通的数码管。接通电源后显示器处于等待开锁状态, 提示用户输入密码,当用户需要开锁时,可以使用数字键 09 输入密码,每次 按键都会把处理结果反馈到屏幕上。当密码输入结束后,按下确认键,系统将 会把输入的密码和事先保存的对比,若正确,LCD 将显示“Unlock succeed!”, 电子密码锁被打开;否则,LCD 显示屏会显示“Wrong Password,Unlock Failed!”,电子密码锁保持原状态。 在密码修改的过程中,LCD 显示屏会显示更为多样的信息:“Change Password? (Y/N)”、“Old Password:”、“Wrong Password,Match Failed!”、“Enter New PW:”、“The Password must be 6 bits!”、“The Password has changed!”等等,电子锁当前所处的状态一目了然。其显示部分 及引脚接口如图 4.5 所示: 图 3.6 显示电路原理图 3.2.5 报警、解锁提示电路 本设计报警部分电路由蜂鸣器实现。当输入密码并确认后,单片机的 P3.1 引脚将输出特定频率的方波,则蜂鸣器被导通而发出声音。当密码错误时,发 出的声音为短促的 3 声“嘟” ,音高相同;当密码正确时,发出的声音为一小段 乐声。 当解锁成功时,接于 P3.0 端口的绿色 LED 灯将会亮起,提示锁已打开。在 实际应用的电子密码锁产品中,可以把其替换为电磁继电器的输入,原理仍是 不变。报警、解锁提示部分电路原理图如图 4.6 所示(图中 led 接 P3.0 口, air 接 P3.1 口) 。 图 3.7 报警、解锁提示电路原理图 3.33.3 系统软件部分设计系统软件部分设计 本设计的软件部分由主程序、按键检测子程序、LCD 显示子程序、密码修 改子程序、报警声音子程序等组成。 3.3.1 主程序流程图 如图 5.1 所示为主程序流程图,系统上电后将进行初始化,然后开始进行 键盘扫描,此时在键盘上输入密码,若密码正确,则开锁成功,播放成功提示 音,密码错误则会提示,包括屏幕画面及声音。 图 3.8 主程序流程图 3.3.2 按键检测子程序设计 本设计中的的密码输入使用了 4*3 矩阵键盘,键盘上除数字键 09 以外还 有 2 个功能键。该矩阵键盘的按键检测采用行扫描法,具体步骤如下: 令第一行为低电平,其余行和列为高电平,即给 P1 口赋值 0 xFE。 1 延时 520ms 再次进行检测,实现按键消抖。 2 读 P1 口的值,判断当前是否有键被按下。若无键按下,其值仍应为 3 0 xFE。若第一个按键按下,则第一列会被拉低,即 P1 口的读取值应为 0 xEE, 即 0 xEE 为第一行第一列按键的键码。同理可得第一行另两个按键的键码为 0 xDE、0 xBE16。 用同样的方法,令其它行为低电平,经上述 3 个步骤也可判断其它按键是 否按下。 根据上述过程,该矩阵键盘的按键检测扫描程序设计如下: uchar code rowScan=0 xFE,0 xFD,0 xFB,0 xF7; /行扫描码 uchar code key12=0 xEE,0 xDE,0 xBE,0 xED,0 xDD,0 xBD,0 xEB,0 xDB,0 xBB,0 xE7,0 xD7,0 xB7 / 1 2 3 4 5 6 7 8 9 * 0 # uchar code keyValue=123456789*0#; #define KEY P1 /=键盘扫描函数= uchar keyScan(void)/返回值:有键按下时获得的键盘值 (1234567890*#) ,无键按下时返回字符$ uchar k = 0,flag = 0; for(k = 0;k 4; k+) KEY = rowScank; /逐行扫描 delay(10);/按键扫描 if(KEY != rowScank) uchar i=0; for(i = 0; i 12; i+) if(KEY = key12i) /比较键码 flag=1; break; while(KEY != rowScank); /等待按键释放 if(flag) return keyValuei; return $; 3.3.3 LCD 显示子程序设计 LCD 显示是本设计的核心模块之一,为了能在屏幕上总能显示恰当的信息, 本设计中 LCD 显示子程序的功能,应为保障单个字符、字符串的显示,为主程 序或其他子程序留出接口,以便需要时可以很容易调用。 本着上述目的,LCD 显示子程序的结构如下图所示,它的目的是提供字符 与字符串的显示函数。不同层次的函数之间是被调用的关系。 图 3.9 显示模块结构图 各函数原型及参数介绍如下: void LCDWriteData(uchar Data) / 写数据函数 1 void LCDWriteCmd(uchar Cmd) / 写指令函数 2 void LCDPosition(uchar row,uchar column) /将坐标转换为 LCD 的坐 3 标 参数: row 为所在行数(1 或 2) ,column 为在行中的位置(015) 在指定位置写数据函数 4 void writeChar(uchar row,uchar column, char c) 参数: row 指定行,column 指定列位置,c 为待写入的数据。 写字符串函数 5 void writeString(uchar row,uchar column1,uchar column2, char *s) 参数:row 表示行,column1 表示第一行起始地址,column2 表示下一行起 始地址,均从 1 开始。 void moveString(char *s) /移动字符串函数 6 void LCDInit(void) /液晶初始化函数 7 LCDWriteCmd(0 x38); /设置 16*2 显示,5*7 点阵,8 位数据接口 delay(30); LCDWriteCmd(0 x01);/清屏 delay(30); LCDWriteCmd(0 x06);/地址加一,整屏右移 delay(30); LCDWriteCmd(0 x0f);/开显示,光标闪烁,显示光标 3.3.4 密码修改子程序设计 在本设计中,密码修改功能是使用外部中断触发的,这意味用户得以随 时进行密码的修改,十分方便。因此,密码修改子程序同时也是外部中断 0 服 务程序。若要修改密码,须先输入旧密码密码,密码验证通过后方可设置新密 码,新密码输入结束后,验证位数,然后保存新密码。流程如图 3.9 所示。 图 3.10 密码修改程序流程图 3.3.5 报警声音子程序设计 本程序的设计类似于电子音乐盒,可以实现 17 七个音符的各种组合,理 论上可以播放任意音乐,但音阶始终位于 1 个八度内。 音调取决于物体振动的频率,频率越高,所发声音音调也就越高。本程序 就是利用单片机产生不同频率的方波,来驱动蜂鸣器发出不同音调的声音。 设计中,系统使用了定时中断的方法。这里以起中的音阶“1”为例说明, 其初值设为 0 xF720,对应十进制数 63264,则计数 65536 - 63264 = 2272 次后 溢出进入中断,若单片机外接 24MHZ 晶振,则计数一次对应 0.5s,即计数 1136s 后溢出。一个音阶周期为 1136s2 = 2272s,对应频率为 1 / 2272s = 440Hz。次频率为音阶“1”所对应的频率值。其他频率对应的计数初值可按照 此方法推算出来,具体见表 3.1 17。 表 3.1 不同音阶所对应频率、计数初值 音阶1234567 频率/Hz440494523587659698784 计数初值0 xF7200 xF8880 xFC440 xF9590 xFA1 3 0 xFA670 xFB04 由此,可得到报警声音模块的代码如下: sbit Beep = P31; uchar code scalesH = 0 xf7,0 xf8,0 xfc,0 xf9,0 xfa,0 xfa,0 xfb; /7 个 音符所对应的计数器初值 uchar code scalesL = 0 x20,0 x88,0 x44,0 x59,0 x13,0 x67,0 x04; uchar note; /初始化函数 void AlarmInit() TMOD = 0 x01; /T/C0 工作在方式一 ET0 = 1; /开定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中小学师资青蓝工程推进方案
- 教师教学评价体系设计与实操指南
- 员工离职体检放弃协议书范本
- 智慧医疗数据管理实操手册
- 智能制造系统操作手册及维护指南
- 基于笔画与结构的汉字风格精准提取与还原研究
- 基于空间统计分析的北京市区域经济发展格局与驱动因素研究
- 小学生纸飞机制作及物理原理讲解
- 畜牧业养殖合同标准范本
- 高校心理健康教育项目案例
- 作为大学生如何践行总体国家安全观1500字
- 食品安全考试试题及答案2021
- 07第七讲 发展全过程人民民主
- 数独题目中级90题(后附答案)
- 宁骚公共政策学
- 机电安装工程预留预埋施工方案改用于上传
- 第9章 钢中的回火转变
- 门诊病历管理规定
- 腹直肌分离康复(产后康复课件PPT)
- 携手共育 静待花开 家长会课件
- 六年级上册音乐课件-《今天是你的生日》人音版
评论
0/150
提交评论