#include "mbed.h" Serial pc(SERIAL_TX, SERIAL_RX,115200); //定义串口 I2C AM2311(I2C_SDA,I2C_SCL); //定义I2C引脚 //唤醒AM2311 void AM2311_Awaken(void) { AM2311.start(); AM2311.write(0xb8); wait_ms(1); AM2311.stop(); } //发送指令 void AM2311_SendCmd(void) { AM2311.start(); AM2311.write(0xb8); //写指令 AM2311.write(0x03); //"0X03"功能码读取多路寄存器 AM2311.write(0x00); //从0X00寄存器地址开始读取 AM2311.write(0x04); //读取寄存器个数 AM2311.stop(); wait_ms(5); } //读取数据无校验 void Read_data(uint8_t *buf) { char i = 0; AM2311.start(); AM2311.write(0xb9); //读数据指令 wait_us(50); //延迟30us for(i=0;i<7;i++) { buf[i]=AM2311.read(1); } buf[i] = AM2311.read(0); //根据手册最后一位无应答 AM2311.stop(); } ///CRC检验 unsigned int CRC16(unsigned char *ptr, unsigned char len) { unsigned int crc=0xffff; unsigned char i; while(len--) { crc ^=*ptr++; for(i=0;i<8;i++) { if(crc & 0x1) { crc>>=1; crc^=0xa001; } else { crc>>=1; } } } return crc; } ///检查CRC校验是否对 unsigned char CheckCRC(unsigned char *ptr) { unsigned int crc; crc=(unsigned int)CRC16(ptr,8-2); if(ptr[8-1]==(crc>>8) && ptr[8-2]==(crc & 0x00ff)) { return 0xff; } else { return 0x0; } } //读取温湿度数据并且校验 正确返回 0XFF 错误返回 0x00 char Read_AM2311_Data(uint8_t *read_buf) { //static uint8_t read_buf[10]; AM2311_Awaken(); //唤醒 AM2311_SendCmd(); //发送读指令 Read_data(read_buf); //读取数据 if(CheckCRC(read_buf)) //校验数据 { return 0xff; } else { return 0x00; } } int main() { uint8_t buf_data[10]; //读取数据缓存区 float tmp = 0,hum = 0; //组合数据后 存放的缓冲区 AM2311.frequency(50); //设置 while(1) { if(Read_AM2311_Data(buf_data)) //判断数据校验是否正确 正确才读取数据 { tmp = (float)(buf_data[4]*256+buf_data[5])/10; //根据数据手册 读取数据 除以10得到正真的数据 hum = (float)(buf_data[2]*256+buf_data[3])/10; printf("Temp = %.1f\r\n",tmp); //保留一位小数串口打印 printf("hum = %.1f\r\n",hum); printf("=================================\r\n\r\n"); } else { printf("校验错误\r\n"); } wait(2); //延迟一下 } } 程序 温湿度AM2311.rar (1.82 MB, 下载次数: 0) 2017-2-18 21:54 上传 点击文件名下载附件 温湿度AM2311手册 AM2311PDF中文资料.pdf (1.11 MB, 下载次数: 4) 2017-2-18 21:54 上传 点击文件名下载附件
收藏1 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
9
72
1
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号