这个从逻辑处理上应该不难吧
1. 定义好3个界面模块,且分配一个ID,比如(012)
2. 定义2个全局变量,一个变量C用来标识当前展示的ID,一个变量N记录待展示的id
3. 按键用来控制产生N,且加减法是循环加减法,即N=(C+1)%3 (加法时),或者N=(C+2)%3 (减法时)
4. 然后控制展示N对应界面,且展示开始时置C=N。
5. 每次切换后设置一个定时器,自动的做N=(C+1)%3 处理,并跳的4,这样不用按键就可以切换啦(注意设置是需要先取消以往的定时器再重新打开)。
这个我做过
u8 uiIndex = 0;
void forward()
{
if(0 != uiIndex)
uIndex--;
showUI(uiIndex);
}
void backward()
uiIndex++;
if(3 == uiIndex)
uiIndex = 0;
void loop()
u16 times = 300;
while(1){
u8 key = getKey();
if(UP == key)
forward();
else if(DOWN == key)
backward();
else if(0 == --times){
times = 300;
delayms(10);//延时10mS
先把三个界面都显示好,三个界面还是会自动转,只是有按钮有会立刻跳到对应的个界面