找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14290|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

DIY長時間定時器開關(guān) 數(shù)碼管顯示 stc12C2052ad單片機(jī)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:112693 發(fā)表于 2018-12-22 13:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
閑著沒事,做一個長時間定時器,有些充電需要4-12小時的,一充上總忘,一充充好幾天才想起了!安全隱患。!

程序編寫還是不精簡,但是能用!



單片機(jī)源程序如下:
  1. #include<reg52.h>

  2. sbit Key3=P3^0;        //4        小時
  3. sbit Key2=P3^1;        //8        小時
  4. sbit Key1=P3^2;        //12小時
  5. sbit Key4=P3^3;        //H        即開機(jī)關(guān)

  6. sbit Relay = P3^4;        //繼電器
  7. sbit Buzzer= P3^5;        //beep
  8. sbit Shumag1= P1^7;        //3          顯示 “|-”
  9. sbit Shumag2= P3^7;        //2          顯示 “|”

  10. //sbit a = P1^0;
  11. sbit b = P1^1;
  12. sbit c = P1^2;
  13. //sbit d = P1^3;
  14. sbit e = P1^4;
  15. sbit f = P1^5;
  16. sbit g = P1^6;
  17. //sbit dp= P1^7;

  18. void Keyscan(void);
  19. void Delay(unsigned char mS);
  20. void Aelay(unsigned char mS);

  21. /*--------------釋放繼電器----------------------*/

  22. void Hour(void)//12M晶振,自定義延時函數(shù)
  23.         {
  24.         Aelay(132);  //     一小時延時函數(shù)
  25.         }       

  26. /*------------------------------------------------
  27.          按鍵掃描檢測,這里僅作功能測試
  28. ------------------------------------------------*/
  29. void Keyscan(void)//鍵盤掃描
  30.         {

  31.         if(!Key1)
  32.                 {
  33.                 Delay(10);
  34.                 if(!Key1)
  35.                         {
  36.                         while(!Key1)
  37.             {};
  38.                         Delay(10);
  39.                         while(!Key1)
  40.             {};
  41.                                 {
  42.                                
  43.                                 Shumag1=1;                             //第一位無顯示  3
  44.                                 Shumag2=1;                             //第一位無顯示         2
  45.                                 P1=0xFF;                         //第二位無顯示

  46.                                 ////////////////12////////////////////////////
  47.                                
  48.                                 Shumag2=~Shumag2;                 //第一位數(shù)碼管 顯示 1
  49.                                 P1=0xA4;                     //第二位顯示2;組合顯示12小時
  50.                                 Relay=0;                     //繼電器 開始 工作

  51.                                 Buzzer=~Buzzer;              //蜂鳴器 響一下
  52.                                 Delay(100);
  53.                                 Buzzer=~Buzzer;                     //蜂鳴器 關(guān)閉 不響

  54.                                 Hour();                             //*12小時,函數(shù)
  55.                                
  56.                                 ////////////////11////////////////////////////
  57.                                
  58.                                 P1=0xFF;
  59.                                 P1=0xF9;                         //第二位顯示1;組合顯示11小時

  60.                                 Buzzer=~Buzzer;              //蜂鳴器 響一下
  61.                                 Delay(100);
  62.                                 Buzzer=~Buzzer;              //蜂鳴器 關(guān)閉 不響

  63.                                 Hour();                          //11小時,函數(shù)

  64.                                 ////////////////10////////////////////////////

  65.                                 P1=0xFF;                         //第二位無顯示
  66.                                 P1=0xC0;                         //第二位顯示0;           10小時

  67.                                 Buzzer=~Buzzer;                     //蜂鳴器 響一下
  68.                                 Delay(100);
  69.                                 Buzzer=~Buzzer;                     //蜂鳴器 關(guān)閉 不響

  70.                                 Hour();                                     //10小時,函數(shù)

  71.                                 ////////////////09////////////////////////////

  72.                                 Shumag2=~Shumag2;                //第一位數(shù)碼管 無顯示

  73.                                 P1=0xFF;                        //第二位無顯示
  74.                                 P1=0x90;                        //第二位顯示9;

  75.                                 Buzzer=~Buzzer;                    //蜂鳴器 響一下
  76.                                 Delay(100);
  77.                                 Buzzer=~Buzzer;                    //蜂鳴器 關(guān)閉 不響

  78.                                 Hour();                            //9小時,函數(shù)

  79.                                 ////////////////08////////////////////////////

  80.                                 P1=0xFF;                        //第二位無顯示
  81.                                 P1=0x80;                        //第二位顯示8;

  82.                                 Buzzer=~Buzzer;             //蜂鳴器 響一下
  83.                                 Delay(100);
  84.                                 Buzzer=~Buzzer;                    //蜂鳴器 關(guān)閉 不響

  85.                                 Hour();                            //8小時,函數(shù)

  86.                                 ////////////////07////////////////////////////

  87.                                 P1=0xFF;        //第二位無顯示
  88.                                 P1=0xF8;        //第二位顯示7;

  89.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  90.                                 Delay(100);
  91.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  92.                                 Hour();            //7小時,函數(shù)

  93.                                 ////////////////06////////////////////////////

  94.                                 P1=0xFF;        //第二位無顯示
  95.                                 P1=0x82;        //第二位顯示6;

  96.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  97.                                 Delay(100);
  98.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  99.                                 Hour();            //6小時,函數(shù)

  100.                                 ////////////////05////////////////////////////

  101.                                 P1=0xFF;        //第二位無顯示
  102.                                 P1=0x92;        //第二位顯示5;

  103.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  104.                                 Delay(100);
  105.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  106.                                 Hour();            //5小時,函數(shù)

  107.                                 ////////////////04////////////////////////////

  108.                                 P1=0xFF;         //第二位無顯示
  109.                                 P1=0x99;        //第二位顯示4;

  110.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  111.                                 Delay(100);
  112.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  113.                                 Hour();                    //4小時,函數(shù)

  114.                                 ////////////////03////////////////////////////

  115.                                 P1=0xFF;        //第二位無顯示
  116.                                 P1=0xB0;        //第二位顯示3;

  117.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  118.                                 Delay(100);
  119.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  120.                                 Hour();            //3小時,函數(shù)

  121.                                 ////////////////02////////////////////////////

  122.                                 P1=0xFF;        //第二位無顯示
  123.                                 P1=0xA4;        //第二位顯示2;

  124.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  125.                                 Delay(100);
  126.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  127.                                 Hour();            //2小時,函數(shù)

  128.                                 ////////////////01////////////////////////////

  129.                                 P1=0xFF;        //第二位無顯示
  130.                                 P1=0xF9;        //第二位顯示1;

  131.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  132.                                 Delay(100);
  133.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  134.                                 Hour();            //1小時,函數(shù)

  135.                                 ////////////////結(jié)束延時///////////////////////////

  136.                                 Relay=~Relay;         //繼電器 斷開

  137.                                 //////////////// 提示結(jié)束 指示燈 HH ///////////////

  138.                                 P1=0xFF;           //第二位無顯示
  139.                                 P1=0x09;               //顯示 H 和 |-
  140.                                 Shumag2=~Shumag2;  //顯示 |                               
  141.                                 Buzzer=~Buzzer;           //Beep
  142.                                 Delay(1500);           //延時
  143.                                 P1=0xFF;               //第二位無顯示
  144.                                 Shumag2=~Shumag2;  //無顯示 |                               
  145.                                 Buzzer=~Buzzer;           //Beep
  146.                                 Delay(1500);           //延時
  147.                                 P1=0x09;               //顯示 H 和 |-
  148.                                 Shumag2=~Shumag2;  //顯示 |                               
  149.                                 Buzzer=~Buzzer;           //Beep
  150.                                 Delay(1500);           //延時
  151.                                 P1=0xFF;               //第二位無顯示
  152.                                 Shumag2=~Shumag2;  //無顯示 |                               
  153.                                 Buzzer=~Buzzer;           //Beep
  154.                                 Delay(1500);           //延時
  155.                                 P1=0x09;               //顯示 H 和 |-
  156.                                 Shumag2=~Shumag2;  //顯示 |                               
  157.                                 Buzzer=~Buzzer;           //Beep
  158.                                 Delay(1500);           //延時
  159.                                 P1=0xFF;               //第二位無顯示
  160.                                 Shumag2=~Shumag2;  //無顯示 |                       
  161.                                 Buzzer=~Buzzer;           //Beep
  162.                                
  163.                     }
  164.                         }
  165.                 }

  166.          if(!Key2)
  167.                         {
  168.                         while(!Key2)
  169.             {};
  170.                         Delay(10);//去抖
  171.                         while(!Key2)
  172.             {};
  173.                                 {
  174.                    
  175.                                 //LedPOW=~LedPOW; //電源 LED 熄滅

  176.                                 P1=0xFF;         //第二位無顯示
  177.                                 Shumag1= 1;         //第一位無顯示
  178.                                 Shumag2= 1;         //第一位無顯示

  179.                                 Relay=0;   //繼電器 開始 工作

  180.                                 ////////////////08////////////////////////////

  181.                                 P1=0x80;        //第二位顯示8;

  182.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  183.                                 Delay(100);
  184.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  185.                                 Hour();            //8小時,函數(shù)

  186.                                 ////////////////07////////////////////////////

  187.                                 P1=0xFF;        //第二位無顯示
  188.                                 P1=0xF8;        //第二位顯示7;

  189.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  190.                                 Delay(100);
  191.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  192.                                 Hour();            //7小時,函數(shù)

  193.                                
  194.                                 ////////////////06////////////////////////////
  195.                                
  196.                                 P1=0xFF;        //第二位無顯示
  197.                                 P1=0x82;        //第二位顯示6;

  198.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  199.                                 Delay(100);
  200.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  201.                                 Hour();            //6小時,函數(shù)

  202.                                 ////////////////05////////////////////////////

  203.                                 P1=0xFF;         //第二位無顯示
  204.                                 P1=0x92;        //第二位顯示5;

  205.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  206.                                 Delay(100);
  207.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  208.                                 Hour();            //5小時,函數(shù)

  209.                                 ////////////////04////////////////////////////

  210.                                 P1=0xFF;         //第二位無顯示
  211.                                 P1=0x99;        //第二位顯示4;

  212.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  213.                                 Delay(100);
  214.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  215.                                 Hour();                    //4小時,函數(shù)

  216.                                 ////////////////03////////////////////////////

  217.                                 P1=0xFF;         //第二位無顯示
  218.                                 P1=0xB0;        //第二位顯示3;

  219.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  220.                                 Delay(100);
  221.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  222.                                 Hour();            //3小時,函數(shù)

  223.                                 ////////////////02////////////////////////////

  224.                                 P1=0xFF;        //第二位無顯示
  225.                                 P1=0xA4;        //第二位顯示2;

  226.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  227.                                 Delay(100);
  228.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  229.                                 Hour();            //2小時,函數(shù)

  230.                                 ////////////////01////////////////////////////

  231.                                 P1=0xFF;        //第二位無顯示
  232.                                 P1=0xF9;        //第二位顯示1;

  233.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  234.                                 Delay(100);
  235.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  236.                                 Hour();            //1小時,函數(shù)

  237.                                 ////////////////結(jié)束延時///////////////////////////

  238.                                 Relay=~Relay;         //繼電器 斷開

  239.                                 //////////////// 提示結(jié)束 指示燈 HH ///////////////

  240.                                 P1=0xFF;           //第二位無顯示
  241.                                 P1=0x09;               //顯示 H 和 |-
  242.                                 Shumag2=~Shumag2;  //顯示 |                               
  243.                                 Buzzer=~Buzzer;           //Beep
  244.                                 Delay(1500);           //延時
  245.                                 P1=0xFF;               //第二位無顯示
  246.                                 Shumag2=~Shumag2;  //無顯示 |                               
  247.                                 Buzzer=~Buzzer;           //Beep
  248.                                 Delay(1500);           //延時
  249.                                 P1=0x09;               //顯示 H 和 |-
  250.                                 Shumag2=~Shumag2;  //顯示 |                               
  251.                                 Buzzer=~Buzzer;           //Beep
  252.                                 Delay(1500);           //延時
  253.                                 P1=0xFF;               //第二位無顯示
  254.                                 Shumag2=~Shumag2;  //無顯示 |                               
  255.                                 Buzzer=~Buzzer;           //Beep
  256.                                 Delay(1500);           //延時
  257.                                 P1=0x09;               //顯示 H 和 |-
  258.                                 Shumag2=~Shumag2;  //顯示 |                               
  259.                                 Buzzer=~Buzzer;           //Beep
  260.                                 Delay(1500);           //延時
  261.                                 P1=0xFF;               //第二位無顯示
  262.                                 Shumag2=~Shumag2;  //無顯示 |                       
  263.                                 Buzzer=~Buzzer;           //Beep


  264.                     }
  265.                         }
  266.           if(!Key3)
  267.                         {
  268.                         while(!Key3)
  269.             {};
  270.                         Delay(10);//去抖
  271.                         while(!Key3)
  272.             {};
  273.                                 {
  274.                    
  275.                                 //LedPOW=~LedPOW; //電源 LED 熄滅

  276.                                 P1=0xFF;         //第二位無顯示
  277.                                 Shumag1= 1;         //第一位無顯示
  278.                                 Shumag2= 1;         //第一位無顯示

  279.                                 Relay=0;   //繼電器 開始 工作

  280.                                 ////////////////04////////////////////////////

  281.                                 P1=0x99;        //第二位顯示4;

  282.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  283.                                 Delay(100);
  284.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  285.                                 Hour();                    //4小時,函數(shù)

  286.                                 ////////////////03////////////////////////////

  287.                                 P1=0xFF;         //第二位無顯示
  288.                                 P1=0xB0;        //第二位顯示3;

  289.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  290.                                 Delay(100);
  291.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  292.                                 Hour();            //3小時,函數(shù)

  293.                                 ////////////////02////////////////////////////

  294.                                 P1=0xFF;         //第二位無顯示
  295.                                 P1=0xA4;        //第二位顯示2;

  296.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  297.                                 Delay(100);
  298.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  299.                                 Hour();            //2小時,函數(shù)

  300.                                 ////////////////01////////////////////////////

  301.                                 P1=0xFF;        //第二位無顯示
  302.                                 P1=0xF9;        //第二位顯示1;

  303.                                 Buzzer=~Buzzer;        //蜂鳴器 響一下
  304.                                 Delay(100);
  305.                                 Buzzer=~Buzzer;        //蜂鳴器 關(guān)閉 不響

  306.                                 Hour();            //1小時,函數(shù)

  307.                                 ////////////////結(jié)束延時///////////////////////////

  308.                                 Relay=~Relay;         //繼電器 斷開

  309.                                 //////////////// 提示結(jié)束 指示燈 HH ///////////////

  310.                                 P1=0xFF;           //第二位無顯示
  311.                                 P1=0x09;               //第一位無顯示 H 和 |-
  312.                                 Shumag2=~Shumag2;  //顯示 |                               
  313.                                 Buzzer=~Buzzer;           //Beep
  314.                                 Delay(1500);           //延時
  315.                                 P1=0xFF;               //第二位無顯示
  316.                                 Shumag2=~Shumag2;  //第一位無顯示 |                               
  317.                                 Buzzer=~Buzzer;           //Beep
  318.                                 Delay(1500);           //延時
  319.                                 P1=0x09;               //顯示 H 和 |-
  320.                                 Shumag2=~Shumag2;  //顯示 |                               
  321.                                 Buzzer=~Buzzer;           //Beep
  322.                                 Delay(1500);           //延時
  323.                                 P1=0xFF;               //第二位無顯示
  324.                                 Shumag2=~Shumag2;  //無顯示 |                               
  325.                                 Buzzer=~Buzzer;           //Beep
  326.                                 Delay(1500);           //延時
  327.                                 P1=0x09;               //顯示 H 和 |-
  328.                                 Shumag2=~Shumag2;  //顯示 |                               
  329.                                 Buzzer=~Buzzer;           //Beep
  330.                                 Delay(1500);           //延時
  331.                                 P1=0xFF;               //第二位無顯示
  332.                                 Shumag2=~Shumag2;  //無顯示 |                       
  333.                                 Buzzer=~Buzzer;           //Beep


  334.                                 }
  335.                         }

  336.                  if(!Key4)
  337.                         {
  338.                         while(!Key4)
  339.             {};
  340.                         Delay(10);//去抖
  341.                         while(!Key4)
  342.             {};
  343.                                 {

  344.                     Relay=~Relay;   //繼電器

  345.                                 b=~b;
  346.                                 c=~c;
  347.                                 e=~e;
  348.                                 f=~f;
  349.                                 g=~g;
  350.                                
  351.                                 Shumag1=~Shumag1;// 顯示1
  352.                                 Shumag2=~Shumag2;// 顯示1

  353.                                 Buzzer=~Buzzer;
  354.                                 Delay(1500);
  355.                                
  356.                                 Buzzer=~Buzzer;
  357.                                 Delay(1500);
  358.                                
  359.                                 Buzzer=~Buzzer;
  360.                                 Delay(1500);
  361.                                
  362.                                 Buzzer=~Buzzer;
  363.                                

  364.                     }
  365.                         }

  366.         }

  367. ////////////////////////////////////////////////////////////////
  368. void Delay(unsigned char mS)//按鍵延時函數(shù)
  369. ……………………

  370. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
