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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2884|回復: 0
收起左側

自己制作的基于STC15單片機電子鐘

[復制鏈接]
ID:284550 發(fā)表于 2018-2-21 01:53 | 顯示全部樓層 |閱讀模式
#include "include.h"
uchar t0, count;
uint TimeCount;

void Timer0Init(void);  //2ms@11.0592MHz

void main()
{
Timer0Init();
IT0 = 1; //開放外部中斷0
EX0 = 1;
while(1)
{
  while(Setflag==1) //設置模式
  {
   Seting();
   if(DisplayTime)
   {
    disbuf[7] = t_display[hour/10];
    disbuf[6] = t_display[hour%10];
    disbuf[5] = t_display[17];
    disbuf[4] = t_display[min/10];
    disbuf[3] = t_display[min%10];
    disbuf[2] = t_display[17];
    disbuf[1] = t_display[sec/10];
    disbuf[0] = t_display[sec%10];
   }
   else if(DisplayDate)
   {
    disbuf[7] = t_display[2];
    disbuf[6] = t_display[0];
    disbuf[5] = t_display[year/10];
    disbuf[4] = t_display[year%10];
    disbuf[3] = t_display[month/10];
    disbuf[2] = t_display[month%10];
    disbuf[1] = t_display[day/10];
    disbuf[0] = t_display[day%10];   
   }
  }
  while(Setflag==0) //工作模式
  {
   if(DisplayTime)
   {
    disbuf[7] = t_display[hour/10];
    disbuf[6] = t_display[hour%10];
    disbuf[5] = t_display[17];
    disbuf[4] = t_display[min/10];
    disbuf[3] = t_display[min%10];
    disbuf[2] = t_display[17];
    disbuf[1] = t_display[sec/10];
    disbuf[0] = t_display[sec%10];
   }
   else if(DisplayDate)
   {
    disbuf[7] = t_display[2];
    disbuf[6] = t_display[0];
    disbuf[5] = t_display[year/10];
    disbuf[4] = t_display[year%10];
    disbuf[3] = t_display[month/10];
    disbuf[2] = t_display[month%10];
    disbuf[1] = t_display[day/10];
    disbuf[0] = t_display[day%10];   
   }
  }
}
}
void Timer0Init(void)  //2ms@11.0592MHz
{
AUXR |= 0x80;  
TMOD &= 0xF0;  
TL0 = 0x9A;  
TH0 = 0xA9;  
TF0 = 0;  
TR0 = 1;   
ET0 = 1;
EA  = 1;
}
//外部中斷0中斷
void Init0_ISR(void) interrupt 0
{
Setflag = ~Setflag; //設置標志位取反
}
//定時器0中斷
void Timer0_ISR(void) interrupt 1
{
if(++t0>7) t0 = 0;

if(Setflag==1) //設置時顯示
{
  if(++count == 250) //閃爍定時
  {
   count = 0;
   Flashflag=~Flashflag;
  }
  if(DisplayDate==1) //正在設置日期
  {
   if(Flashflag)
   {
    if(SetNUM==0 && (t0==4 || t0==5))
    {
     if(t0==4) DigitalDisplay(t0, 16, 1);
     else if(t0==5) DigitalDisplay(t0, 16, 0);
    }
    else if(SetNUM==1 && (t0==2 || t0==3))
    {
     if(t0==2) DigitalDisplay(t0, 16, 1);
     else if(t0==3) DigitalDisplay(t0, 16, 0);
    }
    else if(SetNUM==2 && (t0==0 || t0==1))
    {
     DigitalDisplay(t0, 16, 0);
    }
    else
    {
     if(t0==2 || t0==4)
      TDisplay(t0,1);
     else
      TDisplay(t0,0);
    }
   }
   else
   {
    if(t0==2 || t0==4)
     TDisplay(t0,1);
    else
     TDisplay(t0,0);
   }
  }
  
  else if(DisplayTime==1) //正在設置時間
  {
   if(Flashflag)
   {
    if(SetNUM==3 && (t0==6 || t0==7))
     DigitalDisplay(t0, 16, 0);
    else if(SetNUM==4 && (t0==3 || t0==4))
     DigitalDisplay(t0, 16, 0);
    else if(SetNUM==5 && (t0==0 || t0==1))
     DigitalDisplay(t0, 16, 0);
    else TDisplay(t0, 0);
   }
   else
    TDisplay(t0, 0);
  }
}

else //工作時顯示
{
  if(++TimeCount==500)
  {
   TimeCount = 0;
   if(++sec == 60) //秒加一
   {
    sec = 0;
    if(++min == 60) //分加一
    {
     min = 0;
     if(++hour == 24) //時加一
     {
      hour = 0;
      if(month==2) //如果月份等于2
      {
       if((year/4==0 && year/100!=0) || year/400==0)
       {
        if(++day>29)
        {
         day = 1; //閏年2月
         month++;
        }
       }
       else
        if(++day>28)
        {
         day = 1; //平年2月
         month++;
        }
      }
      else if(month==4 || month==6 || month==9 || month==11) //小月
      {
       if(++day>30)
       {
        day = 1;
        month++;
       }
      }
      else
      {
       if(++day>31) //大月
       {
        day = 1;
        if(++month>12)
        {
         month = 1;
         if(++year>99) //年份大于99
         {
          year = 0;
         }
        }
       }
      }
     }
    }
   }
  }
  if(sec>=55) //當秒數(shù)大于55時,顯示日期
  {
   DisplayTime = 0;
   DisplayDate = 1;
   if(t0==2 || t0==4)
    TDisplay(t0,1);
   else
    TDisplay(t0,0);
  }
  else //否則顯示時間
  {
   DisplayTime = 1;
   DisplayDate = 0;
   
   if(++count == 250) //閃爍定時
   {
    count = 0;
    Flashflag=~Flashflag;
   }
   //顯示時間
   if((t0==2 || t0==5) && Flashflag)
    DigitalDisplay(t0, 16, 0);
   else
    TDisplay(t0, 0);
  }
}
}

Clock.rar

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

回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日碰狠狠躁久久躁婷婷 | 久久精品一区 | 国产综合久久 | 久久伊人久久 | 久久精品一级 | 国产在线观看一区二区三区 | 亚洲一区国产精品 | 精品一区二区三区中文字幕 | 国产区在线免费观看 | 96久久久久久 | 国产精品国产成人国产三级 | 欧美黄色绿像 | 久久国产精品99久久久大便 | 亚洲成av人片在线观看 | 国产99久久精品 | 五月天国产在线 | 国产精品二区三区在线观看 | 久久国产精品视频 | 国产一区二区自拍 | 久久青视频 | 精品久久久一区二区 | 亚洲精品自在在线观看 | 精品九九久久 | 日韩伦理一区二区 | 免费黄色a视频 | 久久九九免费 | 国产精品久久久久久久久久久久 | 久久99久久98精品免观看软件 | 亚洲精品一区二区三区蜜桃久 | 国内在线视频 | 国产精品一区二区三区在线 | 精品国产一区二区三区久久久久久 | 国产成人精品久久久 | 亚洲综合字幕 | 国产成人小视频 | 精品国产乱码久久久久久闺蜜 | 日韩一区二区福利视频 | 久久99久久98精品免观看软件 | 国产男女精品 | 精品欧美一区免费观看α√ | 区一区二区三在线观看 |