找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機100分鐘定時繼電器程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:102668 發(fā)表于 2016-1-16 05:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  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 gang=P2^2;//分鐘與秒的間隔符
  8. sbit P27=P2^3;//數(shù)碼管第4位
  9. sbit P28=P2^4;
  10. sbit qian=P1^4;
  11. sbit bai=P1^5;
  12. sbit JDQ=P3^7;//繼電器
  13. unsigned int js;
  14. unsigned int ds,x,y;//倒計時初始時間,加時,減時
  15. unsigned char jsflag;
  16. static unsigned int i;
  17. unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};
  18. void Delay(unsigned int ii) //1MS
  19. {
  20. unsigned int jj;
  21. for(;ii>0;ii--)
  22. for(jj=0;jj<125;jj++)
  23. {;}
  24. }
  25. void main()
  26. {
  27.     EA = 1;     //允許CPU中斷
  28. ET0 = 1;     //定時器0中斷打開
  29. ET1=1;     //定時器1中斷打開
  30. TMOD = 0x11;   //設定時器0 1為模式1,16位模式
  31. TH0=0xB8;
  32. TL0=0x00;    //設定時值為(20ms)
  33. TH1=0xdc;     //設定時值為(10ms)
  34. TL1=0x00;
  35. TR0 = 1;
  36. TR1=1;
  37. ds=9999;
  38. KeyV = 0;
  39. TempKeyV = 0;
  40. jsflag=0;
  41. while(1);
  42. }
  43. //定時器0中斷外理中鍵掃描和顯示
  44. void Key_Time0(void) interrupt 1 using 2
  45. {
  46.   TH0=0xB8;
  47. TL0=0x00;    //設定時值為20000us(20ms)
  48.   if (!Key_UP)
  49.     KeyV = 1;
  50.   if (!Key_DOWN)
  51.     KeyV = 2;
  52.    if (KeyV!= 0)      //有鍵按下
  53.     {
  54.       Delay(10);   //延時防抖  按下10ms再測
  55.       if (!Key_UP)
  56.         TempKeyV = 1;
  57.       if (!Key_DOWN)
  58.         TempKeyV = 2;
  59.    if (KeyV == TempKeyV)   //兩次值相等為確定接下了鍵
  60.     {
  61.         if (KeyV == 1)
  62.      {
  63.                      jsflag=0;
  64.             if(ds==0)
  65.          {
  66.          ds=6000;
  67.          }
  68.         js=js+1;
  69.        JDQ=0;   //繼電器吸合
  70.       
  71.                         if(js==50)
  72.                             {
  73.                           js=0;
  74.                           ds=ds-1;

  75.                              }
  76.            }
  77. if(KeyV==2)
  78. {
  79.    jsflag=1;
  80. }
  81. }
  82. }
  83.    if(jsflag==1)
  84.    {
  85.    JDQ=1;
  86.    }
  87.    if(ds==0)
  88.    {
  89.    JDQ=1;
  90.    jsflag=1;
  91.    KeyV=0;
  92.    }

  93. }
  94. void disp_Time1(void) interrupt 3 using 3
  95. {
  96. TH1=0xdc;
  97. TL1=0x00;
  98. x=ds/1000;
  99.     P0=LEDDis[x];
  100. P25=0;
  101.   Delay(2);
  102.    P25=1;
  103.    y=(ds%1000)/100;
  104.       P0=LEDDis[y];
  105.       P26=0;
  106.       Delay(2);
  107.       P26=1;
  108. P0=0xbf;
  109. gang=0;
  110. Delay(2);
  111. gang=1;
  112.   P0=LEDDis[((ds%1000)%100)/10];
  113.   if(((ds%1000)%100)/10>=6)   //滿60,百位減一
  114.   {
  115.   ds=ds-10;
  116.   P0=LEDDis[6];
  117.   }
  118.   P27=0;
  119.   Delay(2);
  120.   P27=1;
  121.   P0=LEDDis[((ds%1000)%100)%10];
  122.   P28=0;
  123.   Delay(2);
  124.   P28=1;
  125. }
復制代碼


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

相關帖子

回復

使用道具 舉報

沙發(fā)
ID:95809 發(fā)表于 2016-1-19 20:12 | 只看該作者
好像是我寫的那個,連IO口都沒改。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表