基于stm32单片机智能手环计步器源程序Proteus仿真设计

生活中计步手环原理介绍:

运动手环的原理的原理是手的晃动加上位移。通过内置相对高精度的加速度传感器,可以通过积分加速度检测手环在空间中的位移,以此来判断是否是步数。现代的手环还具备环境感知的算法,会试图判断空间位移是否是走路或跑步产生的。所以如果你能看到步数的增加,有时候你会发现刚开始走的时候几步并没有加上,但是走一会儿就全部算上了。

根据空间位移的幅度。走路与跑步之间,峰值加速度的差别很大,空间位移的范围差距往往也很大,是不难判断的。

功能介绍:采用stm32单片机作为控制CPU,4位数码管来显示当前的步数,通过按键进行相关设置,比如开始、计步、清零等相关操作,完美的仿真出stm32单片机计步器的相关功能,程序采用keil编写并且有中文注释,新手容易看懂,仿真采用Proteus,全套仿真资料齐全:

程序部分展示:(有中文注释,新手容易看懂)

//把数值输出到具体的单片机引脚

void Drv_SEG(u8 num)

{

SEG_A=GETVALBIT(num,0);

SEG_B=GETVALBIT(num,1);

SEG_C=GETVALBIT(num,2);

SEG_D=GETVALBIT(num,3);

SEG_E=GETVALBIT(num,4);

SEG_F=GETVALBIT(num,5);

SEG_G=GETVALBIT(num,6);

SEG_DP=GETVALBIT(num,7);

}

//驱动数码管的函数

//mode =0表示共阳,mode=1表示共阴,可以通过这个修改

//m是要显示的数字,比如1.0就是m=10,放大10倍

void Show_num(u16 m)

{

u8 num=0,n=0;

static u8 temp_flag=0;

//数码管消隐

SEG1=0;SEG2=0;SEG3=0;SEG4=0;

switch(temp_flag)

{

case 0://左侧第1位数码管

n=m/1000;//取数据

num=CAseg_table[n];//查询数码管的断码表

Drv_SEG(num);

SEG1=1;//打开数码管显示

temp_flag++;

break;

case 1://左侧第2位数码管

n=m%1000/100;//取数据

num=CAseg_table[n];//查询数码管的断码表

Drv_SEG(num);

SEG2=1;//打开数码管显示

temp_flag++;

break;

case 2://左侧第3位数码管

n=m%100/10;//取数据

num=CAseg_table[n];//查询数码管的断码表

Drv_SEG(num);

SEG3=1;//打开数码管显示

temp_flag++;

break;

case 3://左侧第4位数码管

n=m%10;//取数据

num=CAseg_table[n];//查询数码管的断码表

Drv_SEG(num);

SEG4=1;//打开数码管显示

temp_flag=0;

break;

}

Delay_ms(10);//延时

}

//获取独立按键数据

u8 Get_key_num()

{

u8 temp_key=0;

static u8 flag=0;

if((flag==0)&&((K1==0)||(K2==0)||(K3==0)))

{

flag=1;//按键只获取一次按键数值

SysTick_Delay_Ms(10);//消除抖动

//如果有对应的按键按下就返回对应按键数值

if(K1==0)

{temp_key=1;}

else if(K2==0)

{temp_key=2;}

else if(K3==0)

{temp_key=3;}

}

else if((K1==1)&&(K2==1)&&(K3==1))

{

flag=0;//所有按键都弹起就清除标志

}

return temp_key;

}

资料分享下载链接:https://docs.qq.com/doc/DTXVldHVWenRPaldC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值