#include<stc15f2k60s2.h> //18;00 led亮度无法调节
#include<intrins.h>
#include"iic.h"
typedef unsigned int uint;
typedef unsigned char uchar;
uint yi,er,san,si,wu,liu,qi,ba;
uint smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
uchar ledd[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar s7=0,s6=0,s5=0,s4=0;
void bzcsh();
void delay(uint ms);
void anjian();
void smgduan1(uint yi,uint er);
void smgduan2(uint san,uint si);
void smgduan3(uint wu,uint liu);
void smgduan4(uint qi,uint ba);
void Timer0Init(void); //1微秒@11.0592MHz
void zd();
uchar rb2,iiic,liangdu;
uchar i;
uint sdsj;
uchar add=0,moshi=1;
uint tt,ttt;
void main()
{
bzcsh();
//iic_write(0x07,4);
sdsj=iic_read(0x07);
Timer0Init();
while(1)
{
anjian();
smgduan1( yi, er);
smgduan2( san, si);
smgduan3( wu, liu);
smgduan4( qi, ba);
rb2=ad(0x03);
if(rb2<63.75)liangdu=1;
if((rb2>63.75)&&(rb2<127.5))liangdu=2;
if((rb2>127.5)&&(rb2<191.25))liangdu=3;
if((rb2>191.25)&&(rb2<255))liangdu=4;
if(s7==0){EA=0;ET0=0;P2=0x80;P0=0xff;}
if(s7==1){EA=1;ET0=1;yi=10;er=moshi;san=10;si=11;wu=sdsj/10;liu=sdsj%10;qi=0;ba=0;}
if(s6==1){P2=0x80;P0=0xff;EA=0;ET0=0;s6=0;add++;if(add==3)add=0;if(moshi==1)i=0;if(moshi==2)i=8;if(moshi==3)i=1;if(moshi==4)i=1;}
if(add==1){yi=10;er=moshi;san=10;si=11;wu=sdsj/10;liu=sdsj%10;qi=0;ba=0;if(s5==1){s5=0;moshi++;if(moshi==5)moshi=1;}if(s4==1){s4=0;moshi--;if(moshi==0)moshi=4;}}
if(add==2){yi=10;er=moshi;san=10;si=11;wu=sdsj/10;liu=sdsj%10;qi=0;ba=0;if(s5==1){s5=0;sdsj=sdsj+1;if(sdsj==13)sdsj=12;}if(s4==1){s4=0;sdsj=sdsj-1;if(sdsj==3)sdsj=4;}}
if(add==0){yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;}
if((s4==1)&&(add==0)){yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=10;ba=liangdu;}
}
}
void Timer0Init(void) //1毫秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xCD; //设置定时初值
TH0 = 0xD4; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
void zd() interrupt 1
{
tt++;ttt++;
if(liangdu==1)
{
if(ttt<20)
{
if(tt==(sdsj*100))
{
tt=0;
if(moshi==1){if(i==8)i=0;P2=0x80;P0=ledd[i];i++;}
if(moshi==2){if(i==-1)i=8;P2=0x80;P0=ledd[i];i--;}
if(moshi==3){if(i==5)i=1;if(i==1){P2=0x80;P0=0x7e;}if(i==2){P2=0x80;P0=0xbd;}if(i==3){P2=0x80;P0=0xdb;}if(i==4){P2=0x80;P0=0xe7;}i++;}
if(moshi==4){if(i==5)i=1;if(i==1){P2=0x80;P0=0xe7;}if(i==2){P2=0x80;P0=0xdb;}if(i==3){P2=0x80;P0=0xbd;}if(i==4){P2=0x80;P0=0x7e;}i++;}
}
}
if((ttt>=2)&&(ttt<10)){P2=0x80;P0=0xff;}
}
if(liangdu==2)
{
if(ttt<20)
{
if(tt==(sdsj*100))
{
tt=0;
if(moshi==1){if(i==8)i=0;P2=0x80;P0=ledd[i];i++;}
if(moshi==2){if(i==-1)i=8;P2=0x80;P0=ledd[i];i--;}
if(moshi==3){if(i==5)i=1;if(i==1){P2=0x80;P0=0x7e;}if(i==2){P2=0x80;P0=0xbd;}if(i==3){P2=0x80;P0=0xdb;}if(i==4){P2=0x80;P0=0xe7;}i++;}
if(moshi==4){if(i==5)i=1;if(i==1){P2=0x80;P0=0xe7;}if(i==2){P2=0x80;P0=0xdb;}if(i==3){P2=0x80;P0=0xbd;}if(i==4){P2=0x80;P0=0x7e;}i++;}
}
}
if((ttt>=4)&&(ttt<10)){P2=0x80;P0=0xff;}
}
if(liangdu==3)
{
if(ttt<20)
{
if(tt==(sdsj*100))
{
tt=0;
if(moshi==1){if(i==8)i=0;P2=0x80;P0=ledd[i];i++;}
if(moshi==2){if(i==-1)i=8;P2=0x80;P0=ledd[i];i--;}
if(moshi==3){if(i==5)i=1;if(i==1){P2=0x80;P0=0x7e;}if(i==2){P2=0x80;P0=0xbd;}if(i==3){P2=0x80;P0=0xdb;}if(i==4){P2=0x80;P0=0xe7;}i++;}
if(moshi==4){if(i==5)i=1;if(i==1){P2=0x80;P0=0xe7;}if(i==2){P2=0x80;P0=0xdb;}if(i==3){P2=0x80;P0=0xbd;}if(i==4){P2=0x80;P0=0x7e;}i++;}
}
}
if((ttt>=6)&&(ttt<10)){P2=0x80;P0=0xff;}
}
if(liangdu==4)
{
if(ttt<20)
{
if(tt==(sdsj*100))
{
tt=0;
if(moshi==1){if(i==8)i=0;P2=0x80;P0=ledd[i];i++;}
if(moshi==2){if(i==-1)i=8;P2=0x80;P0=ledd[i];i--;}
if(moshi==3){if(i==5)i=1;if(i==1){P2=0x80;P0=0x7e;}if(i==2){P2=0x80;P0=0xbd;}if(i==3){P2=0x80;P0=0xdb;}if(i==4){P2=0x80;P0=0xe7;}i++;}
if(moshi==4){if(i==5)i=1;if(i==1){P2=0x80;P0=0xe7;}if(i==2){P2=0x80;P0=0xdb;}if(i==3){P2=0x80;P0=0xbd;}if(i==4){P2=0x80;P0=0x7e;}i++;}
}
}
if((ttt>=8)&&(ttt<10)){P2=0x80;P0=0xff;}
}
if(ttt==10)ttt=0;
}
void bzcsh()
{
P2=0XA0;P0=0X00;
P2=0X80;P0=0XFF;
P2=0XC0;P0=0XFF;
P2=0XFF;P0=0XFF;
}
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}
void anjian()
{
if(P30==0)
{
delay(7);
if(P30==0)
{
s7=!s7;
sdsj=iic_read(0x07);
}
while(!P30);
}
if(P31==0)
{
delay(7);
if(P31==0)
{
s6=1;
iic_write(0x07,sdsj);
}
while(!P31);
}
if(P32==0)
{
delay(7);
if(P32==0)
{
s5=1;
}
while(!P32);
}
if(P33==0)
{
delay(7);
if(P33==0)
{
s4=1;
}
}
if(P33==1)s4=0;
}
void smgduan1(uint yi,uint er)
{
P2=0XC0;
P0=0X01;
P2=0XFF;
P0=smgduan[yi];
delay(1);
P2=0XC0;
P0=0X02;
P2=0XFF;
P0=smgduan[er];
delay(1);
P2=0XC0;P0=0XFF;
P2=0XFF;P0=0XFF;
}
void smgduan2(uint san,uint si)
{
P2=0XC0;
P0=0X04;
P2=0XFF;
P0=smgduan[san];
delay(1);
P2=0XC0;
P0=0X08;
P2=0XFF;
P0=smgduan[si];
delay(1);
P2=0XC0;P0=0XFF;
P2=0XFF;P0=0XFF;
}
void smgduan3(uint wu,uint liu)
{
P2=0XC0;
P0=0X10;
P2=0XFF;
P0=smgduan[wu];
delay(1);
P2=0XC0;
P0=0X20;
P2=0XFF;
P0=smgduan[liu];
delay(1);
P2=0XC0;P0=0XFF;
P2=0XFF;P0=0XFF;
}
void smgduan4(uint qi,uint ba)
{
P2=0XC0;
P0=0X40;
P2=0XFF;
P0=smgduan[qi];
delay(1);
P2=0XC0;
P0=0X80;
P2=0XFF;
P0=smgduan[ba];
delay(1);
P2=0XC0;P0=0XFF;
P2=0XFF;P0=0XFF;
}
|