标题:
通过51单片机实现的跑步节奏器程序
[打印本页]
作者:
klhlkjlkj
时间:
2019-5-29 21:54
标题:
通过51单片机实现的跑步节奏器程序
见附件
单片机源程序如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit s2=P3^4;
sbit s3=P3^5;
sbit s4=P3^6;
sbit s5=P3^7;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit beep=P2^3;
uchar tt,aa;
uint fre,fla;
int flag=0;
int i=0,j=0;
void main()
{
//第一块 读取开关状态 赋值一个标志位 并亮灯显示
while(!flag)
{
if(s2==0&&s3!=0) //模式1
{
for(i=0;i<30000;++i); //延时
if(s2==0)
{
flag=1;
led1=0;
}
}
else if(s3==0&&s2!=0) //模式2
{
for(i=0;i<30000;++i); //延时
if(s3==0)
{
flag=2;
led2=0;
}
}
else if(s4==0) //模式3
{
for(i=0;i<30000;++i); //延时
if(s4==0)
{
flag=3;
led3=0;
}
}
else if(s5==0) //模式4
{
for(i=0;i<30000;++i); //延时
if(s5==0)
{
flag=4;
led4=0;
}
}
else if(s2==0&&s3==0)
{
for(i=0;i<30000;++i);
if(s2==0&&s3==0) //延时
flag=5;
}
else
flag=0;
}
TMOD=0x11; //选择定时器 t0的工作方式为1
EA=1;
TH0=(65536-fre)/256;
TL0=(65536-fre)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
ET1=1;
TR1=1;
ET0=1;
TR0=1;
while(1)
{};
}
void time1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
fla++;
if(fla==360)
{
fla=0;
fre=50000;
}
}
void time0() interrupt 1
{
if(flag==1)
{
TH0=(65536-fre)/256;
TL0=(65536-fre)%256;
tt++;
if(fla<80) //以下几个if分别用来选取不同的频率
if(tt==10)
{
tt=0;
fre=50000;
beep=~beep;
}
if(fla>80&&fla<160)
{
tt=0;
fre=50000;
beep=~beep;
}
if(fla>160)
if(tt==3)
{
tt=0;
fre=55000;
beep=~beep;
}
TR0=1;
}
if(flag==2)
{
TH0=(65536-fre)/256;
TL0=(65536-fre)%256;
tt++;
if(fla<80) //以下几个if分别用来选取不同的频率
{
tt=0;
fre=50000;
beep=~beep;
}
if(fla>80&&fla<160)
if(tt==10)
{
tt=0;
fre=50000;
beep=~beep;
}
if(fla>160)
if(tt==3)
{
tt=0;
fre=55000;
beep=~beep;
}
TR0=1;
}
if(flag==3)
{
TH0=(65536-fre)/256;
TL0=(65536-fre)%256;
tt++;
if(fla<80) //以下几个if分别用来选取不同的频率
if(tt==3)
{
tt=0;
fre=55000;
beep=~beep;
}
if(fla>80&&fla<160)
{
tt=0;
fre=50000;
beep=~beep;
}
if(fla>160)
if(tt==10)
{
tt=0;
fre=50000;
beep=~beep;
}
TR0=1;
}
if(flag==4)
{
TH0=(65536-fre)/256;
TL0=(65536-fre)%256;
tt++;
if(fla<80) //以下几个if分别用来选取不同的频率
if(tt==10)
{
tt=0;
fre=50000;
beep=~beep;
}
if(fla>80&&fla<160)
{
tt=0;
fre=50000;
beep=~beep;
}
if(fla>160)
if(tt==3)
{
tt=0;
fre=55000;
beep=~beep;
}
TR0=1;
}
if(flag==5)
{
TH0=(65536-fre)/256;
TL0=(65536-fre)%256;
tt++; //以下几个if分别用来选取不同的频率
if(tt==20)
{
tt=0;
fre=50000;
beep=~beep;
}
TR0=1;
}
}
复制代码
所有资料51hei提供下载:
跑步频率器最终.zip
(26.58 KB, 下载次数: 9)
2019-5-29 21:53 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2019-5-30 16:30
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1