wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6375|回復: 2
收起左側

51單片機設計的空調溫度控制器Proteus仿真程序

[復制鏈接]
ID:846537 發表于 2021-1-21 16:45 | 顯示全部樓層 |閱讀模式
本設計基于單片機制作了一個空調溫度控制器,仿真示意圖如下

包含矩陣鍵盤控制模塊,LCD1602液晶顯示模塊等

包含矩陣鍵盤控制模塊,LCD1602液晶顯示模塊等


系統要求利用單片機設計一空調溫度控制器,能夠實時檢測并顯示室溫,能夠利用鍵盤設定溫度,并且和室溫進行比較,當室溫低于設定溫度時,系統能夠驅動加熱系統工作,當室溫高于設定溫度時,系統能夠驅動制冷系統工作,當兩者溫度相等時,不做動作。

總體方案設計
空調溫度控制系統,主要要完成對溫度的采集、顯示以及設定等工作,從而實現對空調的控制。傳統采用鉑電阻充當測溫器件的方案,雖然其中段測量線性度好,精度較高,但是測量電路的設計難度高 ,且測量電路系統龐大,難于調試 ,而且成本相對較高。鑒于上述原因,本系統采用DS18B20充當測溫器件。外部溫度信號經 DS18B20將輸入的模擬信號轉換成8位的數字信號, 通過并 口傳送到單片機系統( AT89C52) 。單片機系統將接收的數字信號譯碼處理,通過LCD1602將溫度顯示出來,同時單片機系統還將完成鍵盤掃描 、按鍵溫度設定、超溫報警等程序的處理 ,將處理的溫度信號與系統設定溫度值比較,形成可以控制空調制冷、制熱與停止工作三種工作狀態,從而實現空調的智能化。另外,鍵盤輸入方面,采用了軟件來修正誤操作輸入 ,即輸入的溫度范圍必須在系統硬件所確定的范圍內,直接降低由于誤操作帶來的風險,提高了系統的可靠性 ,體現了人性化的系統設計原則。
系統的整體框圖如圖1所示:
51hei.png
系統要求在當前室溫低于設定溫度時,能夠自動驅動加熱系統工作 ;在當前室溫高于設定溫度時能夠自動驅動制冷系統工作。本系統在復位后即置P2^6腳和P2^7腳為低電平,在當前室溫低于設定溫度時,通過置P2^7腳為高電平來驅動后級加熱系統,本系統采用紅色LED來代替加熱系統;在當前室溫高于設定溫度時,通過置P2^6腳高電平來驅動后級制冷系統,本系統采用藍色LED來代替制冷系統。
輸出控制電路如圖8所示。
51hei.png

系統總電路圖如圖9所示。
51hei.png
本系統所用的元器件清單如表1所示。
                            表1 系統所用元器件
元器件名稱    數量
點觸式開關    16
30pF瓷片電容    2
10uF電解電容    1
藍色LED    1
紅色RED    1
5V電源插座    1
自鎖開關    1
LCD1602    1
1/4W10K電阻    3
10K可調電阻    1
AT89C52    1
DS18B20    1
12MHz晶振    1
3 軟件系統設計
3.1 軟件系統總體方案設計
    系統軟件由主程序模塊、測溫程序模塊、鍵盤掃描程序模塊以及液晶驅動程序模塊組成。
3.2 軟件流程圖設計
系統軟件流程圖如圖10所示。

