




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重庆电子工程职业学院计算机学院论文 基于单片机控制的无线防盗系统 中文摘要本设计主要目的是建立一个整体的家庭及仓库等重要物品放置地的安防监控系统,主要功能是实时监测一定区域的人体接近状况,并把当前监测状态无线传输到距离在20-30M以内的安装主机的房间中,实现无线的监控,降低了小区或者仓库管理员的工作强度,借此希望小区或工厂的贵重物品安全问题得到有效解决。 系统主要由二个模块组成:一个人体接近动作模块,主要负责实时监控人体接近与否的状态,若人体接近则传感器立即向CPU发送标志数据,CPU接收到传感器数据后马上响应,向模块上的无线发送模块发送数据,无线发送模块接收到数据后以高速的方式向主机模块上的主机发送数据,实现实时监测人体接近与否的功能;一个主机模块,主要负责接收从机监测模块发送来的数据并处理送至液晶显示器显示以及当监测模块达到预设效果产生报警的功能,作为实时监控系统。为了丰富系统的功能和有效的利用系统资源,在主机模块还加入了一个掉电不丢失的精确时钟显示以及用红外遥控控制时间修改和报警解除的功能。考虑到软件的执行效果和系统整体的稳定性,本设计中的所有软件均在整体和局部的事物电路上调试成功。因此,本次设计的方案具有可行性。关键字:单片机;无线传输;人体接近;红外遥控 目 录要摘 - I -关键字 - II-引言 - 1 -第1章 功能概述- 3 -第2章 总体方案- 4 -2.1 总体分析- 4 -2.2 方案框图- 4 -第3章 系统构成- 5 -3.1 人体接近模块- 5 - 3.1.1 STC12C5410AD单片机介绍- 5 - 3.1.2 人体感应模块- 6 - 3.1.3 NRF24L01无线通信模块- 8 - 3.2 主机模块- 12 - 3.2.1 1602液晶显示器- 12 - 3.2.2 STC89C52RC+单片机介绍- 14 - 3.2.3 红外接收及遥控- 15 - 3.2.4 DS12C887- 17 - 第4章 软件设计- 19 -4.1 人体接近动作模块流程图- 19 - 4.2 主机模块流程图 - 19 - 第5章 程序代码- 20 - 5.1. 人体接近模块c代码- 20 -5.1.1 主机模块c代码- 24 - 5.2 原理图和实物图.- 44 - 结 论- 46 -致 谢- 47 -参考文献- 48 -II引 言随着现代电子技术计算通信技术的迅速发展,有关防盗报警方面的产品愈来愈丰富。尤其红外技术得到了迅猛的发展,红外探测技术已渗透到国民经济的各行各业和人们生活的方方面面。近年来,随着改革开放的深入发展,电子电器的飞速发展,人民的生活水平有了很大提高。各种高档家电产品和贵重物品为许多家庭所拥有。然而一些不法分子也是越来越多。这点就是看到了大部分人防盗意识还不够强.造成偷盗现象屡见不鲜。因此,越来越多的居民家庭对财产安全问题十分担忧。防盗报警系统是在探测到防范现场有入侵者时能及时发出报警信号的专用电子系统,一般由探测器(报警器)、传输系统和报警控制器组成。探测器检测到意外情况就产生报警信号,通过传输系统送入报警控制器发出声、光或其他报警信号。探测器(报警器)的种类很多,按所探测的物理量的不同,可分为微波、红外、激光、超声波和振动等方式;按电信号传输方式不同,又可分为无线传输和有线传输两种方式。由于红外线是不见光,有很强的隐蔽性和保密性,因此在防盗、警戒等安保装置中得到了广泛的应用,这时红外线报警器的简易、灵敏度高为人们解决了不少问题。但是市场上的报警器大部分都是用于一些大公司财政机构,价格高昂,一般人们难以接受,如果再设计和生产一种价廉、性能灵敏可靠的防盗报警器,必将为大多数需求者所利用,在人们的防盗和保证财产安全方面发挥更加有效的作用。本次设计采用性价比较高的51单片机作为处理器,在加上1602字符型液晶作为显示设备,采用NRF24L01无线传输模块作为主要无线传输模块,辅助采用双元热释电传感器作为检测器件。在微控制器方面,51系列单片机虽然在处理速度上和AVR及ARM等系列单片机有一定差距,但作为8位单片机,51单片机的简单但实用的各种资源决定了它作为低速单片机的主流产品,而本次设计由于对单片机的速度没有特殊的要求,也将此款单片机作为首选控制芯片。在显示器选用方面,由于考虑到数码管只能显示数字和少数简单的字母,达不到显示要求,因此决定采用液晶显示器。又考虑到本次设计中可以精简到不用汉字显示,遂决定选用1602的字符型液晶。此液晶虽不能显示汉字但可以显示全部的数字和英文字母及一些较复杂的字符,内部还存有字符库,编程上非常方便。而在无线传输设备的选用上,NRF24L01这款无线模块内部有6路无线通道,可以实现1对6的无线传输,而且可以低速传入高速发送,非常适合和51系列低速单片机接口连接,而价格方面相对其他的无线模块要低得多。通过对这些主要器件选用的严格控制,有效的减少了该系统的设计成本,虽然在性能上会弱于市面上的 系统,但无疑对于家庭和仓库这些对灵敏要求不很高的地方使用,本系统是一个较好的选择。第1章 功能概述人体接近模块上的红外热释电传感器在通电后持续监控外部红外线热信号,当在其监控区域范围内产生了一定范围内变化的红外热信号(人体红外信号),热释电传感器将热信号转换为电信号通过其模块电路转化成单片机能区分的电平信号。单片机检测到信号后转化为字符串发送到无线模块上,无线模块接收到数据后转化成数据包高速发送出去并立即转换为接收模式,等待主机发来确认信号,接收到确认信号后确认发送成功,传输模块进入待机模式,等待下一个数据的到来。主机模块功能由时间产生芯片、显示时间和信号变化的显示器(液晶屏)、报警器件(蜂鸣器)、信号接收装置(无线模块)组成、时间修改装置(红外接收头和红外遥控器)。其中时间芯片能内部产生精准的时间信号,并保存到其内部的寄存器中,单片机读取其寄存器时间数据然后经过处理后发送至显示器显示。无线模块接收到从机模块发送过来的数据后,将人体接近模块的数据存储到无线数据模块中,然后通过SPI总线将数据传送到单片机中,单片机处理数据后送至液晶显示器上显示。如果接收到的数据超过或者达到预设的效果,则蜂蜜器产生报警。红外接收头主要接收红外遥控器通过外部中断发送过来的数据包,然后将数据包送至单片机中,单片机外部中断检测到数据后停止主程序的执行,转向执行中断程序,中断执行完毕后通过返回来的值实现时间的修改和蜂蜜器报警解除等功能。人体接近无线报警实现过程为:当人体接近到热释电传感器范围内时,传感器检测到信号动作并将信号传入从机模块的CPU中,CPU检测到信号传入便马上通过SPI总线向无线传输模块中发送预设标志数据。传输完毕后,无线模块自动加上地址位、检验位、开始位等打包成一个数据包并在加强模式下高速发送出去。主机模块检测到数据包并确认数据正确后去除发送模块添加的数据部分取出发送来的数据并发送至主机模块的CPU中,CPU检测是否是人体接近信号。判别无误后,CPU向显示器发送显示F指令,刷新显示屏的初始化设置的N显示并控制蜂鸣器发声,借以通知主机安装房间有人进入检测区域。当主机检测房间监控人员察觉后可以通过遥控键来解除报警,再去处理问题。另外,主机模块上还附加了一个精确的万年历功能,主机开机后进入显示器自检界面,进入欢迎界面停留后进入时钟显示界面,该界面显示当前年、月、日、时、分、秒、星期并根据当前时间不断进行刷新。该时钟具有两个较为明显的特点:一是采用DS12C887这款时钟芯片来作为时间发生芯片,这款芯片的最大特点是它能在主机断电后持续工作长达10年的时间,而且时间精确度很高;其二是在调节时间日期的功能上取消了原有的用主机键盘调节的模式,改用红外遥控来修改时间,方便工作人员的同时也充分的利用了遥控的资源。第2章 总体方案 2.1总体分析本设计主要主要是实现通过对重要地区的人体接近检测达到人体接近重要地带时放置在重要地方附近的主机系统显示并报警,以及主机系统精确显示当前时间并能通过红外遥控修改当前的时间的功能。整个系统采用单片机作为控制元件,辅助采用人体接近释电模块作为检测人体接近并将信号传入单片机作为检测传感器;用NRF24L01无线传输模块作为两系统间的无线传输设备;使用红外接收头作为红外信号接收设备。整个过程通过传感器不断对外检测信号并传入到单片机实现对人体接近的实时监控,通过红外遥控的按键来修改当前时间及日期值并可以作为人体接近报警的解除开关。第3章 系统构成3.1 人体接近模块3.1.1 STC12C5410AD 单片机介绍 STC12C5410AD系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机。指令代完全兼容传统的8051单片机,但速度快8-12倍,内部集成MAX810专用复位电路。4路PWM,8路高速10位A/D,D/A转换,针对电机控制,强干扰场合。1,增强型8051CPU,1T,单时钟/机器周期,指令代码完全兼容传统的8051单片机 。2,工作电压:5.5-3.3V。3,工作频率范围为0-35MHZ,相当于普通单片机8051的0-420MHZ,实际工作频率可达到48MHZ。 4,10K flash 存储空间。5,片上集成 512 字节的RAM。6,15个普通I/O口,可设置成四种模式:准双向口/弱上拉,推免/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力可达到20MA,但整个芯片最大不能超过55MA。7,ISP(在线系统编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口直接下载用户程序,数秒即可完成一片。8,EEPROM功能。9,看门狗。10,时钟源:外部高精度时钟,内部R/C振荡器。用户在下载程序时可选择使用内部振荡器还是外部时钟。常温下内部振荡器的频率为5.2MHZ-6.8MHZ。精度要求不高时,可选用内部时钟。11,共2个16位定时/计数器,但可以用PCA模块再产生4个定时器。12, 2路外部中断,可选择下降沿触发和低电平触发两种方式。13,4路PWM。14, 8路10位高精度A/D,D/A转换。15,通用全双工异步串行口(UART),由于STC12系列是高速的,亦可以用定时器软件实现多串口。16,SPI 同步通信口,有主机/从机模式。17,工作温度范围:-40 +85。3.1.2 人体感应模块基于红外线技术的自动控制产品,灵敏度高,可靠性强,超低电压工作模式, 广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。模块电气参数:模块功能特点:1.全自动感应:人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平, 输出 低电平。2光敏控制(可选择,出厂时未设:可设置光敏控制,白天或光线强时不感应。温度补偿(可选择,出厂时未设、在夏天当环境温度升高至30321:,探测距离稍变短, 温度补偿可作一定的性能补偿。 4丨两种触发方式:可跳线选择)不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平 变为低电平;可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围 活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检 测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时 时间的起始点。 5具有感应封锁时间(默认设置:无封锁时间、感应模块在每一次感应输出后(高电平变成 低电平,可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。 此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产 品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒 一几十秒钟)。 6丨工作电压范围宽:默认工作电压0以-20乂。 飞.微功耗:静态电流50微安,特别适合干电池供电的自动控制产品。 8丨输出高电平信号:可方便与各类电路实现对接。模块感应范围:3.1.3 NRF24L01无线通信模块概述:nRF24L01 是一款工作在 2.42.5GHz 世界通用 ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型 SchockBurstTM 模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率、频道选择和协议的设置可以通过 SPI 接口进行设置。极低的电流消耗:当工作在发射模式下发射功率为-6dBm 时电流消耗为 9mA,接收模式时为 12.3mA。掉电模式和待机模式下电流消耗更低。原理图:功能描述:工作模式:nRF24L01 可以设置为以下几种主要的模式,表 6关于 nRF24L01 I/O 脚更详细的描述请参见下面的表 7。nRF24L01 在不同模式下的引脚功能表7、nRF24L01 引脚功能待机模式:待机模式 I 在保证快速启动的同时减少系统平均消耗电流。在待机模式 I 下,晶振正常工作。在待机模式 II 下部分时钟缓冲器处在工作模式。当发送端 TX FIFO 寄存器为空并且 CE 为高电平时进入待机模式II。在待机模式期间,寄存器配置字内容保持不变。掉电模式:在掉电模式下,nRF24L01 各功能关闭,保持电流消耗最小。进入掉电模式后,nRF24L01 停止工作,但寄存器内容保持不变。启动时间见表格 13。掉电模式由寄存器中 PWR_UP 位来控制数据包处理方式:nRF24L01 有如下几种数据包处理方式:ShockBurstTM(与 nRF2401,nRF24E1,nRF2402,nRF24E2 数据传输率为 1Mbps 时相同) 增强型 ShockBurstTM 模式ShockBurstTM 模式:ShockBurst 模式下 nRF24L01 可以与成本较低的低速 MCU 相连。高速信号处理是由芯片内部的射频协议处理的,nRF24L01 提供 SPI 接口,数据率取决于单片机本身接口速度。ShockBurst 模式通过允许与单片机低速通信而无线部分高速通信,减小了通信的平均消耗电流。在 ShockBurstTM 接收模式下,当接收到有效的地址和数据时 IRQ 通知 MCU,随后 MCU 可将接收到的数据从 RX FIFO 寄存器中读出。在 ShockBurstTM 发送模式下,nRF24L01 自动生成前导码及 CRC 校验,参见表格 12。数据发送完毕后 IRQ 通知 MCU。减少了 MCU 的查询时间,也就意味着减少了 MCU 的工作量同时减少了软件的开发时间。nRF24L01 内部有三个不同的 RX FIFO 寄存器(6 个通道共享此寄存器)和三个不同的 TX FIFO 寄存器。在掉电模式下、待机模式下和数据传输的过程中 MCU 可以随时访问 FIFO 寄存器。这就允许 SPI接口可以以低速进行数据传送,并且可以应用于 MCU 硬件上没有 SPI 接口的情况下。增强型的 ShockBurstTM 模式:增强型 ShockBurstTM 模式可以使得双向链接协议执行起来更为容易、有效。典型的双向链接为:发送方要求终端设备在接收到数据后有应答信号,以便于发送方检测有无数据丢失。一旦数据丢失,则通过重新发送功能将丢失的数据恢复。增强型的 ShockBurstTM 模式可以同时控制应答及重发功能而无需增加 MCU工作量。图 nRF24L01 在星形网络中的结构图 图 nRF24L01 接口图nRF24L01 在接收模式下可以接收 6 路不同通道的数据,见图 4。每一个数据通道使用不同的地址,但是共用相同的频道。也就是说 6 个不同的 nRF24L01 设置为发送模式后可以与同一个设置为接收模式的nRF24L01 进行通讯,而设置为接收模式的 nRF24L01 可以对这 6 个发射端进行识别。数据通道 0 是唯一的一个可以配置为 40 位自身地址的数据通道。15 数据通道都为 8 位自身地址和 32 位公用地址。所有的数据通道都可以设置为增强型 ShockBurst 模式。3.2 主机模块3.2.1 1602液晶实物图:简介1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5*7或者5*11的点阵组成,每个点阵字符位都可以显示一个字符。每位之间都有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,它不能显示图形。液晶能显示两行字符,每行可显示16位。模块编程简便,刷新速度快,是一款低端的高性能显示设备。管脚功能引脚说明1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线 VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:寄存器选择控制表注:关于E=H脉冲开始时初始化E为0,然后置E为1,再清0. busy flag(DB7):在此位为被清除为0时,LCD将无法再处理其他的指令要求。接口示意图3.2.2 STC89C52RC+单片机介绍STC89C52RC+单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统的8051单片机,12时钟/机器周期、6时钟/机器周期可任意选择1,增强型12时钟/机器周期、6时钟/机器周期8051CPU。2,工作电压5.5-3.4V。3,工作频率范围0-40MHZ,相当于传统8051单片机的0-80MHZ实际工作频率可到达48MHZ。 4,片上集成4K flash 存储器。5,片上集成512字节的RAM。6,通用I/O口32个,复位后P1/P2/P3口为准双向口/弱上拉(普通8051传统I/O口),P0口是开漏输出,作为总线拓展用时,不用接上拉电阻;作为普通I/O口用时,需外加上拉电阻。7,ISP(在线系统编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口直接下载用户程序,数秒即可完成一片。8,EEPROM功能。9,看门狗。10,共3个16位定时/计数器,其中定时器0还可以当为两个8位定时器用。11,4路外部中断,下降沿触发或者低电平触发。12,通用全双工异步串行口(UART),由于STC12系列是高速的,亦可以用定时器软件实现多串口。13,ISP(在线系统编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口直接下载用户程序,数秒即可完成一片。14,工作温度范围:-40 +85。15,封装:PLCC-40,PIDP-44.16,管脚图3.2.3 红外线接收头及遥控 红外接收头原理我们知道,人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.620.76m;紫光的波长范围为0.380.46m。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。红外线遥控就是利用波长为0.761.5m之间的近红外线来传送控制信号的。红外遥控系统红外遥控的概述: 红外线的光谱位于红色光之外, 波长是0.761.5m,比红光的波长还长。红外遥控是利用红外线进行传递信息的一种控制方式,红外遥控具有抗干扰,电路简单,容易编码和解码,功耗小,成本低的优点。红外遥控几乎适用所有家电的控制。 红外遥控系统的主要部分为调制、发射和接收,如图 所示:图1 红外遥控系统1.调制 红外遥控是以调制的方式发射数据,就是把数据和一定频率的载波进行“与”操作,这样既可以提高发射效率又可以降低电源 功耗。 调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的方波,如图2所示,这是由发射端所使用的 455kHz晶振决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz1237.9 kHz38kHz。图2 载波波形2.发射系统 目前有很多种芯片可以实现红外发射,可以根据选择发出不同种类的编码。由于发射系统一般用电池供电,这就要求芯片 的功耗要很低,芯片大多都设计成可以处于休眠状态,当有按键按下时才工作,这样可以降低功耗芯片所用的晶振应该有 足够的耐物理撞击能力,不能选用普通的石英晶体,一般是选用陶瓷共鸣器,陶瓷共鸣器准确性没有石英晶体高,但通常 一点误差可以忽略不计。 红外线通过红外发光二极管(LED)发射出去,红外发光二极管(红外发射管)内部构造与普通的发光二极管基本相同,材料和普通发光二极管不同,在红外发射管两端施加一定电压时,它发出的是红外线而不是可见光。图3b 射极输出驱动电路图3a 简单驱动电路如图3a和图3b是LED的驱动电路,图3a是最简单电路, 选用元件时要注意三极管的开关速度要快,还要考虑到LED的正向 电流和反向漏电流,一般流过LED的最大正向电流为100mA,电流越大,其发射的波形强度越大。 图3a电路有一点缺陷,当电池电压下降时,流过LED的电流会降低,发射波形强度降低,遥控距离就会变小。图3b所示的 射极输出电路可以解决这个问题,两个二极管把三级管基极电压钳位在1.2V左右,因此三级管发射极电压固定在0.6V左右, 发射极电流IE基本不变,根据IEIC,所以流过LED的电流也基本不变,这样保证了当电池电压降低时还可以保证一定的遥控距离。3.接口电路图:3.2.4 DS12C887时钟芯片芯片特点DS12C887 实时时钟芯片功能丰富,可以用来直接代替IBMPC上的时钟日历芯片 DS12887,同时,它的管脚也和MC146818B、DS12887 相兼容。由于 DS12C887 能够自动产生世纪、 年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,解决了“千年”问题;DS12C887 中自带有锂电池,外部掉电时,其内部时间信息还能够保 持 10 年之久;对于一天内的时间记录,有12 小时制和 24 小时制两种模式。在 12 小时 制模式中,用 AM 和PM 区分上午和下午; 时间的表示方法有两种,一种用二进制数表示,一种是用 BCD 码表示;DS12C887 中 带有 128 字节 RAM,其中有 11 字节 RAM 用来存储时间信息,4字节 RAM 用来存储DS12C887 的控制信息,称为控制寄存器,113 字节通用 RAM 使用户使用;此外用户还 可对 DS12C887进行编程以实现多种方波输 出,并可对其内部的三路中断通过软件进行 屏蔽。引脚功能DS12C887 的引脚排列如图 1 所示,各管脚的功能说明如下:GND、VCC:直流电源,其中 VCC 接+5V 输入,GND 接地,当 VCC 输入为+5V 时,用 户可以访问 DS12C887 内 RAM 中的数据,并可对其进行读、写操作;当 VCC 的输入小于+4.25V 时,禁止用户对内部 RAM 进行读、写操作,此时用户不能正确获取芯片内的时间信 息;当 VCC 的输入小于+3V 时,DS12C887 会自动将电源发换到内部自带的锂电池上,以保证 内部的电路能够正常工作。(1)MOT:模式选择脚,DS12C887 有两种工作模式,即 Motorola 模式和 Intel 模式,当 MOT 接 VCC 时,选用的工作模式是 Motorola 模式,当 MOT 接 GND 时,选用的是 Intel 模式。本 文主要讨论 Intel 模式。(23)SQW:方波输出脚,当供电电压 VCC 大于 4.25V 时,SQW 脚可进行方波输出,此时用 户可以通过对控制寄存器编程来得到 13 种方波信号的输出。AD0AD7:复用地址数据总线,该总线采用时分复用技术,在总线周期的前半部分,出 现在 AD0AD7 上的是地址信息,可用以选通 DS12C887 内的 RAM,总线周期的后半部分出 现在 AD0AD7 上的数据信息。(14)AS:地址选通输入脚,在进行读写操作时,AS 的上升沿将 AD0AD7 上出现的地址信 息锁存到 DS12C887 上,而下一个下降沿清除 AD0AD7 上的地址信息,不论是否有效, DS12C887 都将执行该操作。(17)DS/RD:数据选择或读输入脚,该引脚有两种工作模式,当 MOT 接 VCC 时,选用 Motorola 工作模式,在这种工作模式中,每个总线周期的后一部分的 DS 为高电平,被称为数 据选通。在读操作中,DS 的上升沿使 DS12C887 将内部数据送往总线 AD0AD7 上,以供外 部读取。在写操作中,DS 的下降沿将使总线 AD0AD7 上的数据锁存在 DS12C887 中;当 MOT 接 GND 时,选用 Intel 工作模式,在该模式中,该引脚是读允许输入脚,即 Read Enable。(15)R/W:读/写输入端,该管脚也有 2 种工作模式,当 MOT 接 VCC 时,R/W 工作在 Motorola 模式。此时,该引脚的作用是区分进行的是读操作还是写操作,当 R/W 为高电平时 为读操作,R/W 为低电平时为写操作;当 MOT 接 GND 时,该脚工作在 Intel 模式,此时该作 为写允许输入,即 Write Enable。(13)CS:片选输入,低电平有效。(19)IRQ:中断请求输入,低电平有效,该脚有效对 DS12C887 内的时钟、日历和 RAM 中的 内容没有任何影响,仅对内部的控制寄存器有影响,在典型的应用中,RESET 可以直接接 VCC,这样可以保证 DS12C887 在掉电时,其内部控制寄存器不受影响。在 DS12C887 内有 11 字节 RAM 用来存储时间信息,4 字节用来存储控制信息.接口电路图:第4章 软件设计4.1人体接近动作模块流程图 4.2 主机模块流程图第5章 程序代码1.1人体接近模块C代码/*此部分为人体接近模块发送模块驱动*/*存入function.h头文件中* /*#includeSTC12C5410AD.h#include #define uint unsigned int#define uchar unsigned char#define ulong unsigned long/*12*IO端口定义*sbit MISO =P16;sbit MOSI =P15;sbit SCK =P17;sbit CE =P12;sbit CSN =P14;/sbit IRQ =P1.1;sbit ds1820_clk_hb=P37;/*NRF24L01*#define TX_ADR_WIDTH 5 / 5 uints TX address width#define RX_ADR_WIDTH 5 / 5 uints RX address width#define TX_PLOAD_WIDTH 5 / 5 uints TX payload#define RX_PLOAD_WIDTH 5 / 5 uints TX payload/*NRF24L01寄存器指令*#define READ_REG 0x00 / 读寄存器指令#define WRITE_REG 0x20 / 写寄存器指令#define RD_RX_PLOAD 0x61 / 读取接收数据指令#define WR_TX_PLOAD 0xA0 / 写待发数据指令#define FLUSH_TX 0xE1 / 冲洗发送 FIFO指令#define FLUSH_RX 0xE2 / 冲洗接收 FIFO指令#define REUSE_TX_PL 0xE3 / 定义重复装载数据指令#define NOP 0xFF / 保留/*SPI(nRF24L01)寄存器地址*#define CONFIG 0x00 / 配置收发状态,CRC校验模式以及收发状态响应方式#define EN_AA 0x01 / 自动应答功能设置#define EN_RXADDR 0x02 / 可用信道设置#define SETUP_AW 0x03 / 收发地址宽度设置#define SETUP_RETR 0x04 / 自动重发功能设置#define RF_CH 0x05 / 工作频率设置#define RF_SETUP 0x06 / 发射速率、功耗功能设置#define STATUS 0x07 / 状态寄存器#define OBSERVE_TX 0x08 / 发送监测功能#define CD 0x09 / 地址检测#define RX_ADDR_P0 0x0A / 频道0接收数据地址#define RX_ADDR_P1 0x0B / 频道1接收数据地址#define RX_ADDR_P2 0x0C / 频道2接收数据地址#define RX_ADDR_P3 0x0D / 频道3接收数据地址#define RX_ADDR_P4 0x0E / 频道4接收数据地址#define RX_ADDR_P5 0x0F / 频道5接收数据地址#define TX_ADDR 0x10 / 发送地址寄存器#define RX_PW_P0 0x11 / 接收频道0接收数据长度#define RX_PW_P1 0x12 / 接收频道0接收数据长度#define RX_PW_P2 0x13 / 接收频道0接收数据长度#define RX_PW_P3 0x14 / 接收频道0接收数据长度#define RX_PW_P4 0x15 / 接收频道0接收数据长度#define RX_PW_P5 0x16 / 接收频道0接收数据长度#define FIFO_STATUS 0x17 / FIFO栈入栈出状态寄存器设置/uchar TX_ADDRESSTX_ADR_WIDTH= 0x01,0x20,0x20,0x20,0x20; /本地地址/uchar RX_ADDRESSRX_ADR_WIDTH= 0x01,0x20,0x20,0x20,0x20; /接收地址uchar TX_ADDRESS1RX_ADR_WIDTH=0x02,0x20,0x20,0x20,0x20; /本地地址1uchar bdata sta; /状态标志sbit RX_DR =sta6;sbit TX_DS =sta5;sbit MAX_RT =sta4;/*/*延时函数/*/void inerDelay_us(unsigned char n)for(;n0;n-)_nop_();/*/*函数:uint SPI_RW(uint uchar)/*功能:NRF24L01的SPI写时序/*/uint SPI_RW(uint ucharx)uint bit_ctr;for(bit_ctr=0;bit_ctr8;bit_ctr+) / output 8-bitMOSI = (ucharx & 0x80); / output uchar, MSB to MOSIucharx = (ucharx 1); / shift next bit into MSB.SCK = 1; / Set SCK high.ucharx |= MISO; / capture current MISO bitSCK = 0; / .then set SCK low againreturn(ucharx); / return read uchar/*/*函数:uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)/*功能: 用于写数据:为寄存器地址,pBuf:为待写入数据地址,uchars:写入数据的个数 /*/uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)uint status,uchar_ctr;CSN = 0; /SPI使能status = SPI_RW(reg);for(uchar_ctr=0; uchar_ctruchars; uchar_ctr+) /SPI_RW(*pBuf+);CSN = 1; /关闭SPIreturn(status); /*/*功能:NRF24L01读写寄存器函数/*/uint SPI_RW_Reg(uchar reg, uchar value)uint status;CSN = 0; / CSN low, init SPI transactionstatus = SPI_RW(reg); / select registerSPI_RW(value); / .and write value to it.CSN = 1; / CSN high againreturn(status); / return nRF24L01 status uchar/*/*函数:void nRF24L01_TxPacket(unsigned char * tx_buf)/*功能:发送 tx_buf中数据/*/void nRF24L01_TxPacket(uchar * tx_buf)CE=0; /StandBy I模式SPI_Write_Buf(WRITE_REG + RX_ADDR_P1, TX_ADDRESS1, TX_ADR_WIDTH); / 装载接收端地址 SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); / 装载数据/ SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);CE=0; / IRQ收发完成中断响应,16位CRC,主发送CE=1; /置高CE,激发数据发送inerDelay_us(70);CE=0;CE=1;inerDelay_us(70);void init_NRF24L01(void)inerDelay_us(100);CE=0; / chip enableCSN=1; / Spi disableSCK=0; / Spi clock line init highSPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS1, TX_ADR_WIDTH); / 写本地地址 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS1, TX_ADR_WIDTH); / 写接收端地址 SPI_RW_Reg(WRITE_REG + EN_AA, 0x03); / 频道0和频道1自动 ACK应答允许 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x03); / 允许接收地址有频道0和频道1SPI_RW_Reg(WRITE_REG + RF_CH, 0); / 设置信道工作为2.4GHZ,收发必须一致 SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); /设置0通道接收数据长度,本次设置为5字节SPI_RW_Reg(WRITE_REG + RX_PW_P1, RX_PLOAD_WIDTH); /设置1通道接收数据长度,本次设置为5字节SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); /设置发射速率为1MHZ,发射功率为最大值0dBSPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); / IRQ收发完成中断响应,16位CRC ,主发送CE=1;/*此部分为人体接近模块主函数*/*#includefunction.hsbit led
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-广西-广西下水道养护工三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广东-广东堤灌维护工二级(技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-安徽-安徽客房服务员三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-北京-北京护理员三级(高级工)历年参考题库典型考点含答案解析
- 2025年驾驶证考试-摩托车理论考试-摩托车驾驶证(科目四)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-铸造造型(芯)工-铸造造型(芯)工(初级)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-合成氨生产工-合成氨生产工职业技能鉴定(高级)历年参考题库含答案解析(5套)
- 2025年综合评标专家-浙江-浙江综合评标专家(医疗保障局)历年参考题库含答案解析(5套)
- 2025年综合评标专家-山东-山东综合评标专家(咨询类)历年参考题库含答案解析(5套)
- 烫伤家庭急救
- 2025时事政治考试题库(含答案)
- 公务车驾驶员安全课件
- 地铁安检培训课件
- 2025年豪华别墅室内外装饰设计及施工一体化服务合同
- 废铅酸蓄电池回收处置项目可行性研究报告
- 2025年重庆对外建设有限公司招聘考试笔试试题
- 2025年阿克苏社区专职工作人员招聘真题
- 肥料登记证授权合同范本
- 药学教学课件下载
- 急性下壁心肌梗死患者PCI术后护理个案
- 出生缺陷防治知识课件
评论
0/150
提交评论