久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 405|回復: 0
打印 上一主題 下一主題
收起左側

C51單片機溫濕度顯示(DHT11)仿真程序

[復制鏈接]
跳轉到指定樓層
樓主
仿真+代碼


單片機源程序如下:
  1. #include "DHT11.h"
  2. #include "LCD1602.h"
  3. //燈、蜂鳴器、按鍵引腳定義
  4. sbit led1    = P1^1;  //正常指示燈
  5. sbit led2    = P1^2;  //超限指示燈
  6. sbit buzz    = P2^1;  //蜂鳴器
  7. sbit key_set = P3^2;  //設置鍵
  8. sbit key_jia = P3^3;  //加鍵
  9. sbit key_jian= P3^4;  //減鍵

  10. //變量定義
  11. uchar temp_up=35,temp_down=10;//存儲溫度上、下限值
  12. uchar humi_up=80,humi_down=40;//存儲濕度上、下限值
  13. uchar set_f;                           //設置選擇標記,=0非設置,=1設置濕度上限,=2設置濕度下限
  14.                                                   //     =3設置溫度上限,=4設置溫度下限,=5設置照度上限,=6設置照度下限
  15. uchar Flash;        //閃爍信號
  16. uchar  U8FLAG;
  17. uchar  Temp_H,Temp_L,Humi_H,Humi_L,Check_data;//溫度整數位,小數位;濕度整數位
  18. //顯示固定內容
  19. void fix_display()  
  20. {
  21.         LCD_ShowString(1,1,"Humidity: ");//humidity
  22.         LCD_ShowString(2,1,"Temperature: ");//temperature
  23.         LCD_ShowString(1,13,"%");
  24.         LCD_ShowString(2,16,"C");
  25. }

  26. //顯示當前測出的內容
  27. void now_display()  
  28. {
  29.         if(temp_up<Temp_H||temp_down>Temp_H||humi_up<Humi_H||humi_down>Humi_H)//當溫濕度超過界限時
  30.         {
  31.                 //蜂鳴器響,超限指示燈亮
  32.                 buzz=0;
  33.                 led1=1;
  34.                 led2=0;
  35.         }
  36.         else  //蜂鳴器不響,正常指示燈亮
  37.         {
  38.                 buzz=1;
  39.                 led1=0;
  40.                 led2=1;
  41.         }
  42.         //顯示實測的照度與溫濕度
  43.         LCD_ShowNum(1,11,Humi_H,2);  
  44.         LCD_ShowNum(2,14,Temp_H,2);
  45.        
  46. }



  47. //顯示設置時的內容
  48. void set_display()
  49. {
  50.                 LCD_ShowString(1,1,"Humi:Up");  
  51.                 LCD_ShowString(2,1,"Temp:Up");
  52.                 LCD_ShowString(1,10,"Down");
  53.                 LCD_ShowString(2,10,"Down");
  54.                 //利用定時器設置Flash閃爍值以達到閃爍效果
  55.                 if(Flash==1&&set_f==1){LCD_ShowString(1,8,"  ");}  //當Flash等于1則清零,等于0則顯示
  56.                 else{LCD_ShowNum(1,8,humi_up,2);}                  //當set_f標記鍵分別等于1,2,3,4時,設置不同位置
  57.                 if(Flash==1&&set_f==2){LCD_ShowString(1,14,"  ");}
  58.                 else{LCD_ShowNum(1,14,humi_down,2);}
  59.                 if(Flash==1&&set_f==3){LCD_ShowString(2,8,"  ");}
  60.                 else{LCD_ShowNum(2,8,temp_up,2);}
  61.                 if(Flash==1&&set_f==4){LCD_ShowString(2,14,"  ");}
  62.                 else{LCD_ShowNum(2,14,temp_down,2);}
  63. }

  64. //按鍵掃描
  65. void scan()  
  66. {
  67.         if(key_set==0)  //當設置鍵摁下時
  68.         {
  69.                 Delay_ms(7);
  70.          if(key_set==0)
  71.          {
  72.                 buzz=1;  //蜂鳴器關閉,所有LED熄滅
  73.                 led1=1;
  74.                 led2=1;
  75.                
  76.                 if(set_f==0) //進入設置模式
  77.                 {
  78.                         LCD_WriteCommand(0x01);  //清屏
  79.                         Delay_ms(10);
  80.                 }
  81.                 set_f++;     //每摁一次key_f設置鍵,set_f標記鍵便加1
  82.                 if(set_f==5) //當循環6次,即摁下key_set設置鍵6次時,把set_f標記鍵置0
  83.                 {
  84.                         set_f=0;
  85.                         LCD_WriteCommand(0x01);  //清屏
  86.                         Delay_ms(10);
  87.                         fix_display();  //顯示固定內容
  88.                 }
  89.          }
  90.                   while(!key_set);  //當摁下key_sey設置鍵松手時,完成一次操作
  91.         }

  92.        
  93.         if(key_jia==0&&set_f!=0)  //加法鍵
  94.         {
  95.                 Delay_ms(7);
  96.                 if(set_f==1){humi_up++;}
  97.                 if(set_f==2){humi_down++;}
  98.                 if(set_f==3){temp_up++;}
  99.                 if(set_f==4){temp_down++;}
  100.         }
  101.        
  102.         if(key_jian==0&&set_f!=0) //減法鍵
  103.         {
  104.                 Delay_ms(7);
  105.                 if(set_f==1){humi_up--;}
  106.                 if(set_f==2){humi_down--;}
  107.                 if(set_f==3){temp_up--;}
  108.                 if(set_f==4){temp_down--;}
  109.         }
  110. }
  111.        

  112. void main()
  113. {
  114.         TMOD &= 0x00;                //設置定時器模式
  115.         TMOD |= 0x10;                //設置定時器模式
  116.         TL1 = 0x18;                //設置定時初值
  117.         TH1 = 0xFC;                //設置定時初值
  118.         TF1 = 0;                //清除TF0標志
  119.         TR1 = 1;                //定時器0開始計時
  120.         ET1=1;
  121.         EA=1;
  122.         led1=1;
  123.         led2=1;
  124.         LCD_Init();    //LCD初始化
  125.         fix_display(); //顯示固定內容
  126.         Delay_ms(100);
  127.         while(1)
  128.         {
  129.                 scan();  //按鍵掃描
  130.                 if(set_f==0) //表示并未進入設置操作
  131.                 {
  132.                         EA=0;          //關閉中斷
  133.                         DHT11_read();          //DHT11讀取溫濕度值
  134.                         now_display();         //顯示實測內容
  135.                         EA=1;  //打開中斷
  136.                 }
  137.                 else
  138.                         set_display();   //顯示設置內容
  139.         }
  140. }

  141. void Timer1_Rountine() interrupt 3  //中斷程序
  142. {
  143.         static unsigned int T1Count;
  144.         TL1 = 0x18;  //設置初值
  145.         TH1 = 0xFC;
  146.         T1Count++;
  147.         if(T1Count>=500)  //每隔500ms,即0.5秒
  148.         {
  149.                 T1Count=0;
  150.                 Flash=!Flash;   //Flash翻轉
  151.         }
  152. }
