徐晓峰
2021.4.27
中断秒表数码段实验源码
#include<reg51.h>
#include<intrins.h>
int i=0,k=0;
int decade,units;
int m,n;
void delay(n);
void displayLED(unsigned char x)
{
unsigned char code segment[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
};
m=segment[x];
}
void main()
{
TMOD=0x10;
EA=1;
ET1=1;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
while(1)
{ if (k==60)k=0; //设置模为60
decade=k/10; //十位
units=k%10; //个位
P1=0Xff; //先向P1口写1
displayLED(decade);
P1=m;
P2=0x01;
delay(10);
P1=0Xff;
displayLED(units);
P1=m;
P2=0x02;
delay(10);
}
}
void isr_int3(void)interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
i++;
if (i==20)
{
i=0;
k++;
}
}
void delay(n)
{
while(n)
{
while(n){--n;}
}
}
实验原理图如下
这里的数码管采用以下的两种
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210427193218227.png)
附上本次的工程文件:
https://download.csdn.net/download/Alangman/18474937