Fan Ruitian的博客

http://fanruitian.cn

zigbee网关 zstack CC2530添加iic温度传感器lm75a

lm75a已经裸机驱动起来,下一步准备添加在zstack中zigbee网关 cc2530裸机驱动温度传感器LM75A

把iic.c, iic.h, lm75a.c, lm75a.h拷贝到zigbeeGateWay工程中的source目录下

右击app选择添加source把iic.c和lm75a.c添加进来

在协调器的workspace中分别选中iic.c和lm75a.c右击选择option把exclude from build勾上,这样协调器就不会把这两个文件编译进来


把lm75a中main函数等函数删掉仅留下

float ReadTemp(void)

函数

把iic.c中iic初始化函数改成

void iic_init()
{
   P0DIR |= 1<<6 | 1<<7; //数据线时钟线设置输出模式
  P0INP &= ~(1<<6);//数据线输入上拉或者下拉
  P2INP &= ~(1<<5);//数据线输入上拉
        set_sda_out();
	SCL = 1;
	delay();
	SDA = 1;
	delay();
}

至此,lm75a的驱动函数完成

参考Zigbee网关 cc2530 zstack添加1602驱动的做法,因为这是一个单向控制的,简单的把之前周期报告led状态的函数改成报告温度的函数即可

添加头文件,为了协调器工程不报错,使用的宏if

#ifndef APP_UIP
#include "iic.h"
#include "lm75a.h"
#endif

在初始化函数中添加iic初始化

#ifndef APP_UIP
iic_init();
#endif


将函数

void ZigbeeGateWay_SendPeriodicMessage( void )
中的前3行改成如下:

uint8 led_string[20];
  //int led_State = P0;
  sprintf((char*)led_string, "Temperature:%2.1f",ReadTemp());

ok,完成,上电测试,

收到的消息

{"From":"Endian","Addr":"3E92","Type":"Message","Content":"Temperature:2.1f"}

好像不太对,%2.1f没给翻译

原因是printf formatter太低了,选Auto,让编译器自己选合适的formatter


上电测试


成功了,温度升高是因为我用手按了一会儿。

更多精彩案例请参考 web.nenewind.com


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010615629/article/details/49929915
个人分类: Zigbee
上一篇zigbee网关 cc2530裸机驱动温度传感器LM75A
下一篇zigbee网关 android客户端编写温度计功能
想对作者说点什么? 我来说一句

CC2530-HMC5883L通过I2C通信

2013年04月18日 31KB 下载

cc2530采集温度的完整程序

2016年04月24日 13.22MB 下载

没有更多推荐了,返回首页

关闭
关闭