/*************************************************************************************************** * 描述 : 按键处理函数 * 参数 : 模式 * 返回 : 按键返回值 * 说明 : *************************************************************************************************/ uint8_t KEY_Scan(uint8_t mode) { static u8 key_up=1;//按键松开标志 if(mode) key_up=1; //支持连按 if(key_up&&(KEY0==0||KEY1==0||KEY2==0||WK_UP==0)) // { Delay_ms(10);//去抖动 key_up=0; //按键状态标志为按键按下 if(KEY0==0)return 1; //C规定:一个函数只能有一个返回值,这里只会返回4个中的1个,只要有一个地方返回了值,则会跳出函数,后面的语句都不再执行 else if(KEY1==0)return 2; else if(KEY2==0)return 3; else if(WK_UP==0)return 4; } else if(KEY0==1&&KEY1==1&&KEY2==1&&WK_UP==1)//在不支持连按的情况下,在一次按键后如果不松开的话,按键标志永远都为按下状态 key_up=1; return 0;// 无按键按下 } /************************************************************************************************ * 描述 : 显示{数字数值(0~4294967295)}. * 参数 : Line,Column:行与列位置. * num:数值(0~4294967295). * 返回 : 无 * 说明 : *************************************************************************************************/ void LCD_DisplayNum2(uint16_t Line,uint16_t Column, uint32_t num) { uint32_t temp=num; uint32_t middle; uint32_t middle_len; static uint32_t before_len2; uint16_t refcolumn =Column; uint8_t refLine =Line,len=0; //计算数值长度 do { temp = temp/10; len++; } while(temp); middle_len = len; if(lenWidth;//从前往后显示 do { middle = pow(10,len); //pow(x,y) 计算x 的 y 次幂 temp=num/(middle); LCD_ShowChar(refcolumn,refLine,temp+'0'); refcolumn+=LCD_Currentfonts->Width; //从前往后显示 num=num%(middle); } while(len--); before_len2 = middle_len; }