iuoiu.PNG (329.3 KB, 下載次數: 30)
下載附件
2020-6-17 19:00 上傳
#include <reg51.h> //???#include <uart.h>
#define uchar unsigned char
#define uint unsigned int //???
uchar flag=0;
uchar Sendnum=0;
uchar num=0;
uchar Receivedata[6];
uchar data buf[4]; //??????
uchar data sec_dx=20; //?????
uchar data sec_nb=30; //?????
uchar data set_timedx=20; //?????????
uchar data set_timenb=30; //?????????
int n;
uchar data countt0,countt1;//???0????
//??6???
sbit k4=P3^7; //????
sbit k1=P3^5; //???
sbit k2=P3^6; //???
sbit k3=P3^4; //??
sbit k5=P3^1; //??
sbit k6=P1^5; //????
sbit Red_nb=P2^6; //??????
sbit Yellow_nb=P2^5; //??????
sbit Green_nb=P2^4; //??????
sbit Red_dx=P2^3; //??????
sbit Yellow_dx=P2^2; //??????
sbit Green_dx=P2^1; //??????
sbit Buzz=P3^0;
bit set=0; //????????? =1?,??,=0?,??
bit dx_nb=0; //???????
bit shanruo=0; //?????
bit yejian=0; //?????????
uchar code table[11]={ //??????
0x3f, //--0
0x06, //--1
0x5b, //--2
0x4f, //--3
0x66, //--4
0x6d, //--5
0x7d, //--6
0x07, //--7
0x7f, //--8
0x6f, //--9
0x00 //--NULL
};
//???????
void delay(int ms); //?????
void key(); //???????
void key_to1(); //??????
void key_to2();
void key_to3();
void display(); //?????
void logo(); //??LOGO
void Buzzer();
//???
void main()
{
TMOD=0X11; //?????
TH1=0X3C;
TL1=0XB0;
TH0=0X3C; //???0??? 0.05S
TL0=0XB0;
EA=1; //????
ET0=1; //???0????
ET1=1; //???1????
TR0=1; //????0
TR1=0; //????1
EX0=1; //?????0
EX1=1; //?????1
logo(); //?????
P2=0Xc3; // ??????,????,????
sec_nb=sec_dx+5; //????????????5?
while(1) //???
{
key(); //????????
display(); //??????
}
}
//???????
void key(void) //???????
{
if(k1!=1) //?K1(???)???
{
display(); //????,??????
if(k1!=1) //??????
{
TR0=0; //????
shanruo=0; //??????
P2=0x00; //???
TR1=0; //????1
if(set==0) //?????
set_timedx++; //???1S
else
set_timenb++; //???1S
if(set_timenb==100)
set_timenb=1;
if( set_timedx==100)
set_timedx=1; //??100?1
sec_nb=set_timenb ; //???????????
sec_dx=set_timedx;
do
{
display(); //????,????
}
while(k1!=1); //??????
}
}
if(k2!=1) //?K2(???)?????
{
display(); //????,??????
if(k2!=1) //??????
{
TR0=0; //????0
shanruo=0; //??????
P2=0x00; //???
TR1=0; //????1
if(set==0)
set_timedx--; //???1S
else
set_timenb--; //???1S
if(set_timenb==0)
set_timenb=99;
if( set_timedx==0 )
set_timedx=99; //??1??99
sec_nb=set_timenb ; //???????????
sec_dx=set_timedx;
do
{
display(); //????,????
}
while(k2!=1); //??????
}
}
if(k3!=1) //?K3(??)????
{
display(); //????,??????
if(k3!=1) //??????
{
TR0=1; //?????0
sec_nb=set_timenb; //?????,?????????
sec_dx=set_timedx; //????????
TR1=0; //????1
if(set==0) //?????0?
{
P2=0X00; //???
Green_dx=1; //?????
Red_nb=1; //?????
sec_nb=sec_dx+5; //????
}
else
{
P2=0x00; //????,????
Green_nb=1;
Red_dx=1;
sec_dx=sec_nb+5;
}
}
}
if(k4!=1) //?K4(??)???
{
display(); //????,??????
if(k4!=1) //??????
{
TR0=0; //????0
set=!set; //??set???,???????
TR1=0; //????1
dx_nb=set;
do
{
display(); //????,????
}
while(k4!=1); //??????
}
}
if(k5!=1) //?K5(??)????
{
display(); //????,??????
if(k5!=1) //??????
{
TR0=0; //????
P2=0x00; //???
Red_dx=1;
Red_nb=1; //?????
TR1=0;
sec_dx=00; //?????????00
sec_nb=00;
do
{
display(); //????,????
}
while(k5!=1); //??????
}
}
if(k6!=1) //?K6(????)??
{
display(); //????,??????
if(k6!=1) //??????
{
TR0=0; //????
P2=0x00;
TR1=1;
sec_dx=00; //?????????00
sec_nb=00;
do
{
display(); //????,????
}
while(k6!=1); //??????
}
}
}
void display(void) //?????
{
buf[1]=sec_nb/10; //?1? ?????
buf[2]=sec_nb%10; //?2? ?????
buf[3]=sec_dx/10; //?3? ?????
buf[0]=sec_dx%10; //?4? ?????
P1=0xff; // ??????
P0=0x00; ////???
P1=0xfe; //??LED1
P0=table[buf[1]]; //?????????????
delay(1); //??
P1=0xff; //???
P0=0x00; //???
P1=0xfd; //??LED2
P0=table[buf[2]]; //?????????????
delay(1); //??
P1=0xff; //???
P0=0x00; //???
P1=0Xfb; //??LED3
P0=table[buf[3]]; //?????????????
delay(1); //??
P1=0xff; //???
P0=0x00; //???
P1=0Xf7; //??LED4
P0=table[buf[0]]; //?????????????
delay(1); //??
}
void time0(void) interrupt 1 using 1 //???????
{
TH0=0X3C; //????
TL0=0XB0; //12m??50ms//????
TR0=1; //???????
countt0++; //?????1
if(countt0==10) //??10?????
{
if((sec_nb<=5)&&(dx_nb==0)&&(shanruo==1)) //?????
{
Green_dx=0;
Yellow_dx=0;
Buzz=0; //????
}
if((sec_dx<=5)&&(dx_nb==1)&&(shanruo==1)) //?????
{
Green_nb=0;
Yellow_nb=0;
Buzz=0; //????
}
}
if(countt0==20) // ???????=20?(?1??)
{ countt0=0; //?????
sec_dx--; //?????1
sec_nb--; //?????1
if((sec_nb<=5)&&(dx_nb==0)&&(shanruo==1)) //?????
{
Green_dx=0;
Yellow_dx=1;
Buzz=1; //????
}
if((sec_dx<=5)&&(dx_nb==1)&&(shanruo==1)) //?????
{
Green_nb=0;
Yellow_nb=1;
Buzz=1; //????
}
if(sec_dx==0&&sec_nb==5) //???????0?,??5?,????????
{
sec_dx=5;
shanruo=1;
}
if(sec_nb==0&&sec_dx==5) //???????0?,??5?,????????
{
sec_nb=5;
shanruo=1;
}
if(dx_nb==0&&sec_nb==0) //???????????0?,
{
Buzz=1; //????
P2=0x00; //????????????
Green_nb=1;
Red_dx=1;
dx_nb=!dx_nb;
shanruo=0;
sec_nb=set_timenb; //??????????
sec_dx=set_timenb+5; //??????????
}
if(dx_nb==1&&sec_dx==0) //????????
{
P2=0X00; //????????????
Green_dx=1; //?????
Red_nb=1; //?????
dx_nb=!dx_nb; //??
shanruo=0; //??
sec_dx=set_timedx; //??????????
sec_nb=set_timedx+5; //??????????
}
}
}
void time1(void) interrupt 3 //???????
{
TH1=0X3C; //????
TL1=0XB0; //12m??50ms//????
countt1++; //?????1
if(countt1==10) // ???????=10?(?0.5?)
{
Yellow_nb=0; //?????
Yellow_dx=0; //?????
revset();if(control>0)break;//2é¿′óDûóD½óêÕμÄêy¾Y2¢′|àí11111111111111111111111111111111111111111111111
}
if(countt1==20) // ???????=20?(?1??)
{ countt1=0; //?????
Yellow_nb=1; //?????
Yellow_dx=1; //?????
revset();if(control>0)break;//2é¿′óDûóD½óêÕμÄêy¾Y2¢′|àí1221111111111111111111111111111111111111
}
}
//????0
void int0(void) interrupt 0 using 1 //???????
{
TR0=0; //????0
TR1=0; //????1
P2=0x00; //???
Green_dx=1; //???????
Red_nb=1; //???????
sec_dx=00; //?????????00
sec_nb=00;
}
//????1
void int1(void) interrupt 2 using 1 //???????
{
TR0=0; //????0
TR1=0; //????1
P2=0x00; //???
Green_nb=1; //????????
Red_dx=1; //???????
sec_nb=00; //?????????00
sec_dx=00;
}
void logo()//???Logo "- - - -"
{
for(n=0;n<50;n++) //????----50?
{
P0=0x40; //??“-”
P1=0xfe; //?????
delay(1); //??
P1=0xfd; //?????
delay(1); //??
P1=0Xfb; //?????
delay(1); //??
P1=0Xf7; //?????
delay(1); //??
P1 = 0xff; //???
}
}
void delay(int ms) //?????
{
uint j,k;
for(j=0;j<ms;j++) //??ms
for(k=0;k<124;k++); //??1?????
}
|