为什么我这程序下到板子上按下键盘数码管数字不断快速...

2019-07-16 04:32发布

为什么我这程序下到板子上按下键盘数码管数字不断快速无规律变化?求大哥大姐帮忙看一下,无限感激
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
1742929082
1楼-- · 2019-07-16 08:19
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit LE1=P2^0;
sbit LE2=P2^1;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar keyvalue,num,shi,ge;
void delayms(uint);
void display(uchar,uchar);
keyhadle();
keyscan()
{
  P3=0xff;
  if((P3&0xff)!=0xff)
  {
    delayms(10);
    if((P3&0xff)!=0xff)
    {
       keyvalue=(P3&0xff);
    }
  }
}
void main()
{
  while(1)
  {
     keyscan();
         delayms(10);
         keyhadle();
          delayms(10);
         display(shi,ge);
          delayms(10);
  }

}

void display(uchar shi,uchar ge)
{
  LE1=1;
  P1=0xfe;
  LE1=0;
  P1=0xff;
  delayms(30);
  LE2=1;
  P1=table[shi];
  LE2=0;
  

  LE1=1;
  P1=0xfd;
  LE1=0;
  P1=0xff;
  delayms(30);
  LE2=1;
  P1=table[ge];
  LE2=0;

}

keyhadle()
{
  switch (keyvalue)
  {
     case 0x7f:
         num--;
     shi=num/10;
     ge=num%10;
         return shi,ge;
     break;

     case 0xf7:
          num++;
     shi=num/10;
     ge=num%10;
         return shi,ge;
     break;
  }
  if(num==60)
       num=0;
}
void delayms(uint xms)
{
  uint i,j;
  for(i=xms;i>0;i--)
     for(j=110;j>0;j--);
}
zhihuizhou
2楼-- · 2019-07-16 13:48
就一句话?
1742929082
3楼-- · 2019-07-16 15:59
zhihuizhou 发表于 2012-9-24 10:56
就一句话?

下面有我写的程序
lovezjf234
4楼-- · 2019-07-16 17:02
 精彩回答 2  元偷偷看……
phjnet2012
5楼-- · 2019-07-16 21:33
看来基础很重要
pingdan32
6楼-- · 2019-07-17 03:08
确定按键按下之后再加一次判断,判断按键是否松开,如果松开,那么返回前一个按键按下的值,如果没松开就一直等待···

一周热门 更多>