标题: 通过51单片机实现的跑步节奏器程序 [打印本页]

作者: klhlkjlkj    时间: 2019-5-29 21:54
标题: 通过51单片机实现的跑步节奏器程序
见附件

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int


  5. sbit s2=P3^4;
  6. sbit s3=P3^5;
  7. sbit s4=P3^6;
  8. sbit s5=P3^7;
  9. sbit led1=P1^0;
  10. sbit led2=P1^1;
  11. sbit led3=P1^2;
  12. sbit led4=P1^3;
  13. sbit beep=P2^3;

  14. uchar tt,aa;
  15. uint fre,fla;
  16. int flag=0;
  17. int i=0,j=0;

  18. void main()
  19. {
  20.            //第一块  读取开关状态  赋值一个标志位  并亮灯显示       
  21.         while(!flag)
  22.         {
  23.                 if(s2==0&&s3!=0)                           //模式1
  24.                 {
  25.                 for(i=0;i<30000;++i);                   //延时
  26.                 if(s2==0)
  27.                         {
  28.                                 flag=1;
  29.                                 led1=0;
  30.                         }
  31.                 }
  32.                 else if(s3==0&&s2!=0)                            //模式2
  33.                 {
  34.                 for(i=0;i<30000;++i);                   //延时
  35.                 if(s3==0)
  36.                         {
  37.                                 flag=2;
  38.                                 led2=0;
  39.                         }
  40.                 }
  41.                 else if(s4==0)                            //模式3
  42.                 {
  43.                 for(i=0;i<30000;++i);                   //延时
  44.                 if(s4==0)
  45.                         {
  46.                                 flag=3;
  47.                                 led3=0;
  48.                         }
  49.                 }
  50.                 else if(s5==0)                            //模式4
  51.                 {
  52.                 for(i=0;i<30000;++i);                   //延时
  53.                 if(s5==0)
  54.                         {
  55.                                 flag=4;
  56.                                 led4=0;
  57.                         }

  58.                 }
  59.                 else if(s2==0&&s3==0)
  60.                 {
  61.                 for(i=0;i<30000;++i);
  62.                 if(s2==0&&s3==0)                   //延时
  63.                                 flag=5;
  64.                 }
  65.                 else
  66.                     flag=0;
  67.         }  


  68.         TMOD=0x11;                         //选择定时器  t0的工作方式为1
  69.         EA=1;
  70.         TH0=(65536-fre)/256;
  71.         TL0=(65536-fre)%256;
  72.         TH1=(65536-50000)/256;
  73.         TL1=(65536-50000)%256;
  74.         ET1=1;
  75.         TR1=1;
  76.         ET0=1;
  77.         TR0=1;
  78.         while(1)
  79.         {};


  80. }

  81.         void time1() interrupt 3
  82.         {
  83.                 TH1=(65536-50000)/256;
  84.                 TL1=(65536-50000)%256;
  85.                 fla++;
  86.                 if(fla==360)
  87.                 {
  88.                         fla=0;
  89.                         fre=50000;
  90.                 }
  91.         }

  92.          
  93.         void time0() interrupt 1
  94.         {
  95.                 if(flag==1)       
  96.                 {
  97.                         TH0=(65536-fre)/256;
  98.                         TL0=(65536-fre)%256;
  99.                         tt++;
  100.                         if(fla<80)    //以下几个if分别用来选取不同的频率
  101.                           if(tt==10)
  102.                           {
  103.                                   tt=0;
  104.                             fre=50000;
  105.                                    beep=~beep;
  106.                            }
  107.                         if(fla>80&&fla<160)
  108.                         {
  109.                                 tt=0;
  110.                                 fre=50000;
  111.                              beep=~beep;
  112.                         }
  113.                           if(fla>160)
  114.                         if(tt==3)
  115.                         {
  116.                                 tt=0;
  117.                                 fre=55000;
  118.                                 beep=~beep;
  119.                         }
  120.                         TR0=1;
  121.                 }
  122.                 if(flag==2)       
  123.                 {
  124.                         TH0=(65536-fre)/256;
  125.                         TL0=(65536-fre)%256;
  126.                         tt++;
  127.                         if(fla<80)    //以下几个if分别用来选取不同的频率
  128.                         {
  129.                                 tt=0;
  130.                                 fre=50000;
  131.                              beep=~beep;
  132.                         }
  133.                         if(fla>80&&fla<160)
  134.                            if(tt==10)
  135.                            {
  136.                     tt=0;
  137.                     fre=50000;
  138.                     beep=~beep;
  139.                            }
  140.                           if(fla>160)
  141.                         if(tt==3)
  142.                         {
  143.                                 tt=0;
  144.                                 fre=55000;
  145.                                 beep=~beep;
  146.                         }
  147.                         TR0=1;
  148.                 }
  149.                 if(flag==3)       
  150.                 {
  151.                         TH0=(65536-fre)/256;
  152.                         TL0=(65536-fre)%256;
  153.                         tt++;
  154.                         if(fla<80)    //以下几个if分别用来选取不同的频率
  155.                           if(tt==3)
  156.                         {
  157.                                 tt=0;
  158.                                 fre=55000;
  159.                                 beep=~beep;
  160.                         }
  161.                         if(fla>80&&fla<160)
  162.                         {
  163.                         tt=0;
  164.                         fre=50000;
  165.                      beep=~beep;
  166.                         }
  167.                           if(fla>160)
  168.                           if(tt==10)
  169.                            {
  170.                             tt=0;
  171.                             fre=50000;
  172.                             beep=~beep;
  173.                            }
  174.                         TR0=1;
  175.                 }
  176.                 if(flag==4)       
  177.                 {
  178.                         TH0=(65536-fre)/256;
  179.                         TL0=(65536-fre)%256;
  180.                         tt++;
  181.                         if(fla<80)    //以下几个if分别用来选取不同的频率
  182.                           if(tt==10)
  183.                            {
  184.                             tt=0;
  185.                             fre=50000;
  186.                             beep=~beep;
  187.                            }
  188.                         if(fla>80&&fla<160)
  189.                         {
  190.                                 tt=0;
  191.                                 fre=50000;
  192.                              beep=~beep;
  193.                         }
  194.                           if(fla>160)
  195.                         if(tt==3)
  196.                         {
  197.                                 tt=0;
  198.                                 fre=55000;
  199.                                 beep=~beep;
  200.                         }
  201.                         TR0=1;
  202.                 }
  203.                 if(flag==5)       
  204.                 {
  205.                         TH0=(65536-fre)/256;
  206.                         TL0=(65536-fre)%256;
  207.                         tt++;    //以下几个if分别用来选取不同的频率
  208.                          if(tt==20)
  209.                            {
  210.                             tt=0;
  211.                             fre=50000;
  212.                             beep=~beep;
  213.                            }
  214.                         TR0=1;
  215.                 }
  216.         }       
复制代码

所有资料51hei提供下载:
跑步频率器最终.zip (26.58 KB, 下载次数: 9)



作者: admin    时间: 2019-5-30 16:30
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1