您的当前位置:首页正文

基于单片机密码锁的设计剖析

2022-10-18 来源:东饰资讯网


毕业设计说明书

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

学 院: 专 业:

学生姓名:

学 号:

指导教师:

2014 年 6 月

摘要

摘要

本次设计题目为遥控电子密码锁的设计,与传统锁相比,电子密码锁具有非常多的优点:操作简单,易于编程等,因而也具有更广阔的市场应用前景。这次毕设采用8051做为核心,加上各种外接电路实现要求的各种功能,例如:矩阵键盘电路、红外接收和发射电路、LCD屏显示器等等,密码锁的功能包括设置原始密码、实现本机开锁、8到10米遥控开锁、密码错误3次报警报警、修改密码的能力。下面的论文比较详细说明了遥控密码锁的硬软件电路电路设计、总机电路图,个人认为设计的难点在于红外线的发射和接收,如果使用传统的编码器、解码器就会使是系统变得异常复杂,故我们应该打破传统思维的限制利用现代化技术找到一种可以替代的简单技术来解决问题。这种新技术是应用单片机来调制红外线信号,然后用红外发射管发射出去。本机接收部分用HS0038器件,它是接收周期约为26us,频率约为38KHZ的信号,它能够一次性完成模拟电路的分立元件完成的对信号的接收、放大等,HS0038输出的是TTL信号,可以直接输入单片机进行处理。这个原件会使本机接受部分电路的设计变得简单,使用方便,降低了成本。

本次设计的的电子密码锁的实用性非常强,比如它能够用在家里和仓库的门上也可以用在保险柜或者汽车门上,并且这种所比较传统的机械锁更加安全保障。实际的生活和生产中,我们可能会碰到许多对身体健康有害的环境:有害气体、辐射等等,因此采用遥控的方式开锁既可以最大限度的隔离各种电气干扰。 关键词:安全、密码锁、红外遥控

Abstract

Abstract

This design titled infrared remote electronic locks design, compared with the traditional locks, remote electronic locks have a lot of advantages: easy to operate , easy to program , and thus also have a broader market prospects. The remote electronic locks designed into two modules: the transmitter module and receiver module . The entire system to AT89C51 core , plus keyboard circuit, crystal oscillator circuit, infrared receiver circuit, alarm circuit , infrared transmitter circuit , display circuit and other peripheral circuits to achieve, with the default six original password , the machine lock, remote keyless entry , password input error alarm , change passwords and other functions. The following paper introduces the overall design of the infrared remote electronic locks , hardware circuit and software circuit , difficulty personally think that design is an infrared transmitter and receiver , if you use a traditional encoders, decoders will make the system become abnormal complex , it must find a new way to solve the problem . Part of the launch to modulate the signal using light-emitting diodes to emit infrared light. Receiver section uses integrated receiver HS0038, it receives a frequency of 38KHZ, a period of 26us, it can be a remote control signal reception , amplification, detection , plastic rolled into one , and the output of the it can be identified TTL signal , thereby greatly simplifying a receiving circuit design and circuit complexity , ease of use.

The design of the electronic locks practicality is very strong, such that it can be used at home and warehouse doors can also be used in the safe or car door , and this the more traditional mechanical lock more security. In industrial production , we will encounter a variety of environments : harmful gases, radiation , etc., so a way to unlock the remote control to maximize both the isolation of various electrical interference .

Keywords : security , password lock , infrared remote control.

目录

目录

摘要 ........................................................... I Abstract ..................................................... III 目录 .......................................................... IV 第一章 绪论 .................................................... 1

1.1设计的背景及其意义 ........................................ 1 1.2 电子密码锁的研究现状 ..................................... 2 1.3 红外通信概述 ............................................. 3 1.4设计的要求及其指标 ........................................ 4

1.4.1主要设计内容 ....................................... 4 1.4.2主要设计指标及其参数 ............................... 4

第二章 系统总体方案设计 ........................................ 5

2.1 整体设计思路 ............................................. 5 2.2 硬件电路设计方案 ......................................... 5

2.2.1 遥控发射部分设计 ................................... 5 2.2.2 本机接收部分设计 ....................................... 6 3.1 AT89C52单片机 ............................................ 8

3.1.1 AT89C52简介 ....................................... 8 3.1.2 AT89C52的引脚功能 ................................. 8 3.1.3 晶振电路设计 ...................................... 10 3.1.4复位电路 .......................................... 11 3.2 电源电路 ................................................ 12 3.3 红外发射电路 ............................................ 14

3.3.1 红外对管简介 ...................................... 14 3.3.2 红外发射电路 ...................................... 14 3.4 红外接收电路设计 ....................................... 15

3.4.1 HS0038概述 ....................................... 15 3.4.2 红外一体化接收头的特性:.......................... 16 3.4.3 红外接收电路图 .................................... 17 3.5 键盘电路 ................................................ 17

3.5.1 矩阵键盘原理 ...................................... 17 3.5.2矩阵键盘原理图 .................................... 18 3.6 显示电路 ................................................ 19 3.7 报警电路设计 ............................................ 20 3.8 电磁锁部分电路 .......................................... 21 第四章 软件设计 .............................................. 23

4.1 系统发射部分的软件设计 ................................... 23

4.1.1 主程序流程图 ...................................... 23 4.1.2 延时10ms 子程序 .................................. 24 4.1.3 键盘扫描程序..................................... 24 4.1.4 红外发射程序 ...................................... 26 4.2 主机接收部分程序设计 .................................... 28

4.2.1 主程序设计 ....................................... 28

IV

目录

4.2.2 红外接收程序..................................... 28 4.2.3 密码识别子程序 .................................. 30 4.2.4 报警部分程序..................................... 30 4.2.5 显示子程序 ........................................ 31 4.2.7 修改密码子程序 .................................. 32

第五章 结论 ................................................... 34 参考文献 ...................................................... 35 致谢 .......................................... 错误!未定义书签。 附录 Ⅰ:总机电路图 ........................................... 36 附录Ⅱ:主要源程序代码 ........................................ 38

第一章 绪论

第一章 绪论

1.1设计的背景及其意义

我们都知道,锁具自古以来就在人类的生活中扮演者重要的角色,密码锁是锁中的一类,开锁的时候用是一长串的数字或者英文字母。密码锁的密码往往是数字或者字母的组合,有些密码锁只有一个机械式的转盘,它能够转动锁内的凸轮或者锁内的其它装置。还有些密码锁直接转动几个带有数字的轮盘,可以拉动锁内部的装置。

而随着社会的进步,高新科技的发展,各种高度机密文件越来越多,偷盗事件越来越频繁,而偷盗的技术也越来越高明,但人们的安全意识也在不断加强,人们也在寻找各种方式来加强安全性。传统的机械锁的缺点是显而易见的,比如:安全不好、投资成本高等等。近些年来在防盗产业中出现了一种新型的电子密码锁,它们在各种场合逐步替代了已成为非主流的机械锁,尤其是伴随着微电子和集成电路技术的飞速发展,特别是单片机的广泛应用,人们可以更简单的设计密码锁,这种密码锁和之前流行锁具相比具有相当多的优势,如:易于控制、功耗和成本低等。我们这里要设计的红外遥控电子密码锁具有远距离遥控的功能,它面向更广阔的市场,而且它的安全性和可靠性使得它有潜力成为电子防盗产品的主流。

智能的密码锁是新一代的的电子锁,它的设计结合了许多领域的多种技术如电子、集成电路、传感器、通讯等等,非常具有现代化气息,它结合了计算机智能识别技术与现代化工程系统于一身,是保障重要场合门口和物品锁柜的重要一环,适用于多种场合,例如保险柜、车库、公司档案室、小区、公司门禁、军事基地等。而且近代来红外线技术逐步发展,它可以进行中远距离信息传输,因此在具有遥控系统的设计中将扮演着很重要的角色,遥控系统最开始是用有线的然后才发展到无线电波,到近些年来开始使用计算机系统的I/O接口进行红外线遥控。其遥控电路的设计往往是由单片机系统、显示电路等集成电路及其外围器件构成。因此将这两类技术融合起来得到的密码锁性能会更好。

