我的这个电路用PROTEUS仿真时为什么数码管不亮啊,小弟初学

2019-07-18 10:30发布

求各位指导,先谢谢了。电路图在图片附件中
这是源程序
#include "reg52.h"
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66};
void delay()
{uchar i,j;
for(i=0;i<255;i++)
   for(j=0;j<255;j++);
}
uchar keyscan()
{uchar keyv,temp;
keyv=0;
P2=0xff;
temp=P2;
if(~(P2&temp))
{switch(temp)
{case 0xfe:
  keyv=1;break;
case 0xfd:
  keyv=2;break;
case 0xfb:
  keyv=3;break;
case 0xf7:
  keyv=4;break;
default:
  keyv=0;break;
}
}
return keyv;
}
void main ()
{
unsigned char leds;
while(1)
{leds=keyscan();
P1=table[leds];
delay();
}
}

这是仿真图 这是仿真图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
冰葑世纪
1楼-- · 2019-07-18 15:25
最好上传你的仿真和程序的附件上来喔
skyzwb123
2楼-- · 2019-07-18 17:22
冰葑世纪 发表于 2013-10-17 09:37
最好上传你的仿真和程序的附件上来喔

功能是实现按键状态显示,按下几号键数码管就显示几,没键按下或者多键按下显示0.源程序如下:
#include "reg52.h"
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66};
unsigned char keyscan()
{unsigned char keyv,temp;
keyv=0;
P2=0xff;
temp=P2;
if(~(P2&temp))
{switch(temp)
{case 0xfe:
  keyv=1;break;
case 0xfd:
  keyv=2;break;
case 0xfb:
  keyv=3;break;
case 0xf7:
  keyv=4;break;
default:
  keyv=0;break;
}
}
return keyv;
}
void main ()
{
unsigned char ledshow;
while(1)
{ledshow=keyscan();
P1=table[ledshow];
}
}

无论怎么按键,为什么数码管不亮呢?请你帮忙看下,谢谢了。

仿真电路

仿真电路
fjf123
3楼-- · 2019-07-18 19:14
按键函数中设置P2=0xf0,再加上去延时去抖动函数。然后试试。
skyzwb123
4楼-- · 2019-07-18 22:11
fjf123 发表于 2013-10-17 13:38
按键函数中设置P2=0xf0,再加上去延时去抖动函数。然后试试。

不好使,还是没有反应

xgywd
5楼-- · 2019-07-19 02:40
 精彩回答 2  元偷偷看……

一周热门 更多>