找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2484|回复: 2
打印 上一主题 下一主题
收起左侧

51单片机实现定时器,附上电路图,代码简单易懂,新手必备

[复制链接]
跳转到指定楼层
楼主
ID:149822 发表于 2016-11-23 21:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机实现定时器,附上电路图,代码简单易懂,新手必备
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:149822 发表于 2016-11-23 21:46 | 只看该作者
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar aa,bb,c,d,shi1,shi2,fen1,fen2,miao1,miao2;
  6. sbit set_1=P1^0;
  7. sbit esc=P1^1;
  8. sbit up=P1^2;
  9. sbit dwon=P1^3;
  10. sbit left=P1^4;
  11. sbit right=P1^5;
  12. sbit enter=P1^6;
  13. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
  14. bit cc;
  15. uchar flag=1;
  16. void init();
  17. void display(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2);
  18. void display1(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2);
  19. void delay_ms(uint z);
  20. void key_scan();
  21. void time();
  22. void key();
  23. void main()
  24. {
  25. init();
  26. while(1)
  27.              { key();
  28.                                  if(c>0)
  29.                                  {key_scan();}
  30.                                         display1(shi1,shi2,fen1,fen2,miao1,miao2);
  31.                 }
  32. }

  33. void delay_ms(uint z)
  34. {       uint x,y;
  35.             for(x=z;x>0;x--)
  36.         for(y=110;y>0;y--);
  37. }

  38. void init()
  39. {
  40.         aa=0;
  41.         bb=0;
  42.         c=0;
  43.         d=0;
  44.         shi1=0;
  45.         shi2=0;
  46.         fen1=0;
  47.         fen2=0;
  48.         miao1=0;
  49.         miao2=0;
  50.         TMOD=0x01;
  51.         TH0=(65536-50000)/256;
  52.         TL0=(65536-50000)%256;
  53.         EA=1;
  54.         ET0=1;
  55.         EX0=1;
  56.         ET0=1;
  57.         IT0=1;
  58.         TR0=1;
  59.         cc=0;
  60.         flag=1;
  61.         d=0;
  62.         display1(shi1,shi2,fen1,fen2,miao1,miao2);
  63. }
  64. void key()
  65. {
  66.         //set
  67.         if(set_1==0)  {delay_ms(2);}   
  68.         if(set_1==0) {  
  69.                                c++;flag=0;d=1;
  70.                         shi1=0;shi2=0;fen1=0;fen2=0;miao1=0;miao2=0;
  71.                                                                         display1(shi1,shi2,fen1,fen2,miao1,miao2);
  72.         
  73.                                                                 }
  74.          while(!set_1){display1(shi1,shi2,fen1,fen2,miao1,miao2);}  
  75.                  //ESC
  76.         if(esc==0)     {delay_ms(2);}   
  77.         if(esc==0)    {
  78.                                                                         c=0;flag=2;
  79.                               display1(shi1,shi2,fen1,fen2,miao1,miao2);
  80.                                                                 }
  81. while(!esc){display1(shi1,shi2,fen1,fen2,miao1,miao2);}
  82.   //enter
  83.          if(enter==0)  {delay_ms(2);}
  84.          if(enter==0)   {       
  85.                                                                                 flag=1;
  86.                                                                                 display(shi1,shi2,fen1,fen2,miao1,miao2);
  87.                                                                         }       
  88. while(!enter){display(shi1,shi2,fen1,fen2,miao1,miao2);}                

  89. }
  90. //按键扫描函数
  91. void key_scan()
  92. {

  93.                
  94.         if(left==0) {delay_ms(2);}        //左移
  95.   if(left==0) {if(d<6)d=d+1;
  96.               else {d=1;}
  97.                                                   }
  98. while(!left){display1(shi1,shi2,fen1,fen2,miao1,miao2);}
  99.          
  100.         if(right==0) {delay_ms(2);}       //右移
  101.   if(right==0) {if(d>1)d=d-1;
  102.               else {d=6;}
  103.                                                    }
  104. while(!right){display1(shi1,shi2,fen1,fen2,miao1,miao2);}
  105.          
  106.          //add
  107.          if(d==6){if(up==0){delay_ms(2);}     
  108.          if(up==0){if(shi1<2){shi1=shi1+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}               
  109.    else{shi1=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);}         }      
  110.       while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);}  }
  111.          
  112.          if(d==5){if(up==0){delay_ms(2);}            
  113.          if(up==0){if(shi1<2){if(shi2<9){shi2=shi2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
  114.          else{shi2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);}}         
  115.          if(shi1==2){if(shi2<4){shi2=shi2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}           
  116.    else{shi2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);}}           }            
  117.      while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }   
  118.          
  119.          if(d==4){if(up==0){delay_ms(2);}            
  120.          if(up==0){if(fen1<5){fen1=fen1+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}            
  121.    else {fen1=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);}        }        
  122.       while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
  123.          
  124.          if(d==3){if(up==0){delay_ms(2);}            
  125.          if(up==0){               
  126.    if(fen2<9){fen2=fen2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}     
  127.          else {fen2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);}                            }      
  128.    while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }     
  129.          
  130.          if(d==2){ if(up==0){delay_ms(2);}      
  131.          if(up==0){if(miao1<5){miao1=miao1+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}      
  132.    else {miao1=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);}                     }        
  133.         while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }            
  134.          
  135.          if(d==1){ if(up==0){delay_ms(2);}      
  136.          if(up==0){               
  137.    {if(miao2<9){miao2=miao2+1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}         
  138.    else {miao2=0;display1(shi1,shi2,fen1,fen2,miao1,miao2);}                        }     
  139.        } while(!up){display1(shi1,shi2,fen1,fen2,miao1,miao2);}  }
  140.          
  141.          //dec
  142.          if(d==6){if(dwon==0){delay_ms(2);}   
  143.          if(dwon==0){if(shi1>0){shi1=shi1-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}               
  144.    else{shi1=2;display1(shi1,shi2,fen1,fen2,miao1,miao2);}         }      
  145.        while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);} }
  146.          
  147.          if(d==5){if(dwon==0){delay_ms(2);}            
  148.          if(dwon==0){if(shi1<2){if(shi2>0){shi2=shi2-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}
  149.          else{shi2=9;display1(shi1,shi2,fen1,fen2,miao1,miao2);}}         
  150.          if(shi1==2){if(shi2>0){shi2=shi2-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}           
  151.    else{shi2=3;display1(shi1,shi2,fen1,fen2,miao1,miao2);}}           }            
  152.        while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);}  }   
  153.          
  154.          if(d==4){if(dwon==0){delay_ms(2);}            
  155.          if(dwon==0){if(fen1>0){fen1=fen1-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}            
  156.    else {fen1=5;display1(shi1,shi2,fen1,fen2,miao1,miao2);}        }        
  157.       while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);}  }
  158.          
  159.          if(d==3){if(dwon==0){delay_ms(2);}            
  160.          if(dwon==0){               
  161.    if(fen2>0){fen2=fen2-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}     
  162.          else {fen2=9;display1(shi1,shi2,fen1,fen2,miao1,miao2);}                            }      
  163.      while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);}  }     
  164.          
  165.          if(d==2){ if(dwon==0){delay_ms(2);}      
  166.          if(dwon==0){if(miao1>0){miao1=miao1-1;display1(shi1,shi2,fen1,fen2,miao1,miao2);}      
  167.    else {miao1=5;display1(shi1,shi2,fen1,fen2,miao1,miao2);}                     }        
  168.          while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);}  }            
  169.          
  170.          if(d==1){ if(dwon==0){delay_ms(2);}      
  171.          if(dwon==0){               
  172.    {if(miao2>0){miao2=miao2-1;display(shi1,shi2,fen1,fen2,miao1,miao2);}         
  173.    else {miao2=9;display1(shi1,shi2,fen1,fen2,miao1,miao2);}                        }     
  174.          }   while(!dwon){display1(shi1,shi2,fen1,fen2,miao1,miao2);}  }
  175.          
  176.                                                                
  177. }

  178. void display(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2)
  179. {
  180.     P2=0x01;
  181.                 P0=table[shi1];
  182.                 delay_ms(1);
  183.     P2=0x02;
  184.                 P0=table[shi2];
  185.                 delay_ms(1);
  186.     P2=0x04;
  187.                 P0=table[fen1];
  188.                 delay_ms(1);
  189.           P2=0x08;
  190.                 P0=table[fen2];
  191.                 delay_ms(1);
  192.     P2=0x10;
  193.                 P0=table[miao1];
  194.                 delay_ms(1);
  195.           P2=0x20;
  196.                 P0=table[miao2];
  197.                 delay_ms(1);
  198. }

  199. void display1(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2)
  200. {
  201.         switch(d)
  202.         { case 0:{display(shi1,shi2,fen1,fen2,miao1,miao2);}break;
  203.                 case 6:if(cc==1)
  204.                         {P2=0x00;
  205.                 P0=table[shi1];
  206.                 delay_ms(1);
  207.     P2=0x02;
  208.                 P0=table[shi2];
  209.                 delay_ms(1);
  210.     P2=0x04;
  211.                 P0=table[fen1];
  212.                 delay_ms(1);
  213.           P2=0x08;
  214.                 P0=table[fen2];
  215.                 delay_ms(1);
  216.     P2=0x10;
  217.                 P0=table[miao1];
  218.                 delay_ms(1);
  219.           P2=0x20;
  220.                 P0=table[miao2];
  221.                 delay_ms(1);}
  222.                 else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
  223.                 break;
  224.                 case 5:if(cc==1)
  225.                         {P2=0x01;
  226.                 P0=table[shi1];
  227.                 delay_ms(1);
  228.     P2=0x00;
  229.                 P0=table[shi2];
  230.                 delay_ms(1);
  231.     P2=0x04;
  232.                 P0=table[fen1];
  233.                 delay_ms(1);
  234.           P2=0x08;
  235.                 P0=table[fen2];
  236.                 delay_ms(1);
  237.     P2=0x10;
  238.                 P0=table[miao1];
  239.                 delay_ms(1);
  240.           P2=0x20;
  241.                 P0=table[miao2];
  242.                 delay_ms(1);}
  243.                 else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
  244.                 break;
  245.                         case 4:if(cc==1)
  246.                         {P2=0x01;
  247.                 P0=table[shi1];
  248.                 delay_ms(1);
  249.     P2=0x02;
  250.                 P0=table[shi2];
  251.                 delay_ms(1);
  252.     P2=0x00;
  253.                 P0=table[fen1];
  254.                 delay_ms(1);
  255.           P2=0x08;
  256.                 P0=table[fen2];
  257.                 delay_ms(1);
  258.     P2=0x10;
  259.                 P0=table[miao1];
  260.                 delay_ms(1);
  261.           P2=0x20;
  262.                 P0=table[miao2];
  263.                 delay_ms(1);}
  264.                 else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
  265.                 break;
  266.                         case 3:if(cc==1)
  267.                         {P2=0x01;
  268.                 P0=table[shi1];
  269.                 delay_ms(1);
  270.     P2=0x02;
  271.                 P0=table[shi2];
  272.                 delay_ms(1);
  273.     P2=0x04;
  274.                 P0=table[fen1];
  275.                 delay_ms(1);
  276.           P2=0x00;
  277.                 P0=table[fen2];
  278.                 delay_ms(1);
  279.     P2=0x10;
  280.                 P0=table[miao1];
  281.                 delay_ms(1);
  282.           P2=0x20;
  283.                 P0=table[miao2];
  284.                 delay_ms(1);}
  285.                 else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
  286.                 break;
  287.                         case 2:if(cc==1)
  288.                         {P2=0x01;
  289.                 P0=table[shi1];
  290.                 delay_ms(1);
  291.     P2=0x02;
  292.                 P0=table[shi2];
  293.                 delay_ms(1);
  294.     P2=0x04;
  295.                 P0=table[fen1];
  296.                 delay_ms(1);
  297.           P2=0x08;
  298.                 P0=table[fen2];
  299.                 delay_ms(1);
  300.     P2=0x00;
  301.                 P0=table[miao1];
  302.                 delay_ms(1);
  303.           P2=0x20;
  304.                 P0=table[miao2];
  305.                 delay_ms(1);}
  306.                 else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
  307.                 break;
  308.                         case 1:if(cc==1)
  309.                         {P2=0x01;
  310.                 P0=table[shi1];
  311.                 delay_ms(1);
  312.     P2=0x02;
  313.                 P0=table[shi2];
  314.                 delay_ms(1);
  315.     P2=0x04;
  316.                 P0=table[fen1];
  317.                 delay_ms(1);
  318.           P2=0x08;
  319.                 P0=table[fen2];
  320.                 delay_ms(1);
  321.     P2=0x10;
  322.                 P0=table[miao1];
  323.                 delay_ms(1);
  324.           P2=0x00;
  325.                 P0=table[miao2];
  326.                 delay_ms(1);}
  327.                 else {display(shi1,shi2,fen1,fen2,miao1,miao2);}
  328.                 break;
  329.                 default:break;
  330.         }
  331.    
  332. }

  333. void T0_time() interrupt 1
  334. {
  335. TH0=(65536-50000)/256;
  336. TL0=(65536-50000)%256;
  337.   if(flag==1)
  338.         {
  339. aa++;
  340.                
  341.    if(aa==20)
  342.    {
  343.        aa=0;

  344.                          miao2++;
  345.                         if(miao2>9)
  346.                         {
  347.                                 miao2=0;
  348.                                 miao1++;
  349.                                 if(miao1>5)
  350.                                 {
  351.                                         miao1=0;
  352.                                         fen2++;
  353.                                         if(fen2>9)
  354.                                         {
  355.                                                 fen2=0;
  356.                                                 fen1++;
  357.                                                 if(fen1>5)
  358.                                                 {
  359.                                                         fen1=0;
  360.                                                         shi2++;
  361.                                                         if(shi1==2)
  362.                                                         {
  363.                                                                 if(shi2==4){shi2=0;shi1=0;}

  364.                                                         }else
  365.                                                         {
  366.                                                         if(shi2>9){shi2=0;shi1++;}}
  367.                                                 }
  368.                                         }
  369.                                 }
  370.                         }
  371.    }
  372. }else if(flag==0) {aa++;if(aa==10){aa=0;cc=~cc;}}
  373. else {cc=0;}
  374. }
复制代码
回复

使用道具 举报

板凳
ID:147474 发表于 2016-12-14 21:01 | 只看该作者
新手来学习一下,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表