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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9104|回復: 6
收起左側(cè)

STC單片機制作可編程定時插座

  [復制鏈接]
ID:95393 發(fā)表于 2017-4-23 12:28 | 顯示全部樓層 |閱讀模式
學習單片機有一段時間了,除了做幾個時鐘當個擺設好像也沒什么作品了。家里有些電器充電時間不能太長,如現(xiàn)在的手機有閃充功能的一般100分鐘就能充滿電。這樣在晚上睡覺時讓手機滿血復活好像就有了困難(以前用的手機晚上總要充一晚上)。隨想做個定時插座吧,就在做單片機數(shù)碼管時鐘的基礎上改進。由于初始功能還不太完善,特意外接了串口下載接口!  本以為有現(xiàn)成裝單片機的電路板能省點焊接功夫,沒想到要改線路造成很多飛線,所以看起來很亂。還不如用洞洞板好!
運行過程:上電顯示12:00---通過調(diào)時,調(diào)分按鍵設定時間---啟動---開始倒計時,繼電器吸合通電(運行中按鍵失效)---時間到繼電器斷開,數(shù)碼管閃爍
1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg

單片機源程序:
  1. /********************************************************
  2. *********************************************************
  3. ***********        可編程定時插座       *****************
  4. ***********          初次完成程序日期:2017、3、28                   ******

  5. 程序:上電-K1,K2按鍵進行時分調(diào)整-K3啟動(啟動后按鍵將無效)
  6. -繼電器閉合通電-開始倒計時-        倒計時結(jié)束繼電器斷開-完成周期

  7. ********************************************************/

  8. #include<reg51.h>
  9. #include<intrins.h>

  10. #define uchar unsigned char
  11. #define uint  unsigned int


  12. sbit s1=P3^2;
  13. sbit s2=P3^3;
  14. sbit s3=P3^4;                                 //    定義位使用端口 1,2,3,4段
  15. sbit s4=P3^5;
  16. sbit jd=P2^0;                                 //     繼電器端口

  17. sbit k1=P1^1;                                 //     調(diào)時
  18. sbit k2=P1^2;                                 //     調(diào)分
  19. sbit k3=P1^3;                                 //     啟動
  20. sbit GGD=P1^0;                                 //     按鍵公共端



  21. uchar code mum[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};        //  段碼0~9
  22. uchar code display1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf} ;
  23. uchar code display2[]={0xfe,0xbf,0xf7,0xbf,0xfe,0xbf,0xf7,0xbf} ;
  24. uchar code display3[]={0xcf,0xf9,0xcf,0xf9,0xcf,0xf9} ;
  25. uchar code display4[]={0xfe,0xdf,0xef,0xf7,0xfb,0xfd} ;


  26. char sec=59,min=0,hour=12;                                                                                                //  定義全局變量 有符號字符型
  27. uint cnt;


  28. /***************************************************************************
  29. ***************  函數(shù)名:delay                  ****************************
  30. ***************  函數(shù)功能:延時函數(shù)             ****************************
  31. ***************  輸入:                         ****************************
  32.                                  輸出:
  33. ***************************************************************************/



  34. void delay(uchar x)                                                                                                                         //  延時函數(shù)
  35. {
  36.   uchar i,j;
  37.   for(;x>0;x--)
  38.   for(i=20;i>0;i--)
  39.   for(j=2;j>0;j--);
  40. }



  41. void delay1(uint x)
  42. {
  43.         uchar i,j;
  44.         for(;x>0;x--)
  45.         for(i=20;i>0;i--)
  46.         for(j=200;j>0;j--);

  47. }




  48. void shuma()
  49. {
  50.         uchar a,b,n,m,j,k;
  51.         s1=1;
  52.         s2=1;
  53.         s3=1;
  54.         s4=0;
  55.         while(1)
  56.         {
  57.        

  58.             for(a=0;a<6;a++)
  59.                 {
  60.                         for(n=0;n<6;n++)
  61.                         {
  62.                                 P0=display1[n];
  63.                                 delay1(15);       
  64.                         }
  65.                 }


  66.                 for(m=0;m<8;m++)
  67.                 {
  68.                         P0=display2[m];
  69.                         delay1(100);       
  70.                 }


  71.                 for(j=0;j<6;j++)
  72.                 {
  73.                         P0=display3[j];
  74.                         delay1(30);       
  75.                 }

  76.                 for(b=0;b<6;b++)
  77.                 {
  78.                         for(k=0;k<6;k++)
  79.                         {
  80.                                 P0=display4[k];
  81.                                 delay1(15);       
  82.                         }
  83.                 }
  84.        
  85.                
  86.         }


  87. }



  88. /***************************************************************************
  89. ***************  函數(shù)名:timeyx                  ****************************
  90. ***************  函數(shù)功能:時鐘運行             ****************************
  91. ***************  輸入:                         ****************************
  92.                                  輸出:
  93. ***************************************************************************/



  94. void timeyx()                                                           //    時鐘運行
  95. {


  96.       GGD=1;                                                                   //    按鍵公共端置高電平,運行中按鍵無效
  97.       sec--;
  98.       if(sec<0)
  99.       {
  100.           sec=59;
  101.               min--;
  102.               if(min<0)
  103.               {
  104.                    min=59;
  105.                    hour--;
  106.           
  107.               }


  108.       }

  109. }




  110. /***************************************************************************
  111. ***************  函數(shù)名:stop                 ****************************
  112. ***************  函數(shù)功能:繼電器斷開           ****************************
  113. ***************  輸入:                         ****************************
  114.                                  輸出:
  115. ***************************************************************************/



  116. void stop()                                                                                 //   時間到繼電器斷開
  117. {
  118.         if(hour==0&&min==0)                                                         //   判斷時分為0時
  119.         {                                                                                       
  120.                 TR0=0;                                                                         //    定時器停止
  121.                
  122.                 jd=1;
  123.                 shuma();                                                                         //    繼電器斷開
  124.         }
  125. }

  126.        

  127. /***************************************************************************
  128. ***************  函數(shù)名:display                 ****************************
  129. ***************  函數(shù)功能:數(shù)碼管顯示           ****************************
  130. ***************  輸入:                         ****************************
  131.                                  輸出:
  132. ***************************************************************************/




  133. void display(uchar zm,uchar zh)                        //     顯示函數(shù)
  134. {
  135.   
  136.   
  137.   
  138.   P0=mum[zm%10];
  139.   s1=0;
  140.   delay(10);
  141.   s1=1 ;

  142.   
  143.   P0=mum[zm/10];
  144.   s2=0;
  145.   delay(10);
  146.   s2=1;

  147.   
  148.   P0=mum[zh%10];
  149.   if(cnt>2000)                                                                 //     小數(shù)點閃爍
  150.   P0&=0x7f;                                                                         //     增加小數(shù)點顯示
  151.   s3=0;
  152.   delay(10);
  153.   s3=1;

  154.   
  155.   P0=mum[zh/10];
  156.   s4=0;
  157.   delay(10);
  158.   s4=1 ;

  159.   }




  160. /***************************************************************************
  161. ***************  函數(shù)名:timeset                 ****************************
  162. ***************  函數(shù)功能:時間設置             ****************************
  163. ***************  輸入:                         ****************************
  164.                                  輸出:
  165. ***************************************************************************/


  166. void timeset()                                                                  //  時間設置
  167. {

  168.    if(k1==0)
  169.    {
  170.        delay(50);
  171.            if(k1==0)
  172.            {
  173.                hour--;
  174.                if(hour<0)
  175.                {
  176.                     hour=12;
  177.                  
  178.                }
  179.                while(k1==0)
  180.                display(min,hour);       
  181.            }
  182.    }


  183.             if(k2==0)
  184.             {
  185.                  delay(10);
  186.                  if(k2==0)
  187.                  {
  188.                       min--;
  189.                  
  190.                           if(min<0)
  191.                           {
  192.                                min=59;
  193.                                hour--;
  194.                   
  195.                           }
  196.                  
  197.                           while(k2==0)
  198.                           display(min,hour);       
  199.                  
  200.                  }
  201.         }
  202.        

  203.           display(min,hour);
  204.        
  205.                        
  206. }




  207. /***************************************************************************
  208. ***************  函數(shù)名:main                ****************************
  209. ***************  函數(shù)功能:主函數(shù)             ****************************
  210. ***************  輸入:                         ****************************
  211.                                  輸出:
  212. ***************************************************************************/




  213. void main()
  214. {
  215.   
  216.   uchar end=1;                                                   //  時間預設單次循環(huán)
  217.   TMOD=0x02;                                                  //   模式2 8位自動重裝定時器
  218.   TH0=0x06;
  219.   TL0=0x06;
  220.   EA=1;
  221.   ET0=1;

  222.   GGD=0;                                                          //  按鍵公共端
  223.   jd=1;                                                                  //  繼電器關(guān)閉
  224.   TR0=0;

  225.   P3=0xff;
  226.   while(1)
  227.   {
  228.              
  229.           timeset();
  230.           stop();
  231.           

  232.       while(end)                                                  //上電未按K3啟動前一直在循環(huán) 達到預設目的
  233.       {
  234.    
  235.                 timeset();                                                  
  236.           if(k3==0)
  237.               {
  238.                         delay(20);
  239.                        if(k3==0)
  240.                        {
  241.                                  TR0=1;
  242.                                  jd=0;
  243.                                  end=0;
  244.                        }

  245.                            while(k3==0);
  246.               }
  247.        
  248.        
  249.       }
  250.   }
  251. }


  252. …………限于本文篇幅 余下代碼請從51黑電子論壇下載附件…………