復制代碼
下載: C51_溫濕度顯示(DHT11).7z (181.58 KB, 下載次數: 0)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费看91 | 国产精品美女www爽爽爽 | 色综合视频在线 | 精品国产欧美日韩不卡在线观看 | 国产在线精品一区二区三区 | 亚洲国产精品一区二区久久 | 欧美成人一区二区 | 香蕉国产在线视频 | 日韩在线成人 | 亚洲人人 | 亚洲毛片| 一区二区三区久久久 | 日韩欧美高清 | 国产精品一区二区欧美 | 国产在线一区二区三区 | 激情a| 久久1区| 久久久久久久久久久国产 | 久久伊 | 日本一二三区高清 | 国产网站在线免费观看 | 国产精品欧美一区二区 | 国产成人精品免费视频大全最热 | 99爱视频 | 国产a视频| 成人国产精品免费观看 | 日韩成人在线网址 | 欧美一区二区三区,视频 | 天天看天天干 | 国产高清免费视频 | 日韩一区二区av | 91在线一区 | 国产成人免费 | 久久久久国产精品 | 91黄色免费看 | 中文字幕人成乱码在线观看 | 久久99深爱久久99精品 | 色综合久久天天综合网 | 欧美一卡二卡在线 | 狠狠干2020 | 日日爱夜夜操 |