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

標題: 51單片機可調數碼管顯示電子鐘沒用DS1302 [打印本頁]

作者: jdhadbv    時間: 2016-5-7 15:26
標題: 51單片機可調數碼管顯示電子鐘沒用DS1302
//P0口段選,P2口位選,P1.2LED指示燈,P1.3蜂鳴器
按鍵不足
誤差:24小時差20s

  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar  unsigned char
  4. #define uint unsigned int
  5. sbit KEY1=P3^0;
  6. sbit KEY2=P3^1;
  7. sbit KEY3=P3^2;
  8. sbit KEY4=P3^3;
  9. sbit LED=P1^2;
  10. sbit BEEP=P1^3;
  11. uchar code  tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  12. uchar   StrTab[8];
  13. uchar  minute=30,hour=14,second;
  14. //yanshi
  15.   void delay(unsigned int cnt)
  16.   {         while(--cnt);
  17.   }

  18.   //chaizi
  19.   void Displaypro(void)
  20.   {
  21.   StrTab[0]=tab[hour/10];
  22.   StrTab[1]=tab[hour%10];
  23.   StrTab[2]=0XBF;
  24.   StrTab[3]=tab[minute/10];
  25.   StrTab[4]=tab[minute%10];
  26.   StrTab[6]=0XBF;
  27.   StrTab[5]=tab[second/10];
  28.   StrTab[7]=tab[second%10];
  29.   }
  30.   //zhuhanshu
  31.   void main()
  32.   {

  33.   TMOD|=0x01;
  34.   TH0=0xd8;
  35.   TL0=0xf0;
  36.   ET0=1;
  37.   TR0=1;
  38.   TMOD|=0x10;
  39.   TH1=0xf8;
  40.   TL1=0xf0;
  41.   ET1=1;
  42.   TR1=1;
  43.   EA=1;
  44.   
  45.   Displaypro();
  46. //按鍵部分可以這樣寫
  47. /*while(1)
  48. {          
  49.         static uchar P3=0xff;                  
  50.         if(P3&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))
  51.         {
  52.                 delay(1000);
  53.                 //xiaodou
  54.             P3=0x00;
  55.                 if(KEY1==0)
  56.                 {delay(1000);hour++;
  57.                 if(hour==24)hour=0;Displaypro(); }
  58.                  else if(KEY4==0){ delay(1000);second--;
  59.                 if(second==0)second=59;Displaypro(); }
  60.                   else if(KEY2==0){delay(1000);minute++ ;
  61.                 if(minute==59)minute=0;Displaypro(); }
  62.             else if(KEY3==0){ delay(1000);minute--;
  63.                 if(minute==0)minute=59;Displaypro(); }
  64.         }
  65.         else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1)P3=0xff;              
  66.         }*/

  67.   while(1)
  68. {

  69. if(minute==14)
  70.        {if(hour==2)
  71.                {P1=0x00; }         
  72.                    }
  73.   if(!KEY1)
  74.    {
  75.             delay(10000);
  76.          if(!KEY1)
  77.          { delay(20000);delay(20000);
  78.           hour++;
  79.           if(hour==24)hour=0;
  80.           delay(20000);delay(20000);
  81.           Displaypro();
  82.          
  83.          }
  84.    }
  85.    if(!KEY2)
  86.     {
  87.             delay(20000);
  88.          if(!KEY2)
  89.          { delay(20000);delay(20000);
  90.           hour--;
  91.           if(hour==0)hour=23;
  92.           delay(20000);delay(20000);
  93.           Displaypro();
  94.          
  95.          }
  96.          }
  97.         if(!KEY3)
  98.     {
  99.             delay(20000);
  100.          if(!KEY3)
  101.          {delay(20000);delay(20000);
  102.           minute++;
  103.           if(minute==59)minute=0;
  104.           delay(20000);delay(20000);
  105.           Displaypro();
  106.          
  107.          }
  108.          }
  109.         if(!KEY4)
  110.     {
  111.             delay(20000);
  112.          if(!KEY4)
  113.          {delay(20000);delay(20000);
  114.           minute--;
  115.           if(minute==0)minute=59;
  116.           delay(20000);delay(20000);
  117.           Displaypro();
  118.          
  119.          }
  120.          }
  121.         }
  122.        
  123.         }
  124.        
  125. //T1
  126. void time1_isr(void) interrupt 3 using 0
  127. {
  128. static unsigned char num;
  129. TH1=0xF8;
  130. TL1=0xf0;
  131. P2=0XFF;
  132. {switch (num)
  133. {
  134.   case 0:P2=0XFE;P0=~StrTab[num];break;
  135.   case 1:P2=0XFD;P0=~StrTab[num];break;
  136.   case 2:P2=0XFB;P0=~StrTab[num];break;
  137.   case 3:P2=0XF7;P0=~StrTab[num];break;
  138.   case 4:P2=0XEF;P0=~StrTab[num];break;
  139.   case 5:P2=0XBf;P0=~StrTab[num];break;
  140.   case 6:P2=0XDf;P0=~StrTab[num];break;
  141.   case 7:P2=0X7F;P0=~StrTab[num];break;
  142.   default:break;
  143. }

  144.   }
  145.   num++;
  146. if(num==8)
  147. num=0;
  148. }       
  149.        
  150.         //T0
  151.         void tim(void) interrupt 1 using 1
  152.         {
  153.          static unsigned char count;
  154.          TH0=0xd8;
  155.          TL0=0xf0;
  156.      count++;
  157.          switch (count)
  158.          {
  159.         case 0:
  160.         case 20:
  161.         case 40:
  162.         case 60:
  163.         case 80:Displaypro(); break;
  164.         case 50:LED=!LED; break;
  165.         default:break;            
  166.          }
  167.        
  168.         if (count==92)//將100改為92可以縮小至最小誤差
  169.         {
  170.          count=0;
  171.          second++;
  172.          if(second==60)
  173.          {
  174.           second=0;
  175.           minute++;
  176.          if(minute==60)
  177.         {
  178.          minute=0;
  179.          hour++;
  180.          if(hour==24)          
  181. {
  182.      hour=0;

  183.          }
  184.          }
  185.          }
  186.         }
  187.         }

