找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3500|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

數(shù)碼管 時(shí)鐘 秒表 切換

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:75419 發(fā)表于 2015-4-26 21:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar hour=        0,min=0,sec=0,qian,bai,shi,ge;      
int  aa,num,aa1,kk,k=0;
int  bzw=0,flag=0,ks=0;
sbit        k1 = P3^0;    //功能鍵                 
sbit        k2 = P3^1;     //減                  
sbit        k3 = P3^2;      //加               
sbit        k4 = P3^3;   
sbit        k5 = P3^4;                    
sbit        k6 = P3^5;     
sbit        k7 = P3^6;     
sbit  DELL=P1^5;           //響鈴         
uchar code seg_data[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5c,0x79,0x71,0X40};
/********以下是延時(shí)函數(shù)********/
void Delay(int xms)                              
{
        int i,j;
        for(i=xms;i>0;i--)                     //i=xms即延時(shí)約xms毫秒
                for(j=110;j>0;j--);
}
void  beep() //蜂鳴器
{
   int i;              
        for(i=0;i<10;i++)                 
        {
          DELL=~DELL;
           Delay(10);   
         }   
}
void miaobiao()        //跑秒
{
       
        qian=num/1000;        //千位表達(dá)式
        bai=num%1000/100;     //百位表達(dá)式
        shi=num%100/10;
        ge=num%10;
       
        P2=0xf7;       //打開第四位
        P0=seg_data[qian];
        Delay(5);

        P2=0xfb;        //打開第三位
        P0=seg_data[bai];
    Delay(5);

        P2=0xfd;          //打開第二位
        P0=seg_data[shi];         //送十位段數(shù)據(jù)
        Delay(5);
       
        P2=0xfe;        //打開第一位
        P0=seg_data[ge];           //送各位段數(shù)據(jù)
        Delay(5);
       
}
void  Display()   //時(shí)間
{  

  P0=0x00;
  P0=seg_data[sec%10];
  P2=0xfe;
  Delay(1);

  P0=0x00;
  P0=seg_data[sec/10];
  P2=0xfd;
  Delay(1);

  P0=0x40;
  P2=0xfb;                                        // 顯示--
  Delay(1);

  P0=0x00;
  P0=seg_data[min%10];
  P2=0xf7;
  Delay(1);  
  P0=0x00;
  P0=seg_data[min/10];
  P2=0xef;
  Delay(1);

  P0=0x40;
  P2=0xdf;                           // 顯示--
  Delay(1);

  P0=0x00;
  P0=seg_data[hour%10];
  P2=0xbf;
  Delay(1);        
  P0=0x00;
  P0=seg_data[hour/10];
  P2=0x7f;
  Delay(1);

}
void   tiao()
{
   if(k2==0)               
    {
          Delay(5);
          if(k2==0)
          while(!k2)         
      {
          beep();
          TR1=1;
          }
         }
if(k3==0)                       
    {
         Delay(5);
         if(k3==0)
         while(!k3)         
      {
          beep();
          TR1=0;
          }
         }          
if(k4==0)                       
    {
         Delay(5);
         if(k4==0)
         while(!k4)         
      {
          beep();
          num=0;
          }
         }       
}
void  Keyscan()           //按鍵
{
if(kk==1)
  {
    if(k2==0)                        //分減
    {
          Delay(300);         
     min--;beep();
          if(min==-1)
            min=59;       
         }
         if(k3==0)                        //分加
    {
         Delay(300);         
     min++;beep();
          if(min==60)
            min=0;       
         }
   }
if(kk==2)
   {
      if(k2==0)                          //時(shí)減
       {
              Delay(300);
                  hour--;beep();
                  if(hour==-1)          // 注意這里
                    hour=23;       
       }
         if(k3==0)                          //時(shí)加
       {
              Delay(300);
                  hour++;beep();
                  if(hour==24)
                    hour=0;       
           }
   }
   if(kk>2)
   {
     kk=0;
   }                                                                 
}
void init()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;

TH1=(65536-8000)/256;
TL1=(65536-8000)%256;
EA=1;
ET1=1;
ET0=1;
TR1=0;   // 關(guān)閉  
TR0=1;
}
void  tirme1() interrupt  3
{
         TH1=(65536-8000)/256;
     TL1=(65536-8000)%256;
         aa1++;

    if(aa1==12)  //  跑秒
           {                 
                aa1=0;         //清零、、
            num++;
            if(num==9999)   // 設(shè)置顯示幾位,
                  {
                    num=0;
                  }
           }
         
}
void  tirme0() interrupt  1
{
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   aa++;
   if(aa==20)   //時(shí)間
   {
           aa=0;
        sec++;             
        if(sec==60)
        {
         sec=0;
         min++;
         if(min==60)
         {
           min=0;
           hour++;
           if(hour==24)
           {
             sec=0;min=0;hour=0;
           }
         }
        }
   }
}
void main()
{
init();
while(1)
{
  Keyscan();
  tiao();
  if(k1==0)          //調(diào)時(shí)間
    {
     Delay(5);
         if(k1==0)                  
         while(!k1)                
     beep();kk++;         
    }
  if (k7==0)         //切換
        {
                Delay(5);               
                if (k7==0)
                while(!k7);
                 flag++;
                if(flag==1)
                {
                    bzw=1;  //時(shí)間停  秒表開始
                }
                if(flag==2)
                {
                        bzw=0;         //時(shí)間開始         秒表停
                        flag=0;  //清零
                }                                               
        }

  if (bzw==0)
  Display();
  if (bzw==1)
  miaobiao();
}
}

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:32941 發(fā)表于 2015-4-28 12:15 | 只看該作者
51黑論壇有你更精彩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表