#include <AT89X52.H>
#include "74HC595.H"
#include "mod.h"
sbit p1_2= P1^2;
void display(unsigned int d);/*点阵显示*/
void sys_init();/*系统初始化*/
unsigned int num,num1,p;
unsigned int t;
void display(unsigned int d);
//unsigned char code taba[]={0x9F,0xEF,0xEF,0x9F,0x6F,0x6F,0x6F,0x9F};
unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};/*扫描*/
unsigned char tab[8]={0};
void delayms(unsigned int x) /*延时函数*/
{
unsigned int i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void main(void)
{
sys_init();
while(1)
{
display(t);
TR1=1;
TR0=1;
}
}
void sys_init()/*系统初始化*/
{
TMOD=0x51;
TH0=0x4f;
TL0=0xe5;
TH1=0x00;
TL1=0x00;
ET0=1;
ET1=1;
IT1=1;
EA=1;
TR0=1;
TR1=1;
}
void display(unsigned int d)/*点阵显示*/
{
unsigned int shi,ge,i,j,h;
shi=d%100/10;
ge=d%100%10;
for(i=0;i<8;i++)
{
tab[i]=talbe1[shi][i]&talbe2[ge][i];
}
for(i=0;i<8;i++)
{
Ser_IN(tab[i]);// 列扫描
Ser_IN(tabb[i]);// 行送扫描数据
Par_OUT();//74HC595输出显示
}
for(i=0;i<8;i++)
{
Ser_IN(0xff);// 列扫描
Ser_IN(0);// 行送扫描数据
Par_OUT();//74HC595输出显示
}
}
void zdfw_T0() interrupt 1
{
TH0=0x4b;//?????T0??
TL0=0xfd;
num++;
if(num>=40)
{
TR0=0;
TR1=0;
t=(TL1+num1*256)/2;
num=0;
num1=0;
TL1=0;
TH1=0;
}
}
void zdfw_T1() interrupt 3
{
TH1=0;//初值
TL1=0;//计数器值
num1++;
}