//驱动自己加
#include<ad.h>
#define u8 unsigned char
#define u16 unsigned int
u8 yi,er,san,si,wu,liu,qi,ba;
u16 code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0X40,0xbf};
u16 shijian;
u8 dengliang,jidianqikai;
u16 chushuiliang;
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
#define u8 unsigned char
#define u16 unsigned int
u8 yi,er,san,si,wu,liu,qi,ba;
u16 code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0X40,0xbf};
u16 shijian;
u8 dengliang,jidianqikai;
u16 chushuiliang;
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
void allinit()
{
P2=0x80;
P0=0xff;
P2=0xa0;
P0=0x00;
}
void display()
{
P2=0xc0;
P0=0x01;
P2=0xff;
P0=~duan[yi];
Delay1ms() ;
P2=0xc0;
P0=0x02;
P2=0xff;
P0=~duan[er];
Delay1ms() ;
P2=0xc0;
P0=0x04;
P2=0xff;
P0=~duan[san];
Delay1ms() ;
P2=0xc0;
P0=0x08;
P2=0xff;
P0=~duan[si];
Delay1ms() ;
P2=0xc0;
P0=0x10;
P2=0xff;
P0=~duan[wu];
Delay1ms() ;
if(jidianqikai==1)
{
P2=0xc0;
P0=0x20;
P2=0xff;
P0=~duan[liu];
Delay1ms() ;
}
else if(jidianqikai==0)
{
P2=0xc0;
P0=0x20;
P2=0xff;
P0=~(duan[liu]|0x80);
Delay1ms() ;
}
P2=0xc0;
P0=0x40;
P2=0xff;
P0=~duan[qi];
Delay1ms() ;
{
P2=0x80;
P0=0xff;
P2=0xa0;
P0=0x00;
}
void display()
{
P2=0xc0;
P0=0x01;
P2=0xff;
P0=~duan[yi];
Delay1ms() ;
P2=0xc0;
P0=0x02;
P2=0xff;
P0=~duan[er];
Delay1ms() ;
P2=0xc0;
P0=0x04;
P2=0xff;
P0=~duan[san];
Delay1ms() ;
P2=0xc0;
P0=0x08;
P2=0xff;
P0=~duan[si];
Delay1ms() ;
P2=0xc0;
P0=0x10;
P2=0xff;
P0=~duan[wu];
Delay1ms() ;
if(jidianqikai==1)
{
P2=0xc0;
P0=0x20;
P2=0xff;
P0=~duan[liu];
Delay1ms() ;
}
else if(jidianqikai==0)
{
P2=0xc0;
P0=0x20;
P2=0xff;
P0=~(duan[liu]|0x80);
Delay1ms() ;
}
P2=0xc0;
P0=0x40;
P2=0xff;
P0=~duan[qi];
Delay1ms() ;
P2=0xc0;
P0=0x80;
P2=0xff;
P0=~duan[ba];
Delay1ms() ;
}
void anjian()
{
u8 dat=0;
if(P30==0)
{
Delay1ms() ;
if(P30==0)
{
dat=1;
while(P30==0);
}
}
if(P31==0)
{
Delay1ms() ;
if(P31==0)
{
dat=2;
while(P31==0);
}
}
if(P32==0)
{
Delay1ms() ;
if(P32==0)
{
dat=3;
while(P32==0);
}
}
if(P33==0)
{
Delay1ms() ;
if(P33==0)
{
dat=4;
while(P33==0);
}
}
if(dat==1&&jidianqikai==0)
{
shijian=0;
chushuiliang=0;
}
if(dat==1)
{
TR0=1;
jidianqikai=1;
}
if(dat==2)
{
jidianqikai=0;
}
}
u8 re()
{
u8 dat;
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(0x01);
IIC_WaitAck();
IIC_Stop();
IIC_Start();
IIC_SendByte(0x91);
IIC_WaitAck();
dat=IIC_RecByte();
IIC_WaitAck();
IIC_Stop();
return dat;
}
void guangmindianzu()
{
u8 dat;
dat=re();
if(dat<64)
{
P2=0x80;
P0=0x7f;
P2=0x00;
}
else if(dat>=64)
{
P2=0x80;
P0=0xff;
P2=0x00;
}
}
void liushui()
{
yi=16;
er=18;
san=5;
si=0;
wu=chushuiliang/100;
liu=chushuiliang%100/10;
qi=chushuiliang%10;
ba=0;
}
void feiyong()
{
yi=16;
er=18;
san=5;
si=0;
wu=5*chushuiliang/1000;
liu=5*chushuiliang%1000/100;
qi=5*chushuiliang%100/10;
ba=5*chushuiliang%10;
}
{
u8 dat;
dat=re();
if(dat<64)
{
P2=0x80;
P0=0x7f;
P2=0x00;
}
else if(dat>=64)
{
P2=0x80;
P0=0xff;
P2=0x00;
}
}
void liushui()
{
yi=16;
er=18;
san=5;
si=0;
wu=chushuiliang/100;
liu=chushuiliang%100/10;
qi=chushuiliang%10;
ba=0;
}
void feiyong()
{
yi=16;
er=18;
san=5;
si=0;
wu=5*chushuiliang/1000;
liu=5*chushuiliang%1000/100;
qi=5*chushuiliang%100/10;
ba=5*chushuiliang%10;
}
void Timer0Init(void) //[email protected]
{
AUXR |= 0x80; //?????1T??
TMOD &= 0xF0; //???????
TL0 = 0xCD; //??????
TH0 = 0xD4; //??????
TF0 = 0; //??TF0??
TR0 = 0;
ET0=1;
EA=1;
//???0????
}
{
AUXR |= 0x80; //?????1T??
TMOD &= 0xF0; //???????
TL0 = 0xCD; //??????
TH0 = 0xD4; //??????
TF0 = 0; //??TF0??
TR0 = 0;
ET0=1;
EA=1;
//???0????
}
void main()
{
Timer0Init();
allinit();
while(1)
{
guangmindianzu();
if(jidianqikai==1)
{
P2=0xa0;
P0=0x10;
P2=0x00;
liushui();
}
else if(jidianqikai==0)
{
TR0=0;
P2=0xa0;
P0=0x00;
P2=0x00;
feiyong();
}
display();
anjian();
}
}
void ding0()interrupt 1
{
TL0 = 0xCD; //??????
TH0 = 0xD4;
shijian++;
if(shijian==1000)
{
shijian=0;
chushuiliang+=1;
}
if(chushuiliang>999)
{
jidianqikai=0;
}
}