#include<reg52.h>
#include<intrins.h>
#include"define.h"
#include"ds18b20.h"
sbit key4 = P1^4;
sbit key5 = P1^5;
sbit key6 = P1^6;
sbit key7 = P1^7;
sbit PWM = P1^1;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x00,0x39};
uchar tt_table = 0x39;
uchar flag = 0;
uchar flag_11 = 0;
uchar flag_22 = 0;
uchar flag_33 = 0;
int time;
uchar huha = 1;
uchar num = 0;
uchar nihao;
int count=2;
uchar huhu =0;
void timer0_init();
void delayms(uint xms)
{
uint i;
for(i=xms;i>0;i--);
}
void delay_ms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j= 110;j>0;j--);
}
/////////////////////////////
void display0()
{
P2=0xff;
P0=0x40;
P2=0x7f;
delayms(60);
P2=0xff;
}
//////////////////////////////
void display1(uchar th)
{
P2=0xff;
P0=table[th];
P2=0xbf;
delayms(60);
P2=0xff;
}
//////////////////////////////
void display2()
{
P2=0xff;
P0=0x40;
P2=0xdf;
delayms(60);
P2=0xff;
}
//////////////////////////////
void display4(uchar ch)
{
P2=0xff;
P0=table[ch];
P2=0xf7;
delayms(60);
P2=0xff;
}
//////////////////////////////
void display5(uint shi)
{
P2=0xff;
P0=table[shi];
P2=0xfb;
delayms(60);
P2=0xff;
}
//////////////////////////////
void display6(uint ge)
{P2=0xff;
P0=table[ge];
P2=0xfd;
delayms(60);
P2=0xff;
}
//////////////////////////////
void display7(uint qi)
{
P2=0xff;
P0=table[qi];
P2=0xfe;
delayms(60);
P2=0xff;
}
//////////////////////////////
void KEY_Scan()
{
if(key4 == 0)
{
delay_ms(10);
if(key4 == 0)
{
if(++flag == 1)
{
nihao = huha;
huha = 4;
}
if(flag == 2){flag =0;huha = nihao;}
}while(!key4);
}
if(key5==0)
{
delay_ms(2); //????????,??????????
if(key5==0)
{
if(++flag_11==1) {count = 2;huha = 1;}
if(flag_11 == 2){ count = 5;huha = 2;}
if(flag_11 == 3){ count = 7;huha = 3; flag_11 =0;}
}while(!key5);
}
if(key6 == 0)
{
delay_ms(10);
if(key6 == 0)
{
if(++flag_22 == 1){flag_22 =0;huha = 5;num = num + 60;if(num > 120)num=0;}
}while(!key6);
}
if(key7 == 0)
{
delay_ms(10);
if(key7 == 0)
{
if(++flag_33 == 1){flag_33 =0;huha = 5;num = 0;}
}while(!key7);
}
}
void main(void)
{
uchar kkll;
uchar readtemp;
timer0_init();
PWM = 1;
while(1)
{
KEY_Scan();
if(huha == 1 ||huha == 2 || huha == 3)
{
kkll =huha;
}
if(num ==0){ TR0=0;PWM = 0;}
if(num>0) TR0=1;
// if(num >0 && flag == 1) TR0 = 0;
switch(huha)
{
case 1:
P2=0xff;
display0();
delayms(5);
///////////////
display1(1);
delayms(5);
///////////////
display2();
delayms(5);
display4((num/1000)%10);
delayms(5);
///////////////
display5(num/100%10);
delayms(5);
///////////////
display6(num/10%10);
delayms(5);
///////////////
display7(num%10);
delayms(5);
P2=0xff;
break;
case 2:
P2=0xff;
display0();
delayms(5);
///////////////
display1(2);
delayms(5);
///////////////
display2();
delayms(5);
display4((num/1000)%10);
delayms(5);
///////////////
///////////////
display5(num/100%10);
delayms(5);
///////////////
display6(num/10%10);
delayms(5);
///////////////
display7(num%10);
delayms(5);
P2=0xff;
break;
case 3:
P2=0xff;
display0();
delayms(5);
///////////////
display1(3);
delayms(5);
///////////////
display2();
delayms(5);
display4((num/1000)%10);
delayms(5);
///////////////
///////////////
display5(num/100%10);
delayms(5);
///////////////
display6(num/10%10);
delayms(5);
///////////////
display7(num%10);
delayms(5);
P2=0xff;
break;
case 4:
P2=0xff;
P2 = 0xff;
readtemp = read_temperature();
display0();
delayms(20);
///////////////
display1(4);
delayms(20);
///////////////
display2();
delayms(20);
///////////////
display5(readtemp/10);
delayms(20);
///////////////
display6(readtemp%10);
delayms(20);
///////////////
display7(11);
delayms(20);
P2=0xff;
break;
case 5:
P2=0xff;
display0();
delayms(5);
///////////////
display1(kkll);
delayms(5);
///////////////
display2();
delayms(5);
display4((num/1000)%10);
delayms(5);
///////////////
///////////////
display5(num/100%10);
delayms(5);
///////////////
display6(num/10%10);
delayms(5);
///////////////
display7(num%10);
delayms(5);
P2=0xff;
break;
}
}
}
/***********???0???***********/
void timer0_init()
{
TMOD=0x01; //???0?????1
TH0=(65536-100)/256;
TL0=(65536-100)%256;
TR0=1;
ET0=1;
EA=1;
}
/**************??0????******************/
void timer0_int() interrupt 1
{
TR0=0; //?????????,?????
TH0=(65536-100)/256;
TL0=(65536-100)%256;
TR0=1;
time++;
huhu++;
if(huhu == 10)huhu = 0;
if(huhu<count) //count????
{
PWM=1; //?????
}
else
PWM=0;
if(time>=10000)
{
time=0;
if(num>0)num--;
}
}
|