|
100黑幣
單片機上有八位共陰數碼管和一位共陽數碼管
1、可以顯示時分秒:xx-xx-xx 按鍵可調
2、按鍵后可切換至年月日 例如20191220 按鍵可調
3、單一以為的共陽數碼管顯示對應的星期數,比如星期一星期二
已經能夠寫出單一顯示時分秒的程序了。但是不知道該怎么寫才能切換到年月日 還要顯示星期數求大佬指點
感激不盡
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit we = P2^3;
sbit du = P2^2;
sbit S2 = P3^0;
sbit S3 = P3^1;
uchar counter,second,min,hour;
uchar code leddata[17]={0x3f , 0x06 , 0x5b ,0x4f , 0x66 , 0x6d ,0x7d ,
0x07 , 0x7f , 0x6f ,0x77 , 0x7c , 0x39 ,
0x5e , 0x79 , 0x71 , 0x00};
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for (y = 120;y > 0 ;y--);
}
void main()
{
TMOD = 0x10;// 定時器1工作模式1 16模式位定時器
TH1 = 0x4b;
TL1 = 0xfe;//定時50ms
TR1 = 1;//啟動定時器
while(1)
{
if(TF1 ==1)
{
TF1 = 0;
TH1 = 0x4b;
TL1 = 0xfe;
counter++;
}
if(counter == 19)
{
counter = 0;
second++;
if(second == 60)//記滿一分鐘
{
second = 0;
min++;
if(min == 60)//記滿一小時
{
min = 0;
hour++;
if(hour == 24)
{
hour = 0;
}
}
}
}
P1 = 0xff;
we = 1;
P1 = 0x7f;
we = 0;
du = 1;
P1 = leddata[second%10];
du = 0;
delay(1);
we = 1;
P1 = 0xbf;
we = 0;
du = 1;
P1 = leddata[second/10];
du = 0;
delay(1);
we = 1;
P1 = 0xef;
we = 0;
du = 1;
P1 = leddata[min%10];
du = 0;
delay(1);
we = 1;
P1 = 0xf7;
we = 0;
du = 1;
P1 = leddata[min/10];
du = 0;
delay(1);
we = 1;
P1 = 0xfd;
we = 0;
du = 1;
P1 = leddata[hour%10];
du = 0;
delay(1);
we = 1;
P1 = 0xfe;
we = 0;
du = 1;
P1 = leddata[hour/10];
du = 0;
delay(1);
we = 1;
P1 = 0xdf;
we = 0;
du = 1;
P1 = 0x40;
du = 0;
delay(1);
we = 1;
P1 = 0xfb;
we = 0;
du = 1;
P1 = 0x40;
du = 0;
delay(1);
if(S2 == 0)
{
delay(1);
if(S2 == 0)
{
delay(1);
if(S2 == 0)
{
min++;
if(min == 60)
{min = 0; hour++;}
while(!S2);
}
}
}
if(S3 == 0)
{
delay(1);
if(S3 == 0)
{
delay(1);
if(S3 == 0)
{
hour++;
if(hour == 24)
{hour = 0;}
while(!S3);
}
}
}
}
}
|
|