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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的無線溫濕度控制系統

[復制鏈接]
跳轉到指定樓層
樓主

單片機源程序如下:
  1. //宏定義
  2. #define uchar unsigned char
  3. #define uint unsigned int


  4. //頭函數
  5. #include <reg51.h>
  6. #include <intrins.h>
  7. //屏幕函數調用
  8. #include "Lcd.h"   
  9. //無線模塊
  10. #include "api.h"
  11. #include "nRF24L01P.h"
  12. //繼電器定義
  13. sbit jiangwen=P3^5;
  14. sbit shengwen=P3^4;
  15. sbit choushi=P3^3;
  16. sbit jiashi=P3^2;
  17. //LED 管腳定義
  18. sbit TXLED_R=P1^3;
  19. sbit RXLED_Y=P1^5;
  20. //蜂鳴器
  21. sbit Feng=P1^2;
  22. //蜂鳴器閃爍標志位
  23. bit shan=0;
  24. #include "KEY.h"



  25. //主機詢問命令
  26. uchar CMD[]={0xaa,0xbb,0xcc,0xdd};
  27. uchar Mode=0;
  28. uchar temp=0;
  29. uchar KK=0;
  30. //報警溫濕度
  31. uchar TNumber=30,RHNumber=50,TX=20,HX=40;

  32. //主函數
  33. void main()
  34. {
  35.         TH0=0x4b;
  36.         TL0=0xff;//賦初值
  37.         TMOD=0x01;//設置工作方式
  38.         EA=1;//打開中斷總開關
  39.         ET0=1;//打開允許開關
  40.         TR0=1;
  41.         //LCD初始化顯示
  42.         Init_LCD();
  43.         delay_ms(250);
  44.         TXLED_R=0;                                          //初始化
  45.         RXLED_Y=0;
  46.         init_io();                           //無線初始化IO
  47.         RX_Mode();                           //設置為接收模式
  48.         TXLED_R=1;
  49.         RXLED_Y=1;
  50.         /////////////////////////////////////////////
  51.         TXLED_R=0;                                          //發送指示燈
  52.         ////////////////////////////////////////////////////////////////////////////////
  53.         //循環顯示
  54.         while(1)
  55.         {
  56.                 TXLED_R=0;                                          //發送指示燈       
  57.            TX_ACK();                                      //發送詢問信號       
  58.                 sta = SPI_Read(STATUS);                  //讀狀態寄存器
  59.                 TXLED_R=1;                                          //發送指示燈       
  60.                 if(RX_DR)                                           //判斷是否接受到數據
  61.                 {
  62.                         SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH);  // 從RX FIFO讀出數據
  63.                         flag = 1;
  64.                 }
  65.                 delay_ms(100);
  66.                 SPI_RW_Reg(WRITE_REG + STATUS, sta);  // 清除RX_DS中斷標志
  67.                 if(flag==1)                            // 接受完成
  68.                 {
  69.                         Mode=0;
  70.                         flag=0;
  71.                 }
  72.                 else                                                 //設備丟失
  73.                 {
  74.                         Mode=1;
  75.                 }       

  76.                 //顯示
  77.                 //數據顯示
  78.                 if(Mode==0)
  79.                 {               
  80.                         RXLED_Y=0;                               
  81.                         if(temp!=1)//重新初始化
  82.                         {
  83.                                 display1();
  84.                                 temp=1;
  85.                         }
  86.                         display2(RX_BUF[1],RX_BUF[2]);//顯示讀數
  87.                         if(RX_BUF[1]>TNumber) //溫度超標降溫
  88.                         {
  89.                                 jiangwen=0;
  90.                         }
  91.                         else
  92.                         {
  93.                                 jiangwen=1;
  94.                         }
  95.                         if(RX_BUF[1]<TX) //溫度過低升溫
  96.                         {
  97.                                 shengwen=0;
  98.                         }
  99.                         else
  100.                         {
  101.                                 shengwen=1;
  102.                         }
  103.                         if(RX_BUF[2]>RHNumber) //濕度超標抽濕
  104.                         {
  105.                                 choushi=0;
  106.                         }
  107.                         else
  108.                         {
  109.                                 choushi=1;
  110.                         }
  111.                         if(RX_BUF[2]<HX) //濕度過低加濕
  112.                         {
  113.                                 jiashi=0;
  114.                         }
  115.                         else
  116.                         {
  117.                                 jiashi=1;
  118.                         }
  119.                         if(((RX_BUF[1]>TNumber||RX_BUF[2]>RHNumber||RX_BUF[1]<TX||RX_BUF[2]<HX))&&(shan==1)) //超閥值蜂鳴器報警
  120.                         {
  121.                                 Feng=0;
  122.                         }
  123.                         else
  124.                         {
  125.                                 Feng=1;
  126.                         }
  127.                         RXLED_Y=1;       
  128.                 }
  129.                 //讀取鍵值
  130.                 KK=KEY_();
  131.                 if(KK==3)//調整模式
  132.                 {
  133.                         Mode=2;
  134.                         KK=0;
  135.                 }
  136.                 //數據顯示不在線
  137.            if(Mode==1)
  138.                 {
  139.                         if(temp!=2)
  140.                                 NoLine();//設備丟失
  141.                         temp=2;
  142.                 }
  143.                 //鍵盤
  144.                 else if(Mode==2)
  145.                 {
  146.                         temp=3;
  147.                         display3();
  148.                         display4(TNumber,RHNumber,TX,HX);
  149.                         write_com(0x0f);//打開光標
  150.                         write_com(0x80+5);
  151.                         //調溫上限
  152.                         while(KK!=3)
  153.                         {
  154.                                 //讀取鍵值
  155.                                 KK=KEY_();
  156.                                 if(KK==1)//++
  157.                                 {
  158.                                         TNumber++;
  159.                                         if(TNumber==51)
  160.                                                 TNumber=50;
  161.                                         display4(TNumber,RHNumber,TX,HX);
  162.                                         write_com(0x0f);//打開光標
  163.                                         write_com(0x80+5);
  164.                                 }
  165.                                 if(KK==2)//--       
  166.                                 {
  167.                                         TNumber--;
  168.                                         if(TNumber==TX)
  169.                                                 TNumber++;
  170.                                         display4(TNumber,RHNumber,TX,HX);
  171.                                         write_com(0x0f);//打開光標
  172.                                         write_com(0x80+5);                               
  173.                                 }
  174.                         }
  175.                         KK=0;
  176.                         write_com(0x0f);//打開光標
  177.                         write_com(0x80+0x40+5);
  178.                         //調溫x下限
  179.                         while(KK!=3)
  180.                         {
  181.                                 //讀取鍵值
  182.                                 KK=KEY_();
  183.                                 if(KK==1)//++
  184.                                 {
  185.                                         TX++;
  186.                                         if(TX==TNumber)
  187.                                                 TX--;
  188.                                         display4(TNumber,RHNumber,TX,HX);
  189.                                         write_com(0x0f);//打開光標
  190.                                         write_com(0x80+0x40+5);
  191.                                 }
  192.                                 if(KK==2)//--       
  193.                                 {
  194.                                         TX--;
  195.                                         if(TX==0xff)
  196.                                                 TX=0;
  197.                                         display4(TNumber,RHNumber,TX,HX);
  198.                                         write_com(0x0f);//打開光標
  199.                                         write_com(0x80+0x40+5);                               
  200.                                 }
  201.                         }
  202.                         KK=0;
  203.                         write_com(0x0f);//打開光標
  204.                         write_com(0x80+14);
  205.                         //調濕 上
  206.                         while(KK!=3)
  207.                         {
  208.                                 //讀取鍵值
  209.                                 KK=KEY_();       
  210.                                 if(KK==1)//++
  211.                                 {
  212.                                         RHNumber++;
  213.                                         if(RHNumber==91)
  214.                                                 RHNumber=90;
  215.                                         display4(TNumber,RHNumber,TX,HX);
  216.                                         write_com(0x0f);//打開光標
  217.                                         write_com(0x80+14);
  218.                                 }
  219.                                 if(KK==2)//--       
  220.                                 {
  221.                                         RHNumber--;
  222.                                         if(RHNumber==HX)
  223.                                                 RHNumber++;       
  224.                                         display4(TNumber,RHNumber,TX,HX);
  225.                                         write_com(0x0f);//打開光標
  226.                                         write_com(0x80+14);                       
  227.                                 }
  228.                         }
  229.                         KK=0;
  230.                         write_com(0x0f);//打開光標
  231.                         write_com(0x80+0x40+14);
  232.                                 //調濕 下
  233.                         while(KK!=3)
  234.                         {
  235.                                 //讀取鍵值
  236.                                 KK=KEY_();       
  237.                                 if(KK==1)//++
  238.                                 {
  239.                                         HX++;
  240.                                         if(HX==RHNumber)
  241.                                                 HX--;
  242.                                         display4(TNumber,RHNumber,TX,HX);
  243.                                         write_com(0x0f);//打開光標
  244. ……………………

  245. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:




基于51單片機的無線溫濕度控制系統
展開

基于51單片機的無線溫濕度控制系統

商品類型:
全新商品
剩余時間:
成交結束
5 黑幣

5 黑幣

0.png (2.43 KB, 下載次數: 50)

0.png

基于51單片機的無線溫濕度控制系統.rar

542.46 KB, 下載次數: , 下載積分: 黑幣 -5

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一二| 国产在线第一页 | 精品国产乱码久久久久久老虎 | 日本精品一区二区在线观看 | 久草综合在线视频 | 一区二区亚洲 | 国产午夜精品久久久久免费视高清 | 精品亚洲一区二区三区四区五区 | 国产成人免费视频网站高清观看视频 | 中文字幕一区二区三区在线视频 | 亚洲精品福利在线 | 国产日韩精品一区 | 中文字幕av亚洲精品一部二部 | 欧美人妖网站 | 国产在线激情视频 | 亚洲一视频 | 国产精品成人一区二区三区 | 久久成人精品视频 | 日本超碰 | 超碰97免费在线 | 波多野结衣亚洲 | 午夜寂寞影院列表 | 成人在线播放网址 | 一级在线观看 | 国产精品人人做人人爽 | 国产一区免费 | 一区二区三区网站 | 欧美日韩精品久久久免费观看 | 日韩精品久久一区二区三区 | 高清av一区 | 国产ts一区| 欧美999| h视频在线观看免费 | 亚洲一区精品在线 | 九九色综合 | 亚洲高清电影 | 欧产日产国产精品视频 | 91.xxx.高清在线 | 日产精品久久久一区二区福利 | 成人免费网站www网站高清 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 |