📄 pedometer.c
字号:
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 + -