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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的電機控制方向及速度程序

[復制鏈接]
跳轉到指定樓層
樓主
使用STC單片機控制步進電機的方向及速度


單片機源程序如下:
  1. #include "user.h"

  2. uint MotorTimer = 0;

  3. void Timer0Init(void)                //100us@11.0592MHz
  4. {
  5.         AUXR &= 0x7F;                        //定時器時鐘12T模式
  6.         TMOD &= 0xF0;                        //設置定時器模式
  7.         TMOD |= 0x01;                        //設置定時器模式
  8.         TL0 = 0xA4;                                //設置定時初值
  9.         TH0 = 0xFF;                                //設置定時初值
  10.         TF0 = 0;                                //清楚TF1標志
  11.         EA = 1;
  12.         ET0 = 1;
  13.         TR0 = 1;
  14. }
  15. /***************/
  16. void Timer1Init(void)                //20us@11.0592MHz
  17. {
  18.         AUXR &= 0xBF;                        //定時器時鐘12T模式
  19.         TMOD &= 0x0F;                        //設置定時器模式
  20.         TMOD |= 0x10;                        //設置定時器模式
  21.         TL1 = 0xEE;                                //設置定時初值
  22.         TH1 = 0xFF;                                //設置定時初值
  23.         TF1 = 0;                                //清楚TF1標志
  24.         ET1 = 1;
  25.         TR1 = 1;
  26. }
  27. /*************/
  28. //定時器0中斷服務函數
  29. //100us 定時器中斷服務函數
  30. void Timer0Interrupt(void) interrupt 1
  31. {
  32.         TF0 = 0;
  33.         TL0 = 0xA4;                                //設置定時初值
  34.         TH0 = 0xFF;                                //設置定時初值
  35.         if(UARTTimeout)
  36.         {
  37.                 UARTTimeout--;
  38.                 if(UARTTimeout==0)
  39.                 {
  40.                         if(RX1_Cnt >= RXNum)
  41.                         {
  42.                                 RXEndFlag = 1;
  43.                         }
  44.                 }
  45.         }       
  46.        
  47. }

  48. //定時器1中斷服務函數
  49. //50us  控制氣缸,光電開關輸入
  50. /********************/
  51. void Timer1Interrupt(void) interrupt 3
  52. {
  53.         TF1 = 0;
  54.         TL1 = 0xEE;                                //設置定時初值
  55.         TH1 = 0xFF;                                //設置定時初值
  56.         /***********
  57.         if((ToBottomFlag)||(ToMiddleFlag)||(ToTopFlag))
  58.         {
  59.                 MotorTimer ++;               
  60.         }
  61.         else
  62.         {
  63.                 MotorTimer = 0;
  64.         }
  65.         **************/
  66. }
  67.         /***********************
  68.         if((ToBottomFlag)||(ToMiddleFlag)||(ToTopFlag))
  69.         {
  70.                 MotorTimer ++;               
  71.         }
  72.         else
  73.         {
  74.                 MotorTimer = 0;
  75.         }
  76.         /*****************
  77.         if(ToMiddleFlag)                        //電機位置移動到中間脈沖計數
  78.         {
  79.                 MotorTimer ++;
  80.         }
  81.         else
  82.         {
  83.                 MotorTimer = 0;
  84.         }
  85.         if(ToTopFlag)
  86.         {
  87.                 MotorTimer ++;
  88.         }
  89.         else
  90.         {
  91.                 MotorTimer = 0;
  92.         }
  93.        
  94.         /*******************
  95.         /////////////////////       
  96.         if(MotorBottomFlag)
  97.         {
  98.                 MotorTimerB ++;               
  99.         }
  100.         else
  101.         {
  102.                 MotorTimerB = 0;
  103.         }
  104.         if((MotorTimerB >= 10)&&(PulseCount >=SlowCount))                //40us脈沖翻轉一次
  105.         {
  106.                 PulseCount--;
  107.                 MotorTimerB = 0;
  108.                 MotorPulse = ~MotorPulse;
  109.         }
  110.         if((MotorTimerB >= 20)&&(0 < PulseCount)&&(PulseCount < SlowCount))                //80us翻轉一次               
  111.         {
  112.                 if(PulseCount)
  113.                         PulseCount--;
  114.                 MotorTimerB = 0;
  115.                 MotorPulse = ~MotorPulse;
  116.         }
  117.         ////////////////////////////////////////////////////////
  118.         if(MotorMiddleFlag)                        //電機位置移動到中間脈沖計數
  119.         {
  120.                 MotorTimerM ++;
  121.         }       
  122.         else
  123.         {
  124.                 MotorTimerM = 0;
  125.         }
  126.         if(MotorMiddleFlag == 1)                //從底部運行至中間
  127.         {
  128.                 if((MotorTimerM >= 10)&&(PulseCount <= (MiddleCount-SlowCount)))
  129.                 {
  130.                         PulseCount ++;
  131.                         MotorTimerM = 0;
  132.                         MotorPulse = ~MotorPulse;
  133.                 }
  134.                 if ((MotorTimerM >= 20)&&((MiddleCount-SlowCount)<PulseCount <MiddleCount))
  135.                 {
  136.                         PulseCount ++;
  137.                         MotorTimerM = 0;
  138.                         MotorPulse = ~MotorPulse;
  139.                 }
  140.         }
  141.         if        (MotorMiddleFlag == 2)        //從頂部運行至中間
  142.         {
  143.                 if((MotorTimerM >= 10)&&((MiddleCount+100) <= PulseCount))
  144.                 {
  145.                         PulseCount --;
  146.                         MotorTimerM = 0;
  147.                         MotorPulse = ~MotorPulse;
  148.                 }
  149.                 if ((MotorTimerM >= 20)&&(MiddleCount<PulseCount)&&( PulseCount<(MiddleCount+SlowCount)))
  150.                 {
  151.                         PulseCount --;
  152.                         MotorTimerM = 0;
  153.                         MotorPulse = ~MotorPulse;
  154.                 }
  155.         }
  156.         /////////////////////////////////////////////////////////
  157.         if(MotorTopFlag)
  158.         {
  159. ……………………

  160. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
FatpProgramProjectV21127.zip (138.93 KB, 下載次數: 76)






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

使用道具 舉報

沙發
ID:329174 發表于 2018-5-13 22:04 | 只看該作者
非常感謝
回復

使用道具 舉報

板凳
ID:711985 發表于 2020-3-20 05:26 | 只看該作者
學習了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜av电影院 | 亚洲精品福利视频 | 美女国内精品自产拍在线播放 | 欧美精品v国产精品v日韩精品 | 国产精品久久久久久久久免费樱桃 | 色综合一区二区三区 | 国产欧美在线播放 | 91视频.com| 爱爱视频日本 | 亚洲视频在线免费观看 | av在线免费观看网站 | 伊人色综合久久天天五月婷 | 免费视频成人国产精品网站 | 久久草在线视频 | 久久久精彩视频 | 国产精品日产欧美久久久久 | 日韩精品网站 | 亚洲欧美一区二区三区在线 | 97国产一区二区精品久久呦 | 亚洲成av人影片在线观看 | av无遮挡| 亚洲欧美综合精品久久成人 | 免费精品久久久久久中文字幕 | www网站在线观看 | 亚洲欧洲在线视频 | 天堂男人av | 美女天天操| 天天操天天怕 | 日韩一级欧美一级 | 亚洲国产欧美一区二区三区久久 | 四虎在线观看 | 久热国产精品视频 | 日韩欧美理论片 | 日日操夜夜操天天操 | 日本黄色免费片 | 狠狠夜夜 | 国产中文字幕网 | 天天久久| 爱爱无遮挡 | 亚洲国产免费 | 午夜无码国产理论在线 |