51单片机共阳数码管消影问题,加P2=0xff不行,求高手指教

#include "reg51.h" //52系列单片机定义文件
#include "intrins.h" //调用_nop_();延时函数用
#define uchar unsigned char//无符号字符(8位)
#define uint unsigned int //无符号整数(16位)
bit OK,RING; //开始抢答标志位,响铃标志位
sbit speak=P3^6; //声音输出口
sbit start=P3^0; //开始
sbit end=P3^1; //终止
sbit add=P3^4; //+
sbit sub=P3^5; //-
uchar Q_T=20,H_T=30,qt,ht; //初始抢答时间,回答时间
uchar a=11,b=11,c=11,d=11,n,m,k; //数码管显示选手编号与计数值,计时器中断次数,犯规选手号
/***********************************************************************************/
uchar codedis_7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};
/* 共阳七段LED段码表 "0" "1" "2" "3"
"4" "5" "6"
"7" "8" "9" "不亮" */

/********1毫秒延时子函数**********/
delay1ms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
/************************************************************************************/
void nose()
{RING=1;
delay1ms(500);
RING=0;
}
/************************************************************************************/
void display()
{
if(b==0)
{b=10;
}
if(a!=10||b!=10||c!=10)
{d=11;
}
else
{d=10;
}
P0=dis_7[a];
P2=0xfe;
delay1ms(5);
P2=0xff;
P0=dis_7[11];
P2=0xfd;
delay1ms(5);
P2=0xff;
P0=dis_7[b];
P2=0xfb;
delay1ms(5);
P2=0xff;
P0=dis_7[c];
P2=0xf7;
delay1ms(5);
P2=0xff;

}
程序由于字数问题没传完,接上面继续
/************************************************************************************/main()
{TMOD=0x11;
TH0=0xec;TL0=0xff;TH1=0x3c;TL1=0xb0;
EA=1;ET0=1;ET1=1;EX0=1;EX1=1;OK=0;RING=0;
TR0=1;TR1=1;
while(1)
{display();
while(start==1)
{false();
display();
if(start==0)
{delay1ms(2);
while(start==0);
nose();
OK=1;
TR1=0;
qt=Q_T;
n=0;
while(qt>0&&end==1&&OK==1&&P1==0xff)
{TR1=1;
a=10;
b=qt/10;
c=qt%10;

可能是消影的时间太短,还没消影数据就更新了,修改如下:
P0=dis_7[a];
P2=0xfe;
delay1ms(2);
P2=0xff;
delay1ms(1);

P0=dis_7[11];
P2=0xfd;
delay1ms(2);
P2=0xff;
delay1ms(1);

P0=dis_7[b];
P2=0xfb;
delay1ms(2);
P2=0xff;
delay1ms(1);

P0=dis_7[c];
P2=0xf7;
delay1ms(2);
P2=0xff;
delay1ms(1);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-21
的的的的 的 的的的 的的的的的的
第2个回答  2013-04-21
请把中断函数也贴上来,首先说一点,显示程序消隐部分不用每显示一位做一次,显示一个周期后只做一次就足够了。精简一下显示部分试试。
相似回答