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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于51單片機(jī)太陽能電池太陽跟蹤裝置程序設(shè)計(jì)

          基于51單片機(jī)太陽能電池太陽跟蹤裝置程序設(shè)計(jì)

          作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
          #include
          #include
          #include
          #define uchar unsigned char
          #define uint unsigned int
          #define ysfs 600 //宏定義 預(yù)設(shè)風(fēng)速
          #define shuiping 1500 //宏定義 水平位置AD轉(zhuǎn)換結(jié)果
          #define fuyang 1500 //宏定義 俯仰位置AD轉(zhuǎn)換結(jié)果
          #define PA XBYTE [0x7CFF] //8255芯片端口4個(gè)基地址宏定義
          #define PB XBYTE [0x7FFD]
          #define PC XBYTE [0x7FFE]
          #define CONTROL XBYTE [0x7FFF]
          sbit OE=P1^0; //以下為關(guān)于AD0808與單片機(jī)的八個(gè)接口定義
          sbit EOC=P1^1;
          sbit START=P1^2;
          sbit CLK=P1^3;
          sbit ALE=P1^4;
          sbit C0=P1^5;
          sbit C1=P1^6;
          sbit C2=P1^7;
          sbit gdkg=P2^3; //用于復(fù)位光電開關(guān)端口定義
          sbit clock=P2^0; //定義水平俯仰步進(jìn)電機(jī)的速度端口,頻率越快,速度越快,不給頻率電機(jī)不轉(zhuǎn)
          sbit cw1=P2^1; //定義水平步進(jìn)電機(jī)的轉(zhuǎn)向端口,1正轉(zhuǎn),0反轉(zhuǎn)
          sbit enable1=P2^2; //定義水平步進(jìn)電機(jī)的使能端口,1轉(zhuǎn),0不轉(zhuǎn)
          sbit cw2=P2^4; //定義俯仰步進(jìn)電機(jī)的轉(zhuǎn)向端口,1正轉(zhuǎn),0反轉(zhuǎn)
          sbit enable2=P2^5; //定義俯仰步進(jìn)電機(jī)的使能端口,1轉(zhuǎn),0不轉(zhuǎn)
          uint ad_result_fenshu,ad_result_shuiping,ad_result_fuyang;
          void timer_init()
          {
          TMOD=0x11; //定時(shí)器模式設(shè)置
          TH0=(65536-5000)/256;
          TL0=(65536-5000)%6;
          TH1=0xFF;
          TL1=0x9C;
          ET0=1; //允許定時(shí)器0中斷
          TR0=1; //啟動(dòng)定時(shí)器0
          ET1=1; //允許定時(shí)器1中斷
          TR1=1; //啟動(dòng)定時(shí)器1
          EA=1; //允許總中斷
          }
          void AD_chane(int x)
          {
          if(x==0)
          {
          C0=0;
          C1=0;
          C2=0;
          }
          else if(x==1)
          {
          C0=1;
          C1=0;
          C2=0;
          }
          else if(x==2)
          {
          C0=0;
          C1=1;
          C2=0;
          }
          ALE=1;
          }
          int Get_AD_Sd()
          {
          int Sd;
          START=0;START=1;START=0;
          while(EOC==0);
          OE=1;
          Sd=P3;
          OE=0;
          return Sd;
          }
          void reset()
          {
          while(gdkg!=1)
          {
          cw2=0;
          enable2=1;
          }
          enable2=0;
          }
          void shuiping_tiaozheng(int date)
          {
          if(date>shuiping)
          {
          do
          {
          cw1=1;
          enable1=1;
          }
          while(date==shuiping);
          enable1=0;
          }
          else if(date
          {
          do
          {
          cw1=0;
          enable1=1;
          }
          while(date==shuiping);
          enable1=0;
          }
          }
          void fuyang_tiaozheng(int date)
          {
          if(date>fuyang)
          {
          do
          {
          cw2=1;
          enable2=1;
          }
          while(date==fuyang);
          enable2=0;
          }
          else if(date
          {
          do
          {
          cw2=0;
          enable2=1;
          }
          while(date==fuyang);
          enable2=0;
          }
          }
          void main()
          {
          CONTROL = 0x80;
          ALE=0;
          timer_init();
          enable1=0;
          enable2=0;
          while(1) //進(jìn)入循環(huán)
          {
          AD_chane(0);
          ad_result_fenshu=Get_AD_Sd();
          ALE=0;
          AD_chane(1);
          ad_result_shuiping=Get_AD_Sd();
          ALE=0;
          AD_chane(2);
          ad_result_fuyang=Get_AD_Sd();
          ALE=0;
          if(ad_result_fenshu>ysfs) //如果風(fēng)速大于預(yù)設(shè)風(fēng)速,則復(fù)位
          {
          reset();
          }
          shuiping_tiaozheng(ad_result_shuiping);
          fuyang_tiaozheng(ad_result_fuyang);
          }
          }
          void timer0() interrupt 1
          {
          TH0=(65536-5000)/256;
          TL0=(65536-5000)%6;
          CLK=~CLK;
          }
          void timer1() interrupt 3
          {
          static uchar i=0;
          TH1=0xFF;
          TL1=0x9C;
          ++i;
          if (i>10) i=0;
          if (i<=6)
          clock=0;
          else
          clock=1;
          }


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