cc2530 dht11 无线采集时 dht11 采集到的数据显示为00 求大神帮忙,看一下
由于没有读数,所以,我先在采集端用12864显示一下采集到的数据,但是下载好后,程序运行显示的 都是 00
00, dht11裸机程序可以当独运行,运行后市可以读到数据的
#include <hal_assert.h>
#include <hal_board.h>
#include <hal_int.h>
#include "hal_mcu.h"
#include "hal_rf.h"
#include "JLX12864.h"
#include "hal_adc.h"
#include "basic_rf.h"
#include "DHT11.h"
/***********************************************************************************
* CONSTANTS
*/
// Application parameters
#define RF_CHANNEL 25 // 2.4 GHz RF channel
#define PAN_ID 0x2007
#define SEND_ADDR 0x1520 //发送模块地址
#define RECEIVE_ADDR 0x1515 //接收模块地址
#define APP_PAYLOAD_LENGTH 8 //数据长度
#define uint unsigned int
#define uchar unsigned char
/***********************************************************************************
* LOCAL VARIABLES
*/
static uint8 pTxData[APP_PAYLOAD_LENGTH];
static basicRfCfg_t basicRfConfig;
uint16 count=0;
uint16 AD_data0=0;
uint16 AD_data1=0;
float num0=0;
float num1=0;
void main(void)
{
// Config basicRF
basicRfConfig.panId = PAN_ID;
basicRfConfig.channel = RF_CHANNEL;
basicRfConfig.ackRequest = TRUE;
basicRfConfig.myAddr = SEND_ADDR; // 设定本机地址
/*pTxData[0] = 24; // 装载第1个数据
pTxData[1] = 35; // 装载第2个数据
pTxData[2] = 4; // 装载第3个数据
pTxData[3] = 125; // 装载第4个数据
pTxData[4] = 78; // 装载第5个数据
pTxData[5] = 68; // 装载第5个数据*/
halBoardInit(); //初始化单片机
Initial_IO(); //初始化IO
initial_lcd();
clear_screen();
if(halRfInit()==FAILED) {
HAL_ASSERT(FALSE);
}
if(basicRfInit(&basicRfConfig)==FAILED) {
HAL_ASSERT(FALSE);
}
basicRfReceiveOff(); //关接收,省电
while (1) {
if(++count>254) //计时参数 ,时间到
{
count = 0;
halIntOff(); // Put MCU to sleep.
halMcuSetLowPowerMode(HAL_MCU_LPM_3); // Will turn on global
halIntOn(); // interrupt enable
DHT11_TEST(); //温湿度
/*pTxData[4]=wendu_shi+49;
pTxData[5]=wendu_ge%10+48;
pTxData[6]=shidu_shi+48;
pTxData[7]=shidu_ge%10+48;*/
LCD_disp_char(1,80, temp[2]); //显示数据
LCD_disp_char(2,80,humidity[2]); //显示数据
}
halMcuWaitMs(1); // 延时1毫秒
}
}
#include <ioCC2530.h>
#include "JLX12864.h"
#include "DHT11.h"
#include "hal_board.h"
#include "hal_mcu.h"
#define uint unsigned int
#define uchar unsigned char
#define Red_LED P1_4
#define wenshi P1_0
/*******函数声明*********/
void Delay_us(void); //1 us延时
void Delay_10us(void); //10 us延时
void Delay_ms(uint Time);//n ms延时
void COM(void); // 温湿写入
void DHT11_TEST(void) ; //温湿传感启动
//温湿度定义
uchar ucharFLAG,uchartemp;
uchar shidu_shi,shidu_ge,wendu_shi,wendu_ge=4;
uchar ucharT_data_H,ucharT_data_L,ucharRH_data_H,ucharRH_data_L,ucharcheckdata;
uchar ucharT_data_H_temp,ucharT_data_L_temp,ucharRH_data_H_temp,ucharRH_data_L_temp,ucharcheckdata_temp;
uchar ucharcomdata;
uchar temp[2]={0,0};
uchar temp1[5]="temp=";
uchar humidity[2]={0,0};
uchar humidity1[9]="humidity=";
uchar wendu,shidu;//定义温度存放变量
/****************************
//延时函数
*****************************/
void Delay_us(void) //1 us延时
{
halMcuWaitUs(1);
}
void Delay_10us(void) //10 us延时
{
halMcuWaitUs(10);
}
void Delay_ms(uint xms) //i=xms
{
uint i,j;
for(i=xms;i>0;i--)
for(j=1200;j>0;j--);
}
/*********************
温湿度传感
***********************/
void COM(void) // 温湿写入
{
uchar i;
for(i=0;i<8;i++)
{
ucharFLAG=2;
while((!wenshi)&&ucharFLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
uchartemp=0;
if(wenshi)uchartemp=1;
ucharFLAG=2;
while((wenshi)&&ucharFLAG++);
if(ucharFLAG==1)break;
ucharcomdata<<=1;
ucharcomdata|=uchartemp;
}
}
void DHT11_TEST(void) //温湿传感启动
{
P1DIR |= 0x01;
wenshi=0;
Delay_ms(20); //>18MS
P1DIR &= ~0x01; //重新配置IO口方向
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
if(!wenshi)
{
ucharFLAG=2;
while((!wenshi)&&ucharFLAG++);
ucharFLAG=2;
while((wenshi)&&ucharFLAG++);
COM();
ucharRH_data_H_temp=ucharcomdata;
COM();
ucharRH_data_L_temp=ucharcomdata;
COM();
ucharT_data_H_temp=ucharcomdata;
COM();
ucharT_data_L_temp=ucharcomdata;
COM();
ucharcheckdata_temp=ucharcomdata;
wenshi=1;
uchartemp=(ucharT_data_H_temp+ucharT_data_L_temp+ucharRH_data_H_temp+ucharRH_data_L_temp);
// P0DIR &= ~0x01; //重新配置IO口方向
// wenshi=1;
if(uchartemp==ucharcheckdata_temp)
{
ucharRH_data_H=ucharRH_data_H_temp;
ucharRH_data_L=ucharRH_data_L_temp;
ucharT_data_H=ucharT_data_H_temp;
ucharT_data_L=ucharT_data_L_temp;
ucharcheckdata=ucharcheckdata_temp;
}
wendu_shi=ucharT_data_H/10;
wendu_ge=ucharT_data_H%10;
shidu_shi=ucharRH_data_H/10;
shidu_ge=ucharRH_data_H%10;
//wendu = ucharT_data_H;
//shidu = ucharRH_data_H;
}
else //没用成功读取,返回0
{
wendu_shi=0;
wendu_ge=0;
shidu_shi=0;
shidu_ge=0;
//wendu = 0;
//shidu = 0;
}
P1DIR &= ~0x01; //重新配置IO口方向
// wenshi=1;
}