基于单片机的无线温度采集报警系统设计内容摘要:

UP PRIM_RX CE FIFO寄存器状态 接收模式 1 1 1 发送模式 1 0 1 数据在 TXFIFO寄存器中 发送模式 1 0 1→0 停留在发送模式,直 至数据发送完 待机模式 II 1 0 1 TXFIFO为空 待机模式 I 1 0 无数据传输 掉电模式 0 nRF24L01 在不同模式下的引脚功能如表 5 表 5 引脚功能 引脚名称 方向 发送模式 接收模式 待机模式 掉电模式 CE 输入 高电平 10us 高电平 低电平 CSN 输入 SPI片选使能,低电平使能 SCK 输入 SPI时钟 MOSI 输入 SPI串行输入 MISO 三态输出 SPI 串行输出 IRQ 输出 中断,低电平使能 nRF24L01 有如下几种数据包处理方式: ① ShockBurstTM(与 nRF2401, nRF24E1, nRF2402, nRF24E2 数据传输率为 1Mbps 基于单片机的无线温度采集报警系统设计 9 时相同)。 ② 增强型 ShockBurstTM 模式。 ShockBurstTM 模式 ShockBurst 模式下 nRF24L01 可以与成本较低的低速 MCU 相连。 高速信号处理是由芯片内部的射频协议处理的, nRF24L01 提供 SPI 接口,数据率取决于单片机本身接口速度。 ShockBurst 模式通过允许与单片机低速通信而无线部分高速通信,减小了通信的平均消耗电流。 在 ShockBurstTM 接收模式下,当接收到有效的地址和数据时 IRQ 通知 MCU,随后 MCU 可将接收到的数据从 RX FIFO 寄存器中读出。 在 ShockBurstTM 发送模式下, nRF24L01 自动生成前导码及 CRC 校验。 数据发送完毕后 IRQ 通知 MCU。 减少了 MCU 的查询时间,也就意味着减少了 MCU 的工作量同时减少了软件的开发时间。 nRF24L01 内部有三个不同的 RX FIFO 寄存器( 6 个通道共享此寄存器)和三个不同的 TX FIFO 寄存器。 在掉电模式下、待 机模式下和数据传输的过程中 MCU 可以随时访问 FIFO 寄存器。 这就允许 SPI接口可以以低速进行数据传送,并且可以应用于 MCU 硬件上没有 SPI 接口的情况下。 增强型的 ShockBurstTM 模式: 增强型 ShockBurstTM 模式可以使得双向链接协议执行起来更为容易、有效。 典型的双向链接为:发送方要求终端设备在接收到数据后有应答信号,以便于发送方检测有无数据丢失。 一旦数据丢失,则通过重新发送功能将丢失的数据恢复。 增强型的ShockBurstTM 模式可以同时控制应答及重发功能而无需增加 MCU工作量。 nRF24L01 在接收模式下可以接收 6路不同通道的数据。 每一个数据通道使用不同的地址,但是共用相同的频道。 也就是说 6个不同的 nRF24L01设置为发送模式后可以与同一个设置为接收模式的 nRF24L01 进行通讯,而设置为接收模式的 nRF24L01 可以对这 6 个发射端进行识别。 数据通道 0是唯一的一个可以配置为 40 位自身地址的数据通道。 1~5 数据通道都为 8位自身地址和 32位公用地址。 所有的数据通道都可以设置为增强型 ShockBurst 模式。 nRF24L01 在确认收到数据后记录地址,并以此地址为 目标地址发送应答信号。 在发送端,数据通道 0被用做接收应答信号,因此,数据通道 0 的接收地址要与发送端地址相等以确保接收到正确的应答信号。 nRF24L01配置为增强型的 ShockBurstTM 发送模式时,只要 MCU 有数据要发送, nRF24L01就会启动 ShockBurstTM 模式来发送数据。 在发送完数据后 nRF24L01 转到接收模式并等待终端的应答信号。 如果没有收基于单片机的无线温度采集报警系统设计 10 到应答信号, nRF24L01 将重发相同的数据包直到收到应答信号或重发次数超过SETUP_RETR_ARC 寄存器中设置的值为止,如果重发 次数超过了设定值,则产生MAX_RT 中断。 只要收到确认信号, nRF24L01 就认为最后一包数据已经发送成功(接收方已经收到数据),把 TX FIFO中的数据清除掉并产生 TX_DS 中断( IRQ 引脚置高)。 SPI 指令及时序 SPI 接口可能用到的指令在下面有所说明。 CSN 为低后 SPI 接口等待执行指令。 每一条指令的执行都必须通过一次 CSN 由高到低的变化。 参见表 6。 表 6 SPI 指令 指令名称 指令格式 操作 R_REGISTER 000AAAAA 读配置寄存器。 AAAAA指出读操 作的寄存器地址。 W_REGISTER 001AAAAA 写配置寄存器。 AAAAA指出写操作的寄存器地址只有在掉电模式和待机模 式下可操作。 R_RX_PAYLOAD 01100001 读 RX有效数据: 132字节。 读操作全部从字节 0开始。 当读 RX有效数据 完成后, FIFO 寄存器中有效数据被清除。 应用于接收模式下。 W_RX_PAYLOAD 10100000 写 TX有效数据: 132字节。 写操作从字节 0开始。 应用于发射模式下。 FLUSH_TX 11100001 清除 TXFIFO寄存器,应用于发射模式 下。 FLUSH_RX 11100010 清除 RXFIFO寄存器,应用于接收模式下。 在传输应答信号过程中不应执行此指令。 也就是说,若传输应答信号过程中执行此指令的话将使得应答信号不能被完整的传输。 REUSE_TX_PL 11100011 重新使用上一包有效数据。 当 CE为高过程中,数据包被不断的重新发射。 在发射数据包过程中必须禁止数据包重利用功能。 NOP 11111111 空操作。 可以用来读状态寄存器。 图 9给出了时序。 在写寄存器之前一定要进入待机模式或掉电模式。 在图 8 、 9中用到了下面的符号 :CnSPI 指令位 ,Sn状态寄存器位 Dn数据位 . 图 8 SPI 读操作 图 9 SPI写操作 基于单片机的无线温度采集报警系统设计 11 3 系统硬件电路设计 AT89C52 单片机最小系统 单片机的时钟信号用来提供单片机片内各种操作的时间基准,时钟信号通常用两种电路形式得到 :内部振荡和外部振荡。 MCS51 单片机内部有一个用于构成振荡器的高增益反向放大器,引脚 XTAL1 和 XTAL2 分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,在其外接晶体振荡器 (简称 晶振 )或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。 图 10 晶振电路 图 10 中外接晶体以及电容 C2 和 C1 构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为 30PF 左右,晶振频率选 12MHz。 为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使 CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。 单片机的复位是靠外电路来实现的,在正常运行情况下,只要 RST 引脚上出现两个 机器周期时间以上的高电平,即可引起系统复位,但如果 RST 引脚上持续为高电平,单片机就处于循环复位状态。 复位后系统将输入 /输出 (I/O)端口寄存器置为 FFH,堆栈指针 SP 置为07H, SBUF 内置为不定值,其余的寄存器全部清 0,内部 RAM 的状态不受复位的影响,在系统上电时 RAM 的内容是不定的。 复位操作有两种情况,即上电复位和手动 (开关 )复位。 本系统采用手动复位方式。 图中 R1 和 C3 组成手动复位电路,其值 R 取为10K, C 取为 10μF,如图 11。 基于单片机的无线温度采集报警系统设计 12 图 11 复位电路 3. 2 温度检测模块电路 DS18B20 可 以采用两种方式供电 ,一种是采用电源供电方式如图 12,此时DS18B20 的 1 脚接地 ,2 脚作为信号线 ,3 脚接电源 .另一种是寄生电源供电方式 ,为保证在有效的 DS18B20时钟周期内提供足够的电源 ,可用一个 MOSFET管来完成对总线的上拉。 当 DS18B20 处于写存储器操作和温度 A/D 转换时,总线上必须有强的上拉 ,上拉开启时间最大为 10 微秒 .采用寄生电源供电方式是 VDD 和 GND 端均接地 .由于单线制只有一根线,因此发送接口必须是三态的。 图 12 DS18B20 接口电路 温度显示模块电路 显示部分由 1602LCM 及数码管构成。 接收端采用 LCM1602 点阵液晶作为人机交互界面。 该 LCD 模块是由 LCD 驱动器, LCD 控制器、少量的电阻电容以及 LCD 屏组成,质量轻、体积小、功耗低、显示内容丰富,提供。 此外,液晶显示接口简单方便,可直接与微处理器相连,实时显示采集所测试的温度值。 当实时温度超过设定的报警温度上、下限值,接收端由 LCD显示发送端传来的温度信息,并发出报警声。 发射端采用数码管显示, 数码管要正常显示,就要用 驱动电路 来驱动数码管的各基于单片机的无线温度采集报警系统设计 13 个段码,从而显示出我们要的 数字 ,因此根据数码管的 驱动方式 的不同,可以分为静态式和动态式两类。 数码管动态显示 是 单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的 8 个显示笔划 a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极 COM 增加位选通控制电路,位选通由各自独立的 I/O 线控制,当单片机输出字形码时,所有数码管都接收到相 同的字形码,数码管 哪位 显示字形取决于单片机对位选通电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。 通过分时轮流控制各个数码管的的 COM 端,就使各个数码管轮流受控显示,这就是动态驱动。 在轮流显示过程中,每位数码管的点亮时间为 1~ 2ms,由于人的视觉暂留现象及发光二极管的 余辉 效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是 一组稳定的显示数据,不会有闪烁感。 本电路发射端由 PNP 三极管驱动数码管显示温度值, ~ 接数码管的位选端,控制数码管的动态显示。 发射端显示电路如图 13,接收端显示电路如图 14。 图 13 数码管显示电路 图 14 LCD 显示电路 基于单片机的无线温度采集报警系统设计 14 发射电路模块 发射功能由 nRF24L01 完成,其引脚 MISO 及 MOSI 与单片机进行通信,单片机将温度信息交给 nRF24L01 并以( GFSK)的调制方式发送出去,如上图 15。 图 15 发射电路模块 接收电路模块 由 nRF24L01 收 发一体芯片对温度信号进行接收解调,将接收到温度信息交由单片机进行处理,单片机控制显示器进行温度显示,如上图 16。 图 16 接收电路模块 基于单片机的无线温度采集报警系统设计 15 4 系统软件设计 系统程序主要包括发送主程序,接收端主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序,温度比较子程序,按键扫描子程序,发送子程序和接收子程序等。 主程序 ( 1)发送端主程序 发送端主程序的主要功能是负责温度的实时采集、读出并处理 DS18B20 的测量的当前温度值,温度测量每 1s 进行一次。 这样 可以在一秒测量一次被测温度,程序流程见图 17。 图 17 发送端主程序流程图 图 18 接收端主程序( 2)接收端主程序 接收端主程序主要完成数据接收,显示,比较及报警。 其程序流图见图 18。 子 程序 ( 1)读出温度子程序 读出温度子程序的主要功能是读出 RAM中的 9字节,在读出时需进行 CRC校验,校验有错时不进行温度数据的改写。 其程序流程图如图 19所示。 LCD 初始化 接收温度信息 显示 温度值比较 开始 按键扫描 DS18B20 复位 读取温度 数据转换 显示 发送 开 始 结束 结束 基于单片机的无线温度采集报警系统设计 16 发复位命令 发跳过 ROM 命令 发温度转换命令 结束 N Y 图 19 读出温度子程序流程图 ( 2)温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用 12 位分辨率时转换时间约为 750ms,在本程序。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。