当前,在市场上很多种类的锁,它们事实上没有真正防盗的功能。而大部分锁的制造原理又过于简单,因此,新的时代我们提出了制锁工业必须进行革命性的改造。此次设计—就是其中的一种。此次设计利用红外线进行数据传输,因此可以进行中远距离开锁,而不必像传统机械锁那样需要将钥匙插进锁孔里才能开锁,其整个系统实现用单片机控制红外遥控开锁,LED显示,密码的修改,密码

1

第一章 绪论

输入三次错误报警等功能,还可以在密码泄露的状况下及时修改原始密码。此设计具有许多操作和使用方面其他锁具不具有的优点。无线电遥控能够透过实物去遥控对象,但是红外遥控却不具有这样的能力,因此,当我们设计红外遥控器时,没有必要像设计无线电类遥控器一样,为了避免隔墙控制邻家或自家其它电器,每一个遥控器都要拥有不一样编码或频率,因此属于一类的红外遥控器,允许有相同的遥控频率或者遥控编码,而大部分情况下并不会没有各种信号之间反串的状况。这样就为可以大量生产红外线遥控器应用于电器控制及其他的系统中提供了可靠依据。红外线地波长要无线电波波长要远远大于红外线地波长,故红外线的传输并不会影响邻近的电器,另外红外线对环境的影响也比较小。科学技术的日新月异使得人们对于物质水平和精神水平的要求越来越高。

1.2 电子密码锁的研究现状

市场上最普遍的的遥控性的电子密码锁一般有无线电控和光控这两种。光遥控的电子密码锁既可以用红外线遥控也可以用可见光。无线电遥控的特点是其传播的信息量可以很大、速度也可以很快、肉眼无法识别,不过它发射的光信号分散的分布在空间里面,所以很容易就可以用相关仪器捕捉住,因而一般采用“可以变化的密码”这样以来即使捉住了即时的密码也没有办法使用、其复制的价值也就大打折扣了。另外红外遥控传输密码的介质是小角度的光,它的基本特点和无线电遥控的密码锁相同,所不同的是它的电信号不是分散的存在,也没有办法法在它的传播路径上用仪器捕捉信号,因而其保密性比较高。如果使用遥控式电子密码锁,要注意保存遥控终端。

从目前的技术水平和生产水平来看,最普遍使用的是键盘式的密码锁,此种密码锁主要用于重要物品保险柜、仓库门、办公间和其它机密的装置。键盘式密码非常可靠,它需要在认为地输入数字或字母密码,其最好的一点是原始密码是人们靠记忆记住的,是一个虚拟的东西而不像钥匙那样实在,因而非常可靠,一般不会丢失。不过电子密码锁的密码最好不要设置的太简单(比如用123456这样连续的数字,最好是无规律的),若是太简单的话别人就很容易破解,或者有可能被他人无意间听到,这样便使得锁的安全性大打折扣。当然,有一些人设置密码时为了增加安全性弄得太复杂,到最后反而自己也忘记了,从而给自己以及他人带来了很大的麻烦。因此,根据密码锁这种明显的优点和缺点,键盘式电子密码也在不断发展中,例如“任意设定密码”技术的开发使我们可以根据自己的情况和喜欢程度来设定密码,可以根据具体情况随时改动密码;而“键盘乱序显示”技术的应用使键盘上的键位在我们每一次按下时都显示出不同的字母或者

2

第一章 绪论

数字,而且显示的方式只能由我们在面对键盘正面才可以看到,所以即便是旁边的人看见我们操作也很难猜测出出密码的具体顺序;独具一格的“自动更改密码”方法使这次键入的密码可以由系统更改成下一次应输入的密码,更改的规律是随机的因此别人无法得知,所以不需要怕别人可以猜测得到;“多重密码设定”技术使单一的一组密码是无效的,这种方法比较适合二个或者多个人分共同使用,电子密码锁需要输入两组或者两组以上的密码才可以打开锁,这样以来就大幅度提高了密码锁的保密性,再者若限制输入数字的先后顺序的话则保密性还可以提高很多。为了提高电子密码锁的安全性,往往是如果输入密码错误超过三次那么密码锁就会自动上锁其结果是在一段时间内无法输入密码开锁。简言之,尽管新型的电子密码锁更新周期越来越短,但键盘式电子密码防盗锁仍然是最普遍的产品,它不仅仅在市场上处于主导地位,并且,它还常常做为其他类电子密码锁的辅助手段。

1.3 红外通信概述

红外遥控器的设计依据就是红外通信的基本原理。红外线是人肉眼看不

见的光,它所指的波长在750nm至1mm间,红外线的频率比可见光稍低但却比微波频率要高。而红外通信波的波长是在0.75至25um间,属于近红外波,其他波段的红外光是不会使用的。至管理红外通信的协会成立后,协会把红外通讯所使用波区域定在850nm至900nm之间,这样就可以使得不同的厂商生产的各种红外通信产品的通讯效果能够达到最好。

红外传输是一种点对点的传输方式,无线,不能离的太远,要对准方向,且中间不能有障碍,由于红外线的直射特性,红外通讯技术不太适合传输障碍比较多的地方。因此,红外通讯技术多数情况下传输距离短、传输速率不高。红外传输的媒介是近红外波的红外线。发送端的系统把基带信号调制为脉冲串,脉冲串将携带所要发送的信息,红外发射管是发射红外线信号最普遍的器件,因此经过放大后的信号经发射管发射出去。接收部分把接收装置得到的红外光信号转化为电信号,经过一系列的处理后发送给解调器,解调器把光信号还原成原来的数字信号后送至后续处理电路,而后实现遥控功能。脉宽调制(简称PWM)是信号调制的方法之一,它是通过脉冲的宽度来完成信号的调制,另外一种方法是脉时调制(简称PPM),它是利用时间间隔来进行信号调制。本系统采用的调制方式是脉宽调制。

3

第一章 绪论

1.4设计的要求及其指标

1.4.1主要设计内容

根据导师所给出的任务书,然后经过查阅各种资料,现把设计内容一一列出:

⑴ 电路总体框图的设计

⑵ 单元电路的设计与计算:设计单元电路并确定电路的参数,并分析电路的工作原理。

⑶ 总体电路的设计:按要求设计总体电路,并分析其工作原理。 ⑷ 按规定的格式编写论文。

1.4.2主要设计指标及其参数

⑴ 使用单片机设计

⑵ 通过键盘预设初始密码 ⑶ 红外遥控开锁或者本机开锁 ⑷ 显示器显示是否接收到信号 ⑸ 3次打不开报警

⑹ 设计所需的直流稳压电源 ⑺ 遥控距离8-10米

4

第二章 系统总体方案设计

第二章 系统总体方案设计

2.1 整体设计思路

此次设计的是以单片机为技术核心的红遥控电子密码锁,具有成本较低、可

靠性较强等多种特点。传统上红外遥控通信系统的设计都是使用配套的的编码解码电路,在本设计中我将采用一种新的技术,用单片机实现信号的编码和解码,这就大大地节省了硬件资源的使用,应用软件的设计方法也增加了系统地灵活性。其硬件电路主要单片机最小系统、有4*4和3*4矩阵键盘、单片机最小系统、红外发射电路、红外接收电路、LCD显示电路、电磁锁电路、报警电路。另外还要有两个部分的软件设计:发射遥控部分和本机接收部分。软件设计是密码锁系统中非常重要的一部分,软件设计的好坏直接决定系统的性能的优良与否,本系统的软件设计主要包括主程序、红外编码程序、键盘扫描程序、红外发射程序、红外解码程序、LCD显示程序,修改密码程序、报警程序。

整体设计思路为:开始时系统处于休眠状态,当遥控器有按键按下时,单片机响应中断,利用单片机的定时作用产生38KHZ的矩形脉冲(载波信号),单片机根据扫描到的不同键值而产生不同的编码信号(基带信号),信号经调制后发射出去,红外接收头接收到红外信号,经过解调后得到原来的脉冲信号,然后输入单片机进行解码还原遥控器输入的密码,次密码与存储在单片机EPROM中的原始密码进行比较,相同则开锁,如果密码连续输错三次就启动报警电路,并发出10S钟的报警信号。

2.2 硬件电路设计方案

2.2.1 遥控发射部分设计

