【求助】按键显示数字,按下到弹起期间数码管变暗是什么原因

2019-07-15 16:24发布

P0接LED,P1接矩阵键盘
使用线反转法扫描
代码如下:

  1. uchar num = 0x10;    // 0x10 indicate character H
  2. void keyscan()
  3. {
  4.         uchar key = 0xff;    // no key pressed
  5.         uchar i;

  6.         P1 = 0x0f;
  7.         if(P1 != 0x0f)
  8.         {
  9.                 delay(10);
  10.                 if(P1 != 0x0f)
  11.                 {
  12.                         key = P1;
  13.                         P1 = 0xf0;
  14.                         key += P1;
  15.                 }
  16.         }
  17.         for(i=0;i<16;i++)        // if set i<17;then after release the key,LED will only show H
  18.         {
  19.                 if(key_code[i] == key)
  20.                 {
  21.                         num = i;
  22.                 }
  23.         }
  24. }

  25. void display()
  26. {
  27.         P0 = led_code[num];
  28.         delay(10);
  29.         P0 = 0x00;
  30. }

  31. void main()
  32. {
  33.         while(1)
  34.         {
  35.                 keyscan();
  36.                 display();
  37.         }
  38. }
复制代码



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
birdinskydzfsy
1楼-- · 2019-07-15 16:37
 精彩回答 2  元偷偷看……
tsingwen
2楼-- · 2019-07-15 17:26
本帖最后由 tsingwen 于 2015-8-3 04:24 编辑

这是拍的GIF,有点不清晰
变暗的时候就是在按键按下以及释放过程中的效果
2015-08-03_04_17_19.gif

大笨0330
3楼-- · 2019-07-15 22:53
会不会是延时时间过长而导致视觉上的闪烁
@曲终人散@
4楼-- · 2019-07-16 00:25
你按按键的时候比不按按键多执行了
if(P1 != 0x0f)
        {
                delay(10);
                if(P1 != 0x0f)
                {
                        key = P1;
                        P1 = 0xf0;
                        key += P1;
                }
        }
这期间造成了数码管的闪烁
tsingwen
5楼-- · 2019-07-16 00:52
感谢大家的热心帮助和详细解答!   我会回去再作修改,多作尝试的
Oliverking
6楼-- · 2019-07-16 03:16
 精彩回答 2  元偷偷看……

一周热门 更多>