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;
}
...全文
4369 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
丿寡人 2016-03-07
  • 打赏
  • 举报
回复
你好,能把你的程序列出来看一下吗?
摸鱼瓶 2015-07-27
  • 打赏
  • 举报
回复
我已经解决了,我的是这个问题:因为裸机用的是16M的RC振荡器,而osal上换上了32M晶振(因为射频需要精准的时钟),所以裸机上的dht11时序就出错了。
qq_41303544 2021-06-29
  • 举报
回复
@摸鱼瓶 你好,可以留一个联系方式帮忙解决一下吗?
摸鱼瓶 2015-07-26
  • 打赏
  • 举报
回复
我也出现了这样的问题,裸机没问题,到了osal就不行了,我在读取数据关了中断了
2013淹死的鱼 2014-10-23
  • 打赏
  • 举报
回复
请问楼主上面的问题解决了吗?我现在也遇到了跟你同样的问题,求帮助啊
u010708034 2014-05-10
  • 打赏
  • 举报
回复
程序显示00 那跟没采集数据一个效果 硬件连接ok不?软件上你的程序为什么只有写的程序,没有读的程序?
supersheepcy 2014-05-08
  • 打赏
  • 举报
回复
同求~我感觉是芯片没有将数据传入
IPFS(InterPlanetary File System)是一个基于内容寻址的、分布式的、新型超媒体传输协议。IPFS支持创建完全分布式的应用。它旨在使网络更快、更安全、更开放。IPFS是一个分布式文件系统,它的目标是将所有计算设备连接到同一个文件系统,从而成为一个全球统一的存储系统。某种意义上讲,这与Web最初的目标非常相似,但是它是利用BitTorrent协议进行Git数据对象的交换来达到这一个目的的。IPFS正在成为现在互联网的一个子系统。IPFS有一个更加宏伟而疯狂的目标:补充和完善现有的互联网,甚至最终取代它,从而成为新一代的互联网。这听起来有些不可思议,甚至有些疯狂,但的确是IPFS正在做的事情。图1-1所示为IPFS的官方介绍。 图1-1 IPFS官方介绍IPFS项目通过整合已有的技术(BitTorrent、DHT、Git和SFS),创建一种点对点超媒体协议,试图打造一个更加快速、安全、开放的下一代互联网,实现互联网中永久可用、数据可以永久保存的全球文件存储系统。同,该协议有内容寻址、版本化特性,尝试补充甚至最终取代伴随了我们20多年的超文本传输协议(即HTTP协议)。IPFS是一个协议,也是一个P2P网络,它类似于现在的BT网络,只是拥有更强大的功能,使得IPFS拥有可以取代HTTP的潜力。Filecoin是运行在IPFS上的一个激励层,是一个基于区块链的分布式存储网络,它把云存储变为一个算法市场,代币(FIL)在这里起到了很重要的作用。代币是沟通资源(存储和检索)使用者(IPFS用户)和资源的提供者(Filecoin矿工)之间的中介桥梁,Filecoin协议拥有两个交易市场—数据检索和数据存储,交易双方在市场里面提交自己的需,达成交易。IPFS和Filecoin相互促进,共同成长,解决了互联网的数据存储和数据分发的问题,特别是对于无数的区块链项目,IPFS和Filecoin将作为一个基础设施存在。这就是为什么我们看到越来越多的区块链项目采取了IPFS作为存储解决方案,因为它提供了更加便宜、安全、可快速集成的存储解决方案。

3,846

社区成员

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

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