单片机不工作时一直处于低功耗状态,只有当有键按下时才开始工作,系统通过单片机的矩阵键盘获取用户的遥控信息,经按键扫描确认后,单片机发出与此按键相对应的二进制编码信号信号,并由P1.1输出,同时系统利用单片机的定时中断功能,由定时器T0产生频率为38KHZ的矩形脉冲,其周期为26US,并由单片机P1.0口输出,产生的方法即是每隔13US对P1.0口取反一次,矩形脉冲如图2-1所示。P1.0和P1.1两个引脚输出的信号经与门完成对基带信号的调制,经NPN三极管放大后驱动红外发光二极管发出调制红外光,红外发光二极管的内部结构和普通的二极管不同,当它的两端加上电压时,发出的是红外光。

5

第二章 系统总体方案设计

遥控发射部分以AT89C52为核心,并辅以键盘电路、晶振电路、复位电路、红外发射电路组成一个较为完整的系统,红外发射部分的系统结构框图如图2-2所示。

26US

图2-1 38KHZ载波信号

红外发射器 晶振电路 单片机AT89C52 复位电路 键盘电路

图2-2 红外遥控部分结构图

2.2.2 本机接收部分设计

红外接收端普遍使用红外一体化接收头HS0038,它不需要任何外围电路就可以接受信号并且放大信号,能够顺利完成信号的处理工作,它输出的信号可以很好的与TTL兼容因此可以直接输入单片机,从形体上看,它与普通三极管差不多,但功能却差异巨大,适合于各种红外遥控电路。

当红外接收头没有信号输入时,它的输出就是高电平,反之就输出低电平。接收头中的光电二极管把接到的红外信号转为电信号,然后经过一系列的处理后得到原始的二进制编码,二进制编码经单片机解码后得到用户的控制信息,并转至单片机输入输出口执行,同时显示器LCD1602显示当前的状态。显示状态为: 在没有操作的状态下,液晶背光灯不亮,液晶上显示的是“Enter Password ”,按下开锁键后,然后进入了输入密码界面,用户通过键盘输入与原始密码相同的密码就可开锁。开锁状态下,按下修改密码按键就可以进入修改密码的界面

6

第二章 系统总体方案设计

“Enter Password”,输完后,进入到另一个确认密码的界面“Enter Password”,用来防止错误操作。如果输入错误,可以按清除键来清除已输入信息。如果连续输入三次错误的密码,就会触发报警器。

密码锁主机接受部分包括单片机AT89C52、晶振电路、复位电路、电磁锁电路、报警电路、显示电路、键盘电路、红外接收电路,系统结构图如图2-3所示。

复位电路 晶振电路 单片机AT89C52 报警电路 红外接收电路 电磁锁电路

键盘电路 显示电路

图2-3 主机接收部分结构图

7

第三章 遥控电子密码锁的硬件电路设计

第三章 遥控电子密码锁的硬件电路设计

3.1 AT89C52单片机

3.1.1 AT89C52简介

AT89C52是8位的微处理器,具有8KB的在线可编程Flash,性能比较高、功耗比较低。AT89C52的制造用的是爱特梅尔公司的存储器技术,可以与生产中其他的单片机产品的指令完全兼容。单片机Flash存储器的ROM系统编程可以在线进行,也可以应用于普通编程器。就单个单片机芯片来说,AT89C52的在线可编程系统的灵活行非常强,这使AT89C52广泛应用于大部分嵌入式控制系统中,并给用户带来许多技术上的方便性。 AT89S52的主要性能:

• 可以与MCS-51单片机产品完全兼容 • 8KB的在系统可编程ROM • 具有1000次擦写次数 • 全静态的操作:0Hz-33MHz • 三级加密的ROM(程序存储器) • 32个可编程的I/O口 • 三个16位计数器/定时器 • 8个中断源 • 全双工串行口

• 低功耗的掉电和空闲模式 • 掉电后中断可以唤醒

3.1.2 AT89C52的引脚功能

熟知单片机的引脚功能是学习和使用单片机的重要内容。因为单片机引脚能够表现出此种单片机的硬件特性,关于硬件,用户只能够正确使用引脚而不能改变引脚功能,我们把外围芯片或电路连接到单片机引脚上构成系统。加上必要的软件就可以实现特定的功能 AT89C52具有以下标准功能: 8k字节的片内ROM,256字节RAM, 看门狗电路,32 位I/O 接口,三个16 位 计数器/定时器,2 个数据指针DPTR,5个中断源2级中断优先级,2个全双工串行口。AT89C52拥有可选择的省电模式可以利用软件来实现。在掉电保护的方式下,系统保存数据存

8

第三章 遥控电子密码所的硬件电路设计

储器的内容,单片机机内的振荡器停止工作,其他的工作也会停止,系统处于等待阶段,当下一个中断来临时单片机继续工作。工作于空闲模式下时,系统允许数据存储器、串口等继续工作,但此时CPU是不工作的。AT89C52单片机使用DIP封装形式。一共有40个引脚,如图3-1所示,另外CMOS单片机还可能用到方形封装形式。因为受引数目限制,因此有些引脚要拥有第二功能。在单片机的引脚中,有2个引脚为电源的专用引脚,有2个引脚用来外接晶振,还有4条引脚是其他电源和控制的复用引脚,其他的32条引脚是普通输入和输出引脚。下面具体介绍各个引脚功能:

图3-1 AT89C52的引脚图

输入输出引脚:

① P0 口:P0口受内部控制信号的控制,它是一个双向的三态I/O接口,共八位,在不扩展存储器或外部接口的状态下,P0口为普通的输入/输出接口,其中每一位有能力驱动8个逻辑电平。当接有片外存储器或外部接口时,P0口是地址总线的低八位低8位,也可分时复用为数据总线。这种工作方式下,P0口不需要上拉电阻,但在做程序校验时却需要。

② P1 口:P1 口也是8位准双向I/O口,其中每一位即可作为输出使用,也可作为输入使用,具有内部上拉电阻,故即使输入时集电极开路也无需外接上拉电阻,它能够驱动4 个LSTTL负载。另外,P1.0和P1.1还具有第二功能:P1.0

9

第三章 遥控电子密码所的硬件电路设计

可以分别作计数器/定时器2的脉冲输入端,P1.1作为和定时器/计数器2 的外部控制。

③ P2 口: P2也是8 位的准双向I/O 口,它和P1口具有一样的接负载能力。当P2口写“1”时,可作为普通输入/输出口直接使用。当单片机有外接存储器,且需要寻址超过256B范围时,P2口作为高8位地址总线。当用间接寻址方式(如MOVX @DPTR,A)访问外部RAM时,P2口锁存器的内容就会被输出或者输入。另外P2口线也某些控制信号和高位地址总线。

④ P3 口: P3 口也是一个拥有上拉电阻的8 位的准双向输入输出口线,P3口和P0口与P2口一样拥有相同的带负载能力,另外P3口也可以作为AT89C52的第二功能使用,它的每一口都可以作为第二功能使用,接口的第二功能具体定义如表3-1所示。

引脚 第二功能

P3.0 串行输入口 RXD P3.1 串行输出口 TXD P3.2 外部中断0,低电平有效 INT0 P3.3 外部中断1,低电平有效 INT1 P3.4 计数器/定时器0脉冲输入端 T0 P3.5 计数器/定时器1脉冲输入端 T1 P3.6 I/O接口写选通输出端 WR

P3.7 I/O接口读选通输出 RD

表3-1 P3口第二功能

3.1.3 晶振电路设计

晶振电路是单片机的心脏,它用于产生单片机工作时所需要的时钟信号,可以说单片机就是一个复杂的同步时序信号,为了保证同步工作的实现,电路应在统一的时钟信号控制下进行工作。单片机产生适中的方法有内部时钟方式和外部时钟方式。AT89C52单片机内有一个用来构成振荡器的高增益反向的放大器,引脚XTAL2与XTAL1分别是放大器的输出端和输入端。在XTAL2与XTAL1的两端跨接一个片外石英晶体就可以构成稳定的自激振荡。这种方式称之为内部时钟方

10

第三章 遥控电子密码所的硬件电路设计

式。而外部时钟方式使用的是外部振荡器,由它产生的外部时钟脉冲信号接至XTAL2端直接送至内部时钟电路,而XTAL1端接地,这种方式适用于多块芯片同时工作,便于同步。

