proteus仿真LED数码管不显示

#include<reg51.h>unsignedchara[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f... #include<reg51.h>
unsigned char a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,},b[4],c=0x01;
sbit START=P2^4;
sbit OE=P2^6;
sbit EOC=P2^5;
sbit add_a=P2^2;
sbit add_b=P2^1;
sbit add_c=P2^0;
sbit led=P2^7;
void Delay1ms(unsigned int count);
{ unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
void show()
{
unsigned int r;
for(r=0;r<4;r++)
{
P1=(c<<r);
P3=b[r];
if(r==2)
P3=P3|0x80;
Delay1ms(1);
}
}
void main(void)
{
unsigned int addata=0,i;
while(1)
{
add_a=0; add_b=0;add_c=0;
START=1;
START=0;
while(EOC==0)
{
OE=1;
}
addata=P0;//读AD转换数据
if(addata>=0x40)
for(i=0;i<=100;i++)
{
led=~led;
}
led=1;
}
else
{
led=0;
}
addata=addata*1.96;
OE=0;
b[0]=a[addata%10];
b[1]=a[addata/10%10];
b[2]=a[addata/100%10];
b[3]=a[addata/1000];
for(i=0;i<=200;i++)
{
show();
}
add_a=1;
add_b=0;
add_c=0;
START=1;
START=0;
while(EOC==0)
{
OE=1;
}
addata=P0;
if(addata>=0x80)
{
for(i=0;i<=100;i++)
{
led=~led;
}
led=1;
}
else
{
led=0;
}
addata=addata*1.96;
OE=0;
b[0]=a[addata%10];
b[1]=a[addata/10%10];
b[2]=a[addata/100%10];
b[3]=1;
for(i=0;i<=200;i++)
{
show();
}
}
}
展开
 我来答
lycdl
高粉答主

2017-07-25 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4734万
展开全部

你的程序中的段码表是共阴的,仿真图用的数码管是共阴型的吗?应该是CC型的。而且程序中的位选码却是1有效,那数码管的位控端应该加一个反相器,太麻烦了,位控码变成0有效就好了。下图只画了数码管电路,用你的程序,是可以显示的。但有一点问题,编译不通过,需要改一下。

回家就好363
2017-07-03
知道答主
回答量:4
采纳率:0%
帮助的人:3706
展开全部
故人西辞黄鹤楼,烟花三月下扬州。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式