当前位置:   article > 正文

基于51单片机的蓝牙计步器设计_51单片机计步器

51单片机计步器

硬件方案

        蓝牙计步器选用单片机STC89C52作为系统控制芯片,通过蓝牙模块把单片机处理的数据传输到手机APP上,这样更能清楚看到检测的效果。整机工作电流只有1-1.5mA,实现超低功耗。采集的步数,路程,卡路里及运动状态用手机APP显示。
         整体电路主要由51单片机最小系统,ADXL345加速度传感器,lcd1602液晶电路,蓝牙模块电路,呼吸灯电路,电源电路组成;原理图如图:

PCB图如下:

 

设计功能

  1. 通过ADXL345检测步数,然后通过蓝牙模块将步数,路程,卡路里及运动状态实时传输到手机。
  2. 有动态呼吸灯指示走路情况。
  3. 液晶lcd1602实时显示步数,路程,卡路里及运动状态,运动状态分stand、lie、walk、run。
  4. 手机通过蓝牙可实时显示当前行走的状态、步数、里程及消耗的能量。

软件设计

主程序源码

  1. void main (void)
  2. {     
  3.     Init_Timer0();        //定时器0初始化
  4.     UART_Init();
  5.                  
  6.     LCD_Init();           //初始化液晶
  7.     DelayMs(20);          //延时有助于稳定
  8.     LCD_Clear(); 
  9.     Init_ADXL345();      //清屏
  10.     if(Single_Read_ADXL345(0X00)==0xe5)    //读出的数据为0XE5,表示正确
  11.     {
  12.         DelayMs(5);
  13.     }
  14.     else
  15.     {
  16.         DelayMs(3);
  17.     }
  18.     led=1;
  19.     while (1)         //主循环
  20.     {
  21.         if(ReadAdxl345==1)   //定时读取adxl345数据
  22.         {
  23.             BuShuCheck();            //检测步数
  24.     
  25.             sprintf(dis1,"B:%04d J:%4.1fm ",BuShu/2,JuLi);    //打印
  26.             LCD_Write_String(0,0,dis1);//显示
  27.             sprintf(dis2,"%7.2fcal ",KaLuLi);           //打印
  28.             LCD_Write_String(0,1,dis2);//显示            
  29.             if(statFlag == 0)//站着状态
  30.             {LCD_Write_String(11,1,"Stand");}
  31.             else if(statFlag == 1)躺着状态
  32.             {LCD_Write_String(11,1,"Lie  ");}
  33.             else if(statFlag == 2)//跑着状态
  34.             {LCD_Write_String(11,1,"Run  ");}
  35.             else if(statFlag == 3)//走着状态
  36.             {LCD_Write_String(11,1,"Walk ");}
  37.         }
  38.         if(ReportFlag==1)    //2s
  39.         {
  40.             ReportFlag=0;
  41.             sprintf(dis0,"*B:%04d",BuShu/2);    //上报步数
  42.             SendStr(dis0,7);
  43.             sprintf(dis0,"J:%04.1fm",JuLi);            //上报距离
  44.             SendStr(dis0,7);
  45.             sprintf(dis0,"K:%07.2fcal",KaLuLi);           //上报卡路里
  46.             SendStr(dis0,12);
  47.             if(statFlag == 0)//站着状态
  48.             {SendStr("Stand#",6);}
  49.             else if(statFlag == 1)躺着状态
  50.             {SendStr("Lie  #",6);}
  51.             else if(statFlag == 2)//跑着状态
  52.             {SendStr("Run  #",6);}
  53.             else if(statFlag == 3)//走着状态
  54.             {SendStr("Walk #",6);}
  55.             SendStr("\r\n",2);
  56.         }
  57.     }
  58. }

资料链接:https://pan.baidu.com/s/1BV7C6sNkZyiSEBtY_uRajA?pwd=iyt9 
提取码:iyt9

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/507250
推荐阅读
相关标签
  

闽ICP备14008679号