在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)帶閏年補(bǔ)償?shù)囊粋€(gè)時(shí)鐘程序

      51單片機(jī)帶閏年補(bǔ)償?shù)囊粋€(gè)時(shí)鐘程序

      作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏
      這是我教的學(xué)生寫(xiě)的帶閏年補(bǔ)償的一個(gè)時(shí)鐘,比我自己寫(xiě)成的還有成就感


      #include
      #include
      #define uchar unsigned char
      #define uint unsigned int
      uchar S1num;
      sbit RS=P1^0;
      sbit RW=P1^1;
      sbit EN=P1^2;
      sbit GND=P2^4;
      sbit K2=P2^3;
      sbit K4=P2^2;
      sbit K6=P2^1;
      uchar x,num,shi,fen,miao,day,mon,year,week,count;
      void display();
      void write_com(uchar com)
      {
      RS=0;
      EN=0;
      P0=com;
      delay(5);
      //RW=0;
      EN=1;
      delay(5);
      EN=0;

      }
      void write_dat(uchar dat)
      {
      RS=1;
      EN=0;
      P0=dat;
      delay(5);
      //RW=0;
      EN=1;
      delay(5);
      EN=0;

      }
      void timer0()interrupt 1
      {
      TH0=(65536-45872)/256;//45872這個(gè)值是11.0592MHz產(chǎn)生一次中斷,最接近50Ms,如果是12MHz請(qǐng)用50000
      TL0=(65536-45872)%256;
      count++;
      }
      write_sfm(uchar add,uchar date)
      {
      uchar shi,ge;
      write_com(0x80+0x40+add);
      shi=date/10;
      ge=date%10;
      write_dat(0x30+shi);
      write_dat(0x30+ge);
      }
      write_ymd(uchar add,uchar date)
      {
      uchar shi,ge;
      write_com(0x80+add);
      shi=date/10;
      ge=date%10;
      write_dat(0x30+shi);
      write_dat(0x30+ge);
      }
      write_week(week)
      {
      switch(week)
      {
      case 1:write_dat(M);
      write_dat(O);
      write_dat(N);
      break;
      case 2:write_dat(T);
      write_dat(U);
      write_dat(E);
      break;
      case 3:write_dat(W);
      write_dat(E);
      write_dat(N);
      break;
      case 4:write_dat(T);
      write_dat(H);
      write_dat(U);
      break;
      case 5:write_dat(F);
      write_dat(R);
      write_dat(I);
      break;
      case 6:write_dat(S);
      write_dat(A);
      write_dat(T);
      break;
      case 7:write_dat(S);
      write_dat(U);
      write_dat(N);
      break;
      }
      }
      void init()
      {
      EN=0;
      RW=0;
      write_com(0x38);//顯示模式
      delay(5);
      write_com(0x0c);//開(kāi)顯示
      write_com(0x06);//光標(biāo)自加
      write_com(0x80);//指針左一
      write_com(0x01);//清屏

      TMOD=0x01;//定時(shí)器0的工作方式1
      TH0=(65536-50000)/256;
      TL0=(65536-50000)%256;

      EA=1;//開(kāi)中斷
      ET0=1;
      TR0=1;//開(kāi)定時(shí)器
      display();
      }
      void display()
      {
      write_sfm(10,0);
      write_com(0x80+0x40+11);
      write_com(0x80+0x40+9);
      write_dat(:);
      write_sfm(7,0);
      write_com(0x80+0x40+8);
      write_com(0x80+0x40+6);
      write_dat(:);
      write_sfm(4,0);
      write_com(0x80+0x40+5);
      write_ymd(10,29);
      write_com(0x80+11);
      write_com(0x80+9);
      write_dat(-);
      write_ymd(7,3);
      write_com(0x80+8);
      write_com(0x80+6);
      write_dat(-);
      write_com(0x80+2);
      write_dat(2);
      write_dat(0);
      write_ymd(4,12);
      write_com(0x80+5);
      write_com(0x80+13);
      write_week(4);

      }
      void keyscan()
      {
      if(K2==0)
      {
      delay(5);
      if(K2==0);//防止誤動(dòng)作
      {
      S1num++;
      while(!K2);
      switch(S1num)
      {
      case 1:
      TR0=0;
      write_com(0x80+0x40+11);
      write_com(0x0f);
      break;
      case 2:
      write_com(0x80+0x40+8);
      break;
      case 3:
      write_com(0x80+0x40+5);
      break;
      case 4:
      write_com(0x80+11);
      break;
      case 5:
      write_com(0x80+8);
      break;
      case 6:
      write_com(0x80+5);
      break;
      case 7:
      write_com(0x80+13);
      break;
      case 8:
      S1num=0;
      TR0=1;
      write_com(0x0c);
      break;
      }
      }
      }
      if(S1num!=0)
      {
      if(K4==0)
      {
      delay(5);
      while(!K4);
      switch(S1num)
      {
      case 1:
      miao++;
      if(miao==60)miao=0;
      write_sfm(10,miao);
      write_com(0x80+0x40+11);
      break;
      case 2:
      fen++;
      if(fen==60)fen=0;
      write_sfm(7,fen);
      write_com(0x80+0x40+8);
      break;
      case 3:
      shi++;
      if(shi==24)shi=0;
      write_sfm(4,shi);
      write_com(0x80+0x40+5);
      break;
      case 4:
      day++;
      switch(mon)
      {
      case 1:if(day==32)day=1;break;
      case 3:if(day==32)day=1;break;
      case 5:if(day==32)day=1;break;
      case 7:if(day==32)day=1;break;
      case 8:if(day==32)day=1;break;
      case 10:if(day==32)day=1;break;
      case 12:if(day==32)day=1;break;
      case 4:if(day==31)day=1;break;
      case 6:if(day==31)day=1;break;
      case 9:if(day==31)day=1;break;
      case 11:if(day==31)day=1;break;
      case 2:x=20*100+year;
      if((x%4==0 && x%100!=0) || x%400==0)
      {
      if(day==30)
      {
      day=1;break;
      }

      }
      else if(day==29)
      {
      day=1;break;
      }
      }
      write_ymd(10,day);
      write_com(0x80+11);
      break;
      case 5:
      mon++;
      if(mon==13)mon=1;
      write_ymd(7,mon);
      write_com(0x80+8);
      break;
      case 6:
      year++;
      write_ymd(4,year);
      write_com(0x80+5);
      break;
      case 7:
      week++;
      if(week==8)week=1;
      write_week(week);
      write_com(0x80+13);
      break;
      }
      }
      if(K6==0)
      {
      delay(5);
      while(!K6);
      switch(S1num)
      {
      case 1:
      miao--;
      if(miao==-1)miao=59;
      write_sfm(10,miao);
      write_com(0x80+0x40+11);
      break;
      case 2:
      fen--;
      if(fen==-1)fen=59;
      write_sfm(7,fen);
      write_com(0x80+0x40+8);
      break;
      case 3:
      shi--;
      if(shi==-1)shi=23;
      write_sfm(4,shi);
      write_com(0x80+0x40+5);
      break;
      case 4:
      day--;
      switch(mon)
      {
      case 1:if(day==0)day=31;break;
      case 3:if(day==0)day=31;break;
      case 5:if(day==0)day=31;break;
      case 7:if(day==0)day=31;break;
      case 8:if(day==0)day=31;break;
      case 10:if(day==0)day=31;break;
      case 12:if(day==0)day=31;break;
      case 4:if(day==0)day=30;break;
      case 6:if(day==0)day=30;break;
      case 9:if(day==0)day=30;break;
      case 11:if(day==0)day=30;break;
      case 2:x=20*100+year;
      if((x%4==0 && x%100!=0) || x%400==0)
      {
      if(day==0)
      {
      day=29;break;
      }

      }
      else if(day==0)
      {
      day=28;break;
      }
      }
      write_ymd(10,day);
      write_com(0x80+11);
      break;
      case 5:
      mon--;
      if(mon==0)mon=12;
      write_ymd(7,mon);
      write_com(0x80+8);
      break;
      case 6:
      year--;
      write_ymd(4,year);
      write_com(0x80+5);
      break;
      case 7:
      week--;
      if(week==-1)week=7;
      write_week(week);
      write_com(0x80+13);
      break;
      }
      }
      }
      }
      void main()
      {
      init();
      GND=0;

      while(1)
      {
      keyscan();
      if(count==20)
      {
      count=0;
      miao++;
      if(miao==60)
      {
      miao=0;
      fen++;
      if(fen==60)
      {
      fen=0;
      shi++;
      if(shi==24)
      {
      shi=0;
      day++;
      week++;
      switch(mon)
      {
      case 1:if(day==32)day=1;mon++;break;
      case 3:if(day==32)day=1;mon++;break;
      case 5:if(day==32)day=1;mon++;break;
      case 7:if(day==32)day=1;mon++;break;
      case 8:if(day==32)day=1;mon++;break;
      case 10:if(day==32)day=1;mon++;break;
      case 12:if(day==32)day=1;mon++;break;
      case 4:if(day==31)day=1;mon++;break;
      case 6:if(day==31)day=1;mon++;break;
      case 9:if(day==31)day=1;mon++;break;
      case 11:if(day==31)day=1;mon++;break;
      case 2:x=20*100+year;
      if((x%4==0 && x%100!=0) || x%400==0)
      {
      if(day==30)
      {
      day=1;mon++;break;
      }

      }
      else if(day==29)
      {
      day=1;mon++;break;
      }
      }
      if(mon==13)
      {
      mon=1;
      year++;
      write_ymd(4,year);
      }
      write_ymd(10,day);
      write_com(0x80+13);
      write_week(week);
      write_ymd(7,mon);
      }
      write_sfm(4,shi);
      }
      write_sfm(7,fen);
      }
      write_sfm(10,miao);
      }
      }

      }

      本文引用地址:http://www.biyoush.com/article/201612/324684.htm


      評(píng)論


      技術(shù)專(zhuān)區(qū)

      關(guān)閉