復制代碼

下載:
源代碼.rar (1.9 KB, 下載次數(shù): 101)


評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100

查看全部評分

回復

使用道具 舉報

ID:157057 發(fā)表于 2017-5-2 14:12 | 顯示全部樓層
有原理圖沒。。
回復

使用道具 舉報

ID:102702 發(fā)表于 2017-5-2 15:36 | 顯示全部樓層
建議樓主附個原理圖
回復

使用道具 舉報

ID:62340 發(fā)表于 2017-5-12 10:44 來自觸屏版 | 顯示全部樓層
正想做一個,謝謝樓主!
回復

使用道具 舉報

ID:51306 發(fā)表于 2017-7-12 11:49 | 顯示全部樓層
程序很美麗,發(fā)現(xiàn)個小問題,只要時倒進時到00,在按分立馬15:59
回復

使用道具 舉報

ID:221185 發(fā)表于 2017-8-7 21:35 | 顯示全部樓層
學習了,有圖就好了。
回復

使用道具 舉報

ID:246817 發(fā)表于 2017-12-13 19:37 | 顯示全部樓層
求原理圖。。。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区国产精品 | 日日碰狠狠躁久久躁96avv | 91在线精品秘密一区二区 | 日韩欧美久久 | 四虎海外| 久在线观看 | 精品国产不卡一区二区三区 | 日日噜噜噜夜夜爽爽狠狠视频, | 玖玖视频免费 | 成人免费视频网站在线看 | 91精品在线看 | 免费人成在线观看网站 | 最新日韩在线视频 | 久久蜜桃av一区二区天堂 | 日韩欧美一区在线 | 一级电影免费看 | 精品视频999 | 老头搡老女人毛片视频在线看 | 久久一区二区三区电影 | 中文字幕精品视频 | 成人精品国产 | 亚洲精品在线看 | 一区二区三区视频免费观看 | 久久夜视频 | 国产在线网站 | 亚洲一二三区免费 | 一区二区三区免费 | 中文字幕一区二区三区在线视频 | 国产精品91网站 | 区一区二在线观看 | aa级毛片毛片免费观看久 | 91天堂网 | 91pao对白在线播放 | 成年人在线观看视频 | 亚洲精品一区二区三区中文字幕 | 人人人人人爽 | 国产高清精品在线 | 国产成人av一区二区三区 | 精品国产一区二区在线 | 亚洲视频在线看 | 亚洲精品久久久久久久久久久久久 |