找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8609|回复: 20
打印 上一主题 下一主题
收起左侧

基于STC单片机的AHT20温湿度做的oled12864温湿度计 源程序

  [复制链接]
跳转到指定楼层
楼主
这个传感器出来有两个多月了,1.9票的很值,提供下仅供大家参考谢谢代码已经校准和小米基本差异。早在快俩月前就弄好了今天闲发一贴
喜欢的请给我加分,谢谢


这是做的彩屏的
代码局部截图

这个IC长这样

下载选项一定不要勾选“允许低压复位”,并将低压检测电压设置成3.0V

单片机源程序如下:
  1. #include "stc8.h"        //STC8头文件
  2. #include "def.h"        //宏定义 常用函数
  3. #include "delay.h"  //延时函数
  4. #include "aht10.h"
  5. #include "timer.h"
  6. #include "oled.h"



  7. u32  read_aht10_Cnt = 0;

  8. u32  CT_data[2];

  9. int  AHT10_Tem,AHT10_Hum;

  10. //本地函数申明

  11. void Read_TempAndHum(void);

  12. //外部扩展变量声明
  13. extern bit B_1ms;

  14. void main(void)
  15. {  
  16.     u8  ret = 0;  
  17.     u8  cnt = 0;
  18.    
  19.     //延时等待电源稳定
  20.     delay_ms(500);
  21.     delay_ms(500);
  22.    
  23.     Timer0_Init();         //定时器0初始化
  24.     Timer1_Init();         //定时器1初始化
  25.    
  26.     EA     = 1;            //开启总中断
  27.    
  28.     OLED_Init();                       //初始化OLED  
  29.     OLED_Clear();          //清屏

  30.     ret = JH_Init();

  31.     while(JH_Read_Cal_Enable()==0)//等到校准输出使能位为1,才读取。
  32.     {
  33.         ret = JH_Init();      //如果为0再使能一次
  34.         delay_ms(30);
  35.         
  36.         if(++cnt>3)
  37.             break;
  38.     }

  39.     while(1)
  40.     {
  41.         Read_TempAndHum();      //获取温湿度
  42.     }
  43. }

  44. void Read_TempAndHum(void)
  45. {
  46.     if(read_aht10_Cnt>=1000)     //1S读取一次温湿度
  47.     {
  48.         JH_Read_CTdata(CT_data);                //读取温度和湿度

  49.         //计算得到湿度值(放大了10倍,如果c1=523,表示现在湿度为52.3%)
  50.         AHT10_Hum = CT_data[0]*1000/1024/780;

  51.         //计算得到温度值(放大了10倍,如果t1=245,表示现在温度为24.5℃)
  52.         AHT10_Tem = CT_data[1] *200*10/1024/1024-512;

  53.         /*************  温湿度计  **********/
  54.         OLED_ShowCHinese(32,0, 1,16);//温
  55.         OLED_ShowCHinese(48,0, 2,16);//湿
  56.         OLED_ShowCHinese(64,0, 3,16);//度
  57.         OLED_ShowCHinese(80,0, 4,16);//计
  58.         
  59.         /*************  显示温度  **********/
  60.         OLED_ShowCHinese(0 ,3, 1,16); //温
  61.         OLED_ShowCHinese(16,3, 3,16); //度
  62.         OLED_ShowString( 32,3,":",16);
  63.         OLED_ShowString( 64,3,".",16);//显示小数点

  64.         OLED_ShowNum(48, 3,AHT10_Tem/100     , 1,16);//环境温度-十位
  65.         OLED_ShowNum(56, 3,(AHT10_Tem%100)/10, 1,16);//环境温度-个位
  66.         OLED_ShowNum(72, 3,AHT10_Tem%10      , 1,16);//环境温度-小数位
  67.         
  68.         OLED_ShowCHinese(96,3,0,16);  //"℃"
  69.         
  70.         /*************  显示湿度  **********/
  71.         OLED_ShowCHinese(0 ,6, 2,16); //湿
  72.         OLED_ShowCHinese(16,6, 3,16); //度
  73.         OLED_ShowString( 32,6,":",16);
  74.         OLED_ShowString( 64,6,".",16);//显示小数点
  75.         
  76.         OLED_ShowNum(48, 6,AHT10_Hum/100     , 1,16);//环境湿度-十位
  77.         OLED_ShowNum(56, 6,(AHT10_Hum%100)/10, 1,16);//环境湿度-个位
  78.         OLED_ShowNum(72, 6,AHT10_Hum%10      , 1,16);//环境湿度-小数位

  79.         OLED_ShowString(96, 6,"%",16);

  80.         read_aht10_Cnt = 0;
  81.     }
  82. }
复制代码

所有资料51hei提供下载:
修改的AHT20温湿度已验证.zip (178.45 KB, 下载次数: 593)





评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏19 分享淘帖 顶4 踩
回复

使用道具 举报

沙发
ID:272187 发表于 2021-2-13 05:07 | 只看该作者
代码可以用666
回复

