cc2530 dht11 无线采集时 dht11 采集到的数据显示为00 求大神帮忙,看一下

handsome009 2013-12-14 11:16:48
由于没有读数,所以,我先在采集端用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;
}
...全文
4538 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
丿寡人 2016-03-07
  • 打赏
  • 举报
回复
你好,能把你的程序列出来看一下吗?
摸鱼瓶 2015-07-27
  • 打赏
  • 举报
回复
我已经解决了,我的是这个问题:因为裸机用的是16M的RC振荡器,而osal上换上了32M晶振(因为射频需要精准的时钟),所以裸机上的dht11时序就出错了。
Code零度编程 2021-06-29
  • 举报
回复
@摸鱼瓶 你好,可以留一个联系方式帮忙解决一下吗?
摸鱼瓶 2015-07-26
  • 打赏
  • 举报
回复
我也出现了这样的问题,裸机没问题,到了osal就不行了,我在读取数据关了中断了
2013淹死的鱼 2014-10-23
  • 打赏
  • 举报
回复
请问楼主上面的问题解决了吗?我现在也遇到了跟你同样的问题,求帮助啊
u010708034 2014-05-10
  • 打赏
  • 举报
回复
程序显示00 那跟没采集数据一个效果 硬件连接ok不?软件上你的程序为什么只有写的程序,没有读的程序?
supersheepcy 2014-05-08
  • 打赏
  • 举报
回复
同求~我感觉是芯片没有将数据传入

3,849

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 无线
社区管理员
  • 无线
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