内部时钟振荡方式得到的时钟信号比较稳定,因此本次设计中采用内部时钟方式,振荡电路如图3-2所示,51单片机允许的晶体振荡可在1.2到24MHZ之间选择,电容C1和C2的作用是稳定振荡频率、快速起振,它们的取值对振荡输出的稳定性、大小及其振荡电路的起振速度有一定的影响,外接石英晶体时电容C2和电容C1的值通常选择30pf左右,外接陶瓷谐振器时,C2和C1的值均为47PF,本次选择两个两个20pF的电容和一个石英晶体组成。振荡频率由石英晶体的谐振频率确定,为了减少寄生电容,更好地保证振荡器稳定可靠的工作,石英晶体或陶瓷晶体和电容应该尽可能安装的与单片机芯片靠近。

图3-2 晶振电路

3.1.4复位电路

计算机在启动运行时都需要复位,使得CPU和系统中的其它部件都处于一个

确定的初始状态,并从这个状态开始工作。只要在单片机的RST端输入24个振荡周期以上的电平,单片机便进入复位状态。单片机复位时,输出信号ALE、PSEN为高电平,复位以后不影响片内RAM。复位后,P0到P3口输出高电平,且使准双向口都处于输入状态,并且将07H写入堆栈指针SP。同时,PC指向0000H,使单片机从起始地址0000H开始重新执行程序。所以,如果单片机运行出错或进入死循环,则可以通过复位使得CPU重新启动。

复位分为上电复位和手动复位,所谓上电复位是指单片机只要一上电,便自

11

第三章 遥控电子密码所的硬件电路设计

动进入复位状态。在通电瞬间,+5V电压加到RST端,然后,电源通过电阻R对电容充电,RST端出现正脉冲,用以复位。所谓手动复位,是指通过接通一个按钮开关,使得单片机进入复位状态。体统上电运行后,如果需要复位,一般都是通过手动复位来实现。如图3-3为单片机上电自动复位电路,电路由电阻、电容、和按键组成。

图3-3 单片机复位电路

3.2 电源电路

电子电路中通常要使用稳压电源来供电,因此稳压电源设计的好坏将直接影响电路系统的稳定性。随着电子技术的不断发展,电子系统的使用领域也来越广,各种电子设备层出不穷,以此对稳压电源的要求也就越来越高,电子设备向小型化发展,所以电源也向小、薄、轻的方向发展。电源电路的设计上也从传统上的晶体管串联稳压向体积小、重量轻、高效率的开关型稳压电源方向发展。工程应用中,通常把稳压电源分为交流稳压和直流稳压两种,其中交流稳压电源可以提供一个稳定的频率和电压的交流电,最常见的交流稳压电源有:大功率补偿型、自偶调整型、参数调整型、开关型稳压电源等。直流稳压电源的的种类可分为化学电源型稳压电源、线性稳压电源、开关直流型稳压电源等等。

本设计需要给单片机系统设计+5V稳压电压,一般稳压电源的设计方案如图3-4所示,它是由4个主要部分组成,下面分别介绍每一部分的功能:电源变压

12

第三章 遥控电子密码所的硬件电路设计

器将电网供给的220V的交流电压转化符合整流、滤波、稳压需要的交流电压。整流电路通过单向导电器件(如二极管)将变压器两次正负交替的正弦交流电压变换为单一方向的脉动电压,其中包含着较大的脉动成分,距离理想的直流电压还差得远。滤波电路可以利用储能元件(电容或电感)能够把单一方向脉动的直流电压中的脉动成分过滤掉,使输出电压成为比较平滑的直流电压。稳压电路的作用是使输出的直流电压在电网波动和负载电流变化时保持稳定,因为滤波电路输出电压的幅值随着电网的波动、负载电流的变化而变化。

交流 电路

电源变压滤波电路 稳压电路 整流电电源 负载 器 路

图3-4 稳压电源组成框图

本设计采用含有7805集成元件的稳压电源电路,如图3-5所示,7805是三端固定式输出集成稳压器,只有输入、输出和公共引出端三个管脚,安装和使用都非常方便,使用时只需要在其输入端和输出端之间个并联一个电容即可,如图所示电路中左边电容的作用是减少纹波电压和消除输入连线较长时其电感效应引起的自激振荡,一般选用0.33UF,右边电容的作用是消除输出电压的高频噪声,一般选用0.1UF,根据要求,电源电路由二极管组成的全波整流电路、电容式滤波电路、7805稳压电路组成,由于其中其内部拥有过压过流保护,使得整机的电压和电流更加稳定,性能更加可靠。

图3-5 稳压电源电路

13

第三章 遥控电子密码所的硬件电路设计

3.3 红外发射电路

3.3.1 红外对管简介

在红外遥控场合,通常需要用到红外发光二极管来发射红外线信号来传递信息。红外线对管可以分为红外线接受管与红外线发射管,它们也是常见的红外发光二极管(例如PH303),其外形与普通的发光二极管无异,只不过它们发出的是红外光。红外线对管的管压降大概为1.4V ,它工作时电流一般小于20mA。但是为了适应不同工作的电压,电路中常常串联限流电阻。

红外对管的基本原理:当发射电路发射红外线控制受控的装置时,控制距离跟发射功率是成正比的。另外为增加红外线控制距离,红外发射对管应该工作在脉冲工作状态,因为调制光的有效发送距离跟脉冲的峰值电流是成正比的,只需要努力提高峰值,就可以增加红外线的发射距离。提高峰值的方法为减小脉冲的占空比,即缩小脉冲的宽度т。常见红外二极管的功率可分为小功率、中功率和大功率三大类。红外线对管既是红外线的接受亦是发射,它的接受与发射的方式有两种,一是直射式的,其二是反射式的,直射式对管指的是接收管和发射管安放在受控与发射物的两端,中间相隔一定的距离。反射式二极管指的是接收管和发光管并列在一起,平时接收管是没有无光照的,只在发光二极管发出的红外光线遇到反射物的时候,接收管收到了反射来的红外线才可以工作。主要应用在各种安防设备、投币机、电子仪表、遥控器、游戏机、红外线摄像头、水表,电表等方面。

3.3.2 红外发射电路

通常情况下,红外遥控器将遥控信号(二进制脉冲码)调制在38KHZ的载波信号上,然后经过放大驱动红外发光二极管发射红外信号,单片机通过软件编程从P1.0输出频率为38KHZ的载波信号,当按键按下时,单片机根据按键的值从P1.1输出一系列的脉冲信号,两路输出信号经一个与门后由双极性三极管放大驱动发光二极管。

红外发射电路图如图3-6所示,其中LED1为红外线发射管,Q1为一个三极管,R1和R2为两个电阻,分别是1千欧和22欧,R2的左边接的是51单片机的接口,单片机上电时,通过软件的运行,红外发射管将编码成功的红外信号发射出去,然后由接收管HS0038接收,再进行一系列的工作。

14

第三章 遥控电子密码所的硬件电路设计

图3-6 红外发射电路

3.4 红外接收电路设计

红外接收电路的作用是是把遥控发射模块发射的38KHZ频率的红外线光信号解调、接收、放大、检波、整形后转化成电信号后输入到单片机的外部中断(INTO)即P3.2口解码,由单片机对二进制电平信号的高电平和低电平进行测量,遥控信号的还原是通过P3.2输入二进制脉冲码的高电平与低电平的维持时间这里我使用红外线接收头HS0038接收红外信号,它负责把接收到的红外线信号进行解调。将调制在40HZ上的红外信号解调后再输往AT89S52的INT0引脚,由单片机对高低电平进行测量。原红外信号的还原是通过测量INT0输入的二进制信号的高低电平持续时间,当接收头接受到红外信号时,单片机产生中断,并在P3.2口对电平进行识别,因此还原为发送数据,数据流通过单片机处理后进入后面的控制模块处理,这些会在后面的软件设计中也会提及。

3.4.1 HS0038概述

HS0038的外观及其测试电路连接如图3-7和3-8所示:

15

第三章 遥控电子密码所的硬件电路设计

图3-7 红外管外观 图3-8 红外管引测试电路

