#include<reg51.h>[img][/img]
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code DSY_CODE[]={0xa4,0xc0,0xf9,0x80};
uchar code wei[]={0x80,0x40,0x20,0x10};
unsigned char const xuehao[]={
0x00,0x00,0xFE,0x82,0x82,0x82,0xFE,0x00, //0
0x00,0x00,0x84,0x82,0xFF,0x80,0x80,0x00, //1
0x00,0x00,0xF2,0x92,0x92,0x92,0x9E,0x00, //2
0x00,0x00,0x92,0x92,0x92,0xFE,0x00,0x00, //3
0x00,0x20,0x30,0x28,0x24,0xFE,0x20,0x00, //4
0x00,0x00,0x9E,0x92,0x92,0x92,0xF2,0x00, //5
0x00,0x00,0xFE,0x92,0x92,0x92,0xF2,0x00, //6
0x00,0x00,0x00,0x02,0x02,0x02,0xFE,0x00, //7
0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00, //8
0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00 //9
};
unsigned char code lie[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
void Timer1Init()
{
TMOD|=0X10;//选择为定时器1模式,工作方式1,仅用TR1打开启动。
TH1=0XFC; //给定时器赋初值,定时1ms
TL1=0X18;
ET1=1;//打开定时器1中断允许
EA=1;//打开总中断
TR1=1;//打开定时器
}
void main()
{
uchar i;
while(1)
{
for(i=0;i<4;i++)
{
P3=0x00; //关闭显示
P1=DSY_CODE[i]; //发送数字段码
P3=wei[i];
DelayMS(10);
}
Timer1Init(); //定时器1初始化
}
}
void Timer1() interrupt 3
{
uchar t,j,k;
TH1=0XFC; //给定时器赋初值,定时1ms
TL1=0X18;
for(t=0;t<10;t++)
{
for(j=0;j<30;j++)
{
for(k=0;k<8;k++)
{
P2=lie[k];
P0=~xuehao[t*8+k];
DelayMS(2);
}
}
}
}