O_基于51单片机的双核GPS电子密码锁_毕设
O_嵌入式专题目录
摘要
本设计改进了原有的电子密码锁的固有思维,加入了GPS定位系统对保险箱的位置进行判定,可以进一步保证小型保险箱的安全。本电子密码锁以51核心的单片机为主体,使用串口液晶屏、断电可存储的ROM、GPS模块、电压转换单元及继电器附属电路作为外围系统,将51单片机的空间和性能最大化发挥,性价比更高。
前言
自古至今,每个人都有着自己的隐私和秘密,亦或是特别珍贵的物品,为此很多银行及安全行业的商家推出了各式各样的保险装置,而保险装置的核心部分,那就是锁了。锁的安全性基本就决定了保险箱的整体安全了。
人们的安全意识随着社会的发展和进步愈发的提高。从防盗门锁钥匙的发展来看,从曾经的单侧钥匙,到如今的多通道双层面多排齿钥匙,人们对安全的需求可以说是指数型增长。
传统的机械锁密匙固定且排列组合不多,在长期的经验积累中,市面上曾出现过一种自动尝试暴力破解的万能钥匙,只要不长的时间就可以尝试出正确的密匙组合排列,大大降低了人们心中对机械锁可靠性的信任。
另一方面,机械锁的钥匙都是实体,随身携带总不能保证不会遗失或被偷窃,而且随着机械锁的加密等级提高,钥匙的体积也随之增大,给携带带来诸多不便。
随着社会的发展,越来越多的物品发展为电子化、信息化,锁作为生活中必不可少的用品,自然是逃不脱社会发展的潮流,电子锁也在近几年如雨后春笋般让越来越多的人熟知。
电子锁可以通过输入信息来产生密匙,无需实体钥匙,且密匙可根据算法和种子的不同产生无可估量的组合排列种数,在加密级别上就多机械锁一个层次,让其更加安全方便。
电子锁又分为电子机械锁和电子密码锁,电子密码锁作为几乎纯电子的器件,最大的好处是其保值性。电子密码锁是以密匙作为加密机制来保证安全可靠的,而加密的机制都是在软件层面进行更新换代,硬件基本无需改变,因此一套硬件依托于不同的加密算法可以产生多种不同的加密级别。正是因为电子密码锁的多变性,在提高安全等级的同时,降低了用户换锁的频率,而且不至于钥匙丢了就要换锁,相当于一套锁的钱买到可以终生使用的安全。
1 绪论
1.1发展状况
根据资料,自20世纪30年代开始,电子密码锁就开始有所研究,只是因为当时技术有限,研究出的电子锁体积大,成本高,安全性也得不到保障,因此无法推广普及。
到了80年代后,集成电路和半导体技术发展迅猛,信息技术也开始融入到各行各业,以此为依托的新式电子锁开始体现出其独特优点,电子锁的种类也逐步多样起来,现市面上常见的电子密码锁有数字锁、指纹锁、声纹锁、激光锁、图纹锁、虹膜锁、DNA锁等等,各式各样的锁在软件接口协调化后可以随意组合,可形成更方便、更安全、更稳定的多种需求的加密级别,在不同场合搭配更适应的电子锁,性价比更高,更具有时代特色,符合社会发展的潮流。
如今包含环境监测的电子密码锁种类不多,但在功能上并不逊色,比如加入温湿度传感器可使锁在固定的季节打开,加入时钟模块可以限制在固定的时间段打开等等,适合加密级别较高的场所,安全性更高,发展前景优秀,而且具有很大的提升空间,有很高的研究价值。
1.2设计特色及延伸
无论是单一的数字密码锁,还是基于大数据云平台的智能电子锁,都只是在传统加密层面进行平行的创新,纵然算法再过复杂,结构再过新颖,终归无法避免相应的解密算法的产生,因而也面临着潜在的安全性问题。
本设计从电子锁的另一维度着手,使电子锁拥有自己独立的判断“意识”,将电子密码锁对环境的检测与传统的密匙判断相结合,给予锁更高的安全性,位置还可经过时间加密后存储,让环境监测更加严密。
本设计从《速度与激情5》与《神盾局特工1》中获得灵感,保险柜的自毁装置可以从环境层面来判定,这样就避免了不法之人强行将保险柜带离安全地带软磨硬泡进行破解。
由于本设计尽大化使用了51单片机的资源,继本研究之后,还可将代码移植到STM32上,并添加严谨的加密算法和其他功能,使GPS电子密码锁功能更加完备,逻辑更加清晰,交互更加直观方便。
在GPS加数字密码锁的基础上,还留有十余多引脚未用,在后期拓展研究中,可以添加其他模块来完善本设计,如加入指纹模块和无线模块来实现依托于云数据库的指纹密码锁,并可以有丰富的指纹库空间,从而实现大量用户的共用密码锁。而将更换到STM32系列开发板后,还可以加入摄像头来采集数据,然后通过云AI库来实现在线的面部识别和语音交互的功能。
2 总体思路及流程设计
2.1前期思路规划
使用STC89C52RC作为核心处理器,通过中断函数获取当前GPS位置信息,将所获取到的经纬度信息转换后与系统设定的经纬度信息比对,超出范围时无法进入密码输入界面。若位置信息正确,则进入密码输入界面,输入六位密码后方可按确认键和其他功能键,取消键可随时按下,可以重置输入或重新上锁。
开锁后进入功能菜单,包含复位初始密码、修改密码、显示GPS坐标的功能,按下取消键重新上锁,复位或修改密码后即将密码存入断电可存储的EEPROM,下次开机后即可从EEPROM读取密码进行比对。
开锁使用双色共阴极LED灯珠指示,供电未开锁时显示红色,开锁后显示绿色,继电器打开用来模拟开锁。蜂鸣器用来进行按键的反馈和密码正确与否的反馈,分别为鸣响一次、两次和三次。
除了LCD12864和继电器供电电压特殊以外,其他所有单元均为+5V供电,220VAC电压经过转换后得到12VDC电压,5V和3.3V可以使用51板载电压,也可打开12V开关使用ASM1117转换电压。
2.2流程图