HS0038是一体化红外线信号接收的装置,它集成了红外信号的接收、放大、检波、整形于一身,而且输出的信号单片机能够识别,这样就可以大大简化接收电路的电路设计工作和复杂程度,方便用户使用。在本系统中我们使用的是红外一体化的接收头HS0038,其外观如图所示。HS0038的封装类型是黑色环氧树脂,不受荧光灯、日光等光源的干扰,内附磁屏蔽,灵敏度高且功耗低。当用小功率的发射管发射红外信号的情况下,它的接收距离可达到35m,它与CMOS、TTL等电路可以兼容。HS0038是直立侧面收光类型。它接收的红外信号频率是38kHz,周期约为26μs,同时还可以对接收到的信号进行放大,检波和整形,从而得到TTL电平编码信号。HS0038的三个管脚分别为+5 V 电源、地、解调信号的输出端。

一体化接收头HS0038的可利用图3-8所示的电路图进行测试,在HS0038 的信号输出端和电源端间接上一只发光二极管和一个二极管,然后配上规定工作电源(约为+5V),当使用者手拿红外遥控器对着红外接收头按下任意键时,其中的发光二极管闪烁,说明遥控器和红外接收头的工作正常,但是如果发光二极管不发光闪烁,就说明遥控器和红外接收头至少有一个是损坏的。只需要确保遥控器工作是正常的,就很容易判断红外接收头的好坏。

3.4.2 红外一体化接收头的特性:

• 前置放大器和光电检测装置集成在同一封装上。 • 内部带有PCM频率的滤波器。 • 对自然光有比较强的抗干扰能力。 • 改进了对电磁场干扰的防护性能。 • 电源电压为5V,功耗低。

16

第三章 遥控电子密码所的硬件电路设计

• 输出电平可以兼容CMOS,TTL。

3.4.3 红外接收电路图

红外接收电路如图3-9所示,它由HS0038元器件,电阻和电容组成,其中电阻的作用是限流作用,电容的作用是滤波,原因是红外接收头内部的增益很大,很容易引起干扰,因此必须要在供电脚上接入一个滤波电容。电路将发射部分发出来的红外信号接收、放大、整形后转换成单片机能够处理的电信号输入到单片机的模块,再进行一系列工作,电红外接收路如图3-9所示。

图3-9 红外接收电路图

3.5 键盘电路

3.5.1 矩阵键盘原理

矩阵键盘是MCS-51单片机外部接口中应用的与矩阵相似的键盘组,当键盘中的按键数量比较多的时候,为了减少51单片机I/O口的占用,常常把按键排列为矩阵的形式,如图所示,矩阵式键盘中,每条垂直线和水平线在交叉的地方不会直接相连,而是经过一个普通按键来连接。这样的话,一个端口(例如P2口)则就可以构成4*4个键,这样比直接把I/O端口线用在键盘多了一倍多,而且线数越多的话则区别就越明显,例如如果多加一条口线就能构成20个键的键

17

第三章 遥控电子密码所的硬件电路设计

盘,但是如果直接用端口线的话则就只能够多一个键(9键)。所以,当需要的键数较多时,应用矩阵法做键盘是比较可靠的。

矩阵键盘的识别方法:识别矩阵键盘的方法较为复杂,如图所示,行线接的单片机I/O口做为输出端口,并将列线经过电阻接电源正极,但列线所接的I/O口就会作为输入来使用。这样的话,当没有按下键盘时,所有I/O输入端都显示高电平,代表没有键按下。行线输出的则是低电平,当有键按下时,输入线则就会被拉低,系统通过读入输入线的各种状态就可以知道是不是有键按下了。为了判断键盘上的闭合键常常采用行反转法和行扫描法两种方法,本设计则用行扫描法。按如图示的键盘的结构来介绍行扫描法:先让第0行的输出为低电平,其余的行输出为高电平,并把行首键号“0”储存在某一个寄存器中,然后读列值,观察是不是有哪条列线的输入为低电平,如果有的话,就表示第0行这个列键被按下,假设是低三列,那么键值为行首键号加上列号,即键值是3,如果没有,就说明低0行上无键被按下,就扫描下一行,并同时储存行首键号。照此推,系统循环进行一直到找到闭合键结束。

3.5.2矩阵键盘原理图

根据本系统的设计要求,一共需要2个键盘电路,分别用于遥控发射模块和本机模块,其中遥控发射模块为3*4矩阵键盘,其框图如图3-10所示,其中0至9为数字键,可以产生所需要的密码,还可以按确认键来确定密码和按清除键来取消所按密码。

3 7 确认 2 6 清除 1 5 9 0 4 8

图3-10 发射部分键盘设计框图

本机部分为4*4矩阵键盘,其框图如图3-11所示,其中0至9仍然是数字键,可以完成本机开锁所需要的密码,确认键和清除键与发射部分的功能相同,按下复位键使单片机初始化,按下修改键则可以修改密码锁密码,开机关机键则控制密码锁的开启和关闭。

18

第三章 遥控电子密码所的硬件电路设计

3 7 复位 拓展 2 6 修改 拓展 1 5 9 确认 0 4 8 清除

图3-11 本机部分键盘框图设计

由于两部分的键盘差不多,那么我选择本机部分的键盘电路为代表如图3-12所示。

3-12 键盘电路图

3.6 显示电路

系统的显示部分的设计有两个方案可供选择,方案一是用LCD液晶显示,方

案二使用6个LED数码管显示。在这里我采用LCD的液晶显示,因为LCD与单片机的接口更加简单,占用的I/O接口也相对LED要少,操作也更加方便,此外因为LCD的功率消耗主要在其内部的驱动IC及其电极上,故它的功耗相比LED要小的多。使用LCD时,只需把线连接到单片机上就可以显示其内容,不需要其他

19

3.7 报警电路设计

正因为如此所以它不能很好地显示图形。

(显示字符和数字)。电路如图3-11所示:

第三章 遥控电子密码所的硬件电路设计

图3-11 显示电路

信号经过一个双极性三极管放大后在驱动蜂鸣器,然后整个系统就会报警,报警

液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干

个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每

报警电路由报警指示灯和蜂鸣器组成,每当单片机发报警信号的时候,报警

外围电路。本系统我采用的液晶显示器为LCD1602。1602液晶也叫1602字符型

位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块

20

第三章 遥控电子密码所的硬件电路设计

指示灯也会亮。报警电路如图3-14所示。

图3-14 报警电路

3.8 电磁锁部分电路

电磁继电器属于电子控制类器件,它具有输入回路(又称控制系统)和输出回路(又称被控制系统),通常情况下应用在自动控制类电路中,它的工作原理实际上用比较小的电流或比较低的电压控制较高的电压、较大电流的一种“开关”。因此在电路中起转换电路、自动调节、安全保护等作用。

大部分电磁继电器由衔铁、触点、电磁铁、弹簧片等组成,它的工作电路由高压工作电路和低压控制电路这两部分构成。电磁继电器亦可以实现自动化控制和中远距离控制。使用者只需在线圈的两端加上一定电压,线圈中会产生一定电流,因而会发生电磁效应,衔铁会在电磁力的吸引下克服返回弹簧的拉力从而吸向铁芯,而后带动衔铁的静触点和动触点吸合。线圈断电之后,电磁的吸力也消失,进而衔铁会因为弹簧的反作用力而返回原位置,使常闭触点(静触点)与动触点释放。这样释放、吸合,从而到达在电路中的切断、导通的目的。对继电器的“常闭、常开”触点,可以用这样区分:继电器的线圈没有通电时处在断开状态的静触点,称“常开触点”;处在接通状态地静触点称“常闭触点”。 电路如图3-14如下:

21

第三章 遥控电子密码所的硬件电路设计

图3-14电磁锁电路

22

第四章 软件设计

第四章 软件设计

软件设计是密码锁系统中非常重要的一部分,软件设计的好坏直接决定系统的性能的优良与否。本系统的软件可以分为两大部分:红外发射模块和软件设计和本机部分软件设计。其中发射模块的程序包括主程序、键盘扫描程序、红外发射程序。本机模块的软件程序包括主程序、红外解码程序、键盘扫描程序、功能键识别程序、LCD显示程序、修改密码程序、报警程序、密码识别程序。

4.1 系统发射部分的软件设计

4.1.1 主程序流程图

开始时单片机处于低功耗的“休眠”状态,当键盘有键按下时,单片机响

