色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機電子時鐘完整版

          51單片機電子時鐘完整版

          作者: 時間:2012-08-02 來源:網(wǎng)絡 收藏

          if(n==2)
          {
          fen--;
          if(fen==-1)
          fen=59;
          writesfm(7,fen);
          }
          }
          }
          menu=4;
          }
          void Alarm(void) //設定鬧鐘功能,k4鍵跳轉(zhuǎn)其他功能
          {
          write_add(0x06);
          write_add(0x01); //清屏
          write_add(0x80+0x00+0);
          for(i=0;i5;i++)
          {
          write_date(naozhong[i]); //顯示Alarm標識符
          }
          write_add(0x80+0x40+4);
          writesfm(4,nshi);
          write_date(0x3a);
          writesfm(7,nfen);
          shi=nshi;
          fen=nfen;
          while(!k4);
          while(k4)
          {
          key();
          }
          write_add(0x0c); //開顯示,不顯示光標
          }
          void key1(void)
          {
          if(k1==0) //設置光標所在位置
          {
          delay(10); //去抖
          if(k1==0)
          {
          num++;
          while(!k1);
          if(num==1)
          {
          write_add(0x0f); //顯示光標并閃爍
          write_add(0x80+0x40+6);
          }
          if(num==2)
          {
          write_add(0x0f); //顯示光標并閃爍
          write_add(0x80+0x40+3);
          }
          if(num==3)
          {
          write_add(0x0f); //顯示光標并閃爍
          write_add(0x80+0x40+0);
          }
          if(num==4)
          {
          write_add(0x0f); //顯示光標并閃爍
          write_add(0x80+0x00+6);
          }
          if(num==5)
          {
          write_add(0x0f); //顯示光標并閃爍
          write_add(0x80+0x00+3);
          }
          if(num==6)
          {
          write_add(0x0f); //顯示光標并閃爍
          write_add(0x80+0x00+0);
          }
          if(num==7)
          {
          write_add(0x0f); //顯示光標并閃爍
          write_add(0x80+0x00+11);
          }
          if(num==8)
          {
          num=0;
          write_add(0x0c);
          }
          }
          }
          }
          void key2(void)
          {
          Write1302(w_protect,0x00); //禁止寫保護
          if(k2==0) //實現(xiàn)加法
          {
          delay(10);
          if(k2==0)
          {
          while(!k2);
          if(num==1)
          {
          miao++;
          if(miao==60)
          {
          miao=0;
          }
          writesfm(6,miao);
          Write1302(w_Sec,(miao/10)*16+miao%10); //將miao轉(zhuǎn)換成BCD碼
          }
          if(num==2)
          {
          fen++;
          if(fen==60)
          {
          fen=0;
          }
          writesfm(3,fen);
          Write1302(w_Min,(fen/10)*16+fen%10);
          }
          if(num==3)
          {
          shi++;
          if(shi==24)
          {
          shi=0;
          }
          writesfm(0,shi);
          Write1302(w_Hou,(shi/10)*16+shi%10);
          }
          if(num==4)
          {
          ri++;
          if(ri==30)
          {
          ri=0;
          }
          writenyr(6,ri);
          Write1302(w_Day,(ri/10)*16+ri%10);
          }
          if(num==5)
          {
          yue++;
          if(yue==13)
          {
          yue=1;
          }
          writenyr(3,yue);
          Write1302(w_Mou,(yue/10)*16+yue%10);
          }
          if(num==6)
          {
          nian++;
          if(nian==100)
          {
          nian=0;
          }
          writenyr(0,nian);
          Write1302(w_Yea,(nian/10)*16+nian%10);
          }
          if(num==7)
          {
          x++;
          writexi(x);
          Write1302(w_xi,(x/10)*16+x%10);
          if(x==7)
          {
          x=0;
          }
          }
          }
          }
          }
          void key3(void)
          {
          Write1302(w_protect,0x00); //禁止寫保護
          if(k3==0) //實現(xiàn)減法
          {
          delay(10);
          if(k3==0)
          {
          while(!k3);
          if(num==1)
          {
          miao--;
          if(miao==-1)
          {
          miao=59;
          }
          writesfm(6,miao);
          Write1302(w_Sec,(miao/10)*16+miao%10);
          }
          if(num==2)
          {
          fen--;
          if(fen==-1)
          {
          fen=59;
          }
          writesfm(3,fen);
          Write1302(w_Min,(fen/10)*16+fen%10);
          }
          if(num==3)
          {
          shi--;
          if(shi==-1)
          {
          shi=23;
          }
          writesfm(0,shi);
          Write1302(w_Hou,(shi/10)*16+shi%10);
          }
          if(num==4)
          {
          ri--;
          if(ri==-1)
          {
          ri=30;
          }
          writenyr(6,ri);
          Write1302(w_Day,(ri/10)*16+ri%10);
          }
          if(num==5)
          {
          yue--;
          if(yue==-1)
          {
          yue=12;
          }
          writenyr(3,yue);
          Write1302(w_Mou,yue);
          }
          if(num==6)
          {
          nian--;
          if(nian==-1)
          {
          nian=99;
          }
          writenyr(0,nian);
          Write1302(w_Yea,(yue/10)*16+yue%10);
          }
          if(num==7)
          {
          x--;
          writexi(x);
          Write1302(w_xi,(x/10)*16+x%10);
          if(x==1)
          {
          x=8;
          }
          }
          }
          }
          }
          void key4()
          {
          if(k4==0)
          {
          delay(10);
          if(k4==0)
          {
          while(!k4);
          menu++;
          }
          }
          }
          void TimeSet()
          {
          write_add(0x0f);
          write_add(0x80+0x40+9);
          while(k4)
          {
          key1();
          key2();
          key3();
          }
          Write1302(w_protect,0x00); //寫保護
          menu=2;
          }
          void init_DS1302(void)
          {
          Write1302(w_protect,0x00); //禁止寫保護
          Write1302(w_Sec,0x56);
          Write1302(w_Min,0x59);
          Write1302(w_Hou,0x23); //24小時模式
          Write1302(w_xi,0x03);
          Write1302(w_Day,0x28);
          Write1302(w_Mou,0x02);
          Write1302(w_Yea,0x11); //初始化系統(tǒng)時間 2011年5月11日周三12:12:12
          Write1302(w_protect,0x80); //寫保護
          }
          void disp(void)
          {
          key4();
          if(menu==0)
          {
          Normal();
          read_temp(); //讀取溫度
          ds1820disp();//顯示
          }
          if(menu==1)
          {
          TimeSet();
          }
          num=0;
          if(menu==2)
          {
          StopWatch();
          }
          if(menu==3)
          {
          Alarm();
          }
          if(menu==4)
          {
          init_info();
          }
          if(menu==5)
          {
          menu=0;
          write_add(0x01); //清屏
          }
          }
          void main()
          {
          init_DS1302(); //初始化1302
          EN=1;
          RW=0; //寫命令
          write_add(0x38); //設置16*2行顯示,5*7點陣,8位數(shù)據(jù)接口
          write_add(0x0c); //開顯示,不顯示光標
          write_add(0x06);
          write_add(0x01); //清屏
          while(1)
          {
          disp(); //顯示
          }
          }

          51單片機相關(guān)文章:51單片機教程


          單片機相關(guān)文章:單片機教程


          單片機相關(guān)文章:單片機視頻教程


          單片機相關(guān)文章:單片機工作原理



          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 51單片機 電子時鐘 1602液晶

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