⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pedometer.c

📁 一个Gesssensor 的driver
💻 C
📖 第 1 页 / 共 5 页
字号:
				PDisplayXnumber(Xnumber);	
				PDisplayPauseRun(PEDOMETER_DISP_PAUSE);
				#endif 	
            }
			PDisplayflag.word	= 0;//不在显示菜单
			if(KeyVal==KEY_VAL_MENU_SHORT_UP)
	        	//PDisplayflag.bit.bMenuinital=1;
				PDisplayflag.bit.bPInStartSwitchintal=1;
	        else if(KeyVal==KEY_VAL_REC_SHORT_UP)
				PDisplayflag.bit.bPRecordDisplayinital=1;
            break;
        case KEY_VAL_MENU_PRESS_START://退出Pedometer
            	PostFun2Message(MSG_FUNCTION2_PEDOMETER,MSG_FUNCTION2_PEDOMETER_END,0,0,0/*,0,0,0*/);
            break;
      	default:
            break;        
    }
    if(PedometerKeyFlag != 0){
        read_creg(%imask, imask_tmp);
        bitclear_creg(%imask, 15);
        PedometerKeyFlag = 0;
        write_creg(%imask, imask_tmp);
    }
}

PEDOMETER_APP_CODE
void PedometerModule(void)
{
    unsigned int temp;
    
    if (DisplayFlag == DISP_PEDOMETER) {
        if (SystemInfo.bc.bBackLightOffStart) {
            bitclear_creg(%imask,5);
            SystemInfo.bc.bBackLightOffStart = 0;
            LcdBackLightOff();
            bitset_creg(%imask,5);
        }
        
        if (SystemInfo.bc.bDisplayRecovery) {
            SystemInfo.bc.bDisplayRecovery = 0;
            //恢复显示图片(重新解码)
            PostFun2Message(MSG_FUNCTION2_PEDOMETER,MSG_FUNCTION2_PEDOMETER_INIT,0,0,0/*,0,0,0*/);
        }
        
        //if (SystemInfo.bc.bHoldOn && PedometerState == PEDOMETER_RUN){//2007-1-10 
        //    PedometerState = PEDOMETER_PAUSE;                   
        //}
        if (SysBatteryFlag.bc.bBatteryDisplay) {
            SysBatteryFlag.bc.bBatteryDisplay = 0;
                PDisplayflag.bit.bBatt = 1;
        }
        
        if (SystemInfo.bc.bBackLightOnStart == 0) 
        {
            
            switch(Fun2MsgArray[1])
            {        
                case MSG_FUNCTION2_PEDOMETER_INIT:
                    //LCD_Init();
                    if (Sys1InitFlag.word == 0xffff)
                    {
                        SysCpuSetFreq(24);
                        SysTimer0Set(24,25000);//SysTimer0Set(24,10000);
                    }
                    if (Sys2InitFlag.bc.bPedometerModuleInitEnable) //须对Pedometer模块进行相关初始化
                    {
                        PedometerValueInit();
                    }
                    //PedometerDispInit();
					PDisplayflag.bit.bPInStartSwitchintal=1;//第一次进入选择模式(从新开始,继续上一次,清除记录,设置参数
                    PostFun2Message(MSG_FUNCTION2_PEDOMETER,MSG_FUNCTION2_PEDOMETER_STOP,0,0,0/*,0,0,0*/);                    
                    break;
                case MSG_FUNCTION2_PEDOMETER_STOP:
                case MSG_FUNCTION2_PEDOMETER_PAUSE:
                    PedometerSetting();//没有开始前,进行相关设置
                    //PedometerProcess();
                    if(PedometerState == PEDOMETER_RUN)
                    {
                        PostFun2Message(MSG_FUNCTION2_PEDOMETER,MSG_FUNCTION2_PEDOMETER_RUN,0,0,0/*,0,0,0*/);
                    }
                    break;
                case MSG_FUNCTION2_PEDOMETER_RUN:
                    //SystemInfo.bit.bBklightOffEn = 0;
                    PedometerProcess();
                    if(PedometerState != PEDOMETER_RUN)
                    {
                    	PostFun2Message(MSG_FUNCTION2_PEDOMETER,MSG_FUNCTION2_PEDOMETER_PAUSE,0,0,0/*,0,0,0*/);
                    }
                    break;
                case MSG_FUNCTION2_PEDOMETER_END:
                    PedometerExit();
                    break;
                default:
                    break;
            }
        }        
        if (SystemInfo.bc.bHoldDisplay) 
        {
            bitclear_creg(%imask,5);
            SystemInfo.bc.bHoldDisplay = 0;
            bitset_creg(%imask,5);
            PreDisplayFlag = DisplayFlag;
            DisplayFlag = DISP_HOLD;
            MusicSetFreq51();
            LCD_Init(0);
            DisplayPicture(0, 0, LCD_MAX_XSIZE, LCD_MAX_YSIZE, NFA_SYSTEM_LOCK + SystemInfo.bc.bHoldOn * PicPerPage);
            MusicSetFreq51Return();
        }        
        if (SystemInfo.bc.bBackLightOnStart) 
        {
            bitclear_creg(%imask,5);
            SystemInfo.bc.bBackLightOnStart = 0;
            LcdBackLightOn();
            KeyReset();
            bitset_creg(%imask,5);
        }
    }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////                 
PEDOMETER_APP_CODE
void PedometerFreqUp(void)
{
    MusicSetFreq51();
    bitclear_creg(%imask,5);
    SystemInfo.bc.bBackLightOffEn = 1;
    SystemInfo.bc.bSysIdleEn = 0;
    bitset_creg(%imask,5);
}

PEDOMETER_APP_CODE
void PedometerFreqDown(void)
{
    bitclear_creg(%imask,5);
    SystemInfo.bc.bBackLightOffEn = 0;
    LightOffCounter = 0;
    if ((Sys1InitFlag.word == 0xffff) || ((Sys1InitFlag.bc.bMusicModuleInitEnable == 0) && (MusicPlayInfo.PlayState != MUSIC_DECODE_PLAY))) {
        SystemInfo.bc.bSysIdleEn = 1;
        SysIdleCounter = 0;
    }
    bitset_creg(%imask,5);
    MusicSetFreq51Return();
}

#ifdef TEST_PEDOMETER_UI
PEDOMETER_APP_CODE
void PDisplayPauseRun(bool PedometerPauseRun)
{

	pcolor_tmp = LCD_GetColor();
	LCD_SetColor(PEDOMETER_BACK_CLOLOR);
	LCD_FillRect(PEDOMETER_DISP_STATE_X, PEDOMETER_DISP_STATE_Y, PEDOMETER_DISP_STATE_X+PEDOMETER_DISP_STATE_XSIZE, PEDOMETER_DISP_STATE_Y+PEDOMETER_DISP_STATE_YSIZE);
	LCD_SetColor(0xF800);
	if(PedometerPauseRun==PEDOMETER_DISP_RUN)
		LCD_NFDispStringAt(PEDOMETER_DISP_STATE_X, PEDOMETER_DISP_STATE_Y, "RUN");  
	else
		LCD_NFDispStringAt(PEDOMETER_DISP_STATE_X, PEDOMETER_DISP_STATE_Y, "PAUSE");  	
	LCD_SetColor(pcolor_tmp);
}
PEDOMETER_APP_CODE
void PDisplayXnumber(unsigned long Xnumber)
{	
    unsigned int tmpbuf[8];
	
	pcolor_tmp = LCD_GetColor();
	Conver16To10Display(Xnumber,tmpbuf);
    LCD_SetColor(PEDOMETER_BACK_CLOLOR);
    LCD_FillRect(PEDOMETER_NUMBER_XNUMBER_X, PEDOMETER_NUMBER_XNUMBER_Y, PEDOMETER_NUMBER_XNUMBER_X+50, PEDOMETER_NUMBER_XNUMBER_Y+16);
    LCD_SetColor(0xFFFF);
    LCD_NFDispStringAt(PEDOMETER_NUMBER_XNUMBER_X, PEDOMETER_NUMBER_XNUMBER_Y, tmpbuf);
	LCD_SetColor(pcolor_tmp);
}    
PEDOMETER_APP_CODE
void PDisplayYnumber(unsigned long Ynumber)
{	
    unsigned int tmpbuf[8];
	
	pcolor_tmp = LCD_GetColor();
	Conver16To10Display(Ynumber,tmpbuf);
    LCD_SetColor(PEDOMETER_BACK_CLOLOR);
    LCD_FillRect(PEDOMETER_NUMBER_YNUMBER_X, PEDOMETER_NUMBER_YNUMBER_Y, PEDOMETER_NUMBER_YNUMBER_X+50, PEDOMETER_NUMBER_YNUMBER_Y+16);
    LCD_SetColor(0xFFFF);
    LCD_NFDispStringAt(PEDOMETER_NUMBER_YNUMBER_X, PEDOMETER_NUMBER_YNUMBER_Y, tmpbuf);
	LCD_SetColor(pcolor_tmp);
}    
PEDOMETER_APP_CODE
void PDisplayBodyWeight(unsigned long BodyWeight)
{	
    unsigned int tmpbuf[8];
	
	pcolor_tmp = LCD_GetColor();
	Conver16To10Display(BodyWeight,tmpbuf);
    LCD_SetColor(PEDOMETER_BACK_CLOLOR);
    LCD_FillRect(PEDOMETER_NUMBER_BODY_WEIGHT_X, PEDOMETER_NUMBER_BODY_WEIGHT_Y, PEDOMETER_NUMBER_BODY_WEIGHT_X+50, PEDOMETER_NUMBER_BODY_WEIGHT_Y+16);
    LCD_SetColor(0xFFFF);
    LCD_NFDispStringAt(PEDOMETER_NUMBER_BODY_WEIGHT_X, PEDOMETER_NUMBER_BODY_WEIGHT_Y, tmpbuf);
	LCD_SetColor(pcolor_tmp);
}    
PEDOMETER_APP_CODE
void PDisplayBodyHeight(unsigned long BodyHeight)
{	
    unsigned int tmpbuf[8];
	
	pcolor_tmp = LCD_GetColor();
	Conver16To10Display(BodyHeight,tmpbuf);
    LCD_SetColor(PEDOMETER_BACK_CLOLOR);
    LCD_FillRect(PEDOMETER_NUMBER_STEP_SIZE_X, PEDOMETER_NUMBER_STEP_SIZE_Y, PEDOMETER_NUMBER_STEP_SIZE_X+50, PEDOMETER_NUMBER_STEP_SIZE_Y+16);
    LCD_SetColor(0xFFFF);
    LCD_NFDispStringAt(PEDOMETER_NUMBER_STEP_SIZE_X, PEDOMETER_NUMBER_STEP_SIZE_Y, tmpbuf);
	LCD_SetColor(pcolor_tmp);
}    
PEDOMETER_APP_CODE
void PDisplayStepCounter(unsigned long StepCounter)
{	
    unsigned int tmpbuf[8];
	
	pcolor_tmp = LCD_GetColor();
	Conver16To10Display(StepCounter,tmpbuf);
    LCD_SetColor(PEDOMETER_BACK_CLOLOR);
    LCD_FillRect(PEDOMETER_NUMBER_STEP_X, PEDOMETER_NUMBER_STEP_Y, PEDOMETER_NUMBER_STEP_X+50, PEDOMETER_NUMBER_STEP_Y+16);
    LCD_SetColor(0xFFFF);
    LCD_NFDispStringAt(PEDOMETER_NUMBER_STEP_X, PEDOMETER_NUMBER_STEP_Y, tmpbuf);
	LCD_SetColor(pcolor_tmp);
}    

PEDOMETER_APP_CODE
void PDisplayDistance(unsigned long Distance)
{	
    unsigned int tmpbuf[8];
	
	pcolor_tmp = LCD_GetColor();
	Conver16To10Display(Distance,tmpbuf);
    LCD_SetColor(PEDOMETER_BACK_CLOLOR);
    LCD_FillRect(PEDOMETER_NUMBER_DISTANCE_X, PEDOMETER_NUMBER_DISTANCE_Y, PEDOMETER_NUMBER_DISTANCE_X+50, PEDOMETER_NUMBER_DISTANCE_Y+16);
    LCD_SetColor(0xFFFF);
    LCD_NFDispStringAt(PEDOMETER_NUMBER_DISTANCE_X, PEDOMETER_NUMBER_DISTANCE_Y, tmpbuf);
	LCD_SetColor(pcolor_tmp);
}    
PEDOMETER_APP_CODE
void PDisplayTotalConsume(unsigned long TotalConsume)
{	
    unsigned int tmpbuf[8];
	
	pcolor_tmp = LCD_GetColor();
	Conver16To10Display(TotalConsume,tmpbuf);
    LCD_SetColor(PEDOMETER_BACK_CLOLOR);
    LCD_FillRect(PEDOMETER_NUMBER_CONSUME_X, PEDOMETER_NUMBER_CONSUME_Y, PEDOMETER_NUMBER_CONSUME_X+50, PEDOMETER_NUMBER_CONSUME_Y+16);
    LCD_SetColor(0xFFFF);
    LCD_NFDispStringAt(PEDOMETER_NUMBER_CONSUME_X, PEDOMETER_NUMBER_CONSUME_Y, tmpbuf);
	LCD_SetColor(pcolor_tmp);
}    
PEDOMETER_APP_CODE
void PDisplayTimeCounter(unsigned long TimeCounter)
{	
    unsigned int tmpbuf[8];
	
	pcolor_tmp = LCD_GetColor();
	Conver16To10Display(TimeCounter,tmpbuf);
    LCD_SetColor(PEDOMETER_BACK_CLOLOR);
    LCD_FillRect(PEDOMETER_NUMBER_TIMER_X, PEDOMETER_NUMBER_TIMER_Y, PEDOMETER_NUMBER_TIMER_X+50, PEDOMETER_NUMBER_TIMER_Y+16);
    LCD_SetColor(0xFFFF);
    LCD_NFDispStringAt(PEDOMETER_NUMBER_TIMER_X, PEDOMETER_NUMBER_TIMER_Y, tmpbuf);
	LCD_SetColor(pcolor_tmp);
}    
PEDOMETER_APP_CODE
void PDisplayConsumeRate(unsigned long ConsumeRate)
{	
    unsigned int tmpbuf[8];
	
	pcolor_tmp = LCD_GetColor();
	Conver16To10Display(ConsumeRate,tmpbuf);
    LCD_SetColor(PEDOMETER_BACK_CLOLOR);
    LCD_FillRect(PEDOMETER_NUMBER_CONSUMEPHOUR_X, PEDOMETER_NUMBER_CONSUMEPHOUR_Y, PEDOMETER_NUMBER_CONSUMEPHOUR_X+50, PEDOMETER_NUMBER_CONSUMEPHOUR_Y+16);
    LCD_SetColor(0xFFFF);
    LCD_NFDispStringAt(PEDOMETER_NUMBER_CONSUMEPHOUR_X, PEDOMETER_NUMBER_CONSUMEPHOUR_Y, tmpbuf);
	LCD_SetColor(pcolor_tmp);
}    
PEDOMETER_APP_CODE
void PDisplayStepFreqency(unsigned long StepFreqency)
{	
    unsigned int tmpbuf[8];
	
	pcolor_tmp = LCD_GetColor();
	Conver16To10Display(StepFreqency,tmpbuf);
    LCD_SetColor(PEDOMETER_BACK_CLOLOR);
    LCD_FillRect(PEDOMETER_NUMBER_STEPPMINUTE_X, PEDOMETER_NUMBER_STEPPMINUTE_Y, PEDOMETER_NUMBER_STEPPMINUTE_X+50, PEDOMETER_NUMBER_STEPPMINUTE_Y+16);
    LCD_SetColor(0xFFFF);
    LCD_NFDispStringAt(PEDOMETER_NUMBER_STEPPMINUTE_X, PEDOMETER_NUMBER_STEPPMINUTE_Y, tmpbuf);
	LCD_SetColor(pcolor_tmp);
}    
#else ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void PDisplayBodyWeight(unsigned long BodyWeight)
{	
    unsigned int tmpbuf[8];
    unsigned int i;
	
	Conver16To10Display(BodyWeight,tmpbuf);
	for(i=0;i<5;i++)
		tmpbuf[i]=tmpbuf[i]-'0';
    for(i=2;i<5;i++)
    {
    	DisplayPicture(PEDOMETER_NUMBER_BODY_WEIGHT_X+((i+1)*(MIDDLENUMBER_XSIZE)), PEDOMETER_NUMBER_BODY_WEIGHT_Y, MIDDLENUMBER_XSIZE, MIDDLENUMBER_YSIZE, NFA_MIDDLENUMBER_BASS+tmpbuf[i]*MIDDLENUMBER_XSIZE*MIDDLENUMBER_YSIZE*2);
    	//                                                    每个数值的宽度                                                                                      数字图片的地址  
    }
}    
PEDOMETER_APP_CODE
void PDisplayBodyHeight(unsigned long BodyHeight)
{	
    unsigned int tmpbuf[8];
    unsigned int i;
	
	pcolor_tmp = LCD_GetColor();
	Conver16To10Display(BodyHeight,tmpbuf);
	for(i=0;i<5;i++)
		tmpbuf[i]=tmpbuf[i]-'0';
    for(i=2;i<5;i++)
    {
    	DisplayPicture(PEDOMETER_NUMBER_STEP_SIZE_X+((i+1)*(MIDDLENUMBER_XSIZE)), PEDOMETER_NUMBER_STEP_SIZE_Y, MIDDLENUMBER_XSIZE, MIDDLENUMBER_YSIZE, NFA_MIDDLENUMBER_BASS+tmpbuf[i]*MIDDLENUMBER_XSIZE*MIDDLENUMBER_YSIZE*2);
    	//                                                    每个数值的宽度                                                                                      数字图片的地址  
    }
}
PEDOMETER_APP_CODE
void PDisplayTargetConsume(unsigned long Consume)
{	
    unsigned int tmpbuf[8];
    unsigned int i;
	
	pcolor_tmp = LCD_GetColor();
	//DIV100Conver16To10Display(Consume,tmpbuf);
	NeedShowDotBitConver16To10Display(1,Consume,tmpbuf);//nTagert最好设置8成员个大小
	for(i=0;i<7;i++)
		tmpbuf[i]=tmpbuf[i]-'0';
	tmpbuf[5]=10;//显示'.'
    for(i=1;i<7;i++)
    {
    	DisplayPicture(PEDOMETER_NUMBER_TARGET_CONSUME_X+((i-1)*(MIDDLENUMBER_XSIZE)), PEDOMETER_NUMBER_TARGET_CONSUME_Y, MIDDLENUMBER_XSIZE, MIDDLENUMBER_YSIZE, NFA_MIDDLENUMBER_BASS+tmpbuf[i]*MIDDLENUMBER_XSIZE*MIDDLENUMBER_YSIZE*2);
    	//                                                    每个数值的宽度                                                                                      数字图片的地址  
    }
}    
PEDOMETER_APP_CODE
void PDisplayAdjustPosition(unsigned long AdjustPosition)
{	
    unsigned int tmpbufX[11]={104-1,112-1,120-1,104-1,112-1,120-1,80-1,88-1,96-1,104-1,120-1};//位置
    unsigned int tmpbufY[11]={39+18, 39+18, 39+18, 69+18, 69+18, 69+18, 99+18,99+18,99+18,99+18, 99+18};//位置
    unsigned int Front;
    unsigned int Behind;
    
	if(AdjustPosition>=11)//清掉前一位的指示
	{	
		AdjustPosition=11;
		Behind=1;
	}
	else
		Behind=AdjustPosition+1;
	if(AdjustPosition<=1)//清掉后一位的指示
	{
		Front=11;
		AdjustPosition=1;
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -