3.3.2 收发模式的自动识别设计

为简化编程,增强代码通用性,本文为上位单片机和下位单片机设计了完全相同的同一套程序代码,系统自动识别并设置工作模式,无需人为区分单片机是接收还是发送。实现接收和发送模式自动切换的代码如下:

void Switch_RT(uchar SW, uchar mode)

{ //收发模式切换子函数

CE=0; //待机

if(SW) //为1

SPI_WR_Reg(CONFIG, SPI_RD(CONFIG) & 0xfe); //发射模式

else //为0

SPI_WR_Reg(CONFIG, SPI_RD(CONFIG) | 0x01); //接收模式if(mode)

CE=1; //拉高CE启动收发

}

程序默认无线模块处于接收模式,下位单片机测得温度数据后,将Config寄存器的PRIM_RX位置0,控制nRF2401工作于发送模式,将数据打包发出,随即将PRIM_RX位置1,处于接收模式;上位机端nRF2401接收到数据包后,即由上位单片机将其读出并通过串口传给上位PC机。

PC机向下位机发送指令时,首先将指令发给上位单片机,上位单片机一旦接到指令,即将PRIM_RX位置0,控制nRF2401工作于发送模式,发出数据包;下位单片机通过nRF2401接收后将数据包读出执行。

4 、系统运行情况

PC机应用程序采用Visual Studio2010 VB.net编写,上位单片机与PC机应用程序之间的通信通过串口控件实现,二者之间的参数设置需一致。

基于DS18B20和nRF2401的库区测温网络无线传输系统

程序运行界面如图4所示,各库区温度正常时,温度值字体颜色正常,某库区温度超过正常值时,相应温度值字体以红色显示并闪烁,下位单片机自动接通对应库区继电器,启动散热风扇进行降温;当温度下降至正常值后,单片机控制继电器关断散热风扇,同时温度值字体颜色恢复正常。温度值右侧标签显示的数据是设定的正常温度范围。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查