SHT3x和SHT4x系列温湿度传感器通用驱动源代码,可读取SHT3x或SHT4x系列传感器的温湿度值并在128*64的OLED屏幕上显示,显示值保留2位小数,每次读取数据都进行校验,保证数据读取的正确。可通过修改变量或IO口跳线来设定是驱动SHT3x芯片或是SHT4x芯片。 附件是完整的工程文件,可直接编译使用。程序在STC8G1K17单片机上测试通过,其它型号单片机可能需要修改头文件。代码中有详细注释,便于解读。
单片机源程序如下:
- /****************************************
- **
- ** 项目名称: SHT3x&4x温湿度传感器采集
- ** 文件名称: MAIN.c
- ** 模块功能: 主程序
- ** 创 建 者: 常建国
- ** E-mail : cjg1972@163.com
- ** QQ : 2768842781
- ** 创建时间: 2026-01-08
- ** 版 本: v1.0(stc8g1k17/11.0592M)
- ** 描 述: 读取SHT3x&4x温湿度传感器数据并计算、校验,在OLED屏幕上显示
- **
- *********************************************************/
- #include <stc8g.h>
- #include <intrins.H>
- #include <define.H>
- #include <OLEDLIB.H>
- #include <OLED12864.c>
- #include <sht3x4x.c>
- /*******************************************************************************************************/
- /*******************************************************************************************************/
- void main(void) //主函数
- {
- P1M1=0x00; //设置P1口准双向
- P1M0=0x00;
- P3M1=0x00; //设置P3口准双向
- P3M0=0x00;
- P5M1=0x00; //设置P5口准双向
- P5M0=0x00;
- Init_Timer(); //初始化定时器
- OLED_Init(); //初始化OLED
- if(P10==0)MODEL=0; //根据IO口设置芯片型号SHT3x
- if(P11==0)MODEL=1; //根据IO口设置芯片型号SHT4x
- SHT_init(0x44); //初始化SHT传感器
- OLED_Brig(250); //设置屏幕亮度
- OLED_CLS(); //清屏幕
- OLED_P6x8Str(0,44,MODEL==0?"SHT3x":"SHT4x",0);
- while(1) //主循环
- {
- SHT_read_result(0x44);
- delayMS(3000); //3秒钟刷新一次
- }
- }
- /********************************************************/
- /********************************************************/
- void Init_Timer(void) //初始化定时器
- {
- AUXR=0xc0; //T0、T1为1T模式
- TL0=T1MS; //定时器0赋初值
- TH0=T1MS>>8;
- ET0=1; //打开定时器0中断
- TR0=1; //启动定时器0
- EA=1; //总中断打开
- }
- /********************************************************/
- /********************************************************/
- void Timer0_isr(void) interrupt 1 //定时器0中断程序
- {
- MS++; //ms计数
- }
复制代码
Keil代码下载:
SHT3x4x.rar
(24.36 KB, 下载次数: 0)
|