標(biāo)題: 單片機(jī)模擬空調(diào)溫度控制器,按鍵設(shè)定溫度和控制風(fēng)力,流水燈模擬風(fēng)力 [打印本頁(yè)]

作者: yuechen428    時(shí)間: 2020-9-12 08:25
標(biāo)題: 單片機(jī)模擬空調(diào)溫度控制器,按鍵設(shè)定溫度和控制風(fēng)力,流水燈模擬風(fēng)力
空調(diào)溫度控制器,LCD1206顯示,按鍵設(shè)定溫度和控制風(fēng)力,流水燈模擬風(fēng)力,紅色LED指示燈代表加熱電機(jī)工作,藍(lán)色LED指示燈代表制冷電機(jī)工作。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

溫度高于設(shè)定溫度,降溫指示燈亮


溫度低于設(shè)定溫度,加熱指示燈亮



單片機(jī)源程序如下:
  1. /*用于QX—mini5學(xué)習(xí)板*/

  2. #include <reg52.h>
  3. #include "LCD1602.h"
  4. #include "DS18B20.h"
  5. //#include "uart.h"

  6. sbit jdq = P0^0;        //用蜂鳴器代替繼電器

  7. sbit key1=P3^5;                //設(shè)定溫度加
  8. sbit key2=P3^4;                //設(shè)定溫度減
  9. sbit key3=P3^3;                //設(shè)定風(fēng)力加
  10. sbit key4=P3^2;                //設(shè)定風(fēng)力減

  11. uint   num=260;                //設(shè)定溫度初始值
  12. uchar  num1=0;                //設(shè)定風(fēng)力初始值

  13. uchar code table[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//風(fēng)級(jí)
  14. //
  15. //void uart_init(void)
  16. //{
  17. //        TMOD=0x20;                   //用定時(shí)器設(shè)置串口波特率
  18. //        TH1=0xfd;
  19. //        TL1=0xfd;
  20. //        TR1=1;
  21. //        REN=1;          //串口初始化
  22. //        SM0=0;
  23. //        SM1=1;
  24. //        EA=1;           //開(kāi)啟總中斷
  25. //        ES=1;                        //開(kāi)啟串口中斷
  26. //}

  27. void keyscan()                //設(shè)定溫度按鍵掃描函數(shù)
  28. {
  29.         if(key1==0)
  30.         {
  31.             delay(10);
  32.             if(key1==0)
  33.             {
  34.                    while(!key1);
  35.                num++;                      
  36.             }
  37.     }
  38.         if(key2==0)
  39.         {
  40.             delay(10);
  41.             if(key2==0)
  42.             {  
  43.                    while(!key2);
  44.                    num--;                  
  45.             }
  46.     }
  47. }  

  48. void keyscan1()             //設(shè)定風(fēng)級(jí)按鍵掃描函數(shù)
  49. {
  50.         if(key3==0)
  51.         {
  52.             delay(10);
  53.             if(key3==0)
  54.             {
  55.                    while(!key3);
  56.                num1++;
  57.                    P1=table[num1];
  58.                    if(num1==9)
  59.                    {
  60.                      num1=0;
  61.                      P1=0xff;
  62.                    }                      
  63.             }
  64.     }
  65.         if(key4==0)
  66.         {
  67.             delay(10);
  68.             if(key4==0)
  69.             {  
  70.                    while(!key4);
  71.                    num1--;
  72.                    P1=table[num1];
  73.                    if(num1==255)
  74.                    num=0;                  
  75.             }
  76.     }
  77. }

  78. void main(void)                           //主函數(shù)
  79. {
  80.         uint temp;                                  
  81.     LCD_init( );                          //LCD初始化
  82. //        uart_init();               
  83.         string(0x80,"TE:");
  84.         string(0x80+0x40,"SE:");
  85.         string(0x80+0x0a,"WP:");
  86.        
  87.     while(1)
  88.     {
  89.                    tmpchange();                  //開(kāi)始轉(zhuǎn)換溫度
  90.                
  91.                 temp = tmp();                  //讀取到溫度賦給temp

  92.                
  93.                 keyscan();                          //設(shè)置溫度
  94.                 keyscan1();                          //設(shè)置風(fēng)級(jí)
  95.                 if(temp/10 > num/10)  //讀取溫度大于設(shè)定溫度
  96.                 {
  97.                         jdq = 0;                  //蜂鳴器報(bào)警(繼電器吸合)
  98.                 }
  99.                 if(temp/10 < num/10)  //讀取溫度小于設(shè)定溫度
  100.                 {
  101.                         jdq = 1;                  //蜂鳴器關(guān)閉(繼電器斷開(kāi))
  102.                 }
  103.                
  104.                 write_command(0x80+0x03);          //第一行第四位開(kāi)始顯示
  105.                 write_data(0x30+temp/100);
  106.                 write_data(0x30+temp/10%10);
  107.                 write_data('.');
  108.                 write_data(0x30+temp%10);
  109.                 write_data(' ');
  110.                 write_data('C');

  111.                 write_command(0x80+0x43);         //第二行第四位開(kāi)始顯示
  112.                 write_data(0x30+num/100);
  113.                 write_data(0x30+num/10%10);
  114.                 write_data('.');
  115.                 write_data(0x30+num%10);
  116.                 write_data(' ');
  117.                 write_data('C');               
  118.                
  119.                 write_command(0x80+0x0d);         //第一行第13位開(kāi)始顯示
  120.                 write_data(0x30+num1%10);
  121. //                SBUF = temp;                          
  122.     }
  123. }
復(fù)制代碼

所有資料51hei提供下載:
空調(diào)溫度控制器.zip (166.8 KB, 下載次數(shù): 117)


作者: 1231566    時(shí)間: 2020-10-5 11:41
加熱指示燈咋一直閃呀

作者: 夏一    時(shí)間: 2020-10-13 01:21
里面啥都沒(méi)有
作者: 51hei團(tuán)團(tuán)    時(shí)間: 2020-10-13 01:26
夏一 發(fā)表于 2020-10-13 01:21
里面啥都沒(méi)有

是的,就是一個(gè)仿真圖加上網(wǎng)頁(yè)上的程序
作者: yuechen428    時(shí)間: 2020-11-13 15:07
51hei團(tuán)團(tuán) 發(fā)表于 2020-10-13 01:26
是的,就是一個(gè)仿真圖加上網(wǎng)頁(yè)上的程序

模塊化的程序  網(wǎng)頁(yè)的是主函數(shù)的程序
作者: yuechen428    時(shí)間: 2020-11-13 15:08
夏一 發(fā)表于 2020-10-13 01:21
里面啥都沒(méi)有

模塊化編程 網(wǎng)頁(yè)上的是主函數(shù)程序
作者: pgdw    時(shí)間: 2021-1-6 18:05
良心資源,很有參考學(xué)習(xí)價(jià)值,感謝樓主的無(wú)私分享。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1