![[信息与通信]基于nrf24l01无线收发模块的无线输入密码锁毕业设计_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/c7a2f71b-5c02-4851-abaf-7d287225a067/c7a2f71b-5c02-4851-abaf-7d287225a0671.gif)
![[信息与通信]基于nrf24l01无线收发模块的无线输入密码锁毕业设计_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/c7a2f71b-5c02-4851-abaf-7d287225a067/c7a2f71b-5c02-4851-abaf-7d287225a0672.gif)
![[信息与通信]基于nrf24l01无线收发模块的无线输入密码锁毕业设计_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/c7a2f71b-5c02-4851-abaf-7d287225a067/c7a2f71b-5c02-4851-abaf-7d287225a0673.gif)
![[信息与通信]基于nrf24l01无线收发模块的无线输入密码锁毕业设计_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/c7a2f71b-5c02-4851-abaf-7d287225a067/c7a2f71b-5c02-4851-abaf-7d287225a0674.gif)
![[信息与通信]基于nrf24l01无线收发模块的无线输入密码锁毕业设计_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/1/c7a2f71b-5c02-4851-abaf-7d287225a067/c7a2f71b-5c02-4851-abaf-7d287225a0675.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业设计(论文)小区智能密码锁设计姓 名 李兴华学 号 28010202160专业班级 集成电路IC设计 08所在学院 电子信息学院指导教师职称王红航讲师完成时间 2021年4月电子科技大学中山学院教务处制发电子科技大学中山学院毕业设计论文任务书题目名称小区智能密码锁设计论文的主要内容和要求1、密码输入:键盘输入:每按下一个数字键,就输入一个数值,并在显示器上显示出该数值,同时将先前输入的数据依次左移一个数字位置。无线输入:采用2.4G蓝牙频率进行无线通信,输入密码时发射端与接收端以特定的协议进行频率跳变。提高保密性。2、密码去除:按下去除键可以去除前面所有的输入值,去除成为“0000。该操作
2、可通过键盘或遥控进行。3、密码更改:按下更改键可将目前的数码设定成新的密码。该操作可通过键盘或遥控进行。4、密码上锁:按下上锁键可将密码锁上锁。该操作可通过键盘或遥控进行。5、密码解除:按下确认键首先检查输入的密码是否正确,密码正确即开锁。推荐参考文献1、潘永雄新编单片机原理与应用M西安电子科技大学出版社20032、 荣政C语言程序设计M西安电子科技大学出版社2006预期目标和成果形式学会如何查阅资料,掌握电子电路设计并熟练掌握单片机设计流程,熟练C语言软件设计平台KEIL的使用。以及熟练掌握无线收发芯片NRF24L01的应用。成果形式:实物加论文。起止时间2021年9月20日 至 2021年
3、4月30日指导单位电子信息学院指导教师王红航 2021年9月25日审核意见审核签名年 月 日电子科技大学中山学院毕业设计论文成绩评定表设计撰写过程评语: 指导教师: 年 月 日成绩论文评阅评语: 评阅教师: 年 月 日成绩论文辩论评语: 辩论组长: 年 月 日成绩总分审核人: 年 月 日小区智能密码锁设计摘 要随着科学技术的不断开展,人们对日常生活中的平安保险器件的要求越来越高。为满足人们对锁的使用要求,增加其平安性,用密码代替钥匙的密码锁应运而生。密码锁具具有平安性高、本钱低、功耗低、易操作等优点。本次设计使用STC89C52单片机为主体芯片,采用AT24C02为掉电存储芯片。设计了一款可以
4、屡次修改密码、具有密码错误报警功能和无线开锁功能的无线遥控密码锁。本系统主要包括:矩阵键盘输入模块、LCD液晶显示模块、错误报警模块、掉电存储模块,无线开锁模块,所采用的编程语言是C语言。整机电路稳定性高,本钱低,还能扩展很多功能。关键词:STC89C52;AT24C02; 电子密码锁;矩阵键盘 ;掉电保护;无线收发The Design of Residential Intelligent Cipher LockAbstractWith the continuous development of science and technology, people's demands for
5、safe and secured devices increase highly in daily life. In order to meet the requirements of the lock and to increase the security of it, the key with passwords instead of the lock comes into being. The key with passwords has the advantage of safety, low cost, low power consumption and easy operatio
6、n.The design use STC89C52 MCU for the main chip and AT24C02 chip for storage of the power-down. A wireless remote control lock was designed, which can repeatedly change the password, also enjoy password error alarm functions and wireless unlock function. The system includes: matrix keyboard input mo
7、dule, LCD display module, error alarm modules, power-down memory module, wireless input module. The programming language adopted is C language. The whole circuit not only pocesses high stability and low cost, but also extends a lot of functions.Keywords: STC89C52; AT24C02; Electronic code lock; Matr
8、ix keyboard; Power-off protection; Wireless transceiver目 录1绪 论1工程背景1工程的主要任务12方案论证3主控芯片的选择3无线模块的选择3键盘的选择3液晶模块的选择33小区智能密码锁硬件设计5系统硬件的总体设计5元器件的选择6各功能模块的介绍与设计6主控芯片的介绍6无线模块的介绍与设计9NOKIA5110模块的介绍与设计10串行EEPROM存储电路设计11键盘电路设计12报警电路设计13电源转换电路设计13遥控电路设计14主机整体电路144小区智能密码锁系统软件设计16系统软件整体设计16键盘输入密码开锁程序设计17液晶显示程序设计19
9、NRF24L01无线收发程序设计25遥控局部程序设计275小区智能密码锁系统调试29无线收发模块NRF24L01的调试29矩阵键盘的调试29NOKIA5110液晶的调试29AT24C02的调试29整机联调306结论31致 谢33参考文献34附 录35作品实物图:35主机程序清单:40无线键盘程序:721 绪 论1.1 工程背景目前,国内最常用的锁是20世纪50年代意大利人设计的机械锁,其结构简单、使用方便、价格廉价。但在使用中暴露了很多缺点:一是机械锁是靠金属制成的钥匙上的不同齿形与锁芯的配合来工作的。据统计,每4000把锁中就有两把锁的钥匙齿牙相同或类似,平安性低。二是钥匙一旦丧失,无论谁捡
10、到都可以将锁翻开。三是机械锁的材料大多为黄铜质地较软,容易损坏。四是机械钥匙容易被复制。由于人们对锁的平安性,方便性等性能有更高的要求,许多智能锁如指纹区分、IC卡识别也相继问世,这类产品针对特定的指纹或有效卡,能适用于保密要求高且仅供个别人使用的箱、柜、房间,但其本钱一般较高,在一定程度上限制了这类产品的普及和和推广。随着人们生活质量的提高和平安意识的加强,如何更好的防盗这一问题也变得尤为重要,传统的机械锁具由于其构造简单,带有锁孔,被撬的事件屡见不鲜,已远远不能满足人们的需要。于是各种密码锁具广泛进入人们的生活和工作,因而密码锁的平安可靠性就变得至关重要。电子式的密码锁,它具有本钱低,密码
11、量大,不易破译的优点,但是目前的电子密码锁系统大都采用的是固定式的键盘,键盘外漏很容易导致密码被窃。而汽车电子锁是一键式开锁,开锁遥控一旦丧失将会导致任何持有该遥控的人都可以开锁。论文针对目前市场上的密码锁具存在的缺点,设计出一款既能够通过无线键盘输入密码又带有键盘输入功能的密码锁,该产品具有很好的实用意义。无线密码锁具能够在提高平安性的同时又能减少佩戴钥匙的重量。能够做到一个遥控开多个锁,方便实用。1.2 工程的主要任务本系统的设计主要是为了解决当前市面上传统锁具所存在的缺乏,而设计出一款无线遥控密码锁,本系统的具体功能实现如下:1. 设置密码用户将想设置的密码通过密码修改键进行修改,首先按
12、下密码修改键,然后再逐个输入旧密码,最后按下确认键,旧密码正确,即可进入新密码输入状态。密码可以由用户自己任意设定只支持8位及8位以下密码,在输入新密码时候需要二次确认,以防止误操作。另外,带无线输入键盘,可以进行输入、修改密码等操作。2. 密码显示为了帮助用户确认是否输入成功,特在电路中设置了液晶显示电路;而为了防止密码外泄,显示时,并不是显示用户按下的数字信息,而是以一个特定的字母符号提醒用户是否输入成功。有键按下,就会显示出字符“*。假设无键按下,那么不会显示字符。这样既巧妙的提醒了用户又保护了用户密码不被外泄,此乃本设计可靠性优点之一。3. 本机键开锁当用户键入正确密码后,再按确认键,
13、便会自动开锁,如果键入完密码后不按确认键,默认放弃开锁。4. 密码错误报警当用户键入错误密码时,系统就会报警,液晶上会有错误提示。由蜂鸣器发出报警声。当连续三次出现密码错误时,那么系统会长期报警不止。这时必须按复位方可停止。此乃本设计平安可靠性之二。5. 遥控解锁当有特殊情况发生时,或怕有人偷窥到密码时,或不想用键盘开锁时,可选用遥控器来解锁。此乃本设计平安可靠性之三。该设计使用AT24C02保存密码,支持复位保存,掉电保存功能。在遇到突发情况,导致设备突然断电时,密码也不会丧失。此乃本设计平安可靠性之四。2 方案论证2.1 主控芯片的选择在本系统设计中所需要的I/O口为23个,综合各方面的因
14、素考虑,本控制系统设计的硬件选用STC89C52作为主控中心。STC89C52是一个低功耗,高性能的CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器RAM。兼容标准MCS-51指令系统及80C52产品引脚结构。其芯片内部集成了8位中央处理器和ISP Flash可反复擦写的存储单元。STC89C52具有的特点如下:40个引脚, Flash片内程序存储器8k 字节,内部RAM 256 字节,32个双向输入/输出I/O口,1个6向量两级中断结构,具有16位可编程定时计数器3
15、个,全双工串行通信口1个,片内振荡器及时钟电路。2.2 无线模块的选择在本系统中采用遥控方式来进行开锁的主要目的就是使锁的平安性更高,确保数据在传输过程中的准确无误,更加方便人们使用。方案一在最初设计本系统时首先想到的遥控开锁器件是红外开锁。红外,作为无线通信方式的一种,具有实现简单、价格廉价等优点。但通讯过程中不能改变要对准的方向,且中间不能有障碍物,遇障碍物通讯会中断,也就是说红外不能穿墙而过。由于红外线的波长较长,对障碍物的衍射能力差,所以更适合应用在需要短距离无线通讯的场合,进行点对点的直线通信。红外通讯技术的主要目的是取代线缆连接进行无线数据传输,功能单一,扩展性差。另外,红外通信的
16、保密性相对较差。但本设计在保密性方面要求很高所以本方案不可行。方案二采用NRF24L01了作为无线通信器件。NRF24L01单片无线收发器工作的载波频率为2.4GHz,因此在无线传输中具有传输速度快,无线信号空中停留时间短的优点。既节省收发能量又能提高收发速度。同时保密性方面也得到了极大的提高。其通信协议以及数据的承载方式都极具加密性。可以在一定范围内选择载波频率,且具有125个频点。对于通信的加密性方面有极大帮助。另外,NRF24L01模块性价比相对较高。2.3 键盘的选择由于本系统要使用13个按键,其中数字键10个09,特殊功能键3个,假设使用独立式按键连接方式需要13个I/O口,这样一来
17、I/O口的占用量太大,浪费I/O资源,所以选用4*4的矩阵键盘,这样可以省下5个I/O资源。2.4 液晶模块的选择在设计本系统显示模块时首先想到的用来显示的器件是LCD1286或LCD1602,LCD12864液晶显示器可以显示数字、汉字和图形,但价格比拟高。LCD1602虽然价格比拟廉价,但只能用于符号显示或数字的显示,不能显示汉字。经过多方了解,查找。最终定下了NOKIA5110液晶。能够显示汉字,并且价格与LCD1602相当。除此之外,该液晶具有所需I/O口少,体积小,编程方便等优点。3 小区智能密码锁硬件设计3.1 系统硬件的总体设计本系统主要使用无线技术来实现无线开锁的设计,但是仍然
18、保持了原有密码锁的根本功能,系统主要的两大局部分别为:无线密码开锁局部和根本密码锁开锁局部。其中根本密码开锁包括:键盘输入模块、LCD液晶显示模块、报警模块、存储模快、电源转换电路模块、无线接收模块、开锁模块。无线密码开锁局部包括:电源转换电路模块、无线发送模快、矩阵键盘模块。无线遥控密码锁的根本密码锁开锁局部硬件框图如图3-1所示:STC89C52键盘输入模块显示模块报警模块开锁电源转换电路存储模块无线接收模块图3-1无线密码锁的根本密码锁开锁局部硬件框图各功能模块的具体功能如下:1、键盘输入模块:用一个4*4的矩阵键盘,通过键盘输入的正确与否来执行相应的操作。2、LCD液晶显示模:同样是针
19、对键盘输入的正确与否来执行相应的提示信息。3、报警模块:当用户出现输入密码不正确时发出报警信息。4、存储模快:主要实现对初始密码的存储和修改后密码的存储,防止掉电后密码丧失。5、电源转换电路模块:由于单片机的工作电压为5V,但无线模块的最好工作电压为3.3V。那么这时就需要搭一个电源转换电路。6、无线发送模块:将遥控模块中键盘输入的值传送给无线接收模块。7、无线接收模块:将对无线发送模块传过来的数据在接收端进行相应的处理。无线遥控的系统框图如图3-2所示:STC89C52键盘输入模块无线发送模块块电源转换电路图3-2无线密码锁的发射硬件框图3.2 元器件的选择经过对市场的了解,综合各方面的因素
20、考虑,本系统的设计主要采用以下几款元器件:1、主控芯片:STC89C522、无线模块:NRF24L013、EEPROM:AT24C024、LCD液晶:NOKIA51105、报警器:1个蜂鸣器6、键盘: 4*4矩阵键盘3.3 各功能模块的介绍与设计3.3.1 主控芯片的介绍STC89C52带8K字节闪烁可编程可擦除只读存储器FPEROM-Flash Programable and Erasable Read Only Memory 。低电压,高性能。兼容工业标准的MCS-51输出管脚和指令集。单片机总控制电路如图3-3所示:图3-3单片机总控制电路这个电路可以作为单片机的程序下载电路,可以从PC
21、机通过该电路将.HEX程序文件下载进单片机。还可以作为单片机与PC机的串口通信接口电路。1.振荡电路STC89C52内部有一个高增益反相放大器,XTAL2与XTAL1分别是它的输入与输出端。当该两个引脚与定时元件相连时内部振荡器就产生自激振荡从而产生定时信号带动单片机工作。定时用的并联谐振回路通常由石英晶体和电容组成。晶体振荡器频率范围为1.212MHz,电容值范围为530pF,电容值的大小可对频率起微调的作用。内部时钟电路方式如图3-4a外部时钟电路方式如图3-4b所示,XTAL1接地,XTAL2与外部振荡器相连。对于外部振荡器信号,需要保证脉冲宽度在特定范围内,一般采用频率低于12MHz的
22、方波。内部与外部时钟电路如图3-4所示: 图3-4 a内部时钟电路方式 图3-4 b外部时钟电路方式图3-4时钟电路1复位操作复位是单片机的初始化操作。复位操作中把PC初始化为0000H,使单片机从0000H单元开始执行程序。在单片机上电时一般会进行上电复位。当程序运行失常,导致单片机死机时,复位操作可以使系统重启,单片机便能进入正常工作状态。除PC之外,复位操作还对其他一些存放器有影响,它们的复位状态如表3-1所示。表3-1 一些存放器的复位状态存放器复位状态存放器复位状态PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH
23、100HP0-P3FFHSCON00HIPXX000000BSBUF不定IE0X000000BPCON0XXX0000BTMOD00H2复位信号及其产生RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。假设使用频率为6MHz的晶振,复位端需要有4us以上的高电平才能使系统进入复位状态。STC89C52具体介绍如下:1、 主电源引脚2根VCC(Pin40):电源输入,接5V电源。GND(Pin20):接地线。2、外接晶振引脚2根XTAL1:片内振荡电路的输入端或接片外时钟信号时接地。XTAL2:片内振荡电路的输出端或外部时钟的输入端。3、控
24、制引脚4根RST/VPP:复位引脚,两个机器周期的高电平可使单片机复位。ALE/PROG:地址锁存允许信号。PSEN:外部存储器的读选通信号。EA/VPP:程序存储器选择端,接低电平使用外部程序存储器,接高电平那么使用内部程序存储器。4、可编程输入/输出引脚32根STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位8根引脚,共32根。P0口:8位双向I/O口线,名称为P0.0P0.7。P1口:8位准双向I/O口线,名称为P1.0P1.7 。P2口:8位准双向I/O口线,名称为P2.0P2.7 。P3口:8位准双向I/O口线,名称为P3.0P3.7。ST
25、C89C52内部主要硬件:1、两个外部中断。2、一个串口。3、3个定时器。本设计用到的复位电路与晶振电路如图3-5所示: 图3-5 a复位电路图3-5 b晶振电路图3-5复位电路与晶振电路3.3.2 无线模块的介绍与设计NRF24L01模块的原理图如图3-6所示:图3-6 NRF24L01模块NRF24L01模块的主要特点:2.4GHz 全球开放ISM 频段,最大0dBm 发射功率,免许可证使用;低工作电压:正常工作电压3.6V ;高速率:最高2Mbps,这样使得信号空中停留时间极短,减小了无线碰撞的可能软件设置1Mbps或者2Mbps的空中传输速率;多频点:125频点,可以应用于多点通信以及
26、跳频的实现;超小型:天线内置,体积小巧,规格:15x29mm包括天线;低功耗:快速的传输速率也降低了收发功耗。很低的应用本钱:NRF24L01集成了RF。NRF24L01应用的是SPI接口,可以与单片机的SPI接口直接相连。没有SPI接口的单片机可以利用单片机的I/O口进行模拟,内部有FIFO,用于数据缓存,因此NRF24L01可以与各种上下速微处理器接口,便于使用低本钱单片机。便于开发:由于链路层完全集成在模块上,非常便于开发。能自动检测到数据丧失并重新发送数据,重发间隔时间以及重发次数由软件控制。在收到数据后会向发送方自动发送应答信号。3.3.3 NOKIA5110模块的介绍与设计NOKI
27、A5110模块如图3-7所示:图3-7 NOKIA5110 模块它与单片机六个I/O口相连。NOKIA5110液晶模块具有以下特点:(1) 84x48 的点阵LCD,可以显示4 行汉字,(2) 采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源 和地在内的信号线仅有9 条。支持多种串行通信协议如AVR 单片机的SPI、MCS51 的串口模式0等,4Mbps传输速率。(3) LCD 控制器以及驱动器芯片已集成到LCD 晶片上,使得模块的体积很小。(4) 采用低电压供电,正常显示时的工作电流在200A 以下,且具有掉电模式。它与主控制芯片的接口电路如图3-8所示:图3-8 NOKI
28、A5110接口电路该原理图对应于电路板上的一个8孔插槽。只需将5110模块插入该排座就完成连接。3.3.4 串行EEPROM存储电路设计1管脚图AT24C02管脚图如图3-9所示:图3-9 AT24C02管脚图2简介AT24C02是一个2K位串行CMOS E2PROM。AT24C02有一个16字节的页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。 3特性:1、数据线上的看门狗定时器 2、可编程复位门栏电平 3、高数据传送速率为400KHz和1C总线兼容 4、2.7V至7V的工作电压 5、低功耗CMOS工艺 6、16字节页写缓冲区 7、片内防误擦除写保护 8、上下电平复位信
29、号输出 9、100万次擦写周期 10、数据保存可达100年 11、商业级、工业级和汽车温度范围 4管脚描述SCL 串行时钟: SCL数据发送或接受的基准时钟,为输入引脚。 SDA 串行数据/地址: SDA数据或地址的串行输入与输出端,可进行线或。 A0、A1、A2存储器地址输入端:用于存储器的级联。 WP 写保护:接高电平时存储器为只读。GND、VCC:电源引脚。 5AT2402与单片机的电路连接如图3-10所示:图3-10 AT2402与单片机的连接3.3.5 键盘电路设计矩阵键盘原理图如图3-11所示:图3-11 矩阵键盘原理由于本设计只用到了13个按键,所以最后一列按键只有一个。矩阵键盘
30、原理:每个按键都有两个对应的I/O口与之相连,按键按下前,其两端的I/O口分别输出一高一低电平。当按键按下时,高电平被拉低,利用这个原理我们就能通过程序判断出具体是哪个按键按下。3.3.6 报警电路设计 报警电路原理图如图3-12所示:图3-12 报警电路报警电路原理:PNP三极管的开关特性是当基极为低电平时导通,基极为高电平时截止,所以要使蜂鸣器鸣叫,只需使单片机在P2.7口输出一个低电平即可。反之,输出高电平那么停止鸣叫。3.3.7 电源转换电路设计5V与3.3V之间的电源转换电路如图3-13所示:图3-13 电源转换电路由于NRF24L01模块的正常工作电压不得超过3.6V,而单片机必须
31、要4.5V以上才能正常工作。所以必须要有一个电源转换电路使它们之间到达电平兼容。二极管的正向压降为0.7V,如图3-15,在RF24L01模块的电源两端串联了两个二极管后,该模块上的电压为VCC-0.7*2V。当VCC为5V时加在该模块的电源电压为3.6V。而5V电压也正好能够适合STC89C52单片机电压。在I/O口之间加上1K的限流电阻是为了防止由于两芯片的电平压差过大而导致I/O间电流过大,导致芯片烧毁。3.3.8 遥控电路设计为了适应遥控要求体积小,轻便易携的特点。我把遥控的主控制芯片改成了只有20引脚的STC12C2052芯片。该芯片具有体积小,功能强大,价格低廉的特点。其指令系统与
32、52单片机几乎完全相同。遥控局部整体原理图如图3-14所示:图3-14 遥控原理图该遥控是以STC12C2052为核心控制芯片,带矩阵键盘输入,无线收发模块NRF24L01以及LED指示灯电路。3.3.9 主机整体电路主机的整体电路图如下3-15所示:图3-15 整机原理图4 小区智能密码锁系统软件设计4.1 系统软件整体设计在本系统中软件设计是整个系统设计的重要局部,在保证硬件电路正确无误的根底上,加上软件编程才可以实现整个系统预期的功能。系统软件运行总体设计流程包括:系统初始化,判断是否有按键按下,识别相应按键,如果条件满足执行开锁并在液晶上显示提示信息,条件不满足报警并在液晶上显示相应的
33、出错的提示信息。在本系统中,软件的设计主要包括:无线数据的发送和接收程序设计、数据存储程序设计、液晶显示程序设计、键盘输入程序设计、密码比拟程序设计、开锁程序设计、报警程序设计等。本系统的层次方框图如图4-1所示。 无线遥控密码锁蜂鸣报警无线遥控键盘输入液晶显示开锁掉电存储图4-1 无线遥控密码锁的层次方框图主程序主要任务是协调各个模块之间的功能,使指定的模块在特定的状态下工作。如:单片机检测到按键按下操作,就会调用按键子程序读取键值,以判断是哪个按键出现按键动作。如果是数字键按下那么认为输入的是密码,此时调用密码处理函数进行处理。如果按下的是确认键,那么调用相应函数对密码进行比照,如果按下的
34、是模式切换键,那么调用相应的模式显示函数以及涉及到该模式的所有模块函数。主函数就是通过这种判断、调用的方式来完成子程序间各个功能模块的协调。系统整体流程图如图4-2所示:开始输入密码正确否?开锁判断按键开锁模式密码修改模式上锁结束输入密码正确否?输入新密码再次输入一致否?修改、存储YesNoNoYesNoYes图4-2 整机流程图4.2 键盘输入密码开锁程序设计密码程序流程图如图4-3所示,当程序运行时,会判断键盘是否有按键被按下,当有按键被按下时,系统会判断是数字键09,还是功能键。假设是数字键,那么将按键值存入到密码数组里,然后将输入的密码与本身的密码做比拟,假设相同,那么执行开门并在液晶
35、上显示正确的提示信息。假设不相同,那么执行报警并在液晶上显示错误的提示信息。图4-3 密码处理程序流程图矩阵键盘扫描程序uchar keyscan() uchar scan1,scan2,keycode,j; P3=0xf0; scan1=P3; if(scan1&0xf0)!=0xf0) /判键是否按下 delayms1(80); /延时30ms scan1=P3; if(scan1&0xf0)!=0xf0) /二次判键是否按下 P3=0x0f; scan2=P3; keycode=scan1|scan2; /组合成键编码 for(j=0;j<=15;j+) if(ke
36、ycode= key_codej) /查表得键值 key=j; return(key);/返回键值 / else P1=0xff; return (16);4.3 液晶显示程序设计液晶显示程序的主要功能是对当前锁的状态进行提示,在使用液晶时,首先要对液晶进行初始化,然后还要设置字符的显示位置,只有将前期的准备工作设置完后才能在相应位置显示相应的提示信息,当没有人进行操作时,显示一串提示字符,当开锁正确时,在液晶上也会显示相应的正确信息提示,当开锁错误时,在液晶上也会显示相应的错误信息提示。液晶显示程序设计流程图如图4-4所示:设置第一行显示字符地址在第一行显示字符液晶初始化延时设置第二行显示字
37、符地址在第二行显示字符延时结束开始图4-4显示子程序流程图显示程序核心程序代码如下所示。/*-LCD_init: 5110LCD初始化- */void LCD_init(void)res=0; delay_1ms(); res=1; LCD_write_byte(0x21,0);/初始化Lcd,功能设定使用扩充指令LCD_write_byte(0xd0,0);/设定液晶偏置电压LCD_write_byte(0x20,0);/使用根本指令LCD_write_byte(0x0C,0);/设定显示模式,正常显示/*-LCD_set_XY: 设置LCD坐标函数输入参数:X:083 Y:05-*/voi
38、d LCD_set_XY(unsigned char X, unsigned char Y)LCD_write_byte(0x40 | Y, 0);/ columnLCD_write_byte(0x80 | X, 0);/ row /*-LCD_clear: LCD清屏函数-*/void LCD_clear(void)unsigned char t;unsigned char k;LCD_set_XY(0,0);for(t=0;t<6;t+) for(k=0;k<84;k+) LCD_write_byte(0x00,1); /*-LCD_write_shu: 显示8宽*16高点阵列
39、数字字母符号等半角类输入参数:c:显示的字符;-*/void LCD_write_shu(unsigned char row, unsigned char page,unsigned char c) /row:列 page:页 dd:字符unsigned char i; LCD_set_XY(row*8, page);/ 列,页 for(i=0; i<8;i+) LCD_write_byte(shuzic*16+i,1); LCD_set_XY(row*8, page+1);/ 列,页 for(i=8; i<16;i+) LCD_write_byte(shuzic*16+i,1);
40、 /*-LCD_write_hanzi: 显示16宽*16高点阵列汉字等半角类输入参数:c:显示的字符;-*/void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned char c) /row:列 page:页 dd:字符unsigned char i; LCD_set_XY(row*8, page);/ 列,页 for(i=0; i<16;i+) LCD_write_byte(hanzic*32+i,1); LCD_set_XY(row*8, page+1);/ 列,页 for(i=16; i<32;i
41、+) LCD_write_byte(hanzic*32+i,1);AT24C02程序设计本设计中数据的存储芯片选用的是AT24C02,该芯片是串行的EEPROM,支持I2C总线数据传送协议。在本系统中主要用来做掉电存储器,能将输入的数据存入AT24C02,也能从AT24C02中读出,程序流程图如图4-5所示:开始初始化AT24C04向AT24C04中写入要存储数据据延时从AT24C04中读出存储数据延时结束图4-5存储和读出程序流程图 AT24C02的读写是应用的I2C总线。所以要对它进行操作,最核心的是要懂得I2C总线。一下是以I2C总线时序为根底对AT24C02进行操作的最底层函数。 vo
42、id start() /开始位 SDA = 1; SCL = 1; delayNOP(); SDA = 0; delayNOP(); SCL = 0; /*/ void stop() / 停止位 SDA = 0; delayNOP(); SCL = 1; delayNOP(); SDA = 1; /*/ uchar shin() / 从AT24C02移出数据到MCU uchar i,read_data; for(i = 0; i < 8; i+) SCL = 1; read_data <<= 1; read_data |= SDA; SCL = 0; return(read_
43、data); /*/ bit shout(uchar write_data) / 从MCU移出数据到AT24C02 uchar i; bit ack_bit; for(i = 0; i < 8; i+) / 循环移入8个位 SDA = (bit)(write_data & 0x80); _nop_(); SCL = 1; delayNOP(); SCL = 0; write_data <<= 1; SDA = 1; / 读取应答 delayNOP(); SCL = 1; delayNOP(); ack_bit = SDA; SCL = 0; return ack_bi
44、t; / 返回AT24C02应答位 4.4 NRF24L01无线收发程序设计NRF24L01属于SPI时序芯片。而52单片机并不带有SPI接口。所以我们只能在软件中模拟SPI时序。开始初始化NRF24L01设置成接收模式接收数据结束图4-6 NRF24L01程序流图以下是NRF24L01最核心的SPI读写程序,用于其指定存放器的读写。/*函数:SPI_Write_Buf()描述:把pBuf缓存中的数据写入到nRF24L01,通常用来写入发射通道数据或接收/发送地址/*/uchar SPI_Write_Buf(uchar reg, uchar * pBuf, uchar bytes)uchar
45、status, i; CSN = 0; / CSN置低,开始传输数据 status = SPI_RW(reg); / 选择存放器,同时返回状态字 for(i=0; i<bytes; i+) SPI_RW(pBufi); / 逐个字节写入nRF24L01 CSN = 1; / CSN拉高,结束数据传输 return(status); / 返回状态存放器/*/*函数:SPI_Read_Buf()描述:从reg存放器读出bytes个字节,通常用来读取接收通道数据或接收/发送地址/*/uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)
46、uchar status, i; CSN = 0; / CSN置低,开始传输数据 status = SPI_RW(reg); / 选择存放器,同时返回状态字 for(i=0; i<bytes; i+) pBufi = SPI_RW(0); / 逐个字节从nRF24L01读出 CSN = 1; / CSN拉高,结束数据传输 return(status); / 返回状态存放器/*/*函数:SPI_Read()描述:从reg存放器读一字节/*/uchar SPI_Read(uchar reg)uchar reg_val; CSN = 0; / CSN置低,开始传输数据 SPI_RW(reg); / 选择存放器 reg_val = SPI_RW(0); / 然后从该存放器读数据 CSN = 1; / CSN拉高,结束数据传输 return(reg_val); / 返回存放器数据/*/*函数:SPI_RW_Reg()描述: 写数据value到reg存放器/*/uchar SPI_RW_Reg(uchar reg, uchar value)uchar status; CSN = 0; / CSN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025买卖钢材简易合同范本
- 2025合同违约与合同无效的差异
- 2025铝合金窗户安装合同
- 2025标准个人住宅抵押担保借款合同
- 2025网签版私人购房合同
- 2025租赁合同范本汇编
- 2025标准版土地转让合同
- 2025年国际贸易代理合同范本
- 2025年安徽省淮北市五校联考中考二模历史试题(含答案)
- 用户受电施工合同协议
- 【MOOC】老子的人生智慧-东北大学 中国大学慕课MOOC答案
- DB32-T 4569-2023 发泡陶瓷保温板保温系统应用技术规程
- 2024-2025学年北京西城区北京四中高二(上)期中物理试卷(含答案)
- 北京市矢量地图-可改颜色
- 技术转移案例
- 旅游公司抖音代运营合同范本
- 青铜器科普宣传
- 高铁课件教学课件
- 《大学生创新创业基础教程》第六章创业资源与融资
- 山水林田湖草生态环境调查技术规范DB41-T 1992-2020
- 光影中国学习通超星期末考试答案章节答案2024年
评论
0/150
提交评论