找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LCD1602+DTH11+MQ-135空气污染检测 温湿度程序

[复制链接]
跳转到指定楼层
楼主
ID:186925 发表于 2017-4-6 23:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1602的温湿度程序

  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  3. int temp;//温度
  4. int humi;//湿度
  5. int tol;//校对码
  6. int j;
  7. unsigned int loopCnt;
  8. int chr[40] = {0};//创建数字数组,用来存放40个bit
  9. unsigned long time;
  10. #define pin 7
  11. int Aout=A0 ;//MQ-135 AO 接 Arduino Uno A0   
  12. int temp1 = 0; //临时变量,存储A0读取的数据   
  13. void setup() {   
  14.   Serial.begin(9600);//定义波特率  
  15.   pinMode(A0, INPUT);//定义A0为INPUT模式
  16.   lcd.begin(16, 2);
  17.   }  
  18.   
  19. void loop() {
  20.   bgn:
  21.   delay(2000);
  22. //设置2号接口模式为:输出
  23. //输出低电平20ms(>18ms)
  24. //输出高电平40μs
  25.   pinMode(pin,OUTPUT);
  26.   digitalWrite(pin,LOW);
  27.   delay(20);
  28.   digitalWrite(pin,HIGH);
  29.   delayMicroseconds(40);
  30.   digitalWrite(pin,LOW);
  31. //设置2号接口模式:输入
  32.   pinMode(pin,INPUT);
  33.   //高电平响应信号
  34.   loopCnt=10000;
  35.   while(digitalRead(pin) != HIGH)
  36.   {
  37.     if(loopCnt-- == 0)
  38.     {
  39. //如果长时间不返回高电平,输出个提示,重头开始。
  40.       Serial.println("HIGH");
  41.       goto bgn;
  42.     }
  43.   }
  44.   //低电平响应信号
  45.   loopCnt=30000;
  46.   while(digitalRead(pin) != LOW)
  47.   {
  48.     if(loopCnt-- == 0)
  49.     {
  50. //如果长时间不返回低电平,输出个提示,重头开始。
  51.       Serial.println("LOW");
  52.       goto bgn;
  53.     }
  54.   }
  55. //开始读取bit1-40的数值  
  56.     for(int i=0;i<40;i++)
  57.   {
  58.     while(digitalRead(pin) == LOW)
  59.     {}
  60. //当出现高电平时,记下时间“time”
  61.     time = micros();
  62.     while(digitalRead(pin) == HIGH)
  63.     {}
  64. //当出现低电平,记下时间,再减去刚才储存的time
  65. //得出的值若大于50μs,则为‘1’,否则为‘0’
  66. //并储存到数组里去
  67.     if (micros() - time >50)
  68.     {
  69.       chr[i]=1;
  70.     }
  71.     else{
  72.       chr[i]=0;
  73.     }
  74.   }
  75.    
  76. //湿度,8位的bit,转换为数值
  77. humi=chr[0]*128+chr[1]*64+chr[2]*32+chr[3]*16+chr[4]*8+chr[5]*4+chr[6]*2+chr[7];
  78.    
  79. //温度,8位的bit,转换为数值
  80. temp=chr[16]*128+chr[17]*64+chr[18]*32+chr[19]*16+chr[20]*8+chr[21]*4+chr[22]*2+chr[23];
  81.   //校对码,8位的bit,转换为数值
  82. tol=chr[32]*128+chr[33]*64+chr[34]*32+chr[35]*16+chr[36]*8+chr[37]*4+chr[38]*2+chr[39];
  83. //输出:温度、湿度、校对码
  84.       lcd.clear ();
  85.       lcd.setCursor(0,0);
  86.        lcd.print("temp:");
  87.        lcd.print(temp);
  88.        lcd.print((char) 0xDF);
  89.        lcd.print("C");
  90.        lcd.setCursor(0,1);
  91.        lcd.print("humidity:");
  92.        lcd.print(humi);
  93.        lcd.print("%");
  94.        delay (5000);
  95.       
  96.   
  97.   
  98.   temp1 = analogRead(Aout); //读取A0的模拟数据
  99.   
  100.   if (temp<500 )
  101.   {
  102.        lcd.clear();
  103.        lcd.setCursor(0,0);
  104.        lcd.print("status:normal");
  105.        lcd.setCursor(0,1);
  106.        lcd.print("potency:");
  107.        lcd.print(temp1);
  108.   
  109.     }
  110.    if (temp1>500)
  111.     {
  112.       

  113. …………限于本文篇幅 余下代码请从51黑下载附件…………

复制代码

完整代码下载:
1602 DTH11 MQ-5.doc (19 KB, 下载次数: 102)

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

使用道具 举报

沙发
ID:59854 发表于 2017-4-7 13:46 | 只看该作者
应该发表在ARDUINO版,这个是51版。
回复

使用道具 举报

板凳
ID:171746 发表于 2017-4-7 17:05 | 只看该作者
当51程序下的
回复

使用道具 举报

地板
ID:483535 发表于 2020-8-20 10:40 | 只看该作者
有原理图吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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