找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2106|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于STM32的HDC1080傳感器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:958854 發(fā)表于 2021-12-14 12:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
TI公司的傳感器芯片 使用IIC通訊

單片機(jī)源程序如下:
  1. /*
  2. * HDC1080.c:

  3. */
  4. #include "hdc1080.h"
  5. #include <stdlib.h>
  6. #include <stdio.h>

  7. #define HDC1080_I2CADDR         0x40
  8. #define HDC1080_TEMPERATURE     0x00
  9. #define HDC1080_HUMIDITY        0x01
  10. #define HDC1080_CONFIG          0x02
  11. #define HDC1080_CONFIG_RST      (1 << 15)
  12. #define HDC1080_CONFIG_HEAT     (1 << 13)
  13. #define HDC1080_CONFIG_MODE     (1 << 12)
  14. #define HDC1080_CONFIG_BATT     (1 << 11)
  15. #define HDC1080_CONFIG_TRES_14  0
  16. #define HDC1080_CONFIG_TRES_11  (1 << 10)
  17. #define HDC1080_CONFIG_HRES_14  0
  18. #define HDC1080_CONFIG_HRES_11  (1 << 8)
  19. #define HDC1080_CONFIG_HRES_8   (1 << 9)

  20. #define HDC1080_SERIAL_ID_FIRST 0xFB
  21. #define HDC1080_SERIAL_ID_MID   0xFC
  22. #define HDC1080_SERIAL_ID_LAST  0xFD
  23. #define HDC1080_MANUFID         0xFE
  24. #define HDC1080_DEVICEID        0xFF

  25. bool HDC1080_Init(void)
  26. {
  27.     uint16_t data;
  28.     uint8_t buf[2];
  29.     uint16_t config = HDC1080_CONFIG_RST | HDC1080_CONFIG_MODE | HDC1080_CONFIG_TRES_14 | HDC1080_CONFIG_HRES_14;

  30.     //soft reset
  31.     IIC_WriteReg(HDC1080_I2CADDR, HDC1080_CONFIG, (config>>8)&0x00FF);
  32.     DELAY_MS(15);
  33.    
  34.     IIC_ReadData(HDC1080_I2CADDR, HDC1080_MANUFID, buf, 2);
  35.     data = (buf[0]<<8)+buf[1];
  36.     if(data!=0x5449)
  37.         return false;
  38.         
  39.     IIC_ReadData(HDC1080_I2CADDR, HDC1080_DEVICEID, buf, 2);
  40.     data = (buf[0]<<8)+buf[1];
  41.     if(data!=0x1050)
  42.         return false;
  43.         
  44.     Usart1_Send("HDC1080 initialize register finished.\r\n");
  45.     return true;
  46. }

  47. float HDC1080_Temperature(void)
  48. {
  49.     float data;
  50.     uint8_t buf[2];
  51.     IIC_ReadData(HDC1080_I2CADDR, HDC1080_TEMPERATURE, buf, 2);
  52.     data=(buf[0]<<8)+buf[1];
  53.    
  54.     data /= 65536;
  55.     data *= 165;
  56.     data -= 40;
  57.     return data;
  58. }

  59. float HDC1080_Humidity(void)
  60. {
  61.     float data;
  62.     uint8_t buf[2];
  63.     IIC_ReadData(HDC1080_I2CADDR, HDC1080_HUMIDITY, buf, 2);
  64.     data=(buf[0]<<8)+buf[1];
  65.    
  66.     data /= 65536;
  67.     data *= 100;
  68.     return data;
  69. }
復(fù)制代碼

Keil代碼下載:
HDC1080.7z (183.2 KB, 下載次數(shù): 44)


評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表