使用道具 举报

板凳
ID:631046 发表于 2021-3-23 16:50 | 只看该作者
实测可用
回复

使用道具 举报

地板
ID:153676 发表于 2021-6-9 10:01 | 只看该作者
我的电脑因为缺少"STC8.H"编译不了,求大神分享一个啊
回复

使用道具 举报

5#
ID:328014 发表于 2021-6-10 03:52 | 只看该作者
pyy1980 发表于 2021-6-9 10:01
我的电脑因为缺少"STC8.H"编译不了,求大神分享一个啊

这里下载,和main.c放在一个目录,就可以编译成功了 如图http://www.51hei.com/bbs/dpj-131249-1.html

51hei.png (46.77 KB, 下载次数: 146)

51hei.png
回复

使用道具 举报

6#
ID:63317 发表于 2021-6-10 05:53 | 只看该作者

实测可用
回复

使用道具 举报

7#
ID:272119 发表于 2021-6-10 20:34 | 只看该作者
去年调试这个没有成功,一直拖着没有继续进行,看来又可以借楼主的代码完成这个案子了,谢谢!
回复

使用道具 举报

8#
ID:961748 发表于 2021-8-22 18:32 | 只看该作者
移植到辉芒单片机了 实测可用,支持国产
回复

使用道具 举报

9#
ID:90613 发表于 2021-9-22 16:09 | 只看该作者
yinlitansuo 发表于 2021-8-22 18:32
移植到辉芒单片机了 实测可用,支持国产

大神,这是用的AHT20嘛,我用的这个怎么读不到,我看程序写的是AHT10,求解
回复

使用道具 举报

10#
ID:806798 发表于 2022-2-10 02:00 | 只看该作者
这代码有问题,SDA是bit0,代码中SDA定义bit7为高阻输入

  1. /*************************此部分为I2C总线的驱动程序*************************************/

  2. #include "stc8.h"
  3. #include "i2c.h"
  4. #include "delay.h"

  5. sbit     SCL = P1^1;     //I2C  时钟
  6. sbit     SDA = P1^0;     //I2C  数据

  7. //SDA方向控制
  8. void IO_SDA(u8 m)
  9. {
  10.   if(m==1)
  11.   {
  12.     P1M1 = 0x80;//配置SDA为高阻输入
  13.     P1M0 = 0x00;
  14.   }
  15.   else
  16.   {
  17.     P1M1 = 0x00;//恢复SDA双向io
  18.     P1M0 = 0x00;
  19.   }
  20. }
复制代码
回复

使用道具 举报

11#
ID:71233 发表于 2022-2-10 12:14 | 只看该作者
近日也刚刚用到AHT20,感觉没到的温度总是比DS18B20高些,大约0.8度吧,估计彼此都有误差,因为DS18B20误差是0.5度,而AHT20误差是0.3度。一个比准确值低0.5度,一个比准确值高0.3度,这样就导致它们相差0.8度了。
回复

使用道具 举报

12#
ID:642289 发表于 2022-3-19 16:53 | 只看该作者
来看看
回复

使用道具 举报

13#
ID:333897 发表于 2022-3-29 11:55 | 只看该作者
最近有用到,感谢楼主分享,
回复

使用道具 举报

14#
ID:420255 发表于 2022-8-27 23:23 | 只看该作者
STC15W亲测可用,感谢楼主!!
回复

使用道具 举报

15#
ID:1046651 发表于 2022-10-4 20:58 | 只看该作者
STC15W亲测可用,感谢楼主!!
回复

使用道具 举报

16#
ID:88360 发表于 2023-5-2 13:48 | 只看该作者
463854329 发表于 2022-2-10 02:00
这代码有问题,SDA是bit0,代码中SDA定义bit7为高阻输入

AHT20和AHT21有不同的地方吗?
回复

使用道具 举报

17#
ID:491875 发表于 2023-5-2 15:53 | 只看该作者
如果能够增加温湿度控制功能就更实用了。
回复

使用道具 举报

18#
ID:1092837 发表于 2023-9-6 22:55 | 只看该作者
软件i2c,还是硬件的i2c?
回复

使用道具 举报

19#
ID:71233 发表于 2023-9-7 07:58 | 只看该作者
老愚童63 发表于 2023-5-2 15:53
如果能够增加温湿度控制功能就更实用了。

想应用到什么特别场合,才需要用温湿度控制吧
回复

使用道具 举报

20#
ID:1040201 发表于 2023-9-7 10:50 | 只看该作者
lmn2005 发表于 2023-9-7 07:58
想应用到什么特别场合,才需要用温湿度控制吧

朋友的养殖场 或者对温湿度要求高的场合
回复

使用道具 举报

21#
ID:491875 发表于 2023-9-13 13:04 | 只看该作者
lmn2005 发表于 2023-9-7 07:58
想应用到什么特别场合,才需要用温湿度控制吧

对,孵化箱之类的温湿度控制
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表