|
設置鬧鈴鍵第3下設置鬧鈴小時,第4下設置鬧鈴分鐘,第5下確定鬧鈴,第6下結束鬧鈴設置
時間到達設置的鬧鈴時,led燈開始流水,直到過了一分鐘后(鬧鈴沒有秒)led燈停止
可以設置鬧鐘,時鐘調節
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar abc[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar moshi=0,a=0,b=0,c=0,i=0,j=0,bb=0;
char sec = 00,min = 11,hou = 12,hou_nl = 0,min_nl = 0;
char moshi_num = 0;
char n = 0;
char Close_naozhong = 0;
sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit key4 = P1^3;
sbit key5 = P1^4;
sbit key6 = P1^5;
sbit key7 = P1^6;
#define led P3
void delay(uchar x)
{
while(x--);
}
void key(void)
{
if(key1 == 1)
delay(200);
if(key1 == 1)a = 1;
if(a == 1 && key1 == 0)
{
moshi++;
if(moshi > 5)moshi = 0;
a = 0;
moshi_num = moshi;
}
if(key2 == 1)
delay(200);
if(key2 == 1)bb = 1;
if(bb == 1 && key2 == 0)
{
if(moshi == 1)hou++;
if(moshi == 2)min++;
if(moshi == 3)hou_nl++;if(hou_nl > 23)hou_nl = 0;
if(moshi == 4)min_nl++;if(min_nl > 59)min_nl = 0;
bb = 0;
}
if(key3 == 1)
delay(200);
if(key3 == 1)c = 1;
if(c == 1 && key3 == 0)
{
if(moshi == 1)hou--;if(hou < 0)hou = 23;
if(moshi == 2)min--;if(min < 0)min = 59;
if(moshi == 3)hou_nl--;if(hou_nl < 0)hou_nl = 23;
if(moshi == 4)min_nl--;if(min_nl < 0)min_nl = 59;
c = 0;
}
if(key4 == 0)moshi = 5;
if(key4 == 1)moshi = moshi_num;
if(key5==0)
{
delay(200);
TR0 = 1;
}
if(key6==0)
{
delay(200);
TR0 = 0;
}
if(key7==0)
{
delay(200);
Close_naozhong = 1;
}
}
void t0_init(void)
{
TMOD = 0X01;
TH0 = 60536 / 256;
TL0 = 60536 % 256;
ET0 = 1;
EA = 1;
TR0 = 1;
}
void t0(void)interrupt 1
{
TH0 = 60536 / 256;
TL0 = 60536 % 256;
i++;
if(i == 200)
{
i = 0;
if(moshi == 0)sec++;
b = ~b;
}
if(sec > 59)
{
sec = 0;
min++;
}
if(min == 60)
{
min = 0;
hou++;
}
if(hou > 23)hou = 0;
}
void main(void)
{
t0_init();
led = 0;
while(1)
{
key();
P0 = 0xff;
if(moshi == 0)
{
switch(j)
{
case 0:P0 = abc[hou/10];P2 = ~0x01;break;
case 1:P0 = abc[hou%10]&(0x7f|b);P2 = ~0x02;break;
case 2:P0 = abc[min/10];P2 = ~0x04;break;
case 3:P0 = abc[min%10]&(0x7f|b);P2 = ~0x08;break;
case 4:P0 = abc[sec/10];P2 = ~0x10;break;
case 5:P0 = abc[sec%10];P2 = ~0x20;break;
}
}
if(moshi == 1)
{
switch(j)
{
case 0:P0 = abc[hou/10]|b;P2 = ~0x01;break;
case 1:P0 = abc[hou%10]&0x7f|b;P2 = ~0x02;break;
case 2:P0 = abc[min/10];P2 = ~0x04;break;
case 3:P0 = abc[min%10]&(0x7f|b);P2 = ~0x08;break;
case 4:P0 = abc[sec/10];P2 = ~0x10;break;
case 5:P0 = abc[sec%10];P2 = ~0x20;break;
}
}
if(moshi == 2)
{
switch(j)
{
case 0:P0 = abc[hou/10];P2 = ~0x01;break;
case 1:P0 = abc[hou%10]&(0x7f|b);P2 = ~0x02;break;
case 2:P0 = abc[min/10]|b;P2 = ~0x04;break;
case 3:P0 = abc[min%10]&0x7f|b;P2 = ~0x08;break;
case 4:P0 = abc[sec/10];P2 = ~0x10;break;
case 5:P0 = abc[sec%10];P2 = ~0x20;break;
}
}
if(moshi == 3)
{
switch(j)
{
case 0:P0 = abc[hou_nl/10]|b;P2 = ~0x01;break;
case 1:P0 = abc[hou_nl%10]&0x7f|b;P2 = ~0x02;break;
case 2:P0 = abc[min_nl/10];P2 = ~0x04;break;
case 3:P0 = abc[min_nl%10]&(0x7f|b);P2 = ~0x08;break;
case 4:P0 = 0xc6;P2 = ~0x10;break;
case 5:P0 = abc[1];P2 = ~0x20;break;
}
}
if(moshi == 4)
{
switch(j)
{
case 0:P0 = abc[hou_nl/10];P2 = ~0x01;break;
case 1:P0 = abc[hou_nl%10]&(0x7f|b);P2 = ~0x02;break;
case 2:P0 = abc[min_nl/10]|b;P2 = ~0x04;break;
case 3:P0 = abc[min_nl%10]&0x7f|b;P2 = ~0x08;break;
case 4:P0 = 0xc6;P2 = ~0x10;break;
case 5:P0 = abc[2];P2 = ~0x20;break;
}
}
if(moshi == 5)
{
switch(j)
{
case 0:P0 = abc[hou_nl/10];P2 = ~0x01;break;
case 1:P0 = abc[hou_nl%10]&(0x7f|b);P2 = ~0x02;break;
case 2:P0 = abc[min_nl/10];P2 = ~0x04;break;
case 3:P0 = abc[min_nl%10]&(0x7f|b);P2 = ~0x08;break;
case 4:P0 = 0xc6;P2 = ~0x10;break;
case 5:P0 = 0xc6;P2 = ~0x20;break;
}
}
j++;
if(j > 5)j = 0;
if(hou == hou_nl && min == min_nl && moshi<=2)
{
if( Close_naozhong == 0 )
{
led = 0x01<<n;
n++;
if(n > 8)
n = 0;
switch(j)
{
case 0:P0 = abc[hou/10]|b;P2 = ~0x01;break;
case 1:P0 = abc[hou%10]&0x7f|b;P2 = ~0x02;break;
case 2:P0 = abc[min/10]|b;P2 = ~0x04;break;
case 3:P0 = abc[min%10]&0x7f|b;P2 = ~0x08;break;
case 4:P0 = abc[sec/10]|b;P2 = ~0x10;break;
case 5:P0 = abc[sec%10]|b;P2 = ~0x20;break;
}
}
if( Close_naozhong == 1 )
led = 0x00;
}
else
{
led = 0;
Close_naozhong = 0;
}
}
}
|
評分
-
查看全部評分
|