標(biāo)題: 單片機(jī)9999S定時繼電器程序 [打印本頁]

作者: 51hei社區(qū)    時間: 2016-1-16 05:51
標(biāo)題: 單片機(jī)9999S定時繼電器程序
  1. #include<reg51.h>
  2. sbit Key_UP=P1^0;
  3. sbit Key_DOWN=P1^1;
  4. unsigned char KeyV,TempKeyV;                                                           
  5. sbit P25=P2^0;//數(shù)碼管第1位
  6. sbit P26=P2^1;//數(shù)碼管第2位
  7. sbit P27=P2^2;//數(shù)碼管第3位
  8. sbit P28=P2^3;
  9. sbit qian=P1^4;
  10. sbit bai=P1^5;
  11. sbit JDQ=P3^7;//繼電器

  12. unsigned int js;
  13. unsigned int ds,x,y;//倒計(jì)時初始時間,加時,減時
  14. unsigned char jsflag;
  15. static unsigned int i;
  16. unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};

  17. void Delay(unsigned int ii)        //1MS
  18. {
  19. unsigned int jj;
  20. for(;ii>0;ii--)
  21. for(jj=0;jj<125;jj++)
  22. {;}

  23. }
  24. void main()
  25. {
  26.            EA = 1;                                        //允許CPU中斷
  27.         ET0 = 1;                                 //定時器0中斷打開
  28.         ET1=1;                                        //定時器1中斷打開
  29.         TMOD = 0x11;                        //設(shè)定時器0 1為模式1,16位模式
  30.         TH0=0xB8;
  31.         TL0=0x00;                                //設(shè)定時值為(20ms)
  32.         TH1=0xdc;                                        //設(shè)定時值為(10ms)
  33.         TL1=0x00;
  34.         TR0 = 1;
  35.         TR1=1;
  36.         ds=9999;
  37.         KeyV = 0;
  38.         TempKeyV = 0;
  39.         jsflag=0;
  40. while(1);
  41. }

  42. //定時器0中斷外理中鍵掃描和顯示
  43. void Key_Time0(void) interrupt 1 using 2
  44. {
  45.   TH0=0xB8;
  46.         TL0=0x00;                                //設(shè)定時值為20000us(20ms)
  47.   if (!Key_UP)
  48.     KeyV = 1;
  49.   if (!Key_DOWN)
  50.     KeyV = 2;
  51.    if (KeyV!= 0)      //有鍵按下
  52.     {
  53.       Delay(10);   //延時防抖  按下10ms再測
  54.       if (!Key_UP)
  55.         TempKeyV = 1;
  56.       if (!Key_DOWN)
  57.         TempKeyV = 2;
  58.                 if (KeyV == TempKeyV)   //兩次值相等為確定接下了鍵
  59.           {
  60.                     if (KeyV == 1)
  61.                   {
  62.                                   jsflag=0;
  63.                                                     if(ds==0)
  64.                                                   {
  65.                                                   ds=600;
  66.                                                   }
  67.                                                         js=js+1;
  68.                                                         JDQ=0;   //繼電器吸合
  69.                                                
  70.                               if(js==50)
  71.                                    {
  72.                                 js=0;
  73.                                 ds=ds-1;
  74.          
  75.                              }
  76.            }
  77. if(KeyV==2)
  78. {
  79.          jsflag=1;
  80.         }
  81. }
  82. }
  83.    if(jsflag==1){
  84.    JDQ=1;
  85.    }
  86.    if(ds==0){
  87.    JDQ=1;
  88.    jsflag=1;
  89.    KeyV=0;
  90.    }

  91. }

  92. void disp_Time1(void) interrupt 3 using 3
  93. {
  94.         TH1=0xdc;
  95.         TL1=0x00;
  96.         x=ds/1000;
  97.           P0=LEDDis[x];
  98. P25=0;
  99.   Delay(2);
  100.          P25=1;
  101.          y=(ds%1000)/100;
  102.   P0=LEDDis[y];
  103. P26=0;
  104.   Delay(2);
  105. P26=1;
  106. P0=LEDDis[((ds%1000)%100)/10];
  107. P27=0;
  108. Delay(2);
  109.   P27=1;
  110.   P0=LEDDis[((ds%1000)%100)%10];
  111. P28=0;
  112. Delay(2);
  113.   P28=1;
  114. }
復(fù)制代碼







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1