久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3632|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

五線四相步進(jìn)電機,求一個控制程序(實物見圖)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:584041 發(fā)表于 2019-7-22 10:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
電路應(yīng)該是這樣連的吧?

Z3%ZGM064XR]7_~[]`@YSB8.jpg (3.52 MB, 下載次數(shù): 70)

Z3%ZGM064XR]7_~[]`@YSB8.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:603085 發(fā)表于 2019-8-25 15:48 | 只看該作者
我的這一個是用uln2003驅(qū)動電路的
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. sbit jia_key=P3^7;         //定義加鍵
  4. sbit jian_key=P3^6;          //定義減鍵
  5. sbit zf_key=P3^5;          //定義正反鍵
  6. //sbit dula=P2^6;                  //數(shù)碼管段選端定義
  7. //sbit wela=P2^7;                  //數(shù)碼管位選端定義
  8. bit flag=0;                          //定義正反轉(zhuǎn)的
  9. uchar num=0,show_num=2,maichong=4,table_begin=0;
  10. uchar code table1[]={0x01,0x02,0x04,0x08,0x08,0x04,0x02,0x01};        //在從0x01到0x08表示正轉(zhuǎn),從0x08到0x01表示反轉(zhuǎn),
  11. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//數(shù)碼管顯示數(shù)
  12. void delay(uchar i)        //延時函數(shù)
  13. {
  14.         uchar j,k;
  15.         for(j=i;j>0;j--)
  16.                 for(k=125;k>0;k--);
  17. }
  18. /*void display()
  19. {
  20.         dula=0;
  21.         P0=table[show_num];
  22.         dula=1;
  23.         dula=0;
  24.         wela=0;
  25.         P0=0XFE;
  26.         wela=1;
  27.         wela=0;
  28.         delay(5);
  29.         P0=table[0];
  30.         dula=1;
  31.         dula=0;
  32.         P0=0XFd;
  33.         wela=1;
  34.         wela=0;
  35.         delay(5);
  36. }  */
  37. void key()                //確定按鍵
  38. {
  39.         if(jia_key==0)
  40.         {
  41.                 delay(5);
  42.                 if(jia_key==0)
  43.                 {
  44.                         num++;
  45.                         if(num==4)
  46.                                 num=3;
  47.                         while(jia_key==0);
  48.                 }
  49.         }
  50.         if(jian_key==0)
  51.         {
  52.                 delay(5);
  53.                 if(jian_key==0)
  54.                 {
  55.                         if(num!=0)
  56.                         num--;
  57.                         else
  58.                                 num=0;
  59.                         while(jian_key==0);
  60.                 }
  61.         }
  62.         if(zf_key==0)
  63.         {
  64.                 delay(5);
  65.                 if(zf_key==0)
  66.                 {
  67.                         flag=~flag;
  68.                         while(zf_key==0);
  69.                 }
  70.         }
  71. }
  72. void dispose()                                //對按鍵的處理
  73. {
  74.         switch(num)
  75.         {
  76.                 case 0:
  77.                                 maichong=5;
  78.                                 break;
  79.                 case 1:
  80.                                 maichong=4;
  81.                                 break;
  82.                 case 2:
  83.                                 maichong=3;
  84.                                 break;
  85.                 case 3:
  86.                                 maichong=2;
  87.                                 break;
  88.         }
  89.         if(flag==0)                                         //正反變化的表示
  90.                 table_begin=0;
  91.         else
  92.                 table_begin=4;
  93. }
  94. void qudong()                //驅(qū)動電機轉(zhuǎn)動,最重要的部分
  95. {
  96.         uchar j;
  97.         for(j=0+table_begin;j<4+table_begin;j++)
  98.         {
  99.                 P0=table1[j];        //控制正反轉(zhuǎn)的
  100.                 delay(maichong*5);//控制速度的
  101.         }
  102. }
  103. void main()                                                                //主函數(shù)
  104. {
  105.         while(1)
  106.         {
  107.                 key();
  108.                 dispose();
  109.                 qudong();
  110.         }
  111. }
復(fù)制代碼
回復(fù)

使用道具 舉報

板凳
ID:188389 發(fā)表于 2019-8-27 21:47 | 只看該作者

/* 兩個ULN2003驅(qū)動兩個5線4相步進(jìn)電機 */

/*  步進(jìn)電機四相端口*/
#define pMotor_A_A_Init()                        GPIO_Init(GPIOC,GPIO_PIN_7,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_B_Init()                        GPIO_Init(GPIOC,GPIO_PIN_6,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_C_Init()                        GPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_D_Init()                        GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_FAST)

#define pMotor_B_A_Init()                        GPIO_Init(GPIOD,GPIO_PIN_0,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_B_Init()                        GPIO_Init(GPIOD,GPIO_PIN_2,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_C_Init()                        GPIO_Init(GPIOD,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_D_Init()                        GPIO_Init(GPIOD,GPIO_PIN_4,GPIO_MODE_OUT_PP_LOW_FAST)

                                                 /*  A   AB   B    BC   C    CD   D    DA  */
uint8_t Beat_A_Code[8] = {0x80,0xC0,0x40,0x60,0x20,0x28,0x08,0x88}; //步進(jìn)電機A四相八拍驅(qū)動

                                                 /*  A   AB   B    BC   C    CD   D    DA  */
uint8_t Beat_B_Code[8] = {0x01,0x05,0x04,0x0C,0x08,0x18,0x10,0x11}; //步進(jìn)電機B四相八拍驅(qū)動

int16_t motor_A_Beats = 0;
int16_t motor_B_Beats = 0;
uint8_t index_A = 0;
uint8_t index_B = 0;

#pragma vector=0x19
__interrupt void TIM4_UPD_OVF_IRQHandler(void) //定時中斷 1ms
{

        /* 步進(jìn)電機A轉(zhuǎn)動控制流量值大于4L */
        if(motor_A_Beats != 0)
        {
                if(motor_A_Beats > 0)                //正轉(zhuǎn)
                {
                        index_A++;
                        index_A &= 0x07;
                        motor_A_Beats--;
                }
                else                                            //反轉(zhuǎn)
                {
                        index_A--;
                        index_A &= 0x07;
                        motor_A_Beats++;
                }
                temp0 = GPIOC->ODR;
                temp0 &= 0x17;
                temp0 |= Beat_A_Code[index_A];
                GPIOC->ODR = temp0;
        }
        else
        {
                GPIOC->ODR &= 0x17;
        }

        /* 步進(jìn)電機B轉(zhuǎn)動控制流量值小于等于4L */
        if(motor_B_Beats != 0)
        {
                if(motor_B_Beats > 0)                //正轉(zhuǎn)
                {
                        index_B++;
                        index_B &= 0x07;
                        motor_B_Beats--;
                }
                else                                                //反轉(zhuǎn)
                {
                        index_B--;
                        index_B &= 0x07;
                        motor_B_Beats++;
                }
                temp2  = GPIOD->ODR;
                temp2 &= 0xE2;
                temp2 |= Beat_B_Code[index_B];

                GPIOD->ODR = temp2;
        }
        else
        {
                GPIOD->ODR &= 0xE2;
        }

        TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
}
回復(fù)

使用道具 舉報

地板
ID:188389 發(fā)表于 2019-8-27 21:51 | 只看該作者


/* 兩個ULN2003驅(qū)動兩個5線4相步進(jìn)電機 */


/*  步進(jìn)電機四相端口*/
#define pMotor_A_A_Init()                        GPIO_Init(GPIOC,GPIO_PIN_7,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_B_Init()                        GPIO_Init(GPIOC,GPIO_PIN_6,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_C_Init()                        GPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_D_Init()                        GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_FAST)

#define pMotor_B_A_Init()                        GPIO_Init(GPIOD,GPIO_PIN_0,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_B_Init()                        GPIO_Init(GPIOD,GPIO_PIN_2,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_C_Init()                        GPIO_Init(GPIOD,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_D_Init()                        GPIO_Init(GPIOD,GPIO_PIN_4,GPIO_MODE_OUT_PP_LOW_FAST)

                                                 /*  A   AB   B    BC   C    CD   D    DA  */
uint8_t Beat_A_Code[8] = {0x80,0xC0,0x40,0x60,0x20,0x28,0x08,0x88}; //步進(jìn)電機A四相八拍驅(qū)動

                                                 /*  A   AB   B    BC   C    CD   D    DA  */
uint8_t Beat_B_Code[8] = {0x01,0x05,0x04,0x0C,0x08,0x18,0x10,0x11}; //步進(jìn)電機B四相八拍驅(qū)動

int16_t motor_A_Beats = 0;
int16_t motor_B_Beats = 0;
uint8_t index_A = 0;
uint8_t index_B = 0;

#pragma vector=0x19
__interrupt void TIM4_UPD_OVF_IRQHandler(void) //定時中斷 1ms
{

        /* 步進(jìn)電機A轉(zhuǎn)動控制流量值大于4L */
        if(motor_A_Beats != 0)
        {
                if(motor_A_Beats > 0)                //正轉(zhuǎn)
                {
                        index_A++;
                        index_A &= 0x07;
                        motor_A_Beats--;
                }
                else                                            //反轉(zhuǎn)
                {
                        index_A--;
                        index_A &= 0x07;
                        motor_A_Beats++;
                }
                temp0 = GPIOC->ODR;
                temp0 &= 0x17;
                temp0 |= Beat_A_Code[index_A];
                GPIOC->ODR = temp0;
        }
        else
        {
                GPIOC->ODR &= 0x17;
        }

        /* 步進(jìn)電機B轉(zhuǎn)動控制流量值小于等于4L */
        if(motor_B_Beats != 0)
        {
                if(motor_B_Beats > 0)                //正轉(zhuǎn)
                {
                        index_B++;
                        index_B &= 0x07;
                        motor_B_Beats--;
                }
                else                                                //反轉(zhuǎn)
                {
                        index_B--;
                        index_B &= 0x07;
                        motor_B_Beats++;
                }
                temp2  = GPIOD->ODR;
                temp2 &= 0xE2;
                temp2 |= Beat_B_Code[index_B];

                GPIOD->ODR = temp2;
        }
        else
        {
                GPIOD->ODR &= 0xE2;
        }

        TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
}
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 永久看片 | 国产在线a| 中文字幕第二十页 | 不卡在线视频 | 国产成人高清视频 | 日韩一区二区在线观看 | 美女久久视频 | 亚洲精品二区 | 91在线精品播放 | 日本不卡一区 | 亚洲男女视频在线观看 | 东方伊人免费在线观看 | 精品日韩在线观看 | 玖玖在线精品 | 久久国产综合 | 免费国产成人av | 又爽又黄axxx片免费观看 | 天天干夜夜操 | 久久久青草婷婷精品综合日韩 | 亚洲一区高清 | 亚洲毛片在线 | 欧美黄色大片在线观看 | 久久成人18免费网站 | 国产成人精品一区二区三区网站观看 | 日韩精品免费 | 91久久精品| 999re5这里只有精品 | 黄色一级特级片 | 精品久久久久久久久久久久久久久久久 | 色播久久久 | 国产精品视频观看 | 黄色片在线网站 | 国产1区| 激情婷婷 | 欧美成人一区二区 | 99精品国产一区二区三区 | 亚洲成人在线视频播放 | 亚洲在线一区二区 | 黄色一级在线播放 | 亚洲视频二区 | www久久久 |