应中断,而后系统检测是否真的有键按下,若真有键按下时则判别键值,并调用存在单片机内存的每个按键所对应的脉冲编码信号,编码信号经过与38KHZ的载波信号经过调制电路调制后经红外发射二极管发射出去,其中38KHZ的载波信号是由单片机的定时中断T0产生,主程序流程图如图4-1所示。

N

系统初始化 启动 有键按下? Y

结束 调键盘扫描程序确定键值 调发射程序 图4-1 发射部分主程序流程图

23

第四章 软件设计

4.1.2 延时10ms 子程序

延时10ms子程序是单片机系统中最常见的子程序,在大多数程序中都会使

用到,其程序的设计业比较简单,因此程序也比较简单,其原理就是多次利用循环程序来达到延时10ms,程序流程图如图4-2所示。

初始地址

R7=40

R7=123

N R6-1=0?

Y N R7-1=0?

Y

返回

图4-2延时10ms子程序

4.1.3 键盘扫描程序

发射部分和接收部分都有键盘扫描程序,其中发射部分为3*4矩阵键盘,接收部分为4*4矩阵键盘,接收部分还要有功能键转移程序,此处我们以4*4矩阵键盘来说明键盘扫描程序的设计方法,矩阵键盘的扫描程序流程就不再赘述。

键盘扫描一般采取行扫描法,任务如下:

(1) 首先判断键盘有没有键按下去。所采取的方法就是让键盘所有行输出为低电平,再从I/O口读入列值,如若没有键按下去,读入的值就是FFH,有键按下则就不是这个值。

(2) 去抖动。如果有键按下,系统延时5到10ms,再重新判断有没有键按下,如果此时系统仍然认为有键按下的话,那么就认为这个键处于稳定闭合状态。 (3) 如果有键闭合,求出键值。求键值的方法为对键盘逐行扫描,首先使PC0=0,再读列值,如果读入的列值等于FFH,说明无键按下,然后在对下一行

24

第四章 软件设计

进行扫描,若不等于FFH,说明此行有键按下,求其键值,求键值的时候要采用行值、列值2个存储器。一行扫描完后,如果没有键按下,则行值寄存器加04H,如果有键按下,那么行值存储器保持原值,并转而求相应列值。这时,首先应该将列值的读数右移,移位一次列值存储器加1,一直到有键按下为止。最后把列值和行值相加,就可以得到键值。 键盘扫描程序流程如图4-3所示:。 开始

N 有键按下? Y 延时10ms N 有键按下? Y 延时10ms N 键释放? Y

计算键值

存储键值

调发射码子程序

返回

图4-3 键盘扫描子程序

25

第四章 软件设计

4.1.4 红外发射程序

下面先来介绍一下本设计所采用的红外通信协议,即编码方式。

红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号(载波信号),通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制和通过脉冲串之间的时间间隔来实现信号调制的脉时调制两种方法,现在最为流行的红外协议时日本的NEC协议,NEC协议采用脉宽调制,其解码比较简单。

但本设计并没有严格地按照NEC格式来编码,而是模仿这种格式自己制定了一套红外编码方式,采用的是不同的脉冲宽度来实现二进制的编码,前面已经说过,基带信号必须要经过38KZ(周期为0.26ms)的载波信号调制后才可以发射出去。故用图4-4(a)所示的信号来代表二进制的“1”,其特征是脉冲中低电平与高电平的宽度均为0.52ms,相当于20个0.26ms的宽度,用图4-4(b)所示的信号来代表二进制的“0”,其特征为高电平宽度为0.52ms,而低电平为1.04ms,相当于40个0.26ms的宽度。

0.52ms 0.52ms 1.04ms 0.52ms 图(a)“1”的表示 图(b)“0”的表示

图4-4 基带信号“1”和“0”的表示

数据的传输格式分为引导吗、数据码、数据反码为组成,其中起始位为9ms的高电平额4.5ms的高电平组成,数据位为4位二进制数,数据反码是数据位的反码形式,用来验证数据接收的准确性,如图4-5所示。 9ms 4.5ms 数据码

..........

图4-5 传输串行信号格式

26

第四章 软件设计

硬件实现调制:调制的原理就是在数据码的高电平时允许38KHZ的信号通过,在数据码低电平时不允许信号通过,即输出为0,调制的方法有硬件调制和软件调制,虽然软件实现调制更为方便,也节省了硬件资源,但是由于程序相对比较难写,因此本设计使用硬件调制,调制电路在上一章已经介绍,在此就不再赘述。

发射程序流程图如图4-6所示。当系统识别按键后,调用红外发射程序,将此按键对应的脉冲编码串调出并开始执行红外发射程序,先发射9ms和4.5ms的低电平作为引导码,然后对数据串由高位到低位逐一发射,直到发射完毕。

N Y 码值为0? N Y 修改数据缓冲区 发完8位? 数据1发射程序 数据0发射程序 开始 发射引导码 取一字节数据并从高位传输 N 数据发射完? Y 结束 图4-6 脉冲发射子程序

27

第四章 软件设计

4.2 主机接收部分程序设计

4.2.1 主程序设计

主机上电启动后,首先初始化,系统处于低功耗状态并等待外部中断,或

本机开锁或遥控开锁或修改密码等。如果有本机按键按下则扫描键盘,核对密码并进行本机开锁,如果检测到遥控器发出遥控信号,则接收红外信号并进行解码等一系列的工作,本机部分主程序流程如图4-6所示。

开始 系统初始化 有键按下? 红外信号? 扫描键盘 接收红外信号 功能键 开锁? 调外部中断程序并译码 密码验证 开锁 结束 图4-6 本机主程序设计

4.2.2 红外接收程序

当遥控部分有按键按下时,红外接收头接收红外信号并进行内部解调,解调

28

第四章 软件设计

得到的原始编码信号通过单片机的外部中断引脚进入单片机进行解码,先判断是不是引导码,不是的话返回,若是引导码则调解码子程序进行吗值判定,当接收完8位时返回。解码的关键是如何识别“0”和“1”,从对位的定义我们可以发现“0”、“1”都以0.52ms为电平,不同的是低电平的宽度不同,“0”为1.02ms,“1”为0.52ms,由于红外线接收头有信号时输出低电平,没有信号时输出高电平,故输出的编码信号与之前相反,当根据高电平的宽度区别“0”和“1”。如果从0.52ms低电平过后,开始延时,0.52ms以后,若读到的电平为低,说明该位为“1”,反之则为“0”,为了可靠起见,延时必须比0.52ms长些,但又不能太长。另外,根据红外编码的格式,程序应该等待 9ms 的起始码和 4.5ms 的结果码完成后才能读码。红外遥控接收程序结构流程图如下图4-7所示。

程序入口

N 有脉冲? Y N 引导码? 检测脉冲宽度 Y 接受16位数据码

转换键值 调密码识别程序 返回 图4-7 解码程序流程图

29

第四章 软件设计

4.2.3 密码识别子程序

密码识别程序的功能是把解出来的原始输入信号输入的密码与原始密码相比较,如果相同则调LCD显示程序使显示器显示“RIGHT”的字样,然后系统开锁,显示屏显示“welcome”的字样。如若密码不相同则提示输入的密码有误即显示“ERROR”,假如输入的密码错误次数超过三次,则系统报警10s钟,密码识别程序流程如图4-8所示。

提示错误 显示ERROR 显示RIGHR 程序入口 密码正确? 开锁 显示welcome

返回 图4-8 密码识别程序流程图

4.2.4 报警部分程序

报警电路的程序设计比较简单,作用就是当密码输错3次后,启动报警程序,蜂鸣器响10s钟,而且系统需要按复位键才可以重新操作,报警部分程序设计流程如图4-9所示。

30

第四章 软件设计

程序入口

错误3次?

报警 10s 显示 ERROR

返回

图4-9 报警部分程序流程图

4.2.5 显示子程序

LCD液晶显示的具体流程如下:在无操作状态下,液晶背光不亮,液晶显示“Enter Password ”,当按下开锁快捷键后,即进入密码输入界面,通过键盘输入密码即可开锁,如果密码正确,显示器显示“RIGHT”,并在开锁后显示“welcome”,如果不正确则显示“ERROR”,在开锁状态下,当修改密码按键按下便进入修改密码界面“Enter Password1”,输入完成后,进入另一确认密码界面“Enter Password2”,防止误操作。若果输入错误,则可按下清除键。当开锁时,若三次输入错误密码,则开始报警。

