注册 登录
编程论坛 单片机编程

请教3按钮控制4位数码管移位加减(做仪表必用)

whp1124 发布于 2011-12-10 10:46, 977 次点击
本人想做1个3个按钮4位数码管简单的仪表面板,但是只能实现个位加减,本人想通过移位按钮分别能在十,百,千位上随意加减

三个按钮分别是KEY_ADD,KEY_DEC,KEY_MOVE.

程序如下:

while (1)         //主循环
  {
   
if(!KEY_ADD)  //如果检测到低电平,说明按键按下
    {
  DelayMs(10); //延时去抖,一般10-20ms
     if(!KEY_ADD)     //再次确认按键是否按下,没有按下则退出
    {
        while(!KEY_ADD);//如果确认按下按键等待按键释放,没有释放则一直等待
        {
     if(num<9999)    //加操作
           num=num++;
    }
    }
 }
 

 if(!KEY_DEC)  //如果检测到低电平,说明按键按下
    {
  DelayMs(10); //延时去抖,一般10-20ms
     if(!KEY_DEC)     //再次确认按键是否按下,没有按下则退出
    {
       while(!KEY_DEC);//如果确认按下按键等待按键释放,没有释放则一直等待
        {
        if(num>0)  //减操作
           num--;
    }
    }
 }


  if(!KEY_MOVE)
   {
 DelayMs(10); //延时去抖,一般10-20ms
    if(!KEY_MOVE==1)
   {
      while(!KEY_MOVE==1);//如果确认按下按键等待按键释放,没有释放则一直等待
   {
    if(!KEY_ADD)  //如果检测到低电平,说明按键按下
    {
     DelayMs(10); //延时去抖,一般10-20ms
     if(!KEY_ADD)     //再次确认按键是否按下,没有按下则退出
    {
        while(!KEY_ADD);//如果确认按下按键等待按键释放,没有释放则一直等待
        {
     if(num<9999)    //加操作
           num=num+10;
   }
   }
   }
   }
   }
   }

    TempData[0]=dofly_DuanMa[num/1000]|0X80;

    TempData[1]=dofly_DuanMa[(num%1000)/100];
    TempData[2]=dofly_DuanMa[((num%1000)%100)/10];
    TempData[3]=dofly_DuanMa[((num%1000)%100)%10];
    Display(0,4); //显示4位
      }
}

我这里只贴了个位加减和十位加的代码,但是运行时只能实现个位加减,

请高手帮我看看错在哪,还是我一开始的处理思路就不对,

要是能给个差不多的成功案例让小弟学习学习,小弟感激不尽
1 回复
#2
少凡2011-12-12 09:09
加我QQ:284663303 我给你写写
1