久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3527|回復: 1
收起左側

數碼管 時鐘 秒表 切換

[復制鏈接]
ID:75419 發表于 2015-4-26 21:25 | 顯示全部樓層 |閱讀模式
#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};
/********以下是延時函數********/
void Delay(int xms)                              
{
        int i,j;
        for(i=xms;i>0;i--)                     //i=xms即延時約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;        //千位表達式
        bai=num%1000/100;     //百位表達式
        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];         //送十位段數據
        Delay(5);
       
        P2=0xfe;        //打開第一位
        P0=seg_data[ge];           //送各位段數據
        Delay(5);
       
}
void  Display()   //時間
{  

  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)                          //時減
       {
              Delay(300);
                  hour--;beep();
                  if(hour==-1)          // 注意這里
                    hour=23;       
       }
         if(k3==0)                          //時加
       {
              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;   // 關閉  
TR0=1;
}
void  tirme1() interrupt  3
{
         TH1=(65536-8000)/256;
     TL1=(65536-8000)%256;
         aa1++;

    if(aa1==12)  //  跑秒
           {                 
                aa1=0;         //清零、、
            num++;
            if(num==9999)   // 設置顯示幾位,
                  {
                    num=0;
                  }
           }
         
}
void  tirme0() interrupt  1
{
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   aa++;
   if(aa==20)   //時間
   {
           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)          //調時間
    {
     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;  //時間停  秒表開始
                }
                if(flag==2)
                {
                        bzw=0;         //時間開始         秒表停
                        flag=0;  //清零
                }                                               
        }

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

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

回復

使用道具 舉報

ID:32941 發表于 2015-4-28 12:15 | 顯示全部樓層
51黑論壇有你更精彩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 刘玥大战28公分黑人 | 欧美一级黄色录像 | 亚洲色网址 | 人人看人人草 | 国产成人一区 | 欧美日韩综合网 | 黄色av免费 | 久草黄色 | 在线欧美| 香蕉视频一区二区三区 | 国产精品羞羞答答 | 99视频在线观看免费 | 青青视频网 | 中文字幕亚洲一区 | 欧美一区二区在线播放 | 国产欧美在线观看 | 久久精品6 | 欧美精品日韩 | www.久久 | 国产一级黄色录像 | 一级肉体全黄裸片 | 亚洲成人高清 | www.久久久久久 | www.欧美精品 | 亚洲国产欧美在线 | 成人毛片在线播放 | 午夜美女福利 | 四虎久久久 | 91视频在线 | 亚洲精品网站在线观看 | 久久老司机 | 精品福利在线观看 | 激情都市亚洲 | 激情91 | 亚洲高清视频在线观看 | 亚洲综合另类 | 91亚洲国产成人精品性色 | 91亚洲一区| 国产一区视频在线 | 在线免费观看av网站 | 99色在线|