哈尔滨理工大学学士学位论文 (ARC)达到上限,MAX_RT置高,TX FIFO中数据保留以便在次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知MCU。最后发射成功时,若CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。
接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RX FIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据[18]。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。NRF24L10的原理图如3-11所示。
VDDC7C833nF10nF1nFCE1CECSN2CSN3SCKSCKMOSI4MOSIMISO5MISOIRQC9R222K2019181716VSSDVDDVDDVSSIREFU1C550omh,RFI/O3.9nH1.5pFC6L11.0pF8.2nHL22.7nHC3C42.2nF4.7pFL36IRQ7VDD8VSS9XC210XC1C122pF15VSS14ANT213ANT112VDD_PA11VDDNRF24L01X116MR11MC222pF图3-11NRF24L10原理图
3.7 本章小结
本章就系统的硬件电路进行了设计,在设计过程中采用模块化设计方法,即根据系统的要求对各传感器及单片机电路分别进行设计,最终再将其组合为一体。
主控电路采用以STC89C52为核心的单片机电路,温度传感器采用数字型温度传感器DS18B20,直接与单片机的P2.7口相连;湿度传感器为电容性传感器,通过与555振荡电路相结合得出频率信号输入到单片机内,由软件部分进行处理得到湿度值。最终测量结果显示在LCD1602显示屏上,并判断采集数据是否超出程序设定的上限报警值,如若超出报警上限则驱动蜂鸣器报警,并将数据通过无线收发模块和串口技术传到上位机以便进行对温湿度的控制。
- 21 -
哈尔滨理工大学学士学位论文 第4章 软件设计
4.1 主程序流程图
主程序的主要功能是负责读出并处理DS18B20的测量温度值,读出测湿电路的结果,并将温度及湿度进行实时显示,判断是否超出上下限,如若超出则报警并向上微机发送数据。程序流程图如图4-1所示。
开始显示温湿度初始化报警检测否是发送数据扫描键盘测量温湿度结束图4-1 主程序流程图
4.2 温度模块程序设计
温度模块主要包括DS18B20的初始化以及与单片机之间的数据处理, DS18B20的所有操作均从初始化开始,初始化过程如图4-3所示。初始化的过程是首先由CPU发出一个复位脉冲,复位脉冲的时间为480~960us,然后由从属器件发出应答脉冲[19]。初始化是主CPU发出一个复位信号,将数据总线上的DS18B20复位,然后释放总线,该总线位接收状态。由于接有上拉电阻,在释放总线是有15~60us的时间间隙,在此之后的60~240us时间内,如果CPU检测到总线为低电平的话,则说明DS18B20初始化完成。DS18B20中的温度传感器可完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。12位转化后得到的12位数据,存储在DS18B20的两个8B的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1,程序中对于温度小于0的情况进行的适当的处理,并将在显示中显示所得温度为负[20]。整个温度采集过程如图4-2所示。
- 22 -
哈尔滨理工大学学士学位论文 开始N初始化DS18B20Y跳过读ROM启动温度转换N初始化DS18B20Y读取温度返回主菜单
图4-2 温度采集
开始DQ置高电平延时DQ复位延时大于480msDQ拉高电平延时15-60msNDQ为低电平Y结束
图4-3 DS18B20初始化
4.3 湿度模块程序设计
湿度模块主要是利用定时器T0和T1对555的输出频率进行测量,在该块程序设计中,我们选取T0做定时器,定时时间是50ms,而选择T1做计数器,每当T0定时时间到就读取T1的计数值,然后将T1的计数值乘以20就可得到555芯片的输出频率,可进行数据处理进而得到相对湿度值,湿度测量程序流程图如图4-4所示。
- 23 -
哈尔滨理工大学学士学位论文 开始开启T0,T1N计时满50msY关闭T0,读T1计算频率结束
图4-4 湿度测量
4.4 显示子程序设计
显示子程序包括1602的初始化,以及对温度和湿度值的显示。初始化时第一行显示“wend”,第二行显示“shid”,然后根据温度的测得值及其正负将测得温度值和设定温度值在第一行,并将测得的频率值转换为相对湿度值,并将其和湿度设定值显示在第二行,显示子程序流程图如图4-5所示。
- 24 -
哈尔滨理工大学学士学位论文 开始1602初始化设置初始化显示温度值转换ASC码显示温度符号加数值T1计数值*20将频率值转化为湿度值显示湿度值结束图4-5 显示子程序流程图
4.5 按键模块程序设计
本系统采用了四个按键,将加减设置按键接两个外部中断0和1上,当外部中断被触发(即存在设定值设置)时,判断是另外两个按键是否按下(即判断是温度值设定还是湿度值设定),然后根据判断的条件执行设定值的改变。分别设置温度的加减和湿度的加减,程序流程图如图4-6所示。
开始外部中断引脚复位外部中断0NP0.1=1YTsheding-1P0.0=1YTsheding+1N外部中断1P0.0=1YHsheding+1NP0.1=1NYHsheding-1结束图4-6 按键程序流程图
- 25 -