找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13340|回复: 7
收起左侧

DIY长时间定时器开关 数码管显示 stc12C2052ad单片机

  [复制链接]
ID:112693 发表于 2018-12-22 13:02 | 显示全部楼层 |阅读模式
闲着没事,做一个长时间定时器,有些充电需要4-12小时的,一充上总忘,一充充好几天才想起了!安全隐患!!!

程序编写还是不精简,但是能用!

2052.jpg 倒计时 继电器.JPG 微信图片_20181222115955副本.jpg 微信图片_20181222120008.jpg 微信图片_20181222120014.jpg 微信图片_20181222120021.jpg 微信图片_20181222120055.jpg

单片机源程序如下:
  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        即开机关

  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晶振,自定义延时函数
  23.         {
  24.         Aelay(132);  //     一小时延时函数
  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;                 //第一位数码管 显示 1
  49.                                 P1=0xA4;                     //第二位显示2;组合显示12小时
  50.                                 Relay=0;                     //继电器 开始 工作

  51.                                 Buzzer=~Buzzer;              //蜂鸣器 响一下
  52.                                 Delay(100);
  53.                                 Buzzer=~Buzzer;                     //蜂鸣器 关闭 不响

  54.                                 Hour();                             //*12小时,函数
  55.                                
  56.                                 ////////////////11////////////////////////////
  57.                                
  58.                                 P1=0xFF;
  59.                                 P1=0xF9;                         //第二位显示1;组合显示11小时

  60.                                 Buzzer=~Buzzer;              //蜂鸣器 响一下
  61.                                 Delay(100);
  62.                                 Buzzer=~Buzzer;              //蜂鸣器 关闭 不响

  63.                                 Hour();                          //11小时,函数

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

  65.                                 P1=0xFF;                         //第二位无显示
  66.                                 P1=0xC0;                         //第二位显示0;           10小时

  67.                                 Buzzer=~Buzzer;                     //蜂鸣器 响一下
  68.                                 Delay(100);
  69.                                 Buzzer=~Buzzer;                     //蜂鸣器 关闭 不响

  70.                                 Hour();                                     //10小时,函数

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

  72.                                 Shumag2=~Shumag2;                //第一位数码管 无显示

  73.                                 P1=0xFF;                        //第二位无显示
  74.                                 P1=0x90;                        //第二位显示9;

  75.                                 Buzzer=~Buzzer;                    //蜂鸣器 响一下
  76.                                 Delay(100);
  77.                                 Buzzer=~Buzzer;                    //蜂鸣器 关闭 不响

  78.                                 Hour();                            //9小时,函数

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

  80.                                 P1=0xFF;                        //第二位无显示
  81.                                 P1=0x80;                        //第二位显示8;

  82.                                 Buzzer=~Buzzer;             //蜂鸣器 响一下
  83.                                 Delay(100);
  84.                                 Buzzer=~Buzzer;                    //蜂鸣器 关闭 不响

  85.                                 Hour();                            //8小时,函数

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

  87.                                 P1=0xFF;        //第二位无显示
  88.                                 P1=0xF8;        //第二位显示7;

  89.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  90.                                 Delay(100);
  91.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  92.                                 Hour();            //7小时,函数

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

  94.                                 P1=0xFF;        //第二位无显示
  95.                                 P1=0x82;        //第二位显示6;

  96.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  97.                                 Delay(100);
  98.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  99.                                 Hour();            //6小时,函数

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

  101.                                 P1=0xFF;        //第二位无显示
  102.                                 P1=0x92;        //第二位显示5;

  103.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  104.                                 Delay(100);
  105.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  106.                                 Hour();            //5小时,函数

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

  108.                                 P1=0xFF;         //第二位无显示
  109.                                 P1=0x99;        //第二位显示4;

  110.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  111.                                 Delay(100);
  112.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  113.                                 Hour();                    //4小时,函数

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

  115.                                 P1=0xFF;        //第二位无显示
  116.                                 P1=0xB0;        //第二位显示3;

  117.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  118.                                 Delay(100);
  119.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  120.                                 Hour();            //3小时,函数

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

  122.                                 P1=0xFF;        //第二位无显示
  123.                                 P1=0xA4;        //第二位显示2;

  124.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  125.                                 Delay(100);
  126.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  127.                                 Hour();            //2小时,函数

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

  129.                                 P1=0xFF;        //第二位无显示
  130.                                 P1=0xF9;        //第二位显示1;

  131.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  132.                                 Delay(100);
  133.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  134.                                 Hour();            //1小时,函数

  135.                                 ////////////////结束延时///////////////////////////

  136.                                 Relay=~Relay;         //继电器 断开

  137.                                 //////////////// 提示结束 指示灯 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;        //蜂鸣器 关闭 不响

  185.                                 Hour();            //8小时,函数

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

  187.                                 P1=0xFF;        //第二位无显示
  188.                                 P1=0xF8;        //第二位显示7;

  189.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  190.                                 Delay(100);
  191.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  192.                                 Hour();            //7小时,函数

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

  198.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  199.                                 Delay(100);
  200.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  201.                                 Hour();            //6小时,函数

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

  203.                                 P1=0xFF;         //第二位无显示
  204.                                 P1=0x92;        //第二位显示5;

  205.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  206.                                 Delay(100);
  207.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  208.                                 Hour();            //5小时,函数

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

  210.                                 P1=0xFF;         //第二位无显示
  211.                                 P1=0x99;        //第二位显示4;

  212.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  213.                                 Delay(100);
  214.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  215.                                 Hour();                    //4小时,函数

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

  217.                                 P1=0xFF;         //第二位无显示
  218.                                 P1=0xB0;        //第二位显示3;

  219.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  220.                                 Delay(100);
  221.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  222.                                 Hour();            //3小时,函数

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

  224.                                 P1=0xFF;        //第二位无显示
  225.                                 P1=0xA4;        //第二位显示2;

  226.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  227.                                 Delay(100);
  228.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  229.                                 Hour();            //2小时,函数

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

  231.                                 P1=0xFF;        //第二位无显示
  232.                                 P1=0xF9;        //第二位显示1;

  233.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  234.                                 Delay(100);
  235.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  236.                                 Hour();            //1小时,函数

  237.                                 ////////////////结束延时///////////////////////////

  238.                                 Relay=~Relay;         //继电器 断开

  239.                                 //////////////// 提示结束 指示灯 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;        //蜂鸣器 关闭 不响

  285.                                 Hour();                    //4小时,函数

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

  287.                                 P1=0xFF;         //第二位无显示
  288.                                 P1=0xB0;        //第二位显示3;

  289.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  290.                                 Delay(100);
  291.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  292.                                 Hour();            //3小时,函数

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

  294.                                 P1=0xFF;         //第二位无显示
  295.                                 P1=0xA4;        //第二位显示2;

  296.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  297.                                 Delay(100);
  298.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  299.                                 Hour();            //2小时,函数

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

  301.                                 P1=0xFF;        //第二位无显示
  302.                                 P1=0xF9;        //第二位显示1;

  303.                                 Buzzer=~Buzzer;        //蜂鸣器 响一下
  304.                                 Delay(100);
  305.                                 Buzzer=~Buzzer;        //蜂鸣器 关闭 不响

  306.                                 Hour();            //1小时,函数

  307.                                 ////////////////结束延时///////////////////////////

  308.                                 Relay=~Relay;         //继电器 断开

  309.                                 //////////////// 提示结束 指示灯 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)//按键延时函数
  369. ……………………

  370. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
C程序.rar (2.22 KB, 下载次数: 119)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:48580 发表于 2019-5-8 00:53 | 显示全部楼层
编译错误 main重复定义
回复

使用道具 举报

ID:580659 发表于 2019-7-9 11:19 | 显示全部楼层
可以可以
回复

使用道具 举报

ID:543424 发表于 2021-1-14 18:40 | 显示全部楼层
怎么改分钟10分钟,20分钟。30分钟?
回复

使用道具 举报

ID:272158 发表于 2021-1-22 09:33 | 显示全部楼层
完整的电路图有吗。
回复

使用道具 举报

ID:280678 发表于 2021-8-13 21:10 | 显示全部楼层
Shumag1=1;                             //第一位无显示  3
                                Shumag2=1;                             //第一位无显示         2
                                P1=0xFF;                         //第二位无显示

                                ////////////////12////////////////////////////
                              
                                Shumag2=~Shumag2;                 //第一位数码管 显示 1
                                P1=0xA4;                     //第二位显示2;组合显示12小时


这里没看明白????
回复

使用道具 举报

ID:280678 发表于 2021-8-13 21:10 | 显示全部楼层
完整的电路图有吗?
回复

使用道具 举报

ID:977804 发表于 2022-3-3 22:50 来自手机 | 显示全部楼层
继电器,220v插座那怎么接的,朋友
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表