图2-1系统流程图
Figure 2-1 the system flow sheet
图2-1为总体流程,可在开锁菜单中添加更多功能,硬件引出的接口使得添加模块和功能的操作都很方便。核心板自带USB转TTL可以更加方便的下载程序更新固件,同时还可以进行测试供电。
括号内为可选功能。
后续功能补充,可见附录(若无附录,则无后续功能)。
3 软硬件支持
3.1 4x4矩阵键盘
3.1.1单按键检测
3.1.1.1按键消抖
1) 单按键分析
单按键按下时会有一下几种情况:
1、按下按键后马上松开,可以认作为按下一次。
在这里,按键的关闭时间取决于人的按下松开速度,不过一般都要在60ms以上。
2、按下按键后保持一小段时间不松开,可以认作为点击一次或连续点击。
3、按下按键不松开是一种状态(闭合保持),之后松开按键是另一种状态(断开保持)。
单按键可以有以下两种监测方法:
1、检测电压,单片机不断的扫描输入输出口的电平高低,CPU负担较重。
2、检测中断,中断信号来临后再检测,可以节约CPU的资源,保持CPU性能良好。
单按键消除按键抖动的思路:
2)软件去抖的几个思路
1、软件延迟
首先定义一个记录按键状态的变量,然后循环检测按键的状态,每当按键的状态改变时,即认为按键可能被按下,之后再通过循环函数延迟一段时间;若是延迟之后的按键依然是按下的状态,就确定按键被按下了。
2、中断加延迟
单片机一直循环会占用很多CPU资源,特别是单片机执行程序的时间和效率,这时可以使用中断来降低CPU的占用率。
当单片机处于中断模式下,CPU无需循环检测按键的状态,而是只当中断产生的时候才进入延时函数进行消抖。这时,延时函数可以有两种情况:
一种是直接在中断函数中运行,这种方式会导致中断函数占用的时间加长,影响CPU的响应速度;
另一种是在中断函数之外运行,这种方式相比之下会缩短中断函数的时间,但需要设置一个标志位来判断是否有中断产生,而且单片机依然需要不停的循环检测,只不过是节约了查询的时候读取输入输出口的状态这一步骤。
5)附:对一次按键过程中产生不止一次中断状况的处理:
前面分析过,机械按键在一次按键的过程中,可能会产生不止一次的中断,这时可以设置一个标志位来表示当前是否处于对按键动作处理的阶段,如果处于这个阶段,即使再次产生中断也不进行任何响应,这样就可以忽略由按键抖动产生的多余中断了。
3.1.1.2 按键检测
1)扫描检测
单片机每隔一段时间,就去检测一下IO口的状态,未触发的时候,该引脚是高电平,触发的时候是低电平。[[1]](#refer-anchor-1)
测试示例:
用按键操作LED灯,每次按下按键时,LED灯的状态翻转一次。使用延时函数加标志位的方式消除按键抖动。
2)中断检测
在STC89C52RC单片机上,能检测外部中断的接口有两个:P3.2 (INT0) 与 P3.3(INT1)。系统上电后,它们默认是普通的引脚[[2]](#refer-anchor-2);而配置好相关的寄存器之后,它们就变成了能够检测中断的引脚。
STC89C52RC有两个与外部中断有关的寄存器:
控制定时器的特殊功能寄存器TCON:
| 位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| 符号 | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
表3-1特殊功能寄存器TCON
Form 3-1 special function register TCON
控制中断开关的特殊功能寄存器IE:

表3-2特殊功能寄存器IE
Form 3-2 special function register IE
用按键控制LED灯的翻转。使用中断下降沿触发的方式检测按键。
3.1.2 矩阵键盘
3.1.2.1 矩阵键盘分类
1)按结构原理:触点式开关按键、无触点开关按键。
2)按接入方式:独立式按键键盘、矩阵式键盘。

图3-1 4x4矩阵键盘原理图
Figure 3-1 4x4 matrix keyboard schema
3.1.2.2 矩阵键盘检测方法
矩阵键盘一般都是直接连到单片机的输入输出口上,而因为单片机的引脚内部有上拉电阻的缘故,正常状态下,行线和列线都是处于高电平的状态。在进行按键扫描时,让某个引脚输出0,当有按键与这个引脚接通时,也就是当与这个脚相关的按键按下时,就可以把该引脚的1拉到0,这时就可以判断有按键按下了。
3.1.2.3 行列扫描功能测试
按键表
| 行 | 列 | Bin | Hex | 行 | 列 | Bin | Hex |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 1110 1110 | 0xEE | 3 | 1 | 1110 1011 | 0xEB |
| 1 | 2 | 1101 1110 | 0xDE | 3 | 2 | 1101 1011 | 0xDB |
| 1 | 3 | 1011 1110 | 0xBE | 3 | 3 | 1011 1011 | 0xBB |
| 1 | 4 | 0111 1110 | 0x7E | 3 | 4 | 0111 1011 | 0x7B |
| 2 | 1 | 1110 1101 | 0xED | 4 | 1 | 1110 0111 | 0xE7 |
| 2 | 2 | 1101 1101 | 0xDD | 4 | 2 | 1101 0111 | 0xD7 |
| 2 | 3 | 1011 1101 | 0xBD | 4 | 3 | 1011 0111 | 0xB7 |
| 2 | 4 | 0111 1101 | 0x7D | 4 | 4 | 0111 0111 | 0x77 |
表3-3按键扫描返回值
Form 3-3 return value of key-scan
3.1.3 金属键盘B018020
特点:按键坚固耐用,可以防敲击破坏,具有防尘、防水和防腐蚀的能力,而且产品符合环保标准。
产品矩阵接线图/引脚图如图3-2所示:


