找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3287|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)9999S定時(shí)繼電器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:102668 發(fā)表于 2016-1-16 05:51 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  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ì)時(shí)初始時(shí)間,加時(shí),減時(shí)
  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;                                 //定時(shí)器0中斷打開(kāi)
  28.         ET1=1;                                        //定時(shí)器1中斷打開(kāi)
  29.         TMOD = 0x11;                        //設(shè)定時(shí)器0 1為模式1,16位模式
  30.         TH0=0xB8;
  31.         TL0=0x00;                                //設(shè)定時(shí)值為(20ms)
  32.         TH1=0xdc;                                        //設(shè)定時(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. //定時(shí)器0中斷外理中鍵掃描和顯示
  43. void Key_Time0(void) interrupt 1 using 2
  44. {
  45.   TH0=0xB8;
  46.         TL0=0x00;                                //設(shè)定時(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);   //延時(shí)防抖  按下10ms再測(cè)
  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ù)制代碼


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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表