復制代碼


可調數碼管顯示電子鐘沒用DS1302.docx

13.08 KB, 下載次數: 7, 下載積分: 黑幣 -5

沒用DS1302






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品福利av导航 | 久久99精品视频 | 亚洲第一成人av | 国产精品久久久久久久一区二区 | 成年人在线视频 | 亚洲天堂免费 | 激情五月综合 | 久久综合九色综合欧美狠狠 | 日韩中文字幕在线播放 | 国产精品视频一二三 | 亚洲一区视频在线 | 国产欧美一区二区久久性色99 | 91精品久久久久 | 在线观看成人小视频 | 97精品一区二区 | 亚洲精品视频网站在线观看 | 日韩免费一区二区 | 午夜免费网 | 天天躁人人躁人人躁狂躁 | 国产午夜精品久久 | 成人精品一区亚洲午夜久久久 | 99精品国产一区二区青青牛奶 | 久久精品久久精品 | 99精品国产一区二区三区 | 亚洲午夜精品 | 精品一二三| 日韩美香港a一级毛片免费 国产综合av | 精品免费国产一区二区三区 | 亚洲精选久久 | 欧美日韩福利 | 嫩草视频在线免费观看 | 欧美寡妇偷汉性猛交 | 国产精品视频入口 | 久久精品 | 国产最好的av国产大片 | 天天天操天天天干 | 精品熟人一区二区三区四区 | 国产成人综合在线 | 操久久 | 国产成人精品一区二区三区在线观看 | 国产成人精品免费视频大全最热 |