关闭

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

标签: zigbee网关LM75AZstackcc2530IIC
1533人阅读 评论(0) 收藏 举报
分类:

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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:90117次
    • 积分:1500
    • 等级:
    • 排名:千里之外
    • 原创:62篇
    • 转载:1篇
    • 译文:0篇
    • 评论:10条
    文章分类
    最新评论