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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2823|回復: 4
打印 上一主題 下一主題
收起左側

單片機通過串口控制 42步進電機的程序

[復制鏈接]
跳轉到指定樓層
樓主
42步進電機
必須要和驅動器正確連接后才可以使用
單片機源程序如下:
  1. #include<reg52.h>
  2. //??????
  3. sbit CLK  = P1^0;
  4. sbit ENA  = P1^1;
  5. sbit DIR  = P1^2;                    
  6. bit Run_Status=0;
  7. bit CY_status=0;
  8. unsigned int CYCLE=1,x=0,y=0;
  9. unsigned int cy_count=0;
  10. unsigned PWM_count=0;
  11. void Init_time();
  12. void Step(unsigned int );
  13. void Ord(unsigned int );
  14. void main()
  15. {
  16.         ENA=1;
  17.         CLK=0;
  18.         DIR=0;                   //?????
  19.         TMOD=0X22;
  20.         IP=0X10;
  21.         Init_time();   //??????
  22.         DIR=1;
  23.         Step(1);
  24.         DIR=0;
  25.         Step(1);          
  26.         while(1);
  27.                
  28. }
  29. void Init_time()                                 //??????
  30. {
  31.         TH0=(65536-CYCLE)/256;                  //?time0???
  32.         TL0=(65536-CYCLE)%256;
  33.         PCON=0X80;               
  34.         TH1=0XF3;                               
  35.         TL1=0XF3;
  36.   IE = 0x92;
  37.         //PT1=1;                       //??time1??????time0
  38.         TR0=1;                                         //??????
  39.         TR1=1;
  40.         REN=1;
  41.         SM0=0;
  42.         SM1=1;
  43. }
  44. void Enter_Timer0() interrupt 1                                //???????
  45. {
  46.         TH0=(65536-CYCLE)/256;
  47.         TL0=(65536-CYCLE)%256;
  48.         CLK=~CLK;
  49.         PWM_count++;
  50.         if(PWM_count==(2*cy_count)&&CY_status)
  51.         {
  52.                 PWM_count=0;
  53.                 TR0=0;
  54.                 ENA=0;
  55.         }       
  56. }
  57. void UART() interrupt 4
  58. {
  59.                          
  60.        
  61.                          if(RI)
  62.                          {
  63.                                 RI = 0;
  64.                                 x=SBUF;
  65.                                 SBUF=x;
  66.                           Ord(x);       
  67.                          }
  68.                          if(TI)
  69.                                 TI = 0;       
  70.                        
  71. }
  72. /***********************??????*************************/
  73. void Step(unsigned int step_count)
  74. {
  75.   IE = 0x92;
  76.         PWM_count=0;
  77.         CY_status=1;
  78.         cy_count=step_count;
  79.         ENA=1;
  80.         TR0=1;
  81.        
  82. }
  83. /*********************????????*************************/
  84. void Ord(unsigned int order)
  85. {
  86.         if(order==0)
  87.         {
  88.         DIR=1;
  89.         Step(1);
  90.         DIR=0;
  91.         Step(1);
  92.     }
  93.         if(order==3)
  94.         {
  95.          DIR=1;
  96.          Step(60);
  97.         }
  98.         if(order==4)
  99.         {
  100.          DIR=0;
  101.          Step(60);
  102.         }
  103.         if(order==5)
  104.         {
  105.          
  106.          DIR=1;
  107.          Step(2000);
  108.         }
  109.         if(order==6)
  110.         {
  111.          DIR=0;
  112.          Step(2000);
  113.         }

  114. }
復制代碼


1.png (56.64 KB, 下載次數: 138)

1.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1038221 發表于 2022-7-4 19:05 | 只看該作者
清祥 普中親測可用    可用
回復

使用道具 舉報

板凳
ID:1016815 發表于 2023-3-6 20:13 | 只看該作者
請問下你這只有3個sbit,加了interrupt 4是串口輸入數字轉多少圈嗎?
回復

使用道具 舉報

地板
ID:1038221 發表于 2023-8-4 13:41 | 只看該作者
434939575 發表于 2023-3-6 20:13
請問下你這只有3個sbit,加了interrupt 4是串口輸入數字轉多少圈嗎?

通過串口接受的數據(數字 0 1 2 3)是對下面的子函數
void Ord(unsigned int order)
這個函數最終會調用到
void UART() interrupt 4
{
                         if(RI)
                         {
                          RI = 0;
                          x=SBUF;
                         SBUF=x;
                         Ord(x);      
                         }
                         if(TI)
                         TI = 0;      
                       
}


void Ord(unsigned int order)
其中的order對應的是串口中的數據
   
例如
if(order==6)
        {
         DIR=0;
         Step(2000);
        }
準確的旋轉的圈數需要通過公式將2000帶入進行計算。
回復

使用道具 舉報

5#
ID:952358 發表于 2023-12-29 10:33 | 只看該作者
親測可用
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产91久久久久蜜臀青青天草二 | 久久精品国产一区二区电影 | 国产综合av | 国产三级大片 | 国产福利在线免费观看 | 欧洲一级毛片 | 网站黄色在线免费观看 | 日韩伦理一区二区 | 国产九九九 | 国产精品极品美女在线观看免费 | 一区二区三区亚洲 | 激情 婷婷 | 91国内精品久久 | 91麻豆精品国产91久久久久久 | av日韩在线播放 | 男人天堂免费在线 | 欧美激情国产精品 | 国产精品99久久久久久久vr | 亚洲444eee在线观看 | 亚洲国产一区二区三区 | 午夜小视频在线播放 | 久久久国产精品入口麻豆 | 亚洲精品久久久久久下一站 | 亚洲国产18 | 国产一级一级 | 天天射色综合 | 国产视频福利在线观看 | 韩国av电影网 | 爱爱免费视频 | 久久久久www| 欧美精品一区二区三区在线播放 | 国产一区二区三区色淫影院 | 国产精品99久久久久久www | 欧美激情国产日韩精品一区18 | 一区二区三区高清 | 成人在线视频网站 | 色欧美片视频在线观看 | 黑人精品欧美一区二区蜜桃 | www.婷婷亚洲基地 | 91看片网| 欧美精品片 |