|
51hei.png (22.46 KB, 下載次數(shù): 74)
下載附件
2020-7-10 15:40 上傳
#include<stc15.h>
/*共陰數(shù)碼管編碼*/
unsigned char code tab1[]={
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
/*位選編碼*/
unsigned char code tab2[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char dis_buf[8]={0,0,0x40,0,0,0x40,0,0};
sbit duanxuan=P1^0;
/*按鍵位定義*/
sbit key0=P1^0;
sbit key1=P1^1;
sbit key2=P1^2;
sbit key3=P1^3;
sbit key4=P1^4;
sbit key5=P1^5;
sbit key6=P1^6;
sbit key7=P1^7;
/*秒、分、時(shí)的初始化*/
unsigned int tt=0;
unsigned char i=0;
char sec=0,fen=0,shi=12;
unsigned int sign=1;
/*延時(shí)函數(shù)*/
void delay(unsigned int n)
{
while(n--);
}
/*定時(shí)器0初始化函數(shù)*/
void chushihua() //1毫秒@12.000MHz
{
AUXR &= 0x7F; //定時(shí)器時(shí)鐘12T模式
TMOD &= 0xF0; //設(shè)置定時(shí)器16位自動(dòng)重載模式
TL0 = 0x18; //設(shè)置定時(shí)初值
TH0 = 0xFC; //設(shè)置定時(shí)初值
TR0 = 1; //定時(shí)器0開(kāi)始計(jì)時(shí)
EA=1;
ET0=1;
}
/*按鍵設(shè)定函數(shù)*/
void sheding()
{
if(key0==0)
{
delay(3500);
if(key0==0)
{
sign=0;
}
}
if(key1==0)
{
delay(3500);
if(key1==0)
{
sec++;
if(sec>59)
sec=0;
while(!key1);
}
}
if(key2==0)
{
delay(3500);
if(key2==0)
{
fen++;
if(fen>59)
fen=0;
while(!key2);
}
}
if(key3==0)
{
delay(3500);
if(key3==0)
{
shi++;
if(shi>23)
shi=0;
while(!key3);
}
}
if(key5==0)
{
delay(3500);
if(key5==0)
{
sec--;
if(sec<0)
sec=59;
while(!key5);
}
}
if(key6==0)
{
delay(3500);
if(key6==0)
{
fen--;
if(fen<0)
fen=59;
while(!key6);
}
}
if(key7==0)
{
delay(3500);
if(key7==0)
{
shi--;
if(shi<0)
shi=23;
while(!key7);
}
}
if(key4==0)
{
delay(3500);
if(key4==0)
{
sign=1;
}
}
}
/*顯示函數(shù)*/
void display()
{
P7=tab2[0];
P6=tab1[sec%10];
delay(3500);
P6=0x00;//消影
P7=tab2[1];
P6=tab1[sec/10];
delay(3500);
P6=0x00;//消影
P7=tab2[2];
P6=0x40;
delay(3500);
P6=0x00;//消影
P7=tab2[3];
P6=tab1[fen%10];
delay(3500);
P6=0x00;//消影
P7=tab2[4];
P6=tab1[fen/10];
delay(3500);
P6=0x00;//消影
P7=tab2[5];
P6=0x40;
delay(3500);
P6=0x00;//消影
P7=tab2[6];
P6=tab1[shi%10];
delay(3500);
P6=0x00;//消影
P7=tab2[7];
P6=tab1[shi/10];
delay(3500);
P6=0x00;//消影
}
/*主函數(shù)*/
void main(void)
{
chushihua();
while(1)
{
sheding();
display();
}
}
/*定時(shí)器0中斷函數(shù)*/
void time0() interrupt 1
{
if(sign)
{
tt++;
if(tt>=1000)
{
tt=0;
sec++;
if(sec>=60)
{
sec=0;
fen++;
if(fen>=60)
{
fen=0;
shi++;
if(shi>=24)
{
shi=0;
}
}
}
}
}
}
|
-
-
1.rar
2020-7-9 22:13 上傳
點(diǎn)擊文件名下載附件
86.54 KB, 下載次數(shù): 37
|