显示子程序的功能就是遥控密码锁各种功能在LCD上显示,在先是之前还要对显示屏进行初始化,过程如下:清屏,将显示缓冲区内容写入空格,光标复位,地址计数器AC清零。功能设置,根据显示屏与处理器的连接来选择显示行数和设置字体的大小。开/关的显示设置,即控制光标显示、字符闪烁等。输入方式设置。初始化后就可以进行显示,显示时应该先进行定位,再向当前显示缓冲区写进要显示的内容。LCD的处理速度比CPU稍慢,向它写入一定的内容需要一定的时间,所以在执行每条指令前,一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。由于LCD命令的执行的时间是固定的,时间比较短,因此可以通过延时来完成,显示程序的流程如图4-10。

31

第四章 软件设计

子程序入口 初始化 Y

LCD忙吗? N 单片机向LCD写命令

4.2.7 修改密码子程序

修改密码程序的功能是对密码锁的原始密码进行修改。当按下修改密码按键时系统调用此程序,进入修改密码界面“Enter Password1”,输入完成后,进入另一确认密码界面“Enter Password2”,防止误操作。若果输入错误,则可按下清除键,但当输入的密码不同时,则显示屏显示错误。修改密码子程序流程如图4-11所示。

单片机向LCD写数据 显示数据 返回 4-10 显示程序流程图

32

第四章 软件设计

程序入口 新密码 再次输入 一样?

Y N

保存 显示ERROR 显示 返回

图4-11 密码修改程序流程图

33

第五章 结论

第五章 结论

本次设计以单片机为核心,利用红外线通信技术,配合独特的软件编程实现了红外遥控密码锁,红外密码锁的体积小,成本低,并且可进行遥控开锁,低耗低,可用普通碱性电池供电,使用十分方便。如经优化设计,成本可以进一步降低。红外遥控密码锁锁具有广阔的市场前。本次设计的分析结果表明,红外遥控密码锁的设计完成了要求的各项指标。在这次毕设中,我通过查阅相关资料温习相关知识,利用所学得的知识了解新的知识,并根据掌握的知识来选择方案和器件,在密码锁系统设计的过程中,努力简化硬件线路,充分发挥软件灵活的特点,满足密码锁设计的要求,提高了我对以前知识的认知度,同时巩固了旧的知识和学习新的知识的能力。

设计的重点和难点是:一,需要首先了解红外遥控点走密码锁的结构和工作原理,因为之前从来没有接触过这方面的知识。二,需要了解红外通信技术的原理和技术,虽然之前课堂上学过通信原理,但对红外通信还是一头雾水。三,单片机接口技术及程序的编写也是一个挑战。

设计的亮点:红外遥控部分的编码和接受部分的解码都是由软件来实现,而不是用传统的编码器和解码器,这就节约了资源,节省了成本。

设计的不足:没有把输错密码一次的系统提示和输错三次报警分开来而是只用了一个蜂鸣器,只是报警的时间不同而已。

总之,这次毕设是对所学知识的一次大考试,我才开始明白自己的知识原来浅薄,虽然我就要毕业了,但这只是另外的开始,以后的路还有很长,我要更加努力的学习,立志为国家的科研事业贡献自己微不足道的力量。

34

参考文献

参考文献

[1]谢自美,电子线路综合设计 武汉:华中科技大学出版社,2006. [2]元红妍,张鑫,电子设计实验教程 济南:山东大学出版社,2005. [3]姚福安,电子设计与实践 济南:山东科学技术出版社,2001 [4]陈永甫,红外探测与控制电路 北京:人民邮电出版社,2004

[5]何希才,周炳强,通用电子电路应用400例 北京:电子工业出版社,2005 [6]傅劲松,电子制作实例集锦 福州:福建科学技术出版社,2006 [7]陈卿,侯薇,家电控制与检测集成电路 北京:中国计量出版社,2005 [8]谭博学,集成电路原理与应用 北京:电子工业出版社,2003

[9] 何立民,MCS-51系列单片机应用系统设计 北京:北京航空航天大学出版社 [10]赵负图 光电检测控制电路手册 北京:化学工业出版社,2001 [11]梁廷贵 现代集成电路实用手册 北京:科学技术文献出版社,2002 [12]雷丽文,朱晓华等 微机原理与接口技术 北京:电子工业出版社,2001 [13]谢小平 单片机AT89C51在工业中的应用 中国科学院技术研究所,1999 [14]张毅刚、彭喜源 MCS-51单片机应用设计 哈尔滨工业大学出版社,1998 [15]樊昌信等 通信原理 西安:国防工业出版社,2006

35

发射部分:

附录 Ⅰ

附录 Ⅰ:总机电路图

36

接收部分:

附录

37

附录 Ⅱ

附录Ⅱ:主要源程序代码

发射部分主要源程序:

#include

#include //_nop_ (); void scan_k0(void); //0 void scan_k1(void); //1 void scan_k2(void); //2 void scan_k3(void); //3 void scan_k4(void); //4 void scan_k5(void); //5 void scan_k6(void); //6 void scan_k7(void); //7 void scan_k8(void); //8 void scan_k9(void); //9 void scan_k10(void);//10 void send_9000(void); void send_4500(void); void send_560(void); void send_565(void); void send_1685(void); void send_2000(void);

void send(unsigned char Data);

void timer0_int(void);// interrupt 1 ; //T0中断子程序 sbit OUT=P1^0;//发射脚 sbit K0 =P2^0; sbit K1 =P2^1; sbit K2 =P2^2; sbit K3 =P2^3; sbit K4 =P2^4; sbit K5 =P2^5; sbit K6 =P2^6; sbit K7 =P2^7;

38

附录 Ⅱ

sbit K8 =P1^5; sbit K9 =P1^6; sbit K10=P1^7;

sbit TEST1=P3^0;//TEST1 sbit TEST2=P3^1;//TEST2 sbit TEST3=P3^2;//TEST3 sbit TEST4=P3^3;//TEST4

unsigned char ss ; //system status

n10;

unsigned char n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,

unsigned char wait; //等待释放 void main() {

OUT=0; //关闭发射

TMOD=0x11; //定时器0和1都设置为方式1即16位计数

TL0=0x30;TH0=0x0F8; //T0定时2ms EA=1; //开放总中断 ET0=1; //允许T0中断 ET1=0; //禁止T1中断 TR0=1; //启动T0 while(1); }

void scan_k0(void) // {

if (K0==0) //按键按下时I/O口为0. {

if (++n0>=9) //键盘防抖延时 {

wait=250,n0=0; send(0);

}

39

附录 Ⅱ

} }

void scan_k1(void) // {

if (K1==0) //按键按下时I/O口为0. {

if (++n1>=9) //键盘防抖延时2 {

wait=250,n1=0; send(1);

} } } void scan_k2(void) // {

if (K2==0) //按键按下时I/O口为0. {

if (++n2>=9)

{

wait=250,n2=0; send(2);

} } }

void scan_k3(void) // {

if (K3==0) //按键按下时I/O口为0. {

if (++n3>=9) {

40

附录 Ⅱ

wait=250,n3=0; send(3);

} } }

void scan_k4(void) // {

if (K4==0) //按键按下时I/O口为0. {

if (++n4>=9) {

wait=250,n4=0;

send(4);

} } }

void scan_k5(void) // {

if (K5==0) //按键按下时I/O口为0. {

if (++n5>=9) {

wait=250,n5=0; send(5);

} } }

void scan_k6(void) // {

if (K6==0) //按键按下时I/O口为0.

41

附录 Ⅱ

{

if (++n6>=9) {

wait=250,n6=0; send(6);

} } }

void scan_k7(void) // {

if (K7==0) //按键按下时I/O口为0. {

if (++n7>=9) {

wait=250,n7=0; send(7);

} } }

void scan_k8(void) // {

if (K8==0) //按键按下时I/O口为0. {

if (++n8>=9) {

wait=250,n8=0; send(8);

} } }

42

附录 Ⅱ

void scan_k9(void) // {

if (K9==0) //按键按下时I/O口为0. {

