<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DIY制作LED數(shù)碼管定時(shí)器

          DIY制作LED數(shù)碼管定時(shí)器

          作者: 時(shí)間:2016-11-29 來源:網(wǎng)絡(luò) 收藏
          由于只有一個(gè)數(shù)碼管,只能顯示0到15,所以這個(gè)定時(shí)器可以定時(shí)0到15分,0到15個(gè)小時(shí),0到15天,0到15個(gè)星期,本來想在程序中加上定時(shí)0到15個(gè)月,但想想在實(shí)際情況中定時(shí)15個(gè)月都有一年多了,估計(jì)好少用到,就不寫了。這個(gè)定時(shí)器我加上了繼電器,所以可以控制220V交流電,且定時(shí)誤差在幾個(gè)毫秒內(nèi),還算精確吧。。。

          先來幾張初期的原理圖:




          下面是單片機(jī)的源程序:
          #include
          #define uint unsigned int
          #define uchar unsigned char
          sbit ledg=P1^0;//秒閃爍(一秒鐘亮一秒鐘滅)
          sbit ledb=P1^1;//分閃爍(一分鐘亮一分鐘滅)
          sbit fmq=P3^3;// 蜂鳴器
          sbit ledx=P3^4;// 定時(shí)星期指示燈
          sbit ledt=P3^6;// 定時(shí)天指示燈
          sbit ledf=P3^5;// 定時(shí)分鐘指示燈
          sbit leds=P3^7;// 定時(shí)小時(shí)指示燈
          sbit key1=P1^6;// 啟動(dòng)|暫停
          sbit key2=P1^5;// 調(diào)整定時(shí)分鐘
          sbit key3=P1^4;// 調(diào)整定時(shí)小時(shí)
          sbit key4=P1^3;// 調(diào)整定時(shí)天
          sbit key5=P1^2;// 調(diào)整定時(shí)星期
          sbit jdq=P1^7; //繼電器
          uint i,j,num,num1,num2,num3,num4,num5,num6;
          uchar shi,temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,dsf,dss,dst,dsx;
          uchar code shuju[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
          0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
          void delayms(uint xms)
          {
          for(i=xms;i>0;i--)
          for(j=110;j>0;j--);
          }
          void display(shi)
          {
          P2=shuju[shi];
          }
          void keyscan()
          {
          uchar i;
          if(key1==0)
          {
          delayms(10);
          if(key1==0)
          {
          ledb=0; //把分閃爍指示燈調(diào)用來指示啟動(dòng)|暫停
          while(i==0&&P2!=0xC0)
          {
          TR0=~TR0;// 啟動(dòng)|暫停
          i++;
          }
          if(TR0==1)
          {
          ledb=1;//把分閃爍指示燈調(diào)用來指示啟動(dòng)|暫停
          }
          else
          {
          TR0=0;
          }
          }
          }
          if(key2==0&&TR0==0)
          {
          dss=0; // 定時(shí)小時(shí)清零
          dst=0; // 定時(shí)天數(shù)清零
          dsx=0; // 定時(shí)星期清零
          temp1=1; //進(jìn)入switch-case
          delayms(10);
          }
          if(key3==0&&TR0==0)
          {
          dsf=0;
          dst=0;
          dsx=0;
          temp2=1;
          delayms(10);
          }
          if(key4==0&&TR0==0)
          {
          dsf=0;
          dss=0;
          dsx=0;
          temp3=1;
          delayms(10);
          }
          if(key5==0&&TR0==0)
          {
          dsf=0;
          dss=0;
          dst=0;
          temp4=1;
          delayms(10);
          }
          switch (temp1)
          {
          case 1:
          if(key2==0)
          {
          leds=1; // 關(guān)閉定時(shí)小時(shí)指示燈
          ledt=1; // 關(guān)閉定時(shí)天指示燈
          ledx=1;// 關(guān)閉定時(shí)星期指示燈
          ledf=0;// 打開定時(shí)分鐘指示燈
          ledg=1; // 關(guān)閉秒閃爍
          ledb=1; // 關(guān)閉分閃爍
          jdq=0; //關(guān)閉繼電器
          dsf++; // 分鐘加加
          shi=dsf;// 把分送去顯示
          if(dsf==16)
          {
          shi=0;
          dsf=0;
          }
          while(!key2);
          temp1=2;
          temp5=1;
          num2=dsf;
          temp6=2;
          temp7=2;
          temp8=2;
          }
          break;
          }
          switch (temp2)
          {
          case 1:
          if(key3==0)
          {
          ledf=1;
          ledt=1;
          ledx=1;
          leds=0;
          jdq=0;
          ledg=1;
          ledb=1;
          dss++;
          shi=dss;
          if(dss==16)
          {
          shi=0;
          dss=0;
          }
          while(!key3);
          temp2=2;
          temp6=1;
          num4=dss;
          temp5=2;
          temp7=2;
          temp8=2;
          }
          break;
          }
          switch (temp3)
          {
          case 1:
          if(key4==0)
          {
          ledf=1;
          leds=1;
          ledx=1;
          ledt=0;
          jdq=0;
          ledg=1;
          ledb=1;
          dst++;
          shi=dst;
          if(dst==16)
          {
          shi=0;
          dst=0;
          }
          while(!key4);
          temp3=2;
          temp7=1;
          num5=dst;
          temp5=2;
          temp6=2;
          temp8=2;
          }
          break;
          }
          switch (temp4)
          {
          case 1:
          if(key5==0)
          {
          ledf=1;
          leds=1;
          ledt=1;
          ledx=0;
          jdq=0;
          ledg=1;
          ledb=1;
          dsx++;
          shi=dsx;
          if(dsx==16)
          {
          shi=0;
          dsx=0;
          }
          while(!key5);
          temp4=2;
          temp8=1;
          num6=dsx;
          temp5=2;
          temp6=2;
          temp7=2;
          }
          break;
          }
          switch (temp5)
          {
          case 1:
          if(num==3686)
          {
          num=0;
          ledg=~ledg;
          num1++;
          }

          本文引用地址:http://www.ex-cimer.com/article/201611/323567.htm

          if(num1==60)
          {
          num1=0;
          num2--;
          shi=num2;
          if(num2==0)
          {
          jdq=1;
          TR0=0;
          }
          }
          break;

          }
          switch (temp6)
          {
          case 1:
          if(num==3686)
          {
          num=0;
          ledg=~ledg;
          num1++;
          }

          if(num1==60)
          {
          num1=0;
          ledb=~ledb;
          num3++;
          if(num3==60)
          {
          num3=0;
          num4--;
          shi=num4;
          }
          if(num4==0)
          {
          jdq=1;
          TR0=0;
          }
          }
          break;
          }
          switch (temp7)
          {
          case 1:
          if(num==3686)
          {
          num=0;
          ledg=~ledg;
          num1++;
          }

          if(num1==60)
          {
          num1=0;
          ledb=~ledb;
          num3++;
          if(num3==1440)
          {
          num3=0;
          num5--;
          shi=num5;
          }
          if(num5==0)
          {
          jdq=1;
          TR0=0;
          }
          }
          break;
          }
          switch (temp8)
          {
          case 1:
          if(num==3686)
          {
          num=0;
          ledg=~ledg;
          num1++;
          }

          if(num1==60)
          {
          num1=0;
          ledb=~ledb;
          num3++;
          if(num3==10080)
          {
          num3=0;
          num6--;
          shi=num6;
          }
          if(num6==0)
          {
          jdq=1;
          TR0=0;
          }
          }
          break;
          }
          }

          void main()
          {
          TMOD=0x02;
          TH0=6;
          TL0=6;
          EA=1;
          ET0=1;
          jdq=0;
          while(1)
          {
          keyscan();
          display(shi);
          while(jdq==1&&P2==0xC0)
          {
          fmq=0;
          ledg=1;
          ledb=1;
          }
          }
          }
          void T0_time()interrupt 1
          {
          num++;
          }

          全部全代碼下載:http://www.51hei.com/f/ledccr.rar
          這是洞洞板繪圖軟件畫的電路圖:





          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();