51单片机按键控制数码管程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#define uint unsigned int
#define uchar unsigned char
uchar c;
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p14=P1^4;
sbit p15=P1^5;
sbit p16=P1^6;
sbit p17=P1^7;
void delay(uint z);
int b[]={0,1,2,3,4,5,6,7};//设置每一位显示的数字
unsigned char code Tab[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳极数码管
int a[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void main()
{
EA=1;
EX0=1;
IT0=1;
P1=0xff;
while(1)
{
for(c=0;c<8;c++)//数码管扫描显示
P2=a[c];
P0=Tab[b[c]];
delay (1);
}
}
}
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=110;b>0;b--);
}
int_0()interrupt 0
{
EA=0;
if(p10==0) b[0]=(b[0]+1)%10;
if(p11==0) b[1]=(b[1]+1)%10;
if(p12==0) b[2]=(b[2]+1)%10;
if(p13==0) b[3]=(b[3]+1)%10;
if(p14==0) b[4]=(b[4]+1)%10;
if(p15==0) b[5]=(b[5]+1)%10;
if(p16==0) b[6]=(b[6]+1)%10;
if(p17==0) b[7]=(b[7]+1)%10;
}