C程序.rar (2.22 KB, 下載次數(shù): 120)


評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:48580 發(fā)表于 2019-5-8 00:53 | 只看該作者
編譯錯誤 main重復(fù)定義
回復(fù)

使用道具 舉報

板凳
ID:580659 發(fā)表于 2019-7-9 11:19 | 只看該作者
可以可以
回復(fù)

使用道具 舉報

地板
ID:543424 發(fā)表于 2021-1-14 18:40 | 只看該作者
怎么改分鐘10分鐘,20分鐘。30分鐘?
回復(fù)

使用道具 舉報

5#
ID:272158 發(fā)表于 2021-1-22 09:33 | 只看該作者
完整的電路圖有嗎。
回復(fù)

使用道具 舉報

6#
ID:280678 發(fā)表于 2021-8-13 21:10 | 只看該作者
Shumag1=1;                             //第一位無顯示  3
                                Shumag2=1;                             //第一位無顯示         2
                                P1=0xFF;                         //第二位無顯示

                                ////////////////12////////////////////////////
                              
                                Shumag2=~Shumag2;                 //第一位數(shù)碼管 顯示 1
                                P1=0xA4;                     //第二位顯示2;組合顯示12小時


這里沒看明白????
回復(fù)

使用道具 舉報

7#
ID:280678 發(fā)表于 2021-8-13 21:10 | 只看該作者
完整的電路圖有嗎?
回復(fù)

使用道具 舉報

8#
ID:977804 發(fā)表于 2022-3-3 22:50 來自手機(jī) | 只看該作者
繼電器,220v插座那怎么接的,朋友
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表