proteus进行仿真为何LED不亮,且程序编译是正确的

#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitk=P3^4;sbitk1=P3^0... #include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit k = P3^4;
sbit k1=P3^0;
sbit k2=P3^1;
uint a=0;
uint b=0;
uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};

uchar code Scan_BITs[]={0x20,0x10,0x08};

uchar data Buffer_Counts[]={0,0,0};
uint Count_A=0;

void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=0;t<120;t++);
}
}

void Show_Counts()
{
uint i;
Buffer_Counts[2] = Count_A / 100;
Buffer_Counts[1] = Count_A % 100 /10;
Buffer_Counts[0] = Count_A % 10;
if(Buffer_Counts[2]==0)
{
Buffer_Counts[2] = 0x0a;
if(Buffer_Counts[1]==0)
{
Buffer_Counts[1]=0x0a;
}
}

for(i=0;i<3;i++)
{
P2 = Scan_BITs[i];
P0 = DSY_CODE[Buffer_Counts[i]];
DelayMS(1);
}
}
void main()
{
IT0 = 1;
IT1 = 1;
PX0 = 1;
IE = 0x85;
while(1)
{
Show_Counts();
if(k == 0){ Count_A = 0; }

else if(k1==0)
{
DelayMS(5);
if(k1==0)
{
a++;
if(b!=0)
{
Count_A++;
a=0;
b=0;
}
while(!k1);
}
}
else if(k2==0)
{
DelayMS(5);
if(k2==0)
{
b++;
if(a!=0)
{
Count_A--;
a=0;
b=0;
}
while(!k2);
}
}

}
}
/*
void EX_INT0() interrupt 0
{
a++;
if(b!=0)
{
Count_A++;
a=0;
b=0;
}
while(k1!=0);
}

void EX_INT1() interrupt 2
{

b++;
if(a!=0)
{
Count_A--;
a=0;
b=0;
}
while(k2!=0);
} */
仿真时是这样的
展开
 我来答
百度网友283d78e
2015-05-02 · 知道合伙人IT服务行家
百度网友283d78e
知道合伙人IT服务行家
采纳数:1491 获赞数:2982

向TA提问 私信TA
展开全部

cathode表示阴极

橙月同
2015-04-29 · 超过32用户采纳过TA的回答
知道答主
回答量:153
采纳率:0%
帮助的人:64.3万
展开全部
首先你得知道你的数码管是共阴极还是共阳极的哦
更多追问追答
追问
设计上说的是要共阴极,但我不知道这个图上怎么分辨共阴极还是阳极
追答
proteus 器件库cathode是共阴极
anode是共阳极,
你先看看他们的区别吧 搞不懂这个,怎么点亮数码管,另外建议你先点亮一个数码管试试,不要直接点亮四个,单片机这个 多调试,多做试验,看看看一些相关资料很简单的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式