当前位置:首页 > 温度采集系统设计毕业论文要点
2、主要程序 发送端程序:
void nRF24L01_TxPacket(uint8 * tx_buf) { }
int main(void) {
uint8 TxBuf[20] = {0x01}; uint8 i,j; uint32 temp; ioset();
//IO口初始化 //SPI初始化
//定时器0初始化,每秒钟发送一次数据 //nrf24L01初始化
MSPIInit(); Timer0Init(); Delay(6000); while(1) {
//将LM35采集的温度信息进行AD转换
//将32位的温度信息分成四个八位,只取
temp = ADCGet(2);
//发送起始位
IO0CLR |= CE; inerDelay_us(200);
SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,
// 频道0装载接收端地址
//
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH);
//StandBy I模式
TX_ADR_WIDTH); 装载数据
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);// IRQ收发完成中断响应,16位IO0SET |= CE; inerDelay_us(6000);
//置高CE,激发数据发送 高电平>10US
CRC,主发送
init_NRF24L01();
TxBuf[1] = temp >> 8; TxBuf[2] = temp;
低十六位方便发送
22
if (tf==1)
{
nRF24L01_TxPacket(TxBuf); //发送温度数据 tf=0;
Delay(1000); }
return 0;
}
接收端程序: int main(void) { uint8 RxBuf[20]={1,2}; uint8 I; uint16 ad; char str[10]; float ad1; ioset();
//IO口初始化 UARTInit(); //串口通讯初始化 MSPIInit(); //SPI初始化 init_NRF24L01();
//nrf24L01初始化
Delay(6000);
for(i=0;i<20;i++)
{ RxBuf[i] = 0x00;
//清空RxBuf
}
Delay(1000);
nRF24L01_RxPacket(RxBuf);
//接收nrf24L01收到的数据
ad=( ((uint32)RxBuf[1]<<8 )|((uint32)RxBuf[2]);
接收到的四个八位数据重新组合成十六位数据 ad1 = (float)ad / 10;
//T(℃) = V(mv)/ 10 23
//将
3-1)
(
if(RxBuf[0] == 0x01) 送板的数据 { }
if(RxBuf[0] == 0x02) { } { } }
RxBuf[i] = 0x00; return 0;
DelayNS(10);
DelayNS(10);
//判断起始位,如果是01,则为第一块发
sprintf(str,”channel1:%.2f\\n”,ad1); SendStr(str);
//将数据通过串口发送给PC机
sprintf(str,”channel2:%.2f\\n”,ad1); SendStr(str);
for(i=0;i<20;i++)
//清空RxBuf
24
共分享92篇相关文档