自己也是初学者,大部分程序是芯片、显示屏自带的例程,自己移植并修改为我所用,代码没有仔细整理,但没有用到的函数全部注释掉了,也加了必要的注释,方便阅读
再次向原作者表示感谢。。。
自己测试全部通过,
SHT31 SCL和SDA在i2c_hal.c中修改
显示如图。
单片机源程序如下:
- //-- Includes -----------------------------------------------------------------
- #include "system.h"
- #include "sht3x.h"
- #include "math.h"
- #include "i2c_hal.h"
- ft temperature; // temperature [°C]
- ft humidity; // relative humidity [%RH]
-
- void OLED_P20x48Ch(unsigned char x, y, N);
- void OLED_P14x32Ch(unsigned char x, y, N);
- void Delay100us(unsigned int j);
- void SHT3X_Init(u8t i2cAddress);
- void SHT3X_SetI2cAdr(u8t i2cAddress);
- etError SHT3X_GetTempAndHumi(ft* temperature, ft* humidity,
- etRepeatability repeatability, etMode mode,
- u8t timeout);
- void Write_IIC_Byte(unsigned char IIC_Byte);
- void display(void);
- int main(void)
- {
- SHT3X_Init(0x44) ;
- display();
-
- while(1)
- {
- int a,b,c;
- etError error;
- I2c_StartCondition();
- if(SHT_SDA != 0){} // do error handling here
-
- error =SHT3X_GetTempAndHumi(&temperature, &humidity, REPEATAB_HIGH, MODE_CLKSTRETCH, 50);
-
- I2c_StopCondition();
-
- a=floor(temperature);
- b=floor(temperature*10);
- c=(int)(humidity) ;
-
- OLED_P20x48Ch(0,2,(a/10));
- OLED_P20x48Ch(23,2,(a%10));
- OLED_P14x32Ch(48,4,(b%10));
-
- OLED_P20x48Ch(80,2,(c/10));
- OLED_P20x48Ch(103,2,(c%10));
- //Delay100us(250);
- }
- }
复制代码
所有资料51hei提供下载:
SHT31_OLED12864温湿度.zip
(93.8 KB, 下载次数: 178)
|