图3-2金属键盘接线/引脚
Figure 3-2 wiring/pins of metal keyboard
3.2 存储模块AT24C02
3.2.1 技术资料
3.2.1.1 概述
AT24C02可以断电存储,而且不受核心板通电与否的影响,用来存储按键密码和标志标志位等需要设置保存的数据,而且芯片体积不大,在PCB板上很容易安排,接线也很简单方便,性价比高,适合简单的小设计项目。
3.2.1.2 特点
1) 宽范围的工作电压1.8V~5.5V
2) 自动递增地址
3) 2线串行接口,完全兼容I2C总线
4) 可按字节写
5) 可按字节,随机和序列读
3.2.1.3 引脚说明
{% raw %}
| SDA | 串行地址和数据输入/输出。SDA是双向串行数据传输引脚,漏极开路,需外接上拉电阻到Vcc(典型值10KΩ)。 | ![]() |
| SCL | 串行时钟输入。SCL同步数据传输,上升沿数据写入,下降沿数据读出。 | |
| WP | 写保护。WP引脚提供硬件数据保护。当WP接地时,允许数据正常读写操作;当WP接Vcc时,写保护,只读。 | |
| GND | 地 | |
| Vcc | 正电源 |
{% endraw %}
表3-4 AT24C02引脚说明
Form 3-4 pin information of AT24C02
3.2.2 功能测试
向存储模块中在同一地址先写后读一个字符串,将读出的字符串存入另一变量中,用其他硬件表示出该变量。
3.3 液晶LCD显示屏OCMJ4X8C
3.3.1 技术资料
3.3.1.1 概述
在便携式低功耗仪器中,为减小体积,一般使用液晶LCD[[3]](#refer-anchor-3)。点阵式液晶显示模块可 以显示各种各样的字符[[4]](#refer-anchor-4)。而且不用取模软件就能显示汉字[[5]](#refer-anchor-5)。采用C51语言编程,驱动液晶模块实现并行传输方式的字符、汉字以及图形显示[[6]](#refer-anchor-6)。LCD12864 IP核的硬件设计是用Verilog HDL写的[[7]](#refer-anchor-7)。
主要参数:
1、工作电压(VDD):4.5~5.5V
2、LCD 驱动电压(Vo):0~7V
3.3.1.2 模块引脚说明
| 引脚 | 名称 | 方向 | 说明 | 引脚 | 名称 | 方向 | 说明 |
|---|---|---|---|---|---|---|---|
| 1 | VSS | - | GND(0V) | 11 | DB4 | I/O | 数据4 |
| 2 | VDD | - | 逻辑电源电压(+5V) | 12 | DB5 | I/O | 数据5 |
| 3 | NC | - | LCD电源电源(悬空) | 13 | DB6 | I/O | 数据6 |
| 4 | RS(CS) | I | H:数据、L:指令代码(串行使能) | 14 | DB7 | I/O | 数据7 |
| 5 | R/W(STD) | I | H:写、L:读 (串行模式串行数据) | 15 | PSB | I | H:并行模式 L:串行模式 |
| 6 | E(CLK) | I | 使能,H有效(时钟) | 16 | NC | - | 空脚 |
| 7 | DB0 | I/O | 数据0 | 17 | /RST | I | 复位,L有效 |
| 8 | DB1 | I/O | 数据1 | 18、19只留了位置并无引脚引出 | |||
| 9 | DB2 | I/O | 数据2 | 20 | LEDA | - | 背光正(+5V) |
| 10 | DB3 | I/O | 数据3 | 21 | LEDB | - | 背光负(0V) |
表3-5 OCMJ4X8C引脚说明
Form 3-5 pin information of OCMJ4X8C
3.3.1.3 串行接口时序图

图3-3 MPU串行写资料到模块(TA=25℃,VDD=4.5V)
Figure 3-3 MPU write data to module in serial way(TA=25℃,VDD=4.5V)
3.3.1.4 显示坐标关系
汉字字符显示坐标如表3-6所示(OCMJ4X8C、OCMJ4X8C_3、OCMJ4X8C_6)
| X坐标 | X坐标 | X坐标 | X坐标 | X坐标 | X坐标 | X坐标 | X坐标 | |
|---|---|---|---|---|---|---|---|---|
| Line1 | 80H | 81H | 82H | 83H | 84H | 85H | 86H | 87H |
| Line2 | 90H | 91H | 92H | 93H | 94H | 95H | 96H | 97H |
| Line3 | 88H | 89H | 8AH | 8BH | 8CH | 8DH | 8EH | 8FH |
| Line4 | 98H | 99H | 9AH | 9BH | 9CH | 9DH | 9EH | 9FH |
表3-6汉字字符显示坐标
Form 3-6 coordinates for chinese character display
3.3.1.5 显示步骤
显示资料RAM(DDRAM):本系列模块可以显示三种字型,分别是半宽的HCGROM字型、CGRAM字型及中文CGROM字型[[8]](#refer-anchor-8)。三种字型的选择,由在DDRAM中写入的编码选择。在0000H~0006H的编码中将选择CGRAM的自定字型,02H~7FH的编码中将选择半宽英数字的字型,至于A1以上的编码将自动的结合下一个字节,组成两个字节的编码达成中文字型的编码 BIG5(A140~D75F)GB(A1A0~F7FF)[[8]](#refer-anchor-8)。
3.3.2 显示测试
通过串行方式使LCD在各行及整屏显示字符,并通过对数组的赋值修改实现对屏幕的界面显示刷新。
3.3.3 矩阵键盘输入LCD显示测试
首先使用1.2.3.中的行列扫描检测键值,然后对键值进行编码存入数组中,调用3.2.中的显示函数对按键值进行实时刷新显示,并有初步的位数限制条件和确认输入功能。
3.3.4 附:键盘密码锁功能实现
将4x4矩阵键盘、LCD12864显示、EEPROM存储相结合,实现比对密码、设置密码、清除密码、复位密码、功能按键的独立密码锁功能。
3.4 GPS模块
3.4.1 技术资料
3.4.1.1 概述
传统的全球定位系统(GPS)是不适合室内环境位置[[9]](#refer-anchor-9)。ATGM332D-5N系列模块是12X16尺寸的高性能BDS/GNSS全星座定位导航模块系列的总称,该系列模块产品都是基于中科微第四代低功耗GNSS SOC单芯片AT6558,支持多种卫星导航系统,包括中国的BDS (北斗卫星导航系统),美国的GPS,俄罗斯的GLONASS,欧盟的GALILE0日本的QZSS以及卫星增强系统SBAS (WAAS,EGNOS, GAGAN,MSAS)。AT6558是一款真正意义的六合一多模卫星导航模块,包含32个跟踪通道,可以同时接收六个卫星导航系统的GNSS信号,并且实现联合定位、导航与授时[[10]](#refer-anchor-10)。本系列模块具有高灵敏度、低功耗、低成本等优势,适用于车载导航、手持定位、可穿戴设备,可以直接替换U-blox NEO系列模块[[11]](#refer-anchor-11)。支持对GPS全球定位系统定位信息的接收以及其定位参数的提取和WGS-84的大地坐标转换为高斯平面坐标[[12]](#refer-anchor-12)。
3.4.1.2 型号分类

表3-7 ATMG3332D型号分类
Form 3-7 type classification of ATMG3332D
3.4.1.3 引脚定义
| 序号 | 名称 | 说明 |
|---|---|---|
| 1 | VCC | 电源(3.3V~5.0V) |
| 2 | GND | 地 |
| 3 | TXD | 串口发送脚,可接单片机的RXD |
| 4 | RXD | 串口接收脚,可接单片机的TXD |
| 5 | PPS | 时钟脉冲输出脚 |
表3-8 GPS模块引脚定义
Form 3-8 pin definition of GPS module
3.4.1.4 经纬度-度分秒计算
假设获取到的GPS输出数据为:
N 2318.13307 纬度 E 11319.72036 经度
将其转换为度(°)分(′)秒(″):
纬度=2318.13307/100=23°
2318.13307%100=18′
0.13307*60=7.984″
经度=13319.72036/100=113°
13319.72036%100=19′
0.72036*60=43.2216″3.4.1.5 启动模式说明
冷启动
在找到一颗卫星之后,要开始下载星历,如果在下载的途中因为信号程度的变化,如比开车途中,车的位置不停的改变,它接受的信号也是无法获得完整的信息,势必造成冷启动的过程延长,在信号弱的地方下载星历的时候也会延长。
当GPS模块连续的寻找到三颗或以上的卫星的时候,GPS查找新卫星所设定的范围就会缩小,2D定位确定,接下来就是花的时间去找更多的卫星,到了四颗卫星的时候, 3D定位,也就是高度也确定了。
当信息都下载得差不多了的时候,模块才正式的进入信号稳定接受的状态,也就是轻微的移动或是信号的变化对它的影响已经不是太强烈了,主要是内部存储了相应的当前星历,即使短暂丢失,也能够很快的找回到当前的坐标。
热启动
有的时候我们需要短暂关闭GPS或是整机,为了保存它的使用环境,让它在下一次尽快的进入现有的状态,我们需要给它进行当前星历的保存,让它保存的方法就是使用后备电池。后备电池可以维持模块8-12小时的工作时间,如果我们由于某些原因,在让断电的机器重新启动,也就意味着模块在2个小时以内再次加电,这个时候它的启动会比较快,大约是3秒钟左右达到正常定位的水平,原因是当前天空的卫星状态没有太大的改变。
温启动
有的时候我们未必就选择在2小时内开机,如果机器关闭即模块主供电断电2个小时之后,在后备电池还有电能的情况下,在不超过8个小时之内的情况是,当我们再次启动模块导航的时候,就会发现模块启动也不是很快,比热启动慢了很多,只是比冷启动收星要快,对环境的要求比冷启动要求有降低,这种情况会分很多种不同的原因,例如时间或头顶的卫星状况越接近保存时候的状态,它的定位时间就会越短,反之就会越长,通俗点来讲就是模块断电的时间越长,它所再次接通导航花的时间也会增加。若过了20小时再开机,则依然是冷启动。
3.4.2 帧数据格式
3.4.2.1 简称
以下的XX可能为以下三种情况
- BD 北斗模式
- GP GPS模式
- GN 双模模式
3.4.2.2 常用指令介绍
推荐定位信息数据格式如图3-4所示

图3-4推荐定位信息数据格式
Figure 3-4 recommended location information data format
(其他数据格式请参照官方说明文档)
3.4.3 功能测试
使用串口通信接受GPS模块传回的数据包,再经过解包后通过串口传出经纬度等信息,来测试GPS模块功能的正常。
3.5 蜂鸣器
功能测试
对于有源蜂鸣器,因为51单片机的高电平太弱,无法直接驱动蜂鸣器,所以加入三极管进行信号增益。

图3-5蜂鸣器驱动电路图
Figure 3-5 driving circuit diagram of buzzer
3.6 继电器
3.6.1 G5Q-14-DC12V
| 操作线圈 | 开关部(接点部-1c) | ||
|---|---|---|---|
| 额定电压(VDC) | 12 | 接定负载 | AC125V 10A AC125V 3A AC250V 3A DC30V 5A |
| 额定电流(mA) | 33.3 | 额定通电电流 | 10A(N.O.)<br/> 3A(N.C.) |
| 线圈电阻(Ω) | 360 | 接点电压最大值 | AC277V <br/> DC30V |
| 动作电压(V) | 75%以下 | 接点电流最大值 | AC:10A(N.O.)/3A(N.C.)<br/> DC:5A(N.O.)/3A(N.C.) |
| 复位电压(V) | 5%以上 | ||
| 最大容许电压(V) | 190%(23℃时) | ||
| 消耗功率(mW) | 约400 |
表3-9 G5Q14电气参数
Form 3-9 electrical parameters of G5Q14

图3-6 G5Q14封装参数
Figure 3-6 encapsulation parameters of G5Q14
3.6.2 JQC-3F(T73)
| 线圈参数 | 触点参数 | ||
|---|---|---|---|
| 额定线圈功率(W) | 0.36/0.45 | 触点形式 | 1H 1Z |
| 额定电压(VDC) | 12 | 接触电阻 | 100m at 1A 6VDC |
| 线圈阻值20℃±10%(℃)0.36W | 400 | 触点负载(阻性) | 10A 250VAC 7A 250VAC |
| 线圈阻值20℃±10%(℃)0.45W | 320 | ||
| 最大吸合电压(V) | 9.00 | ||
| 最小释放电压(V) | 1.2 | ||
| 最大过载电压(V) | 15.6 |
表3-10 JQC3F电气参数
Form 3-10 electrical parameters of JQC3F

图3-7 JQC3F封装参数
Figure 3-7 encapsulation parameters of GQC3F
3.7 LED灯珠
3.7.1 直插式LED灯珠
直插式LED灯珠长脚为正极,短脚为负极,单向导电。
小功率的直插式LED灯珠 ,一般都按直径分类[[13]](#refer-anchor-13)。而不论直径大小,LED灯珠正常工作的电压和电流都一样。
按功率分:
- 0.06W的,电压是2.5-3.5V,电流是20mA。
- 0.5W的,电压是2.5-3.77V,电流是150mA。
- 1W的,电压是2.79-3.99V,电流是350mA。
- 3W的,电压是3.05-4.47V,电流是700mA。
- 5W的,电压是3.16-4.88V,电流是1000mA。
按颜色分:
- 红光1.8~2.2v。
- 黄光2.0~2.4v。
- 绿光2.2~2.8v。
- 蓝光和白光2.8~3.5v。
3.7.2 共阴双色LED灯珠
- 发光颜色:绿色+红色
- 封装类型:扩散
- 使用电压(V):G:2.3-2.6V; R:1.9-2.2V
- 使用电流(mA):20


图3-8双色LED封装参数
Figure 3-8 encapsulation parameters of LED
3.8 三极管

图3-9三极管内部构造
Figure 3-9 internal structure of triode
3.8.1 直插式9012(PNP)
{% raw %}
| 耐压值 | 20V | ![]() |
|---|---|---|
| Pcm | 625mW | |
| Icm | 500mA |
{% endraw %}
表3-11 9012三极管电气参数
Form 3-11 electrical parameters of 9012
3.8.2 贴片式2N3906(PNP)
{% raw %}
| 耐压值 | 40V | ![]() |
|---|---|---|
| Pcm | 400mW | |
| Icm | 200mA |
{% endraw %}
表3-12 3906三极管电气参数
Form 3-12 electrical parameters of 3906
3.9. 电压转换
3.9.1 12V转3.3V与5V
{% raw %}
| 参数 | 符号 | 范围 | ![]() |
|---|---|---|---|
| 输入工作电压(V) | VIN | 20 | |
| 引脚温度(焊接5秒)(℃) | TLEAD | 260 | |
| 工作结温度范围(℃) | TJ | 150 | |
| 功耗(mW) | PD | 内部限制 | |
| ESD能力(最小)(V) | ESD | 2000 |
{% endraw %}
表3-13 AMS1117电气参数
Form 3-13 electrical parameters of AMS1117

图3-10 AMS1117原理图
Figure 3-10 schematic diagram of AMS1117
3.9.2 220V AC转12V DC
电气特性(VA15-V2S12)
{% raw %}
| 尺寸(mm) | 62*45*22.5 | |
| 输出功率(W) | 15 | |
| 额定输出电压(Vo-V) | 12 | |
| 额定输出电流(Lo-mA) | 1250 | |
| 典型效率 | 80% | |
| 输入电压范围(最小值/典型值/最大值) | 交流输入(VAC) | 85/230/264 |
| 直流输入(VDC) | 100/310/370 | |
| 输入电流 | 230VAC(mA) | 220 |
| 115VAC(mA) | 380 | |
![]() |
||
{% endraw %}
表3-14 V2S12电气及封装参数
Form 3-14 encapsulation and electrical parameters of V2S12
4 软件设计
代码共分为9个部分,分别为延时单元、蜂鸣器单元、外部存储单元、液晶显示屏单元、键盘扫描解析单元、串口模块、GPS模块、数字密码控制模块、总控模块。
延时单元采用软件延时。延时单元分为us级延时和ms级延时,us级延时函数为ms延时函数的子函数,在节省代码空间的同时使得功能调用起来更加灵活。另外由于延时单元为最底层代码,所以把基本的宏定义写在本头文件中。
蜂鸣器单元即通过使单片机输入输出口的电平转换来实现瞬响功能,由于硬件采用有源蜂鸣器,直接通过高低电平即可控制蜂鸣器的状态,而调整延时函数的时间即可改变多次嘀鸣间隔,使之产生最顺畅的连续嘀鸣体验。根据实际使用情况,头文件中定义了一次嘀鸣函数和连续两次嘀鸣函数,若需其他配置可相应添加。
外部存储单元根据官方说明进行驱动、存取,封装的函数有三个参数接口,分别为数据名、存取地址、数据长度,不同的数据可从不同的首地址开始存取,使用明了直观。
液晶显示屏单元设置了整屏输出和单行输出函数,并且初始化了各个界面菜单,在不同的判断下可随时显示不同界面,在调试时还可以通过单行显示函数进行函数调试。本设计只用到了字符显示,所以只需要对字符ROM进行初始化和清除缓存。数字输入界面采用数字数组动态更改的方法进行实时显示输入字符,人机交互更加直观容易理解,方便操作。经纬度显示函数使用了GPS函数的数据,可以实时显示当前位置的坐标。
键盘扫描解析单元通过轮询扫描方式读取键值,并对键值进行编码,对显示单元进行字符输出。
串口模块使用中断方式进行串口数据读取,并对接收到的数据进行封装成包,加入结束位,方便GPS模块进行数据处理。串口模块加入错误日志返回函数,方便对调试和使用中的各种错误进行判断分析。串口模块由于需要较高的时间精确度来接收字符,所以采用了独立的更为精确的延时函数,确保获取到的数据更加准确稳定。
GPS模块对串口获取到的数据进行处理解包,并经过二次封装将数据存入不同数组变量中,方便其他单元模块调用。在GPS模块工作后可以通过串口实时传回当前位置信息,可以与LCD屏显示数据进行匹配判断。
数字密码控制模块为一个可以独立运行的电子数字密码锁程序,可以实现6位数据输入、实时显示输入字符、取消输入、判断输入密码是否正确、复位密码、修改密码、重新上锁的功能。同时预留两个自定义留存按键函数,方便后期随时添加其他功能。
总控模块主要实现各个模块的初始化和复位,首先搜索GPS信号,判断当前位置是否为设置位置,若不正确则无法进行下一步,即无法开锁,若正确则进入数字密码输入模块,同时停止对GPS数据的判断,防止数据不断刷新引起的资源和能源的浪费。
本设计各个模块代码可分别独立测试,简化了调试过程,使整体流程更加明确。
5 器件组装及包装

图5-1器件汇总
Figure 5-1 device summary
STCLock V1.0的总体外包装采用塑料防水塑料盒,然后在塑料盒顶侧面开孔引出电源线,并保留数据升级的接口线。塑料盒表面使用专用切割机切出LCD液晶屏和金属防水键盘的安装位置。两者的布局为上下排列的方式,液晶屏在上,键盘在下,通过对比可以发现这种方式更加节省空间。放置液晶屏和金属键盘后用热熔胶进行固定,等待固定后再对内部端子线等进行布线安排,将端子线安排好后开始确定主板位置,由于主板使用220V供电,所以优先将电压模块的高压端放在金属键盘之上,以减少电压模块里的线圈对LCD
液晶屏产生较大影响。在主板放置之前要对高压引脚进行封胶处理,一是避免高压与人体的解除带来的安全隐患,二是防止高压引脚之间短路瞬间烧坏器件和芯片,主板放置好后可以用热熔胶进行基本固定。

图5-2内部连接图
Figure 5-2 internal connection diagram
GPS模块的SMA天线可以固定在盒底,因为外壳为塑料,GPS信号可以穿透外壳来让天线接受到,如果整体放置在室内等环境下还可以将SMA天线通过顶部的开孔引出,足够长度天线可以保证电子密码锁的主体不受太多环境的限制。
内部安排好后将220V电源线及5V程序下载线通过盒顶的开孔引出,然后将防水盒封闭,锁紧四角的螺丝。到此为止硬件组装完成,之后可以将设计好的包装贴图对防水塑料盒进行美化,最终做出一个具有美观性的项目。
塑料外壳可以使用不透明的防水外壳,或者使用透明的亚克力板材进行包装。使用亚克力板时可以不用外部贴图就能有比较好的外观效果,而且外壳大小和形状可以自己定制,能够根据个人想象力打造出很出色的产品包装。而使用亚克力板的缺点就是制作麻烦,没有专业的工具很难对板材进行打造。而塑料防水外壳材质较软,打造方便,适合个人制作。

图5-3外壳切割标识
Figure 5-3 shell cutting mark
内部布线采用白色端子线进行连接,端子线具有固定接帽,可以让线的连接更加稳定。而且端子线兼容排针的间距和孔径,可以很方便的插在排针接头上。端子线的长度和接口数目可以很方便的定制,在保证功能可靠的前提下可以让内部的布线更加条理。
核心板使用90C52RC的DIP-40最小系统板,自带5VUSB供电和USB转串口下载芯片,方便程序的调试和更新。核心板和外置的EEPROM均采用排座的形式进行焊接,这样方便配件的替换,而且可以用同一个主板对不同的芯片进行分别加密,保证了关键性器件的可移植性和硬件非兼容性,使得整体的安全强度进一步提升。

图5-4运行展示
Figure 5-4 operation demonstration
装配中发现的错误及解决方法:
- 1、错误:在画PCB版图时电源模块与核心板插座位置间距设置间距不够,使得实际中安装电源模块后无法将51核心板直接插在焊接的底层排座上。
解决方法:在底层插座上堆叠几层排针插座,使核心板总体插座的高度高于电源模块,同时要保证核心板各引脚的接触要良好,不能影响正常使用。


图5-5排版错误及修正
Figure 5-5 typographical errors and corrections
- 2、错误:将LCD液晶屏与键盘扫描代码整合后键盘扫描部分无法正常工作,即显示液晶屏界面后键盘按键没有任何反应,而对两部分分别独立测试时均正常。
解决方法:LCD液晶屏的实时刷新能力是使用循环扫描的方式检查输入密码数组的变动而实现的,所以进入LCD显示部分后就无法跳出循环,无法再检测到键盘的输入,将键盘检测代码嵌入LCD显示部分中即可。这样是使键盘输入赋值给LCD显示界面的数组,从而在LCD刷新的时候可以动态显示输入的数据。
- 3、错误:GPS使用UART串口通讯发送数据给MCU,而GPS数据包每秒发送一次,导致串口中断一直处于触发状态,使得正常的轮询检测无法正常工作。
解决方法:将GPS放在主函数开始,设备上电后等待GPS传回正确的数据包,然后对GPS置标志1,关闭串口中断,停止接收数据,然后进入密码锁部分进行大循环,需要数据时再打开串口中断,接收一次数据就关闭。
- 4、错误:继电器在上电后立即吸合,之后无论MCU给出任何高低电平后均无反应,而开锁指示灯正常工作。
解决方法:开锁指示灯正常工作,代表代码没有问题。然后对继电器进行直连测试,继电器器件正常,将3906PNP三极管换为3904NPN管后依然无法解决,怀疑三极管控制电流过大,低电平信号无法达到继电器的一个关闭阈值,最终换为N沟道MOS管BSS138后问题得到解决。
- 5、错误:接入220V强电后,在12V板载电压下的承压测试进行到10秒左右三极管直接被烧毁。
解决方法:在对比原理图、PCB、三极管管脚及继电器整流二极管的极性后发现二极管接反导致12V1A电源直接接在了三极管上,所幸其他器件未受影响。
6 整体测试
首先上电开机,电源可选择5V直流USB供电或12V直流供电或220V交流供电。
5V直流USB供电可以直接连接PC对代码进行调试,并能通过串口发送接收数据;但5V供电由于电压太低,无法正常驱动继电器工作,而且此时LCD液晶屏的电源需要连接到核心板3.3V专用供电引脚上。
接12V和220V时可以完整测试产品功能,并能对整体器件进行足够的电流支持,保证所有器件正常工作,但调试代码和串口收发数据时仍然需要连接USB线或用USB转TTL连接核心板引出的RXD和TXD引脚上进行调试。
产品刚上电时显示搜寻GPS中,等待GPS信号传回,当接收到正确地理位置信息时开始检索外置EEPROM内的存储密码,然后进入输入密码界面。否则提示位置错误,无法进入下一步开锁。
因GPS模块需要较长时间来校准位置信息,此处可以通过串口发送模拟的GPS数据串来仿真GPS功能。(注意末尾要加回车换行)
//正确位置
$GNRMC,065304.000,A,3614.3948,N,12026.3911,E,1.97,308.47,260519,,,A*70
//错误位置
$GNRMC,065304.000,A,3612.1998,N,12023.2341,E,1.97,308.47,260519,,,A*70![]() | ![]() |
|---|---|
| 图5-6搜索GPS提示 Figure 5-6 search for GPS tips | 图5-7位置信息错误提示 Figure 5-7 location information error prompt |
当在EEPROM中检索到存储的密码时,界面显示8个“1”进行提示[[14]](#refer-anchor-14);此时密码的比较为存储的密码。当EEPROM中未存在密码信息时,界面显示8个“0”;此时密码比较为固件中默认密码。
![]() | ![]() |
|---|---|
| 图5-8检查外置存储 Figure 5-8 check external storage | 图5-9密码界面 Figure 5-9 cryptographic interface |
当输入密码正确时,蜂鸣器鸣叫两声,指示灯由红变绿,继电器吸合,LCD显示欢迎界面;欢迎界面中的用户名可在代码中修改。开锁后进入菜单界面,此时可根据界面标识按相应的键进入相应功能页,按C键重新上锁,继电器恢复,指示灯变为红色,并回到密码输入界面。
![]() | ![]() |
|---|---|
| 图5-10欢迎界面 Figure 5-10 Welcome interface | 图5-11功能菜单 Figure 5-11 Functional menu |
进入GPS界面后可以显示当前位置坐标数据。重置密码是将EEPROM中用户设置的密码擦除,然后写入代码中设置的默认密码,下次开锁时即刻生效。
![]() | ![]() |
|---|---|
| 图5-12位置信息 Figure 5-12 position information | 图5-13复位密码成功 Figure 5-13 reset password successful |
修改密码会进入一个修改界面,输入要修改的六位字符串,按下确认后提示修改成功[[15]](#refer-anchor-15)。此时修改的密码即写入EEPROM中,下次开锁即刻生效。
![]() | ![]() |
|---|---|
| 图5-14修改密码界面 Figure 5-14 modify password interface | 图5-15修改密码成功 Figure 5-15 password modification successful |
当输入密码错误时,蜂鸣器鸣三声,提示密码错误。
![]() |
|---|
| 图5-16输入密码错误 Figure 5-16 entering password wrong |
7 总结
本设计从零开始,对51单片机及其外围常用电路进行了由浅入深的研究和应用,最终整合出一套可以做出产品的电子GPS密码锁,经过器件选择、模块驱动、电压电流适配、软件接口适配融合、PCB设计、总体包装测试,熟悉了产品从开发到生产的整个流程,同时接触了很多工业级的嵌入式模块及器件,能够在毕业后更顺利的融入公司的开发环境中去。
对于核心板的选择上,虽然ARM级别的STM32要各方面优于51单片机,但在综合评估本设计的各器件性价比后,最终选择了足够使用的51单片机,减少了资源上的浪费,而且PCB板预留的排座可以随时更换核心板型号,便于后期升级更新。
综上所述,在本次毕业设计中获益匪浅,而且深刻的认识到自己知识体系的不完善,明确了未来的研究方向和方法,本次毕业设计顺利结束,也感谢所有帮助过我的人的大力支持。
参考文献
[1] 蒋健. 一种提高单片机I/O口线利用率的方法[J]. 微计算机信息, 1993(2):45-46.
[2] 李立新, 李金波. 单片机上电复位特性对系统性能的影响[J]. 安阳师范学院学报, 2002(2):25-26.
[3] 史良. LCD12864显示模块与微处理器的接口设计[J]. 矿业安全与环保, 1999(5):16-17.
[4] 张斌, 陈昌旺, 周英. 点阵式液晶星示器LM12864与51单片机的接口设计[J]. 世界产品与技术, 2004(2):42-43.
[5] 李建波 , 陈榕福 , 张永亮 . 基于AT27C512汉字库的加载技术及其在AMPIRE12864液晶仿真中的应用[J]. 电脑知识与技术:学术交流, 2017.
[6] 蔡锦韩. 浅谈ST7920驱动的点阵式液晶反白显示[J]. 中国培训, 2014(1):52-53.
[7] 李志广, 李晓泉, 淮俊霞. 中文图形12864点阵液晶显示模块与51单片机的并行接口电路及C51程序设计[J]. 现代显示, 2008(7):41-44.
[8] Min L , Shu-Guang D , Ping-An M U . Implementation of LCD Display with IP-Based SOPC Technology[J]. Chinese Journal of Liquid Crystals and Displays, 2011.
[9] Adrados C, Girard I, Gendner J P, et al. Global Positioning System (GPS) location accuracy improvement due to selective availability removal.[J]. Comptes Rendus Biologies, 2002, 325(2):165-170.
[10] 王奇君. 多模卫星导航芯片组中GPS信号捕获跟踪的设计与实现[D]. 北京大学, 2008.
[11] 李拥军. GPS定位系统中数据读取和坐标的转换[J]. 铁路计算机应用, 2005, 14(4):43-45.
[12] Ren W . A Rapid Acquisition Algorithm of WSN-aided GPS Location[C]// 2009 Second International Symposium on Intelligent Information Technology and Security Informatics. IEEE, 2009.
[13] 杜彬, 史建卫, 王玲,等. LED灯珠性能特点及选择应用[J]. 电子工业专用设备, 2014(10):50-61.
[14] Chen C X, Mao Y H. Design of Ultrasonic Password Door Model[J]. Applied Mechanics & Materials, 2014, 574:609-614.
[15] Zhao Y D, Xiao-Lin X U, Zhou Z F. Electronic Password Lock[J]. Journal of Jiaxing College, 2003.
附录
需求清单
| 测试 |
|---|
| STC89C52RC最小系统开发板x1 |
| 8DIP封装AT24C02存储芯片x1 |
| 中科微ATMG3332D-5N-5X定位模块x1 |
| SMA有源天线x1 |
| B018020金属防水键盘x1 |
| OCMJ4X8C液晶3.3VLCD显示屏x1 |
| 直插式有源蜂鸣器x1 |
| 直插式1K电阻x3 |
| 直插式TO-92封装9012三极管x2 |
| 直插式3mm黄色LED灯珠x8 |
| JQC-3F 5VDC继电器x1 |
| 60x10有效孔面包板x1 |
| YwRobot PowerMB V2面包板供电模块x1 |
| USB A-Type转USB A-Type供电线x1 |
| USB A-Type转USB B-Type下载线x1 |
| USB A-Type转Micro-USB B下载线x1 |
| 杜邦线若干 |
| 产品 |
|---|
| STC90C52RC最小系统集成板40DIP板x1 |
| 8DIP封装AT24C02存储芯片x1 |
| 中科微ATMG3332D-5N-5X定位模块x1 |
| SMA有源天线或IPEX天线x1 |
| B018020金属防水键盘x1 |
| OCMJ4X8C液晶3.3VLCD显示屏x1 |
| 直插式有源蜂鸣器x1 |
| 贴片式0805封装1K电阻x3 |
| 贴片式0805封装224电容x4 贴片式0805封装103电容x2 |
| 贴片式5819封装二极管x1 |
| 贴片式SOT-23封装2N2906三极管x2 |
| 直插式双色共阴极LED灯珠x1 |
| G5Q-14-12VDC继电器x1 |
| 贴片式SOT-223封装ASM1117-3.3V芯片x1 贴片式SOT-223封装ASM1117-5V芯片x1 |
| VA15-V2Xxx AC-DC12V输出模块电源x1 |
| 3P端子座x2 + 4P端子座x2 + 6P端子座x1 |
| 8DIP宽排座x1 40DIP宽排座x1 |
| 3PHT508 PCB接线端子x1 2P防尘电源线接线座x1 |
| STCLock V1.0 PCB印刷板x5 |
| 200x120x55mm防水塑料盒x1 |
| 端子线若干 |
| 220V带座电源线x1 |
| 螺钉若干 |
















评论已关闭