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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 8051直流電機(jī)的開環(huán)控制程序

          8051直流電機(jī)的開環(huán)控制程序

          作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
          //-----------------------函數(shù)聲明,變量定義--------------------------------------------------------
          #include
          #include
          #include
          //-----------------------定義管腳--------------------------------------------------------
          sbit PWM=P1^0; //PWM波形輸出
          sbit DR=P1^1; //方向控制
          #define timer_data (256-100) //定時(shí)器預(yù)置值,12M時(shí)鐘是,定時(shí)0.1ms
          #define PWM_T 100 //定義PWM的周期T為10ms
          unsigned char PWM_t; //PWM_t為脈沖寬度(0~100)時(shí)間為0~10ms
          unsigned char PWM_count; //輸出PWM周期計(jì)數(shù)
          unsigned char time_count; //定時(shí)計(jì)數(shù)
          bit direction; //方向標(biāo)志為
          //--------------------------------------------------------------------------------------------------
          // 函數(shù)名稱:timer_init
          // 函數(shù)功能:初始化設(shè)施定時(shí)器
          //--------------------------------------------------------------------------------------------------
          void timer_init()
          {
          TMOD=0x22; /*定時(shí)器1為工作模式2(8位自動(dòng)重裝),0為模式2(8位自動(dòng)重裝) */
          PCON=0x00;
          TF0=0;
          TH0=timer_data; //保證定時(shí)時(shí)長(zhǎng)為0.1ms
          TL0=TH0;
          ET0=1;
          TR0=1; //開始計(jì)數(shù)
          EA=1; //中斷允許
          }
          //--------------------------------------------------------------------------------------------------
          // 函數(shù)名稱:setting_PWM
          // 函數(shù)功能:設(shè)置PWM的脈沖寬度和設(shè)定方向
          //--------------------------------------------------------------------------------------------------
          void setting_PWM()
          {
          if(PWM_count==0) //初始設(shè)置
          {
          PWM_t=20;
          direction=1;
          }
          }
          //--------------------------------------------------------------------------------------------------
          // 函數(shù)名稱:IntTimer0
          // 函數(shù)功能:定時(shí)器中斷處理程序
          //--------------------------------------------------------------------------------------------------
          void IntTimer0() interrupt 1
          {
          time_count++;
          DR=direction;
          if(time_count>=PWM_T)
          {
          time_count=0;
          PWM_count++;
          setting_PWM(); //每輸出一個(gè)PWM波調(diào)用一次
          }
          if(time_countPWM=1;
          else
          PWM=0;
          }
          //--------------------------------------------------------------------------------------------------
          // 函數(shù)名稱:main
          // 用戶主函數(shù)
          // 函數(shù)功能:主函數(shù)
          //--------------------------------------------------------------------------------------------------
          void main()
          {
          timer_init();
          setting_PWM();
          }
          admin2009-6-12 21:522#
          //-----------------------函數(shù)聲明,變量定義--------------------------------------------------------
          #include
          #include
          sbit SDA=P1^0; // 將p1.0口模擬數(shù)據(jù)口
          sbit SCL=P1^1; // 將p1.1口模擬時(shí)鐘口
          #define NUM 10 // 接收和發(fā)送緩存區(qū)的深度
          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
          unsigned char idata sendbuf[NUM]; // 數(shù)據(jù)發(fā)送緩沖區(qū)
          unsigned char idata receivebuf[NUM]; // 數(shù)據(jù)接收緩沖區(qū)
          bit bdata SystemError; // 從機(jī)錯(cuò)誤標(biāo)志位
          //--------------------------------------------------------------------------------------------------
          // 函數(shù)名稱: iic_start()
          //函數(shù)功能: 啟動(dòng)I2C總線子程序
          //--------------------------------------------------------------------------------------------------
          void iic_start(void)
          { EA=0; //時(shí)鐘保持高,數(shù)據(jù)線從高到低一次跳變,I2C通信開始
          SDA = 1;
          SCL = 1;
          delayNOP(); // 延時(shí)5us
          SDA = 0;
          delayNOP();
          SCL = 0;
          }
          //--------------------------------------------------------------------------------------------------
          // 函數(shù)名稱: iic_stop()
          // 函數(shù)功能: 停止I2C總線數(shù)據(jù)傳送子程序
          //--------------------------------------------------------------------------------------------------
          void iic_stop(void)
          {
          SDA = 0; //時(shí)鐘保持高,數(shù)據(jù)線從低到高一次跳變,I2C通信停止
          SCL = 1;
          delayNOP();
          SDA = 1;
          delayNOP();
          SCL = 0;
          }
          //--------------------------------------------------------------------------------------------------
          // 函數(shù)名稱: slave_ACK
          //函數(shù)功能: 從機(jī)發(fā)送應(yīng)答位子程序
          //--------------------------------------------------------------------------------------------------
          void slave_ACK(void)
          {
          SDA = 0;
          SCL = 1;
          delayNOP();
          SDA = 1;
          SCL = 0;
          }
          //--------------------------------------------------------------------------------------------------
          // 函數(shù)名稱: slave_NOACK
          // 函數(shù)功能: 從機(jī)發(fā)送非應(yīng)答位子程序,迫使數(shù)據(jù)傳輸過(guò)程結(jié)束
          //--------------------------------------------------------------------------------------------------
          void slave_NOACK(void)
          {
          SDA = 1;
          SCL = 1;
          delayNOP();
          SDA = 0;
          SCL = 0;
          }
          //--------------------------------------------------------------------------------------------------
          // 函數(shù)名稱: check_ACK
          //函數(shù)功能: 主機(jī)應(yīng)答位檢查子程序,迫使數(shù)據(jù)傳輸過(guò)程結(jié)束
          //--------------------------------------------------------------------------------------------------


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