标题: 数码管做电子表 [打印本页]

作者: 3lian    时间: 2014-2-26 19:17
标题: 数码管做电子表
显示格式:24小时制 比如 17 46 00(只有六个数码管)17点46分00秒。
          开始的时间可以任意确定;
          利用独立键盘来调电子表;

这个电子表的功能: 开始可以任意的显示时间,key1 可以调时针,key2可以调分针,key3调秒针,
key4 可以清零。

利用中断可以准确的定时一秒。

#include <reg52.H>
#define uint  unsigned int
#define uchar unsigned char  
uint m,n,g,num,shi,ge,bai,qia,wan,swa;
  l=19; k=46;

uchar code table1[]=
{0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
sbit dula=P2^6;
sbit wela=P2^7;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;

void delay()
{
uint i,j;
for(i=0;i<5;i++)
  for(j=0;j<100;j++);
}
void key_scan()
{
if(key1==0)
   {
     delay();
     if(key1==0)
   l++;
while(!key1);
}
     if(key2==0)
   {
     delay();
     if(key2==0)
   k++;
while(!key2);
}
   if(key3==0)
   {
     delay();
     if(key2==0)
   m++;
while(!key3);
}
  if(key4==0)
   {
     delay();
     if(key4==0)
{ l=0;k=0;m=0; }
while(!key4);

}
}


display(uchar swa, uchar wan,uchar qia, uchar bai,uchar shi,uchar ge)
{
wela=1;
P2=0Xff;
P2=0xfe;
wela=0;
dula=1;
P0=0XFF;  
P0=table1[swa];
dula=0;
delay();
wela=1;
P2=0Xff;
P2=0xfd;
wela=0;
dula=1;
P0=0XFF;  
P0=table1[wan];
dula=0;
delay();
wela=1;
P2=0Xff;
P2=0xfb;
wela=0;

       dula=1;
            P0=0XFF;  
P0=table1[qia];
dula=0;
    delay();
                wela=1;
P2=0Xff;
P2=0xf7;
wela=0;

         dula=1;
             P0=0XFF;  
P0=table1[bai];
dula=0;
    delay();

wela=1;
P2=0Xff;
P2=0xef;
wela=0;

         dula=1;
             P0=0XFF;  
P0=table1[shi];
dula=0;
    delay();


wela=1;
P2=0Xff;
P2=0xdf;
wela=0;

         dula=1;
             P0=0XFF;  
P0=table1[ge];
dula=0;
    delay();
}

void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;

EA=1;
ET0=1;
TR0=1;
while(1)
  {

key_scan();
    display(swa,wan,qia,bai,shi,ge);
    }
}


void T0_time()interrupt 1
    {
   TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
   g++;
           if(g==20)
   {
g=0;
m++;
if(m==60){m=0; k++;}
if(k==60){k=0;  l++;}
if(l==24) l=0;
ge=m;
            shi=m/10;
bai=k;
qia=k/10;
wan=l;
   swa=l/10;
   }

  }






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1