if (++n9>=9) {

wait=250,n9=0; send(9);

} } }

void scan_k10(void) // {

if (K10==0) //按键按下时I/O口为0. {

if (++n10>=9) {

wait=250,n10=0; send(10);

} } }

void send(unsigned char Data) {

EA=0; //关中断 //--下面开始发码头-- send_9000(); send_4500(); //..下面开始发识别码.. send_565();//0 send_560(); send_565();//1 send_1685();

43

附录 Ⅱ

send_565();//0 send_560(); send_565();//0 send_560(); send_565();//1 send_1685(); send_565();//0 send_560(); send_565();//1 send_1685(); send_565();//1 send_1685();

//...下面开始发数据码和数据反码. send_565();//D0

if((Data & 0x01)==1)send_1685();else send_560(); send_565();//D1

if((Data & 0x02)==2)send_1685();else send_560(); send_565();//D2

if((Data & 0x04)==4)send_1685();else send_560(); send_565();//D3

if((Data & 0x08)==8)send_1685();else send_560();// send_565();//D0反

if((Data & 0x01)==1)send_560();else send_1685(); send_565();//D1反

if((Data & 0x02)==2)send_560();else send_1685(); send_565();//D2反

if((Data & 0x04)==4)send_560();else send_1685(); send_565();//D3反

if((Data & 0x08)==8)send_560();else send_1685(); send_2000();//结束信号!//++++++++++++++++++++++ OUT=0; //停止发送! EA=1; //开中断 }

44

附录 Ⅱ

void send_9000(void) {

TH1=0x0DC;TL1=0x0D8; //9000us,开始发码头 TF1=0; //清除溢出标志////++++++++++++++ TR1=1; //启动T1 OUT=1; while(!TF1); }

void send_4500(void) {

TH1=0x0EE;TL1=0x06C; //4500us TF1=0; //清除溢出标志 OUT=0; while(!TF1); }

void send_560(void) {

TH1=0x0FD;TL1=0x0D0; //560us TF1=0; //清除溢出标志 OUT=0; while(!TF1); }

void send_565(void) {

TH1=0x0FD;TL1=0x0CB; //565us TF1=0; //清除溢出标志 OUT=1; while(!TF1); }

void send_1685(void) {

TH1=0x0F9;TL1=0x06B; //1685us

45

附录 Ⅱ

束.

TF1=0; //清除溢出标志 OUT=0; while(!TF1); }

void send_2000(void) {

TH1=0x0F8;TL1=0x030; //2000us TF1=0; //清除溢出标志 OUT=1; while(!TF1); }

void timer0_int(void) interrupt 1 //T0中断子程序 //2ms计数器;{

TL0=0x30;TH0=0x0F8; //重装定时器0常数;//定时2ms if (wait==0) //如果之前没有键按下或者有键按下延时结

{

scan_k0(); scan_k1(); // scan_k2(); // scan_k3(); // scan_k4(); // scan_k5(); // scan_k6(); // scan_k7(); // scan_k8(); // scan_k9(); // scan_k10(); // } else

wait--; }

E N D

46

附录 Ⅱ

红外遥控接收源程序

ORG 0000H

AJMP MAIN; 转入主程序

ORG 0003H; 外部中断P3.2脚INT0入口地址 AJMP INT ; 转入外部中断服务子程序(解码程序)

MAIN: LCALL YS100ms ;延时100ms

解码程序:

MOV DPTR,#TAB

SETB EA ; 打开CPU总中断请求

SETB IT0 ; 设定INT0的触发方式为脉冲负边沿触发 SETB EX0 ; 打开INT0中断请求

MOV TMOD,#01H; T0方式1,16位计数器 SETB TR0; 启动T0 CLR ET0; 禁止T0中断 MOV P0,#0; LED不显示 CLR P2.7

LCALL SPEAK AJMP $

INT: CLR EA ; 暂时关闭CPU的所有中断请求

CLR A

MOV R6,#10; #10

H9: ACALL YS861 ; 调用861微秒延时子程序

JB P3.2,EXIT1 DJNZ R6,H9 MOV P1,#1 ; TEST1 MOV R6,#5

H45: ACALL YS861; 调用861微秒延时子程序 MOV C,P3.2

JNC EXIT1 DJNZ R6,H45 ACALL YS500 MOV P1,#2

47

附录 Ⅱ

C_A0_0: JNB P3.2,$ ; 等待地址码第一位的高电平信号 LCALL YS861

JB P3.2,EXIT1; 如果为1就退出

C_A1_1: JNB P3.2,$ ; 等待地址码第一位的高电平信号 LCALL YS861

JNB P3.2,EXIT1 LCALL YS1000

C_A2_0: C_A3_0: C_A4_1: C_A5_0: C_A6_1: C_A7_1: EXIT1: NEXT:

JNB P3.2,$

LCALL YS861 JB P3.2,EXIT1

JNB P3.2,$

LCALL YS861 JB P3.2,EXIT

JNB P3.2,$

LCALL YS861 JNB P3.2,EXIT

LCALL YS1000 JNB P3.2,$

LCALL YS861 JB P3.2,EXIT

JNB P3.2,$ LCALL YS861 JNB P3.2,EXIT LCALL YS1000 JNB P3.2,$ LCALL YS861 JNB P3.2,EXIT LCALL YS1000 MOV P1,#3 AJMP NEXT AJMP EXIT NOP

MOV R1,#1AH ; 设定1AH为起始RAM区 MOV R2,#2; 接收从1AH到1BH的2个内存

48

附录 Ⅱ

PP: MOV R3,#4; 每组数据为4位

JJJJ: JNB P3.2,$; 等待地址码第一位的高电平信号 LCALL YS861

MOV C,P3.2 JNC UUU; 如果为0就跳转到UUU

LCALL YS1000; 检测到高电平1的话,延时1毫秒等待脉冲高电平结束

UUU: EXIT: OK: YS861: D1:

RRC A; 将C中的值0或1移入A中的最低位 DJNZ R3,JJJJ;

SWAP A; 接收满4位进行处理

MOV @R1,A; 将A中的数暂时存放在R1数值的内存中 INC R1; 对R1中的值加1,换下一个RAM

DJNZ R2,PP ; 接收完4位数据码和4位数据反码 MOV P1,#4 ; TEST4,OK!

MOV A,1AH

CPL A; 对1AH取反后和1BH比较 ANL A,#0FH; 屏蔽高4位

MOV B,1BH; TEST

CJNE A,1BH,EXIT;如果不等表示接收数据发生错误 MOV P1,#5 ; TEST5 MOV A,1AH

MOVC A,@A+DPTR ;查表

LCALL SPEAK; 蜂鸣器响0.1ms,表示解码成功! MOV P0,A

CLR P2.7; 关闭蜂鸣器 AJMP OK

MOV P0,#79H ;显示解码出错\"EE\" MOV P1,R6 ;TEST SETB EA ; 允许中断 RETI ; 退出解码子程序 MOV R4,#20 ; 延时子程序1, MOV R5,#20 ; 1us

49

附录 Ⅱ

DJNZ R5,$ ; 2us

DJNZ R4,D1 RET

YS4730: MOV R4,#10 ; 延时子程序2,精确延时4730微秒 D2: MOV R5,#235; (2us*235+1+2)*10+1=4731 DJNZ R5,$ DJNZ R4,D2 RET

YS1000: D3: YS500: YS100ms: D5: SPEAK: LOOP1: LOOP2: TAB: 7FH,6FH,00H

MOV R4,#2; 延时程序3,精确延时1000微秒 MOV R5,#248 DJNZ R5,$ DJNZ R4,D3 RET

MOV R5,#248; 延时子程序4,精确延时500微秒 DJNZ R5,$ RET

MOV R4,#200; 延时程序5,精确延时100m秒 MOV R5,#248 DJNZ R5,$ DJNZ R4,D5 RET

MOV R6,#1

MOV R7,#200; 发声100ms * 1 MOV TH0,#0FEH

MOV TL0,#00CH; 500us定时 CLR TF0 JNB TF0,$ CPL P2.7

DJNZ R7,LOOP2 DJNZ R6,LOOP1 RET

DB 03FH,06H,5BH,4FH,66H,6DH,7DH,07H,50

因篇幅问题不能全部显示,请点此查看更多更全内容