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

QQ登錄

只需一步,快速開始

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

單片機(jī)做時(shí)間可調(diào)定時(shí)器程序(調(diào)節(jié)精度5分鐘)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:102668 發(fā)表于 2016-1-16 05:41 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
調(diào)節(jié)精度:5分鐘   調(diào)節(jié)范圍:0~650分鐘 數(shù)碼管顯示格式:000(分鐘)-00(秒)
按下P1^0口開始倒計(jì)時(shí)   P1^1口停止   P1^2加時(shí)間    P1^3減時(shí)間
  1. #include<reg51.h>
  2. #define KeyPort P1
  3. sbit Key_UP=P1^0;
  4. sbit Key_DOWN=P1^1;
  5. unsigned char KeyV,TempKeyV,num;         
  6. sbit P25=P2^0;//數(shù)碼管第1位
  7. sbit P26=P2^1;//數(shù)碼管第2位
  8. sbit P29=P2^2;
  9. sbit gang=P2^3;
  10. sbit P27=P2^4;//數(shù)碼管第4位
  11. sbit P28=P2^5;
  12. sbit P12=P1^2;//時(shí)間加
  13. sbit P13=P1^3; //時(shí)間減
  14. sbit JDQ=P3^7;//繼電器
  15. unsigned int js;
  16. unsigned int ds=6000,x,y;//倒計(jì)時(shí)初始時(shí)間,加時(shí),減時(shí)
  17. unsigned char jsflag;
  18. static unsigned int i;
  19. unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};
  20.   unsigned char KeyScan(void);//鍵盤掃描
  21.   void tiaojie(void);
  22. void Delay(unsigned int ii) //1MS
  23. {
  24. unsigned int jj;
  25. for(;ii>0;ii--)
  26. for(jj=0;jj<125;jj++);
  27. }
  28. void main()
  29. {
  30.     EA = 1;     //允許CPU中斷
  31. ET0 = 1;     //定時(shí)器0中斷打開
  32. ET1=1;     //定時(shí)器1中斷打開
  33. TMOD = 0x11;   //設(shè)定時(shí)器0 1為模式1,16位模式
  34. TH0=0xB8;
  35. TL0=0x00;    //設(shè)定時(shí)值為(20ms)
  36. TH1=0xdc;     //設(shè)定時(shí)值為(10ms)
  37. TL1=0x00;
  38. TR0 = 1;
  39. TR1=1;
  40.    
  41. KeyV = 0;
  42. TempKeyV = 0;
  43. jsflag=0;
  44. while(1);
  45. }
  46. //定時(shí)器0中斷外理中鍵掃描和顯示
  47. void Key_Time0(void) interrupt 1 using 2
  48. {
  49.   TH0=0xB8;
  50. TL0=0x00;    //設(shè)定時(shí)值為20000us(20ms)
  51.   if (!Key_UP)
  52.     KeyV = 1;
  53.   if (!Key_DOWN)
  54.     KeyV = 2;

  55.    if(P12==0)
  56.    {
  57.     Delay(20);
  58.     if(P12==0)
  59.      ds=ds+500;//定時(shí)加5分鐘  (調(diào)節(jié)精度)
  60.   while(!P12);
  61.    }
  62.    if(P13==0)
  63.    {
  64.     Delay(20);
  65.     if(P13==0)
  66.     ds=ds-500; //定時(shí)減5分鐘
  67.     while(!P13);
  68.    }
  69.    if (KeyV!= 0)      //有鍵按下
  70.     {
  71.       Delay(10);   //延時(shí)防抖  按下10ms再測(cè)
  72.       if (!Key_UP)
  73.         TempKeyV = 1;
  74.       if (!Key_DOWN)
  75.         TempKeyV = 2;
  76.    if (KeyV == TempKeyV)   //兩次值相等為確定接下了鍵
  77.     {
  78.         if (KeyV == 1)
  79.      {
  80.                      jsflag=0;
  81.             if(ds==0)
  82.          {
  83.          ds=100;
  84.          }
  85.         js=js+1;
  86.        JDQ=1;   //繼電器吸合
  87.       
  88.                         if(js==50)
  89.                             {
  90.                           js=0;
  91.                           ds=ds-1;

  92.                              }
  93.            }
  94. if(KeyV==2)
  95. {
  96.    jsflag=1;
  97. }
  98. }
  99. }
  100.    if(jsflag==1)
  101.    {
  102.    JDQ=0;
  103.    }
  104.    if(ds==0)
  105.    {
  106.    JDQ=0;
  107.    jsflag=1;
  108.    KeyV=0;
  109.    }

  110. }
  111. void disp_Time1(void) interrupt 3 using 3
  112. {
  113. TH1=0xdc;
  114. TL1=0x00;
  115. x=ds/10000;
  116.     P0=LEDDis[x]; //分鐘百位
  117.      P25=0;
  118.      Delay(2);
  119.   P25=1;
  120.    y=(ds%10000)/1000;//分鐘十位
  121.       P0=LEDDis[y];
  122.       P26=0;
  123.       Delay(2);
  124.       P26=1;
  125.      P0=LEDDis[((ds%10000)%1000)/100];//分鐘各位
  126.      P29=0;
  127.      Delay(2);
  128.      P29=1;   
  129. P0=0xbf; //分鐘與秒的間隔符
  130. gang=0;
  131. Delay(2);
  132. gang=1;
  133.   P0=LEDDis[(((ds%10000)%1000)%100)/10]; //秒十位
  134.   if(((ds%1000)%100)/10>=6)   //滿60,百位減一
  135.   {
  136.   ds=ds-10;
  137.   P0=LEDDis[6];
  138.   }
  139.   P27=0;
  140.   Delay(2);
  141.   P27=1;
  142.   P0=LEDDis[(((ds%10000)%1000)%100)%10]; //秒個(gè)位
  143.   P28=0;
  144.   Delay(2);
  145.   P28=1;
  146. }
復(fù)制代碼




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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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