蓝桥板子可以直接用
#include<STC15F2K60S2.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
void display_all(uchar yi,er,san,si,wu,liu,qi,ba);
uchar yi,er,san,si,wu,liu,qi,ba;
void allinit(void);
void Timer0Init(void);
void zd_t1();
void Timer1Init(void);
void delayms(uint ms);
uint time,fre;
void main()
{
Timer1Init();
Timer0Init();
allinit();
EA=1;
ET1=1;
while(1)
{
yi=11;er=11;san=11;
si=fre/10000;
wu=(fre%10000)/1000;
liu=(fre%1000)/100;
qi=(fre%100)/10;
ba=(fre%100)%10;
display_all(yi,er,san,si,wu,liu,qi,ba);
}
}
void timer1_service(void) interrupt 3
{
time++;
if(time==1000)
{
TR0=0;
time=0;
fre=(TH0*256+TL0);
TH0=0;
TL0=0;
TR0=1;
}
}
void Timer1Init(void) //1毫秒@11.0592MHz
{
AUXR &= 0xBF; //定时器时钟12T模式
TMOD &= 0x0F; //设置定时器为定时模式
TL1 = 0x66; //设置定时初值
TH1 = 0xFC; //设置定时初值
TF1 = 0; //清除TF1标志
TR1 = 1 ; //定时器1开始计时
}
void Timer0Init(void)
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD |= 0x05; //设置定时器为计数模式
TL0 = 0x00; //设置定时初值
TH0 = 0x00; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
void allinit(void)
{
P2=(P2&0x1f)|0xa0;
P0=0x00;
P2=(P2&0x1f)|0x80;
P0=0xFF;
P2=(P2&0x1f)|0xc0;
P0=0xFF;
P2=(P2&0x1f)|0xe0;
P0=0xFF;
P2=P2&0x1f;
}
void display_all(uchar yi,er,san,si,wu,liu,qi,ba)
{
P2=0xc0;
P0=0x01;
P2=0xe0;
P0=tab[yi];
delayms(5);
P2=0xc0;
P0=0x02;
P2=0xe0;
P0=tab[er];
delayms(5);
P2=0xc0;
P0=0x04;
P2=0xe0;
P0=tab[san];
delayms(5);
P2=0xc0;
P0=0x08;
P2=0xe0;
P0=tab[si];
delayms(5);
P2=0xc0;
P0=0x10;
P2=0xe0;
P0=tab[wu];
delayms(5);
P2=0xc0;
P0=0x20;
P2=0xe0;
P0=tab[liu];
delayms(5);
P2=0xc0;
P0=0x40;
P2=0xe0;
P0=tab[qi];
delayms(5);
P2=0xc0;
P0=0x80;
P2=0xe0;
P0=tab[ba];
delayms(5);
P2=(P2&0x1f)|0xc0;
P0=0xFF;
P2=(P2&0x1f)|0xe0;
P0=0xFF;
P2=P2&0x1f;
}
void delayms(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=835;j>0;j--);
}