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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)源文件萬年歷

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:326672 發(fā)表于 2018-5-10 11:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<AT89X51.h>
unsigned char code dispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};//共陰極
unsigned char dispbitcode[]={0x00,0x21,0x42,0x63,0x84,0xA5,0xC6,0xE7};//管子的選擇
unsigned char dispbuf[8]={0,0,10,0,0,10,2,1};   //16為顯示間斷號符
unsigned char dispbym[8]={1,2,7,0,6,0,0,2};
unsigned char dispbitcnt;
unsigned char second;
unsigned char minite;
unsigned char hour;
unsigned char day;
unsigned char month;
unsigned char yearh;
unsigned char yearl;
unsigned int tcnt;
unsigned char mstcnt;
unsigned char i,j;
void main(void)
{
TMOD=0x02;                    //設(shè)置模式為定時器T0的模式2 (8位自動重裝計數(shù)初值的計數(shù)值)        
TH0=0x06;                     //設(shè)置計數(shù)器初值,靠TH0存儲重裝的計數(shù)值X0=256-250=6
TL0=0x06;
TR0=1;                //啟動T0
ET0=1;                //開啟定時器T0中斷允許
EA=1;                 //開啟中斷總控制
yearh=20;
yearl=6;
month=7;
day=21;
hour=12;              //初始值為12:00:00
while(1)       
{
  if(P0_0==0)                //掃描秒鐘按鈕
  {
   for(i=5;i>0;i--)            //按鈕抖動消除
   for(j=248;j>0;j--);       //計時
   if(P0_0==0)
   {
    second++;
    if(second==60)
    {
     second=0;
    }
    dispbuf[0]=second%10;
    dispbuf[1]=second/10;
    while(P0_0==0);
   }
  }

  if(P0_1==0)             //掃描分鐘按鈕
  {
   for(i=5;i>0;i--)      
   for(j=248;j>0;j--);
   if(P0_1==0)
   {
    minite++;
    if(minite==60)
    {
     minite=0;
    }
    dispbuf[3]=minite%10;
    dispbuf[4]=minite/10;
    while(P0_1==0);
   }
  }

  if(P0_2==0)           //掃描時鐘按鈕
  {
   for(i=5;i>0;i--)
   for(j=248;j>0;j--);
   if(P0_2==0)
   {
    hour++;
    if(hour==24)
    {
     hour=0;
    }
    dispbuf[6]=hour%10;
    dispbuf[7]=hour/10;
    while(P0_2==0);
   }
  }

  if(P0_3==0)
  {
   for(i=5;i>0;i--)
   for(j=248;j>0;j--);
   if(P0_3==0)
   {
    day++;
    if(month==2&&((yearl==0&&yearh%4==0)||(yearl!=0&&yearl%4==0))&&day==30)day=1;  
    else if(month==2&&day==29)day=1;
    else if((month==4||month==6||month==9||month==11)&&day==31)day=1;
    else if(day==32)day=1;
    dispbym[0]=day%10;
    dispbym[1]=day/10;
    while(P0_3==0);
   }
  }

  if(P0_4==0)
  {
   for(i=5;i>0;i--)
   for(j=248;j>0;j--);
   if(P0_4==0)
   {
    month++;
    if(month==13)month=1;
    dispbym[2]=month%10;
    dispbym[3]=month/10;
    while(P0_4==0);
   }
  }

  if(P0_5==0)
  {
   for(i=5;i>0;i--)
   for(j=248;j>0;j--);
   if(P0_5==0)
   {
    yearl++;
    if(yearl==100)
    {
     yearl=0;
     yearh++;
     if(yearh==100)yearh=20;
    }
    dispbym[4]=yearl%10;
    dispbym[5]=yearl/10;
    dispbym[6]=yearh%10;
    dispbym[7]=yearh/10;
    while(P0_5==0);
   }
  }

}
}

void t0(void)interrupt 1 using 0   //t0的中斷程序
{
mstcnt++;
if(mstcnt==8)                    //8次250us為2ms,即每隔2ms掃描一個數(shù)碼管
{
  mstcnt=0;
  P1=dispcode[dispbuf[dispbitcnt]];
  P2=dispcode[dispbym[dispbitcnt]];
  P3=0xff;
  P3=dispbitcode[dispbitcnt];          //管子的選擇
  dispbitcnt++;                    
  if(dispbitcnt==8)
  {
   dispbitcnt=0;
  }
}
tcnt++;
if(tcnt==4000)                    //定時器的定時計數(shù),4000次250us為1秒
{
  tcnt=0;
  second++;
  if(second==60)                  //從秒到時層層嵌套,程序較為精練
  {
   second=0;
   minite++;
   if(minite==60)
   {
    minite=0;
        hour++;
        if(hour==24)
        {
         hour=0;
         day++;
         if(month==2&&((yearl==0&&yearh%4==0)||(yearl!=0&&yearl%4==0))&&day==30)day=1;  
     else if(month==2&&day==29)day=1;
     else if((month==4||month==6||month==9||month==11)&&day==31)day=1;
     else if(day==32)day=1;
         if(day==1)
     {
          month++;
          if(month==13)
          {
           month=1;
           yearl++;
           if(yearl==100)
           {
            yearl=0;
            yearh++;
                if(yearh==100)
                {
                 yearh=20;
                }
           }
          }
         }
        }
   }
  }
  dispbuf[0]=second%10;          //送顯示數(shù)據(jù)
  dispbuf[1]=second/10;

  dispbuf[3]=minite%10;
  dispbuf[4]=minite/10;

  dispbuf[6]=hour%10;
  dispbuf[7]=hour/10;

  dispbym[0]=day%10;
  dispbym[1]=day/10;

  dispbym[2]=month%10;
  dispbym[3]=month/10;

  dispbym[4]=yearl%10;
  dispbym[5]=yearl/10;

  dispbym[6]=yearh%10;
  dispbym[7]=yearh/10;
}
}


51單片機(jī)數(shù)碼管顯示萬年歷proteus仿真.rar

91.81 KB, 下載次數(shù): 3, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲在线视频 | 中文字幕在线播放不卡 | 欧美精品久久久久久久久久 | 在线观看免费毛片 | 亚洲精品第一 | av毛片| 亚洲精品区 | 91在线精品秘密一区二区 | 国内精品视频在线观看 | 看av网址 | 国产精品久久久久久久岛一牛影视 | 日韩在线一区二区 | 中文字幕日韩欧美一区二区三区 | 国产精品久久国产精品久久 | 可以免费观看的av片 | 久久精品国产免费看久久精品 | 日本一二三区电影 | 伊人网站| 国产亚洲精品精品国产亚洲综合 | 亚洲天天干 | 国产精品久久国产愉拍 | 91欧美精品成人综合在线观看 | 日本中文字幕在线视频 | 亚洲一区二区三区高清 | 久久视频精品 | 国产羞羞视频在线观看 | 精品91久久 | 综合久久av | 日韩一区二区av | 国产精品美女在线观看 | 亚洲天堂久久新 | 国产福利在线小视频 | 欧美影院 | 在线看无码的免费网站 | 日韩精品一区二区三区在线 | 亚洲精品久久久久久首妖 | 精品少妇一区二区三区在线播放 | 国户精品久久久久久久久久久不卡 | 久久久久久久久久久国产 | 亚洲不卡av在线 | 亚洲成人三区 |