系統調試
程序在Keil uVision4環境下編寫,編譯通過后生成.hex文件加載到Protuse下可正常運行。程序默認溫度為21.0℃,Protuse下設定DS18B20的溫度也為21.0℃,故開始運行時兩路LED燈都不點亮。當利用鍵盤設定的溫度高于DS18B20默認的21.0℃時,紅色LED燈被點亮;當設定的溫度低于DS18B20默認的21.0℃時,藍色LED燈被點亮。
附上仿真圖
當設定的溫度高于DS18B20默認的21.0℃時,紅色LED燈被點亮,如圖11所示。
51hei.png
圖11 紅色LED燈點亮
當設定的溫度低于DS18B20默認的21.0℃時,藍色LED燈被點亮。如圖12所示。
51hei.png

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char//宏定義
  4. #define uint unsigned int
  5. ////////////////////全局變量/////////////////////////////
  6. float  TEMP_NOW=0.0;
  7. float  TEMP_SET=21.0;
  8. uint  T_Count=0;
  9. uint  S_Count=0;
  10. uint  P_Count=0;
  11. uint  N_Count=0;
  12. uint  M_Count=1;


  13. #define                K_UP                    0X20//定義鍵值
  14. #define                K_DOWN                 0X21
  15. #define                K_CLEAR             0X24
  16. #define                K_OK                    0X25
  17. #define                K_ONE                    0X30
  18. #define                K_FOUR                 0X31
  19. #define                K_SEVEN            0X32
  20. #define                K_POINT                 0X33
  21. #define                K_TWO                    0X34
  22. #define                K_FIVE                    0X43
  23. #define                K_EIGHT                0X36
  24. #define                K_ZERO                0X37
  25. #define                K_THREE                0X38
  26. #define                K_SIX                    0X40
  27. #define                K_NINE                0X41
  28. #define                K_SET                   0X42
  29. extern float TEMP_NOW;
  30. extern float TEMP_SET;
  31. extern uint  T_Count;
  32. extern uint  S_Count;
  33. extern uint  P_Count;
  34. extern uint  N_Count;
  35. extern uint  M_Count;
  36. extern uchar Current_Temp_Display_Buffer[];
  37. extern uchar set_Temp_Display_Buffer[];
  38. extern int sel;
  39. sbit  lcden=P2^7;//液晶使能
  40. sbit  lcdrs=P2^6;//液晶數據/命令選擇端
  41. sbit  DQ   =P3^7;//DS18B20數據端
  42. sbit  XX   =P2^5;//讀寫選擇端
  43. sbit  cold =P2^0;//輸出信號
  44. sbit  warm =P2^1;//輸出信號
  45. uchar Current_Temp_Display_Buffer[]={"   NOW: 00.0"};
  46. uchar set_Temp_Display_Buffer[]=    {"   SET: 38.0"};
  47. int sel=0;                                                       

  48. uchar code KeyCodeTable[]=
  49. {
  50.           0x11,0x12,0x14,0x18,0x21,0x22,0x24,0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88
  51. };


  52. #define delayNOP() {_nop_();_nop_();_nop_();_nop_();}

  53. uchar code Temperature_Char[8] = {0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};
  54. uchar code df_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
  55. uchar CurrentT = 0;
  56. uchar Temp_Value[]={0x00,0x00};
  57. uchar Display_Digit[]={0,0,0,0};

  58. bit DS18B20_IS_OK = 1;

  59. void Read_Temperature();
  60. void Display_Temperature();

  61. void Comparison();
  62. //////////////////////定時///////////////////////////////
  63. void timer0_init(void)
  64. {
  65.         TMOD =        0x00  ; //設置定時器0的工作方式
  66.         TH0 = (8192-5000)/32;//單片機晶振為12MHz,機器周期為1us,t=5ms,
  67.                       //N=5000/1=5000
  68.         TL0 = (8192-5000)%32;
  69.         IE  =        0x82;
  70.         TR0=1;                       
  71. }
  72. void timer0() interrupt 1
  73. {                                           
  74.         TH0 = (8192-5000)/32;
  75.         TL0 = (8192-5000)%32;
  76.         if(++T_Count == 100)                   //////100為0.5s          
  77.         {           
  78.                 TR0=0;                               
  79.                 Read_Temperature();
  80.                 Display_Temperature() ;
  81.                 T_Count=0;
  82.                 if(++P_Count == 6)
  83.                 {
  84.                          N_Count=1;
  85.                 }
  86.                    TR0=1;
  87.         }
  88. }
  89. void delay1(uint z)          //延時函數
  90. {
  91.         uint x,y;
  92.         for(x=z;x>0;x--)
  93.                 for(y=110;y>0;y--);
  94. }
  95. void write_com(uchar com)  //寫命令函數
  96. {
  97.         lcdrs=0;  //選擇寫命令模式
  98.         P0=com;          //將要寫的命令字送到數據總線上
  99.         delay1(5); //稍作延時以待數據穩定
  100.         lcden=1;  //使能端給一高脈沖,因為初始化函數中已經將lcden置零
  101.         delay1(5); //稍作延時
  102.         lcden=0;  //將使能端置0完成高脈沖
  103. }
  104. void write_date(uchar date)         //寫數據函數
  105. {
  106.         lcdrs=1;   //選擇寫數據模式
  107.         P0=date;
  108.         delay1(5);
  109.         lcden=1;
  110.         delay1(5);
  111.         lcden=0;
  112. }
  113. void init_lcd()                   //初始化函數
  114. {
  115.         lcden=0;
  116.         write_com(0x38); //設置16*2顯示,5*7點陣,8位數據接口
  117.         write_com(0x0c); //設置開顯示,不顯示光標
  118.         write_com(0x06); //寫一個字符后地址指針加1
  119.         write_com(0x01); //顯示清0,數據指針清0
  120. }
  121. void Print()
  122. {
  123.         uchar num;
  124.         write_com(0x80);
  125.         for(num=0;num<12;num++)
  126.         {
  127.                 write_date(Current_Temp_Display_Buffer[num]);
  128.         }
  129.         write_date(0xdf);
  130.         write_date('C');
  131.         write_com(0x80+0x40);
  132.         for(num=0;num<12;num++)
  133.         {
  134.                  write_date(set_Temp_Display_Buffer[num]);
  135.         }
  136.         write_date(0xdf);
  137.         write_date('C');
  138. }


  139. void Delay_INI(uint x)
  140. {
  141.         while(--x);
  142. }

  143. void Delay(unsigned int n)       
  144. {
  145.         do
  146.         {
  147.                 _nop_();_nop_();
  148.                 _nop_();_nop_();
  149.                 _nop_();_nop_();
  150.                 _nop_();_nop_();
  151.                 _nop_();
  152.                 n--;
  153.         }while(n);
  154. }


  155. uchar Init_DS18B20()
  156.   {
  157.         uchar status;
  158.         DQ = 1;
  159.         Delay_INI(8);
  160.         DQ = 0;
  161.         Delay_INI(90);
  162.         DQ = 1;
  163.         Delay_INI(8);
  164.         status=DQ;
  165.         Delay_INI(100);
  166.         DQ = 1;
  167.         return status;
  168. }

  169. uchar ReadOneByte()
  170. {
  171.         uchar i,dat=0;
  172.         DQ = 1;
  173.         _nop_();
  174.         for(i=0;i<8;i++)
  175.         {
  176.                  DQ = 0;
  177.                 dat >>= 1;
  178.                 DQ = 1;
  179.                 _nop_();
  180.                 _nop_();
  181.                 if(DQ)
  182.                         dat |= 0X80;
  183.                 Delay(30);
  184.                 DQ = 1;
  185.         }
  186.         return dat;
  187. }

  188. void WriteOneByte(uchar dat)
  189. {
  190.         uchar i;
  191.         for(i=0;i<8;i++)
  192.         {
  193.                  DQ = 0;
  194.                 DQ = dat& 0x01;
  195.                 Delay(5);
  196.                 DQ = 1;
  197.                 dat >>= 1;
  198.         }
  199. }
  200. void Read_Temperature()
  201. {
  202.         if(Init_DS18B20()==1)
  203.                 DS18B20_IS_OK=0;
  204.         else
  205.         {
  206.                 WriteOneByte(0xcc);
  207.                 WriteOneByte(0x44);
  208.                 Init_DS18B20();
  209.                 WriteOneByte(0xcc);
  210.                 WriteOneByte(0xbe);
  211.                 Temp_Value[0] = ReadOneByte();
  212.                 Temp_Value[1] = ReadOneByte();
  213.                 DS18B20_IS_OK=1;       
  214.         }       
  215. }
  216. void Display_Temperature()
  217. {
  218.         uchar t = 150, ng = 0;
  219.         if((Temp_Value[1]&0xf8)==0xf8)
  220.         {
  221.                  Temp_Value[1] = ~Temp_Value[1];
  222.                 Temp_Value[0] = ~Temp_Value[0]+1;
  223.                 if(Temp_Value[0]==0x00)
  224.                         Temp_Value[1]++;
  225.                 ng = 1;       
  226.         }
  227.         Display_Digit[0] = df_Table[Temp_Value[0]&0x0f];
  228.         CurrentT = ((Temp_Value[0]&0xf0)>>4) | ((Temp_Value[1]&0x07)<<4);
  229.         Display_Digit[3] = CurrentT/100;
  230.         Display_Digit[2] = CurrentT%100/10;
  231.         Display_Digit[1] = CurrentT%10;
  232.         Current_Temp_Display_Buffer[11] = Display_Digit[0] + '0';
  233.         Current_Temp_Display_Buffer[10] = '.';
  234.         Current_Temp_Display_Buffer[9]  = Display_Digit[1] + '0';
  235.         Current_Temp_Display_Buffer[8]  = Display_Digit[2] + '0';
  236.         Current_Temp_Display_Buffer[7]  = Display_Digit[3] + '0';

  237.         TEMP_NOW=Display_Digit[2]*10+Display_Digit[1]+Display_Digit[0]*0.1         ;

  238.         if(Display_Digit[3] == 0)
  239.                 Current_Temp_Display_Buffer[7]  = ' ';
  240.         if(Display_Digit[2] == 0&&Display_Digit[3]==0)
  241.                 Current_Temp_Display_Buffer[8]  = ' ';
  242.         if(ng)
  243.         {
  244.                 TEMP_NOW=-(Display_Digit[2]*10+Display_Digit[1]+Display_Digit[0]*0.1);

  245.                  if(Current_Temp_Display_Buffer[8]  == ' ')
  246.                         Current_Temp_Display_Buffer[8]  = '-';
  247.                 else if(Current_Temp_Display_Buffer[7]  == ' ')
  248.                         Current_Temp_Display_Buffer[7]  = '-';
  249.                 else
  250.                         Current_Temp_Display_Buffer[6]  = '-';
  251.         }         
  252. }
  253. void Delay_key()
  254. {
  255.         uchar i;
  256.         for(i=0;i<200;i++);
  257. }

  258. uchar Keys_Scan()
  259. {
  260.         uchar sCode,kCode,k;
  261.         P1 = 0xf0;
  262.         if((P1&0xf0)!=0xf0)
  263.         {
  264.                  Delay_key();
  265.                 if((P1&0xf0)!=0xf0)
  266.                 {
  267.                          sCode = 0xfe;
  268.                         for(k=0;k<4;k++)
  269.                         {
  270.                                  P1 = sCode;
  271.                                 if((P1&0xf0)!=0xf0)
  272.                                 {
  273.                                          kCode = ~P1;
  274.                                         if(kCode == KeyCodeTable[0]) return K_ONE;
  275.                                         else if(kCode == KeyCodeTable[1]) return K_TWO;
  276.                                         else if(kCode == KeyCodeTable[2]) return K_THREE;
  277.                                         else if(kCode == KeyCodeTable[3]) return K_FOUR;
  278.                                         else if(kCode == KeyCodeTable[4]) return K_FIVE;
  279.                                         else if(kCode == KeyCodeTable[5]) return K_SIX;
  280.                                         else if(kCode == KeyCodeTable[6]) return K_SEVEN;
  281.                                         else if(kCode == KeyCodeTable[7]) return K_EIGHT;
  282.                                         else if(kCode == KeyCodeTable[8]) return K_NINE;
  283.                                         else if(kCode == KeyCodeTable[9]) return K_UP;
  284.                                         else if(kCode == KeyCodeTable[10]) return K_DOWN;
  285.                                         else if(kCode == KeyCodeTable[11]) return K_CLEAR;
  286.                                         else if(kCode == KeyCodeTable[12]) return K_OK;
  287.                                         else if(kCode == KeyCodeTable[13]) return K_ZERO;
  288.                                         else if(kCode == KeyCodeTable[14]) return K_POINT;
  289.                                         else if(kCode == KeyCodeTable[15]) return K_SET;
  290.                                 }
  291.                                 else
  292.                                         sCode = _crol_(sCode,1);
  293.                         }
  294.                 }
  295.         }
  296.         return -1;
  297. }
  298. void set_num()
  299. {               
  300.         uchar key;       
  301.         if(sel==0)
  302.         {
  303.                 key = Keys_Scan();
  304.                 if(K_CLEAR == key)
  305.                 {
  306.                         while(Keys_Scan() == K_CLEAR);
  307.                         set_Temp_Display_Buffer[8] =' ';
  308.                         set_Temp_Display_Buffer[9] =' ';
  309.                         set_Temp_Display_Buffer[10]=' ';
  310.                         set_Temp_Display_Buffer[11]=' ';  // 48(0)49(1)50(2)51(3)52(4)53(5)54(6)55(7)56(8)57(9)
  311.                         M_Count=0;
  312.                         cold=0;
  313.                         warm=0;
  314.                 }
  315.                 if(K_UP == key)
  316.                 {
  317.                         while(Keys_Scan() == K_UP);
  318.                         if((set_Temp_Display_Buffer[11]>47)&&(set_Temp_Display_Buffer[11]<57))
  319.                         {
  320.                                 set_Temp_Display_Buffer[11]+=1;
  321.                         }
  322.                         else if(set_Temp_Display_Buffer[11]==57)
  323.                         {
  324.                                 set_Temp_Display_Buffer[11]=48;
  325.                                 if((set_Temp_Display_Buffer[9]>47)&&(set_Temp_Display_Buffer[9]<57))
  326.                                 {
  327.                                         set_Temp_Display_Buffer[9]+=1;
  328.                                 }
  329.                                 else if(set_Temp_Display_Buffer[9]==57)
  330.                                 {       
  331.                                         set_Temp_Display_Buffer[9]=48;
  332.                                         if((set_Temp_Display_Buffer[8]>47)&&(set_Temp_Display_Buffer[8]<57))
  333.                                         {
  334.                                                  set_Temp_Display_Buffer[8]+=1;
  335.                                         }
  336.                                         else if(set_Temp_Display_Buffer[8]==57)
  337.                                         {
  338.                                                  set_Temp_Display_Buffer[8]=48;
  339.                                         }
  340.                                 }
  341.                         }      
  342.                 }
  343.                 if(K_DOWN == key)                                                                  // 48(0)49(1)50(2)51(3)52(4)53(5)54(6)55(7)56(8)57(9)
  344.                 {
  345.                         while(Keys_Scan() == K_DOWN);
  346.                         if((set_Temp_Display_Buffer[11]>48)&&(set_Temp_Display_Buffer[11]<58))
  347.                         {
  348.                                 set_Temp_Display_Buffer[11]-=1;
  349.                         }
  350.                         else if(set_Temp_Display_Buffer[11]==48)
  351.                         {
  352.                                 set_Temp_Display_Buffer[11]=57;
  353.                                 if((set_Temp_Display_Buffer[9]>48)&&(set_Temp_Display_Buffer[9]<58))
  354.                                 {
  355.                                         set_Temp_Display_Buffer[9]-=1;
  356.                                 }
  357.                                 else if(set_Temp_Display_Buffer[9]==48)
  358.                                 {       
  359.                                         set_Temp_Display_Buffer[9]=57;
  360.                                         if((set_Temp_Display_Buffer[8]>48)&&(set_Temp_Display_Buffer[8]<58))
  361.                                         {
  362.                                                  set_Temp_Display_Buffer[8]-=1;
  363.                                         }
  364.                                         else if(set_Temp_Display_Buffer[8]==48)
  365.                                         {
  366.                                                  set_Temp_Display_Buffer[8]=57;
  367.                                         }
  368.                                 }
  369.                         }
  370.                 }                       
  371.                 if(K_ONE == key)
  372.                 {
  373.                         while(Keys_Scan() == K_ONE);
  374.                         set_Temp_Display_Buffer[11]='1';
  375.                         sel++;       
  376.                 }
  377.                 if(K_TWO == key)
  378.                 {
  379.                         while(Keys_Scan() == K_TWO);
  380.                         set_Temp_Display_Buffer[11]='2';
  381.                         sel++;
  382.                 }
  383.                 if(K_THREE == key)
  384.                 {
  385.                         while(Keys_Scan() == K_THREE);
  386.                         set_Temp_Display_Buffer[11]='3';
  387.                         sel++;
  388.                 }
  389.                 if(K_FOUR == key)
  390.                 {
  391.                         while(Keys_Scan() == K_FOUR);
  392.                         set_Temp_Display_Buffer[11]='4';
  393.                         sel++;
  394.                 }
  395.                 if(K_FIVE == key)
  396.                 {
  397.                         while(Keys_Scan() == K_FIVE);
  398.                         set_Temp_Display_Buffer[11]='5';
  399.                         sel++;
  400.                 }
  401.                 if(K_SIX == key)
  402.                 {
  403.                         while(Keys_Scan() == K_SIX);
  404.                         set_Temp_Display_Buffer[11]='6';
  405.                         sel++;
  406.                 }
  407.                 if(K_SEVEN == key)
  408.                 {
  409.                         while(Keys_Scan() == K_SEVEN);
  410.                         set_Temp_Display_Buffer[11]='7';
  411.                         sel++;
  412.                 }
  413.                 if(K_EIGHT == key)
  414.                 {
  415.                         while(Keys_Scan() == K_EIGHT);
  416.                         set_Temp_Display_Buffer[11]='8';
  417.                         sel++;
  418.                 }
  419.                 if(K_NINE == key)
  420.                 {
  421.                         while(Keys_Scan() == K_NINE);
  422.                         set_Temp_Display_Buffer[11]='9';
  423.                         sel++;
  424.                 }
  425.                 if(K_ZERO == key)
  426.                 {
  427.                         while(Keys_Scan() == K_ZERO);
  428.                         set_Temp_Display_Buffer[11]='0';
  429.                         sel++;
  430.                 }
  431.                 if(K_OK == key)
  432.                 {
  433.                         while(Keys_Scan() == K_OK);
  434.                         TEMP_SET=(set_Temp_Display_Buffer[8]-48)*10+(set_Temp_Display_Buffer[9]-48)+(set_Temp_Display_Buffer[11]-48)*0.1;
  435.                         sel=0;
  436.                         M_Count=1;       
  437.                 }
  438.         }
  439.         if(sel==1)
  440.         {
  441.                 key = Keys_Scan();
  442.                 if(K_CLEAR == key)
  443.                 {
  444.                         while(Keys_Scan() == K_CLEAR);
  445.                         set_Temp_Display_Buffer[8] =' ';
  446.                         set_Temp_Display_Buffer[9] =' ';
  447.                         set_Temp_Display_Buffer[10]=' ';
  448.                         set_Temp_Display_Buffer[11]=' ';
  449.                         M_Count=0;
  450.                         cold=0;
  451.                         warm=0;
  452.                         sel=0;
  453.                 }                        
  454.                 if(K_ONE == key)
  455.                 {
  456.                         while(Keys_Scan() == K_ONE);
  457.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  458.                         set_Temp_Display_Buffer[11]='1';
  459.                         sel++;       
  460.                 }
  461.                 if(K_TWO == key)
  462.                 {
  463.                         while(Keys_Scan() == K_TWO);
  464.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  465.                         set_Temp_Display_Buffer[11]='2';
  466.                         sel++;
  467.                 }
  468.                 if(K_THREE == key)
  469.                 {
  470.                         while(Keys_Scan() == K_THREE);
  471.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  472.                         set_Temp_Display_Buffer[11]='3';
  473.                         sel++;
  474.                 }
  475.                 if(K_FOUR == key)
  476.                 {
  477.                         while(Keys_Scan() == K_FOUR);
  478.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  479.                         set_Temp_Display_Buffer[11]='4';
  480.                         sel++;
  481.                 }
  482.                 if(K_FIVE == key)
  483.                 {
  484.                         while(Keys_Scan() == K_FIVE);
  485.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  486.                         set_Temp_Display_Buffer[11]='5';
  487.                         sel++;
  488.                 }
  489.                 if(K_SIX == key)
  490.                 {
  491.                         while(Keys_Scan() == K_SIX);
  492.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  493.                         set_Temp_Display_Buffer[11]='6';
  494.                         sel++;
  495.                 }
  496.                 if(K_SEVEN == key)
  497.                 {
  498.                         while(Keys_Scan() == K_SEVEN);
  499.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  500.                         set_Temp_Display_Buffer[11]='7';
  501.                         sel++;
  502.                 }
  503.                 if(K_EIGHT == key)
  504.                 {
  505.                         while(Keys_Scan() == K_EIGHT);
  506.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  507.                         set_Temp_Display_Buffer[11]='8';
  508.                         sel++;
  509.                 }
  510.                 if(K_NINE == key)
  511.                 {
  512.                         while(Keys_Scan() == K_NINE);
  513.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  514.                         set_Temp_Display_Buffer[11]='9';
  515.                         sel++;
  516.                 }
  517.                 if(K_ZERO == key)
  518.                 {
  519.                         while(Keys_Scan() == K_ZERO);
  520.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  521.                         set_Temp_Display_Buffer[11]='0';
  522.                         sel++;
  523.                 }
  524.         }
  525.         if(sel==2)
  526.         {
  527.                 key = Keys_Scan();
  528.                 if(K_CLEAR == key)
  529.                 {
  530.                         while(Keys_Scan() == K_CLEAR);
  531.                         set_Temp_Display_Buffer[8] =' ';
  532.                         set_Temp_Display_Buffer[9] =' ';
  533.                         set_Temp_Display_Buffer[10]=' ';
  534.                         set_Temp_Display_Buffer[11]=' ';
  535.                         M_Count=0;
  536.                         cold=0;
  537.                         warm=0;
  538.                         sel=0;
  539.                 }                  
  540.                 if(K_POINT == key)
  541.                 {
  542.                         while(Keys_Scan() == K_POINT);
  543.                         set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
  544.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  545.                         set_Temp_Display_Buffer[11]='.';
  546.                         sel++;       
  547.                 }
  548.         }
  549.         if(sel==3)
  550.         {
  551.                 key = Keys_Scan();
  552.                 if(K_CLEAR == key)
  553.                 {
  554.                         while(Keys_Scan() == K_CLEAR);
  555.                         set_Temp_Display_Buffer[8] =' ';
  556.                         set_Temp_Display_Buffer[9] =' ';
  557.                         set_Temp_Display_Buffer[10]=' ';
  558.                         set_Temp_Display_Buffer[11]=' ';
  559.                         M_Count=0;
  560.                         cold=0;
  561.                         warm=0;
  562.                         sel=0;
  563.                 }                      
  564.                 if(K_ONE == key)
  565.                 {
  566.                         while(Keys_Scan() == K_ONE);
  567.                         set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
  568.                         set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
  569.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  570.                         set_Temp_Display_Buffer[11]='1';
  571.                         sel++;       
  572.                 }
  573.                 if(K_TWO == key)
  574.                 {
  575.                         while(Keys_Scan() == K_TWO);
  576.                         set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
  577.                         set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
  578.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  579.                         set_Temp_Display_Buffer[11]='2';
  580.                         sel++;
  581.                 }
  582.                 if(K_THREE == key)
  583.                 {
  584.                         while(Keys_Scan() == K_THREE);
  585.                         set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
  586.                         set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
  587.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  588.                         set_Temp_Display_Buffer[11]='3';
  589.                         sel++;
  590.                 }
  591.                 if(K_FOUR == key)
  592.                 {
  593.                         while(Keys_Scan() == K_FOUR);
  594.                         set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
  595.                         set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
  596.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  597.                         set_Temp_Display_Buffer[11]='4';
  598.                         sel++;
  599.                 }
  600.                 if(K_FIVE == key)
  601.                 {
  602.                         while(Keys_Scan() == K_FIVE);
  603.                         set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
  604.                         set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
  605.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  606.                         set_Temp_Display_Buffer[11]='5';
  607.                         sel++;
  608.                 }
  609.                 if(K_SIX == key)
  610.                 {
  611.                         while(Keys_Scan() == K_SIX);
  612.                         set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
  613.                         set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
  614.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  615.                         set_Temp_Display_Buffer[11]='6';
  616.                         sel++;
  617.                 }
  618.                 if(K_SEVEN == key)
  619.                 {
  620.                         while(Keys_Scan() == K_SEVEN);
  621.                         set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
  622.                         set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
  623.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  624.                         set_Temp_Display_Buffer[11]='7';
  625.                         sel++;
  626.                 }
  627.                 if(K_EIGHT == key)
  628.                 {
  629.                         while(Keys_Scan() == K_EIGHT);
  630.                         set_Temp_Display_Buffer[8]=set_Temp_Display_Buffer[9] ;
  631.                         set_Temp_Display_Buffer[9]=set_Temp_Display_Buffer[10] ;
  632.                         set_Temp_Display_Buffer[10]=set_Temp_Display_Buffer[11] ;
  633.                         set_Temp_Display_Buffer[11]='8';
  634.                         sel++;
  635.                 }
  636.                 if(K_NINE == key)
  637.                 {
  638. ……………………

  639. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
51hei.png
本系統所設計的空調溫度控制器僅對溫度部分實現了控制,但對于實際空調中的模式選擇以及定時運行等工作過程還無法實現,希望在以后的學習研究中能夠解決這些問題。
所有資料51hei提供下載:
基于單片機設計的空調溫度控制器.zip (655.11 KB, 下載次數: 134)

評分

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

查看全部評分

回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:908826 發表于 2021-8-21 08:44 | 顯示全部樓層
ds18b20要加個上拉電阻吧
回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:1155843 發表于 2025-7-2 17:50 | 顯示全部樓層
好棒
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
免费在线毛片网站| 在线观看av一区二区| 日韩精品电影在线| 欧美国产一级| 99国产精品免费视频观看| 亚洲都市激情| 国产成人一区二区三区影院| 日韩精品免费一区二区夜夜嗨| 一区二区三区在线资源| 日本亚州欧洲精品不卡| 91成人短视频| 亚洲自拍电影| 99久久99久久精品国产片桃花| 日韩在线欧美| 欧美日韩视频| 午夜影院日韩| 久久精品国产精品青草| 国产一区二区调教| av资源网一区| 国产精品视频第一区| 亚洲人成影院在线观看| 精品动漫一区二区三区| 欧洲在线/亚洲| 欧美一区二区三区白人| 亚洲高清福利视频| 中文字幕少妇一区二区三区| 欧美日韩成人在线视频| 日本成人在线视频网址| 91在线精品视频| 精品久久精品久久| 一区不卡字幕| 欧美性受xxxx黑人猛交88| 青青青免费在线| 美女黄色片视频| 女教师高潮黄又色视频| 日本激情小视频| 欧美成人三级在线观看| 不卡av电影在线| 亚洲国产www| 久热国产视频| 九色丨porny丨| 国产精品.www| aaa一区二区三区| 影音先锋中文一区| jizz日本18| 日本人妖在线| 川上优av中文字幕一区二区| 亚洲欧美在线人成swag| 欧美伦理在线视频| 久久精品女人天堂| 99精品视频在线观看免费| 亚洲美女视频在线观看| 欧美日韩国产小视频在线观看| 日韩国产高清视频在线| 欧美激情性做爰免费视频| 91网站免费看| 99热这里只有精品7| 老司机久久精品| 成年人视频软件| 中文字幕人成人乱码亚洲电影| 一区二区三区免费视频网站| av美女网站| 日本中文字幕在线观看| 精品久久99| 五月精品视频| 国产精品性做久久久久久| 亚洲免费观看视频| 亚洲精品一区二区精华| 91精品国产高清| 久久综合久久久| 91福利国产成人精品播放| 夫妇交换中文字幕| 国产精品传媒在线观看| 欧美大交乱xxxx| 中文字幕在线影视资源| 性爽视频在线| 日韩一区三区| 国产成人一区二区精品非洲| 亚洲va国产va欧美va观看| 日韩精品视频在线播放| 国产精品美女久久久久av超清| 在线视频91| 年下总裁被打光屁股sp | 久久久www成人免费毛片麻豆| 欧美日韩免费在线| 色琪琪综合男人的天堂aⅴ视频| 欧美色欧美亚洲高清在线视频| 日韩欧美综合一区| 欧美一级大片在线观看| 亚洲天堂电影网| 亚洲精品一区二区18漫画 | 国产丝袜高跟一区| 国产精品露脸av在线| 成人国产在线看| 亚洲成人日韩在线| 国产美女主播在线观看| 天天操人人干| 岛国av在线网站| 婷婷综合视频| 国产午夜精品福利| 日韩欧美的一区二区| 国产高清在线不卡| 亚洲 自拍 另类小说综合图区| 国产123在线| 视频污在线观看| 久草在线资源视频| 国产一区二区| 美女网站色91| 在线欧美一区二区| 日韩69视频在线观看| 成人在线视频一区二区三区| 婷婷国产成人精品视频| 热99精品视频| a级网站在线播放| 91一区二区| 亚洲国产精品传媒在线观看| 亚洲男人天堂2019| 欧美在线激情| 久久精品—区二区三区舞蹈| 无码精品人妻一区二区| 欧美3p视频在线观看| 亚洲欧美tv| 久久综合五月天婷婷伊人| 亚洲精品av在线播放| 国产传媒欧美日韩| 午夜剧场免费看| 亚洲色图欧美视频| 黄色在线免费| 国产精品v欧美精品v日本精品动漫| 国产精品国产三级国产普通话99| 中文字幕亚洲综合| 日韩中文字幕亚洲精品欧美| 99热精品免费| eeuss影院www免费影院| 男女啪啪999亚洲精品| 国产综合色产在线精品| 亚洲成人黄色网址| 日韩av电影免费在线观看| av免费播放网站| 天堂入口网站| 亚洲我射av| 99久久综合色| 中文国产成人精品久久一| 在线免费观看成人网| 久久久久久久久久91| 成人免费黄色网址| 成人av影音| 国产精品久久久久永久免费观看 | 国产xxxx视频| 男人操女人视频网站| 欧美videossex另类| 视频一区视频二区中文字幕| 欧美一区国产二区| 欧美日本亚洲| 久久一二三四区| 色偷偷免费视频| 精品视频国产| 午夜精品久久久久久久99樱桃| 国产精品欧美日韩久久| 成人黄色大片在线免费观看| 波多结衣在线观看| 手机看片福利在线| 9999精品成人免费毛片在线看| 日本vs亚洲vs韩国一区三区| 亚洲第一页在线| 欧美少妇一区二区三区| 国产美女www爽爽爽| 国产视频第一页在线观看| 欧美精品三级| 欧美一区二区视频在线观看2022| 免费观看成人在线| 日本熟妇毛耸耸xxxxxx| 在线播放av网站| 欧美人成网站| 欧美一级一区二区| 亚洲午夜精品一区二区| 国产三级精品三级在线观看| 国产系列电影在线播放网址| 中文日韩在线| 日韩精品在线观| 国产素人在线观看| 蜜桃av噜噜一区二区三区麻豆| 菠萝蜜视频在线观看www入口| 国产精品一区在线观看你懂的| 在线观看国产精品91| 亚洲五月天综合| 欧美激情性xxxxx| 福利在线一区| 欧美性色19p| 日本一区二区三区精品视频| aaa在线视频| 成人免费观看视频大全| 国产成人av电影在线观看| 欧美—级高清免费播放| 亚洲精品第二页| 成人午夜剧场免费观看完整版| 日韩久久精品网| 91.com在线观看| 丁香色欲久久久久久综合网| 性少妇videosexfreexxx片| 这里有精品可以观看| 久久综合九色综合欧美98| 国产精品第三页| 国产黄在线免费观看| 日本啊v在线| 精品一区二区三区免费观看| 欧美大片在线看免费观看| 中文字幕在线播放视频| 啊啊啊好爽视频| 国产欧美日本| 久久久999国产精品| 美女流白浆视频| jizz欧美大全| 久久久久99| 欧美精品日韩三级| 熟女少妇一区二区三区| 动漫成人在线| 美女网站视频久久| 欧洲亚洲免费在线| 欧美黄色免费在线观看| 免费a级人成a大片在线观看| 99re视频精品| 欧美精品一级二级三级| 中文字幕中文字幕99| 人妻中文字幕一区| 亚洲大奶少妇| 欧美日韩精品是欧美日韩精品| 国产情侣第一页| 欧美日韩看片| 亚洲成人二区| 深夜精品寂寞黄网站在线观看| 老司机免费视频| 两个人hd高清在线观看| 九一九一国产精品| 国产va免费精品高清在线观看| 久久精品国产av一区二区三区| 影音先锋在线播放| 日韩毛片高清在线播放| 日韩欧美精品一区二区| 天天爱天天干天天操| 国产一区2区| 亚洲美女av在线| 国产精品手机在线观看| 欧美女优在线| 久久久久久久久久久久久久久99 | 国产一二三区在线| www国产精品av| 激情伦成人综合小说| 亚洲AV午夜精品| 国产99精品一区| 亚洲少妇激情视频| 一区二区伦理片| 亚洲www色| 亚洲自拍偷拍麻豆| 自拍日韩亚洲一区在线| 成年网站在线观看视频| 日韩成人dvd| 国产原创欧美精品| 国产老妇伦国产熟女老妇视频| 日韩三级av高清片| 亚洲精品av在线播放| 人妻精品久久久久中文字幕| 欧美成人精品一区二区男人看| 国产日本亚洲高清| 最新不卡av| 三级全黄视频| 蜜桃精品视频在线| 不卡的av一区| 亚洲女人天堂a在线播放| 综合久久十次| 日本亚洲精品在线观看| 九九热最新视频| 极品国产人妖chinesets亚洲人妖 激情亚洲另类图片区小说区 | 国产拍揄自揄精品视频麻豆| 性高潮久久久久久久久| 在线播放黄网| 国产麻豆精品视频| 快播亚洲色图| 国产成人精品一区二区免费视频| 久久久噜噜噜久久狠狠50岁| 91亚洲午夜在线| 久草在线资源网| 免费在线欧美黄色| 亚洲bt欧美bt日本bt| 新婚的少妇hd中文字幕| 国产精品毛片| 国内国产区免费视频| 在线能看的av网站| 久久久噜噜噜www成人网| 天天色天天色| 99久久久国产精品| 亚洲午夜在线观看| 国产福利a级| 国产精品午夜免费| av在线播放亚洲| 噼里啪啦在线中文观看| 中文字幕日本不卡| 国产精品涩涩涩视频网站| 国产资源在线看| 色综合一个色综合亚洲| 在线观看一区二区三区四区| caoporn视频在线| 亚洲成人激情图| 国语对白一区二区| 欧美欧美黄在线二区| 91国内精品久久| 亚洲av永久纯肉无码精品动漫| 最新成人av网站| 国产伦精品一区二区三区高清| 星空影院最新电视剧免费观看| 国产不卡一区视频| 青青草视频国产| 男人久久精品| 91国偷自产一区二区开放时间| 人妻丰满熟妇aⅴ无码| 日韩欧美精品电影| 夜夜嗨av一区二区三区四区| 波多野结衣在线观看一区| 欧美精品一卡| 精品国产一区二区三区麻豆小说 | eeuss影院在线观看第一页| 久久久www成人免费毛片麻豆| 九色porny91| 牛牛精品一区二区| 国产亚洲精品久久久| 亚洲中文字幕一区二区| 亚洲日本视频| 日韩三级在线播放| 在线免费看污| 欧美三级韩国三级日本一级| 波多野结衣亚洲一区二区| 国产欧美久久一区二区三区| 成人国产精品一区| 天天av导航| 高跟丝袜一区二区三区| 蜜桃av免费在线观看| 日本三级久久| 91在线观看免费观看| www.99色| 欧美视频在线免费看| 午夜精品一区二区三级视频| 亚洲区小说区图片区qvod按摩| 国产精选久久久久久| 91xx在线观看| 亚洲蜜臀av乱码久久精品 | 真实乱偷全部视频| 开心久久婷婷综合中文字幕| 欧美床上激情在线观看| 777片理伦片在线观看| 久久夜色精品国产噜噜av| 手机在线免费毛片| 国产精品99久久免费| 日韩av免费看| chinesespank调教| 欧美午夜片在线免费观看| 久久久久久久国产精品毛片| 狠狠色丁香久久综合频道| 亚洲国产日韩欧美| 日本中文字幕在线播放| 亚洲性线免费观看视频成熟| 天堂国产一区二区三区| 欧美综合影院| 欧美主播福利视频| 8mav模特福利视频在线观看| 欧美日韩免费看| 91精品国产乱码在线观看| 久久狠狠婷婷| 国产无套粉嫩白浆内谢的出处| 成人国产激情在线| 国产精品久久久久久久av电影| 成人综合网址| 欧美丰满美乳xxx高潮www| 中文字幕欧美人妻精品| 国产精品综合视频| 超碰在线超碰在线| 欧美性生活一级片| 免费在线一区二区| 激情在线小视频| 欧美精品午夜视频| eeuss第一页| 91精品国产一区二区| 精品久久久无码中文字幕| av欧美精品.com| www.中文字幕av| 欧美亚洲不卡| 男人日女人bb视频| 精品中文视频| 狠狠色噜噜狠狠色综合久| 婷婷五月在线视频| 色综合久久久888| 先锋影音av资源在线| 日韩一区二区视频| 亚洲人成电影院色| 亚洲高清免费视频| 亚洲av无码精品一区二区| 成人午夜视频福利| 亚洲色图14p| 在线国产欧美| 亚洲欧美另类动漫| 国产精品密蕾丝视频下载 |