OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4392|回复: 7

DS18B20和NRF24L01

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-4-21
在线时间
0 小时
发表于 2014-4-21 21:25:10 | 显示全部楼层 |阅读模式
请问能用NRF24L01传送DS18B20采集的温度数据到另一块stm32上吗?能不能给个完整工程,谢谢啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2014-4-21 23:54:30 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-4-21
在线时间
0 小时
 楼主| 发表于 2014-4-22 19:04:45 | 显示全部楼层
回复【2楼】正点原子:
<br>---------------------------------
<br>能传送吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2014-4-22 20:35:34 | 显示全部楼层
当然可以
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-4-21
在线时间
0 小时
 楼主| 发表于 2014-4-23 00:48:54 | 显示全部楼层
回复【4楼】正点原子:
<br>---------------------------------
<br>怎么调用DS18B20采集的数据呢?新手请包涵,另外DS18B20与STM32的PA0通过跳线帽连接,可这样的话NRF24L01无法用按键选择模式,直接进入TX模式能解决吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2014-4-23 23:51:46 | 显示全部楼层
回复【5楼】c随便取个名:
<br>---------------------------------
<br>修改一下代码
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-4-21
在线时间
0 小时
 楼主| 发表于 2014-4-25 00:58:25 | 显示全部楼层
回复【6楼】 正点原子 :<br />
---------------------------------<br />
#include&nbsp;"led.h" <br />
#include&nbsp;"delay.h" <br />
#include&nbsp;"sys.h" <br />
#include&nbsp;"key.h" <br />
#include&nbsp;"usart.h" <br />
#include&nbsp;"lcd.h" <br />
#include&nbsp;"spi.h" <br />
#include&nbsp;"flash.h" <br />
#include&nbsp;"24l01.h" <br />
#include&nbsp;"ds18b20.h" <br />
#include&nbsp;"data_transfer.h" <br />
<br />
<br />
<br />
short&nbsp;temp&nbsp;=&nbsp;0;&nbsp; <br />
<br />
<br />
<br />
void&nbsp;Check_bsp(){ <br />
<br />
while(NRF24L01_Check())//检测NRF <br />
{ <br />
LCD_ShowString(60,110,"NRF&nbsp;Check&nbsp;Failed!"); <br />
delay_ms(500);                &nbsp;&nbsp; <br />
LCD_ShowString(60,110,"lease&nbsp;Check!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"); <br />
delay_ms(500); <br />
LED0=!LED0;//DS0闪烁 <br />
} <br />
LCD_ShowString(60,110,"NRF&nbsp;Ready!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");        &nbsp; <br />
POINT_COLOR=RED;//设置字体为蓝色        &nbsp;&nbsp;&nbsp; <br />
<br />
//RX_Mode(); <br />
TX_Mode();&nbsp; <br />
NRF_Mode(MODEL_TX2,40); <br />
<br />
while(DS18B20_Init())//初始化DS18B20,兼检测18B20 <br />
{ <br />
LCD_ShowString(60,130,"DS18B20&nbsp;Check&nbsp;Failed!"); <br />
delay_ms(500);                &nbsp;&nbsp; <br />
LCD_ShowString(60,130,"lease&nbsp;Check!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"); <br />
delay_ms(500); <br />
LED0=!LED0;//DS0闪烁 <br />
} <br />
LCD_ShowString(60,130,"DS18B20&nbsp;Ready!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");        &nbsp; <br />
POINT_COLOR=BLUE;//设置字体为蓝色        &nbsp;&nbsp;&nbsp; <br />
LCD_ShowString(60,150,&nbsp;"Temperate:&nbsp;&nbsp;&nbsp;.&nbsp;C");        &nbsp; <br />
<br />
} <br />
<br />
void&nbsp;Init(){ <br />
<br />
SystemInit();&nbsp;//系统时钟设置 <br />
delay_init(72);        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//延时初始化 <br />
NVIC_Configuration(); <br />
&nbsp;        uart_init(9600);//串口1初始化&nbsp; <br />
&nbsp;        LED_Init();//LED初始化 <br />
//        KEY_Init(); <br />
NRF24L01_Init(); <br />
NRF_Mode(MODEL_TX,40); <br />
<br />
<br />
<br />
LCD_Init();//初始化液晶&nbsp; <br />
<br />
POINT_COLOR=RED;//设置字体为红色        &nbsp;&nbsp;&nbsp; <br />
LCD_ShowString(60,50,"Mini&nbsp;STM32"); <br />
LCD_ShowString(60,70,"WD_NRF&nbsp;"); <br />
<br />
LCD_ShowString(60,90,"2014/1/1"); <br />
<br />
} <br />
<br />
void&nbsp;Display_Temp(){ <br />
<br />
<br />
if(temp&lt;0) <br />
{ <br />
temp=-temp; <br />
LCD_ShowChar(140,150,'-',16,0);//显示负号 <br />
}                                                &nbsp; <br />
LCD_ShowNum(148,150,temp/10,2,16);//显示温度值        &nbsp;&nbsp; <br />
LCD_ShowNum(172,150,temp%10,1,16);//显示温度值 <br />
printf("t1:%d\n",temp); <br />
delay_ms(200); <br />
LED0=!LED0; <br />
<br />
} <br />
<br />
<br />
int&nbsp;main(void) <br />
{&nbsp;&nbsp; <br />
<br />
/**/ <br />
Init(); <br />
&nbsp;&nbsp; <br />
Check_bsp(); <br />
<br />
while(1) <br />
{        &nbsp; <br />
<br />
temp=DS18B20_Get_Temp(); <br />
<br />
Send_Temp(); <br />
NRF_Check_Event(); <br />
<br />
Display_Temp(); <br />
<br />
} <br />
} <br />
请问这程序为何检测不到ds18b20呢?怎么改
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-4-29
在线时间
0 小时
发表于 2014-4-29 20:01:31 | 显示全部楼层
回复【7楼】c随便取个名:
<br>---------------------------------
<br>楼主做出来了吗,最近也在用开发板做这个,也是调不出结果,郁闷中
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-9-30 03:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表