您的位置:首页 > 其它

数码管只用延时函数显示时间

2014-07-07 16:13 288 查看
#include<reg52.h>

sbit duan=P2^2;

sbit wei=P2^3;

unsigned char code d[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   //duan

unsigned char code w[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

char tt[8];

void delay(unsigned int a)//晶振11.996345  100个125约1毫秒

{

 int i,j;

 for(j=0;j<a;j++)

 for(i=0;i<125;i++);



void main()

{

 int sz1,sz2,mz1,i,mz2,fz1,fz2,num,Num,flag;

 sz1=2;  //改这些数可以使初始值改变sz:时钟 fz:分钟 mz:秒钟

 sz2=0;

 fz1=2;

 fz2=0;

 Num=1;

 flag=Num;

 while(1)

 {

 for(i=0;i<8;i++)

 {

     num++;

     if(num%800==0)  //想让秒钟转快一点,把这数字变小!

     Num++;

    if(num>=50000)

    num=0;

    if(Num!=flag)

    { flag=Num;

   if(Num>59)

    Num=0;

    mz1=Num/10;

    mz2=Num%10;

    if(mz1==0&&mz2==0)

    fz2++;

    if(fz2>9)

    {

     fz2=0;fz1++;

    }

    if(fz1>5)

    {

     fz1=0;

     sz2++;

    }   

   // if(fz1==0&&fz2==0&&mz1==0&&mz2==0)

   //  sz2++;

     if(sz2>9)

     {

      sz1++;

      sz2=0;

     }

     if(sz1==2&&sz2==4)

     sz1=sz2=0;

    }

 

   tt[0]=d[sz1];

   tt[1]=d[sz2];

   tt[2]=0x40;

   tt[3]=d[fz1];

   tt[4]=d[fz2];

   tt[5]=0x40;

   tt[6]=d[mz1];

   tt[7]=d[mz2];

 

   P0=w[i];

   wei=1;

   wei=0;

 

   P0=tt[i];

   duan=1 ;

   duan=0;

 

    delay(2);  

 }

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: