欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3718|回復: 2
收起左側

步進電機旋轉一定角度用單片機控制的程序怎么寫?

[復制鏈接]
回帖獎勵 10 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 1 次
ID:219729 發表于 2017-7-27 18:31 | 顯示全部樓層 |閱讀模式
步進電機旋轉一定角度用32單片機控制的程序怎么寫?
回復

使用道具 舉報

ID:137999 發表于 2017-7-27 19:19 | 顯示全部樓層
#include <reg52.h>   sbit LeftA1 = P1^0; sbit LeftA2 = P1^1; sbit LeftB1 = P1^2; sbit LeftB2 = P1^3; sbit EnLeft = P2^3;  sbit RightA1 = P1^4; sbit RightA2 = P1^5; sbit RightB1 = P1^6; sbit RightB2 = P1^7; sbit EnRight = P2^4;  unsigned char T0RH; unsigned char T0RL; signed long LeftBeats = 0; signed long RightBeats = 0;  void ConfigTimer0(unsigned int ms); void StartLeftMotor(signed long angle); void StartRightMotor(signed long angle);   unsigned char code BeatCode[8] = {//不同的引腳驅動代碼不一樣     0xE,0xA,0xB,0x9,0xD,0x5,0x7,0x6 };  void main() {     EA = 1;      EnLeft = 0;     EnRight = 0;     ConfigTimer0(3);//此值越大,轉的越慢     StartLeftMotor(360*25);//調整轉的角度     StartRightMotor(360*25);      while (1); }  void StartRightMotor(signed long angle) {     EnRight = 1;     EA = 0;     RightBeats = (angle*400)/360;     EA = 1; }  void StartLeftMotor(signed long angle) {     EnLeft = 1;     EA = 0;     LeftBeats = (angle*400)/360;     EA = 1; }  void LeftMotor() {     unsigned char tmp;      static unsigned char index = 0;        if(LeftBeats != 0)     {         if(LeftBeats > 0)         {                     index++;                                index = index & 0x07;             LeftBeats--;                }          else         {             index--;             index = index & 0x07;             LeftBeats++;         }           tmp = P1;                            tmp = tmp & 0xF0;                     tmp = tmp | BeatCode[index];         P1  = tmp;                    }     else     {         P1 = P1 | 0x0F;     }   }  void RightMotor() {     unsigned char tmp;     static unsigned char index = 0;      if(RightBeats != 0)     {         if(RightBeats > 0)         {             index--;             index = index & 0x07;             RightBeats--;         }         else         {             index++;             index = index &0x07;             RightBeats++;         }         tmp = P1;         tmp &= 0x0F;         tmp |= (BeatCode[index]<<4);         P1 = tmp;     }     else     {         P1 = P1 | 0xF0;     } }  void ConfigTimer0(unsigned int ms) {     unsigned long tmp;      tmp = 12000000/12;     tmp = (tmp * ms)/1000;     tmp = 65536 - tmp;     tmp = tmp + 2;     T0RH = (unsigned char)(tmp >> 8);     T0RL = (unsigned char)tmp;     TH0 = T0RH;     TL0 = T0RL;     TMOD &= 0xF0;     TMOD |= 0x01;     ET0 = 1;     TR0 = 1;         } void InterruptTimer0() interrupt 1 {        TH0 = T0RH;     TL0 = T0RL;     LeftMotor();     RightMotor();                                                                                                                                               }

評分

參與人數 1黑幣 +80 收起 理由
admin + 80 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:219729 發表于 2017-7-28 08:55 | 顯示全部樓層
CLAY 發表于 2017-7-27 19:19
#include    sbit LeftA1 = P1^0; sbit LeftA2 = P1^1; sbit LeftB1 = P1^2; sbit LeftB2 = P1^3; sbit EnL ...

不好意思,用的是STM32單片機
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表