标题: LCD1602+DTH11+MQ-135空气污染检测 温湿度程序 [打印本页]

作者: yao123    时间: 2017-4-6 23:21
标题: LCD1602+DTH11+MQ-135空气污染检测 温湿度程序
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)


作者: daiqiangqin    时间: 2017-4-7 13:46
应该发表在ARDUINO版,这个是51版。
作者: lucq7896    时间: 2017-4-7 17:05
当51程序下的
作者: 6010010    时间: 2020-8-20 10:40
有原理图吗





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1