junyi12 发表于 2018-12-7 09:20

AM2311传感器测试程序



本程序利用Ginkgo I2C适配器底层接口函数对AM2311温湿度传感器进行读写控制,同时将读取的数据打印输出,程序代码如下:
#include <stdio.h>
#include <Windows.h>
//定义I2C适配器底层函数的函数指针
typedef int(*I2C_Funtion)(char *in,char *out);
//数据存储区
unsigned char inString;
unsigned char outString;
//主函数
int main(void)
{
      // 加载DLL
      HINSTANCE hDLL;    //DLL句柄
      hDLL = LoadLibrary("vtfreqfunc.dll");
      //获取I2C初始化函数指针地址
      I2C_Funtion I2C_Init = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_Init");
      //获取I2C写数据函数指针地址
      I2C_Funtion I2C_WriteData = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_WriteData");
      //获取I2C读数据函数指针地址
      I2C_Funtion I2C_ReadData = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_ReadData");
      //获取I2C设备选择函数指针地址
      I2C_Funtion I2C_SelectDevice = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_SelectDevice");
      //选择I2C适配器
      printf("选择I2C适配器\n");
      I2C_SelectDevice("0",(char*)outString);//选择I2C适配器
      printf("%s\n\n",outString);//显示选择适配器操作后的字符串数据
      //初始化I2C适配器
      //数据格式为:“控制模式|设备地址|读写速度|子地址模式|子地址宽度|初始化通道”
      printf("初始化I2C适配器\n");
      I2C_Init("1|0xB8|100000|2|0|0",(char*)outString);//初始化I2C适配器
      printf("%s\n\n",outString);//显示初始化后适配器返回的初始化结果字符串

      //唤醒AM2311传感器(不需要实际的数据)
      printf("唤醒AM2311传感器\n");
      I2C_WriteData("0|0",(char*)outString);
      printf("%s\n\n",outString);//显示数据写操作后的结果

      //向AM2311传感器写控制数据,首字节为子地址,本适配器被初始化为无子地址模式,因此该数据无效
      printf("向AM2311传感器写控制数据\n");
      I2C_WriteData("0x00|0x03|0x00|0x04",(char*)outString);
      printf("%s\n\n",outString);//显示数据写操作后的结果

      //读取AM2311传感器所测的温度和湿度
      printf("读取AM2311传感器所测的温度和湿度\n");
      I2C_ReadData("0x00|8",(char*)outString);//首字节为子地址(无效数据),读取8字节数据
      printf("%s\n\n",outString);//显示返回来的数据,数据格式为:“数据1|数据2|...|数据n”

      FreeLibrary(hDLL);
      system("pause");
      return 0;
}
复制代码
程序运行效果如下:
http://viewtool.com/bbs/data/attachment/forum/201208/21/141317ctwcgwqmq2ct18ih.jpg
唤醒AM2311传感器I2C总线输出时序:
http://viewtool.com/bbs/data/attachment/forum/201208/21/1417589tgn97jm7m9m597z.jpg
向AM2311写数据I2C总线输出时序:
http://viewtool.com/bbs/data/attachment/forum/201208/21/141759axbuq47ykaqaq9tv.jpg
向AM2311读数据I2C总线输出时序:
http://viewtool.com/bbs/data/attachment/forum/201208/21/141756771taff1d8lksbbk.jpg
程序源码包下载(VS2010)工程:   AM2311.zip (269.72 KB, 下载次数: 89)
AM2311传感器使用手册下载:   AM2311PDF中文资料.pdf (1.11 MB, 下载次数: 430)
页: [1]
查看完整版本: AM2311传感器测试程序