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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2139|回復: 0
打印 上一主題 下一主題
收起左側

單片機時鐘程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:83710 發表于 2015-6-23 23:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit key1=P3^4;
  5. sbit key2=P3^5;
  6. sbit key3=P3^6;
  7. sbit wela=P2^7;
  8. sbit dula=P2^6;
  9. sbit beep=P2^3;                               
  10. uchar code table[]= //定義數組
  11. {0x3f,0x06,0x5b,0x4f,
  12. 0x66,0x6d,0x7d,0x07,
  13. 0x7f,0x6f};
  14. uchar code table1[]=
  15. {0xfe,0xfd,0xdf,0xf7,0xef,0xfb,0xbf,0x7f};               
  16. char shi=0,fen=0,n=0,shit=0,fent=1,numt,b=0,x=0,y=0,z=0,num,num2;
  17.    unsigned char a=0;

  18. uchar flag;
  19.   
  20.   void delayms(uint xms) //延時函數
  21.   {
  22.           uint i,j;
  23.             for(i=xms;i>0;i--)
  24.                   for(j=110;j>0;j--);
  25.   }
  26.          
  27.   void di()//蜂鳴器函數
  28.   {
  29.     beep=0;
  30.     delayms(100);
  31.     beep=1;
  32.   }


  33. void keyscan()//獨立按鍵程序
  34.   {

  35.         if(key1==0)        //第一位為功能鍵
  36.         {
  37.             delayms(10);
  38.             if(key1==0)
  39.                 {
  40.                           n++;
  41.                           if(n==8)
  42.                           {n=0;a=0;TR1=1;}
  43.                           while(!key1);
  44.                           di();
  45.                  }
  46.     }
  47.         if(n==0)
  48.         {
  49.            TR0=1;
  50.         }
  51.        
  52.         if(n==1) //調時
  53.   {   
  54.           TR0=0;
  55.           if(key2==0)
  56.           {
  57.              delayms(10);
  58.                  if(key2==0)
  59.                  {
  60.                          shi++;
  61.                          if(shi==24)
  62.                          shi=0;
  63.                          while(!key2);
  64.                          di();
  65.                  }
  66.           }
  67.            if(key3==0)
  68.            {
  69.              delayms(10);
  70.                  if(key3==0)
  71.                  {
  72.                     shi--;
  73.                         if(shi==-1)
  74.                         shi=23;
  75.                         while(!key3);
  76.                         di();
  77.                  }
  78.            }
  79.         }

  80.   if(n==2)//調分
  81.   {
  82.          TR0=0;
  83.          if(key2==0)
  84.           {
  85.              delayms(10);
  86.                  if(key2==0)
  87.                  {
  88.                          fen++;
  89.                          if(fen==60)
  90.                          fen=0;
  91.                          while(!key2);
  92.                          di();
  93.                  }
  94.           }
  95.            if(key3==0)
  96.            {
  97.              delayms(10);
  98.                  if(key3==0)
  99.                  {
  100.                     fen--;
  101.                         if(fen==-1)
  102.                         fen=59;
  103.                         while(!key3);
  104.                         di();
  105.                  }
  106.            }
  107.   }
  108.    
  109.   if(n==3) //調秒
  110.    {
  111.          TR0=0;
  112.          if(key2==0)
  113.           {
  114.              delayms(10);
  115.                  if(key2==0)
  116.                  {
  117.                          num++;
  118.                          if(num==60)
  119.                          num=0;
  120.                          while(!key2);
  121.                          di();
  122.                  }
  123.           }
  124.            if(key3==0)
  125.            {
  126.              delayms(10);
  127.                  if(key3==0)
  128.                  {
  129.                     num--;
  130.                         if(num==-1)
  131.                         num=59;
  132.                         while(!key3);
  133.                         di();
  134.                  }
  135.            }
  136.   }       
  137.        
  138.   if(n==4)//調鬧鈴時
  139.   {
  140.          TR0=0;
  141.          if(key2==0)
  142.           {
  143.              delayms(10);
  144.                  if(key2==0)
  145.                  {
  146.                          shit++;
  147.                          if(shit==24)
  148.                          shit=0;
  149.                          while(!key2);
  150.                          di();
  151.                  }
  152.           }
  153.            if(key3==0)
  154.            {
  155.              delayms(10);
  156.                  if(key3==0)
  157.                  {
  158.                     shit--;
  159.                         if(shit==-1)
  160.                         shit=23;
  161.                         while(!key3);
  162.                         di();
  163.                  }
  164.            }
  165.   }       
  166.   
  167.   if(n==5)//調鬧鈴分
  168.   {
  169.          TR0=0;
  170.          if(key2==0)
  171.           {
  172.              delayms(10);
  173.                  if(key2==0)
  174.                  {
  175.                          fent++;
  176.                          if(fent==60)
  177.                          fent=0;
  178.                          while(!key2);
  179.                          di();
  180.                  }
  181.           }
  182.            if(key3==0)
  183.            {
  184.              delayms(10);
  185.                  if(key3==0)
  186.                  {
  187.                     fent--;
  188.                         if(fent==-1)
  189.                         fent=59;
  190.                         while(!key3);
  191.                         di();
  192.                  }
  193.            }
  194.   }       
  195.   
  196.   if(n==6) //調鬧鈴秒
  197.   {
  198.          if(key2==0)
  199.           {
  200.              delayms(10);
  201.                  if(key2==0)
  202.                  {
  203.                          numt++;
  204.                          if(numt==60)
  205.                          numt=0;
  206.                          while(!key2);
  207.                          di();
  208.                  }
  209.           }
  210.            if(key3==0)
  211.            {
  212.              delayms(10);
  213.                  if(key3==0)
  214.                  {
  215.                     numt--;
  216.                         if(numt==-1)
  217.                         numt=59;
  218.                         while(!key3);
  219.                         di();
  220.                  }
  221.            }
  222.   }       
  223.    if(n==7) //調秒表
  224.    {
  225.            if(a==0){TR1=0;z=0;x=0;y=0;a=1;}        //因為當開啟鬧鈴模式時,定時器已經開啟一段時間當按下key1時,a=0;定時器從新至0
  226.            if(!key2){delayms(10);while(!key2);TR1=~TR1;} //TR1=~TR1;以為按下key2件可切換定時器的開啟和停止,從而實現開始和停止
  227.            if(!key3){delayms(10);while(!key3);a=0;x=0;y=0;z=0;}         //歸零
  228.    }

  229. }

  230.   void display(uchar s,uchar f,uchar m)
  231. {        
  232.         if(b<25&&(n==1||n==4))
  233.         {  
  234.            wela=1;
  235.            P0=0xff;
  236.            wela=0;
  237.            delayms(2);
  238.         }
  239.         else
  240.                 {               
  241.             wela=1;
  242.                 P0=table1[0];
  243.                 wela=0;
  244.                 //P0=0xff;
  245.                
  246.                 dula=1;
  247.                 P0=table[s/10];
  248.                 dula=0;
  249.             delayms(2);
  250.                
  251.                
  252.                 wela=1;         
  253.                 P0=table1[1];
  254.                 wela=0;
  255.                 P0=0xff;
  256.                
  257.                 dula=1;
  258.         P0=table[s%10];
  259.                 dula=0;
  260.             delayms(2);               
  261.         }

  262.         wela=1;
  263.         P0=table1[2];
  264.         wela=0;

  265.         dula=1;
  266.         P0=0x40;
  267.         dula=0;
  268.     delayms(2);                  
  269.        
  270.        
  271.         if(b<25&&(n==2||n==5))
  272.         {
  273.            wela=1;
  274.            P0=0xff;
  275.            wela=0;
  276.            delayms(2);
  277.         }
  278.         else
  279.         {       
  280.             wela=1;
  281.                 P0=table1[3];
  282.                 wela=0;
  283.                 //P0=0xff;
  284.                 dula=1;
  285.                 P0=table[f/10];
  286.                 dula=0;                                          
  287.             delayms(2);
  288.                
  289.                
  290.                 wela=1;
  291.                 P0=table1[4];
  292.                 wela=0;
  293.                 //P0=0xff;
  294.                 dula=1;
  295.                 P0=table[f%10];
  296.                 dula=0;
  297.             delayms(2);       
  298.         }
  299.                                                 
  300.         wela=1;
  301.         P0=table1[5];
  302.         wela=0;
  303.         //P0=0xff;
  304.         dula=1;
  305.         P0=0x40;
  306.         dula=0;
  307.     delayms(2);
  308.                                   
  309.    
  310.         if(b<25&&(n==3||n==6))
  311.         {
  312.            wela=1;
  313.            P0=0xff;
  314.            wela=0;
  315.            delayms(2);   
  316.         }
  317.         else
  318.         {       
  319.             wela=1;
  320.                 P0=table1[6];
  321.                 wela=0;
  322.                
  323.                 P0=0xff;
  324.                 dula=1;
  325.                 P0=table[m/10];
  326.                 dula=0;
  327.             delayms(2);                         
  328.                
  329.                
  330.                 wela=1;
  331.                 P0=table1[7];
  332.                 wela=0;       
  333.                
  334.                 P0=0xff;
  335.                 dula=1;
  336.                 P0=table[m%10];
  337.                 dula=0;
  338.             delayms(2);
  339.         }
  340. }


  341. void display1(uchar x,uchar y,uchar z)
  342. {        
  343.                        
  344.             wela=1;
  345.                 P0=table1[0];
  346.                 wela=0;       
  347.                
  348.                 dula=1;
  349.                 P0=table[x/10];
  350.                 dula=0;
  351.             delayms(2);
  352.                
  353.                
  354.                 wela=1;         
  355.                 P0=table1[1];
  356.                 wela=0;
  357.                 delayms(2);       
  358.                 P0=0xff;
  359.                
  360.                 dula=1;
  361.         P0=table[x%10];
  362.                 dula=0;
  363.             delayms(2);               


  364.                 wela=1;
  365.                 P0=table1[2];
  366.                 wela=0;
  367.                        
  368.                 P0=0xff;
  369.                 dula=1;
  370.                 P0=0x40;
  371.                 dula=0;
  372.             delayms(2);                  
  373.        
  374.        
  375.             wela=1;
  376.                 P0=table1[3];
  377.                 wela=0;

  378.                 dula=1;
  379.                 P0=table[y/10];
  380.                 dula=0;                                          
  381.             delayms(2);
  382.                
  383.                
  384.                 wela=1;
  385.                 P0=table1[4];
  386.                 wela=0;
  387.                 //P0=0xff;
  388.                
  389.                 dula=1;
  390.                 P0=table[y%10];
  391.                 dula=0;
  392.             delayms(2);       
  393.        
  394.                                                 
  395.                 wela=1;
  396.                 P0=table1[5];
  397.                 wela=0;
  398.                        
  399.                 P0=0xff;
  400.                 dula=1;
  401.                 P0=0x40;
  402.                 dula=0;
  403.             delayms(2);
  404.                                   
  405.             wela=1;
  406.                 P0=table1[6];
  407.                 wela=0;

  408.                 P0=0xff;
  409.                 dula=1;
  410.                 P0=table[z/10];
  411.                 dula=0;
  412.             delayms(2);                         
  413.                
  414.                
  415.                 wela=1;
  416.                 P0=table1[7];
  417.                 wela=0;

  418.         //        P0=0xff;
  419.                 dula=1;
  420.                 P0=table[z%10];
  421.                 dula=0;
  422.             delayms(2);
  423.        
  424. }

  425. void init()
  426. {
  427.      //IE=0x8a;//開總中斷
  428.          TMOD=0x11;//選擇工作方式1
  429.          TH0=(65536-50000)/256;//        賦初值 50毫秒
  430.          TL0=(65536-50000)%256;
  431.          TH1=(65536-10000)/256;
  432.          TL1=(65536-10000)%256;
  433.          EA=1;

  434.          ET0=1;//定時器零中斷允許
  435.          TR0=1;//開定時器零
  436.          ET1=1;        //定時器一中斷允許
  437.          TR1=1;        //開定時器一
  438.          flag=0;
  439. }

  440. main()
  441. {
  442.      init();
  443.          while(1)
  444.    {
  445.              keyscan(); //獨立按鍵            
  446.       /*******調鬧鈴當時間和設定時間相等時蜂鳴器響起,當按下任意一鍵,暫停鬧鈴。********/
  447.           if(!flag)
  448.           {
  449.                   if(shi==shit&&fen==fent) //開鬧鈴
  450.                           {
  451.                                   di();
  452.                                   if(!key1||!key2||!key3)flag=1;
  453.                           }
  454.           }
  455.           /**************************************************/
  456.            if(shi!=shit||fen!=fent)        flag=0;
  457.           if(n==0||n==1||n==2||n==3)//顯示時鐘
  458.           display(shi,fen,num);
  459.           if(n==4||n==5||n==6)
  460.           display(shit,fent,numt);//顯示鬧鈴
  461.           if(n>=7)
  462.           display1(x,y,z); //顯示秒表
  463.     }       
  464. }
  465.        




  466. void T0_time()interrupt 1 //中斷計時0時鐘
  467. {
  468.         TH0=(65536-50000)/256;
  469.         TL0=(65536-50000)%256;
  470.         num2++;
  471.            if(num2==20)
  472.         {
  473.                 num2=0;
  474.                 num++;
  475.                 if(num==60)
  476.              {
  477.                    num=0;
  478.                    fen++;
  479.                    if(fen==60)
  480.                    {
  481.                      fen=0;
  482.                          shi++;
  483.                          if(shi==24)
  484.                          shi=0;
  485.                    }
  486.         }
  487.         }
  488. }

  489. void T1_time()interrupt 3//中斷1計時秒表 和 閃爍程序
  490. {
  491.         TH1=(65536-10000)/256;
  492.         TL1=(65536-10000)%256;
  493.         if(n==7) //秒表程序
  494.         {         
  495.            z++;
  496.            if(z==100)
  497.            {
  498.               z=0;
  499.                   y++;
  500.                   if(y==60)
  501.                   {                                                                                                                                       
  502.                     y=0;
  503.                         x++;
  504.                         if(x==60)
  505.                         x=0;
  506.                   }
  507.        
  508.             }
  509.         }

  510.           else //閃爍程序
  511.           {
  512.                   b++;
  513.                   if(b==50)
  514.                   b=0;
  515.           }
  516.          

  517. }
復制代碼





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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区电影 | 天堂在线网 | 国产日韩欧美精品 | 一区二区三区视频 | 成人片免费看 | 国产偷录叫床高潮录音 | 中文字幕一区二区三区在线观看 | 欧美888| 97精品一区二区 | 免费高潮视频95在线观看网站 | 黄色一级大片在线免费看产 | 亚州无限乱码 | 6080yy精品一区二区三区 | 成人在线免费观看 | 91精品中文字幕一区二区三区 | 爱爱视频日本 | 欧美一区二区三区小说 | 狠狠操天天操 | 日韩精品1区2区3区 爱爱综合网 | 草久网| av夜夜操 | 国产精品成人一区 | 日韩一区二区三区在线观看 | 欧美在线a| 国产色黄 | 国产精品国产精品国产专区不卡 | 亚洲精品在线播放 | 观看av| 久久精品国产一区 | 91精品久久久久久久久久入口 | 久久9热 | av在线免费网 | 在线观看中文字幕亚洲 | 欧美激情欧美激情在线五月 | 亚洲一区二区视频 | 精品福利在线 | 超碰在线人人 | 亚洲精品福利视频 | 成人在线一区二区 | 情侣黄网站免费看 | 黄色三级免费网站 |