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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)實(shí)現(xiàn)BPC電波鐘解碼C程序

          51單片機(jī)實(shí)現(xiàn)BPC電波鐘解碼C程序

          作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
          //使用STC12C5202單片機(jī),晶振使用12M的,速度是12倍速的,電波鐘模塊引腳是接在單片機(jī)P3^2口的

          //數(shù)碼管是使用動(dòng)態(tài)掃描的方式,四位數(shù)碼管顯示
          #include
          #define uchar unsigned char
          #define uint unsigned int
          uchar xiaoshi,fenzon;
          uchar tt=0;
          #define duan P1
          uchar code tab[]={ 0x12,/*0*/
          0xD7,/*1*/
          0x4A,/*2*/
          0x43,/*3*/
          0x87,/*4*/
          0x23,/*5*/
          0x22,/*6*/
          0x57,/*7*/
          0x02,/*8*/
          0x03,/*9*/
          };
          sbit fen=P3^3;
          sbit sf =P3^4;
          sbit si =P3^5;
          sbit ss =P3^7;
          sbit led=P3^0;
          /////////////////////////////////////////////////////////////////////////////
          sbit MKin =P3^2; //電波鐘模塊信號(hào)引腳
          uint shu=0;
          uchar a[7];
          void delay(uint k)
          {
          while(k--);
          }
          void duo_MoKuai()
          {
          uchar i=0;
          for(;i<6;i++)
          {
          a[i]=0;
          }
          shu=0;
          while(shu<116) //找啟始碼1.8秒低電平
          {
          if(!MKin)
          {
          delay(12000); //延時(shí)16mS
          shu++;
          }
          else shu=0;
          }
          delay(2000); tt=0;
          while(!MKin)delay(2000); //等待高電平結(jié)束
          delay(12000);
          /////////////////////////////////////////////////////////////////////////////
          while(MKin)delay(2000); //這是第一個(gè)脈沖;//根據(jù)協(xié)議該位只能是0、1、2,不能是3否則超出范圍,表示接收錯(cuò)誤,從新同步
          delay(12000);
          while(!MKin)delay(2000);
          delay(12000);
          while(MKin)delay(2000); //這是第二個(gè)脈沖;//根據(jù)協(xié)議,該位必須為0,否則就是錯(cuò)誤,認(rèn)為丟失同步,故也不需要進(jìn)行效驗(yàn)積累計(jì)算
          delay(12000);
          while(!MKin)delay(2000);
          delay(2000);
          while(MKin) //第三位//這是小時(shí)的十位
          {
          delay(12000);
          a[0]++;
          }
          delay(12000);
          while(!MKin)delay(2000);
          delay(2000);
          while(MKin) //第四位 //這是小時(shí)的個(gè)位
          {
          delay(12000);
          a[1]++;
          }
          delay(12000);
          while(!MKin)delay(2000);
          delay(2000);
          while(MKin) //第五位//這是分鐘的高位
          {
          delay(12000);
          a[2]++;
          }
          delay(12000);
          while(!MKin)delay(2000);
          delay(2000);
          while(MKin) //第六位//這是分鐘的中位
          {
          delay(12000);
          a[3]++;
          }
          delay(12000);
          while(!MKin)delay(2000);
          delay(2000);
          while(MKin) //第七位//這是分鐘的低位
          {
          delay(12000);
          a[4]++;
          }
          delay(12000);
          }
          void Zuan_Huan()
          {
          uchar k;
          duo_MoKuai(); //讀電波鐘模塊
          for(k=0;k<5;k++)
          {
          if(27>(a[k])>23) a[k]=0x03;
          else if(17<(a[k])<21) a[k]=0x02;
          else if(11<(a[k])<15) a[k]=0x01;
          else if(8>(a[k])>5) a[k]=0;
          }

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

          xiaoshi=((a[0])*4)|(a[1]);
          fenzon=(((a[2])*16)|((a[3])*4)|(a[4]));
          }
          /////////////////////////////////////////////////////////////////
          void desplay()
          {
          duan=tab[xiaoshi/10];
          ss=0;
          delay(2000);
          ss=1;
          duan=tab[xiaoshi%10];
          si=0;
          delay(2000);
          si=1;
          duan=tab[fenzon/10];
          sf=0;
          delay(2000);
          sf=1;
          duan=tab[fenzon%10];
          fen=0;
          delay(2000);
          fen=1;
          }

          void main()
          {
          uint aa;
          while(1)
          {
          Zuan_Huan();
          for(aa=0;aa<1000;aa++)
          desplay();
          }
          }



          關(guān)鍵詞: 51單片機(jī)BPC電波鐘解

          評(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); })();