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

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > 通過51單片機來控制直流電機

          通過51單片機來控制直流電機

          作者: 時間:2012-12-01 來源:網絡 收藏

          原理很簡單了 直接上電路圖和源程序吧
          點擊瀏覽下一頁
          看不清楚圖的請點保存 或者點開連接地址看大圖
          下面是針對上面電路圖的程序
          (直接復制粘貼進去運行 還是那句話 程序別光是復制粘貼 要一句句看懂 看出核心的那一段代碼是怎么利用單片機加上一個芯片來控制電機的為以后自己寫其他驅動程序打基礎 )

          ;----------------------------------------------
          ;名稱:來控制
          ;主頻 6M晶震 51系列單片機
          ;編譯環(huán)境:keil c51編譯通過
          ;www.51hei.com單片機教程網原創(chuàng),可以任意修改和作為學習測試用途
          ;備注 :程序的關鍵部分是 T1定時中段程序里面 看PWM 是怎么控制電機轉動的
          ;要改變電機的方向其實很簡單
          ;4個小車狀態(tài)子程序 你應該能看懂吧
          ;另外當然就是要去看下 驅動電機的芯片 L293D 了 嘿嘿 就是什么H橋什么的
          ; 當然電子基本攻扎實的 自己做個電路也是一樣的 不過這芯片也就幾塊錢
          ; 節(jié)約時間的話就買來電路搭起就OK
          ;2009-5-15
          ;---------------------------------------------
          ;------------------------------------------------
          ;內存分配定義

          ntw equ 3Eh ;PWM中斷計數器(對T1中斷)
          ntwkz equ 3Dh ;左電機PWM脈寬設置
          ntwky equ 3Ch ;右電機PWM脈寬設置
          ntwkzy equ 31h ;左右電機預置PWM脈寬
          zjfx bit p2.0 ;左電機方向控制口,0為正轉,1為反轉
          yjfx bit p2.1 ;右電機方向控制口,0為正轉,1為反轉
          ;-------------------------------------------------


          ORG 0000H
          aJMP MAIN
          org 000bh
          lJMP t0zd
          org 001bh
          ljmp t1zd
          org 0030h
          ;----------------------------------------------
          MAIN :
          ACALL XCQJ
          ACALL CSH
          ; ;-----
          ; ;其他程序。比如數碼管 顯示 什么什么的
          ; ;----
          AJMP MAIN
          ;-------------------------------------

          ;系統初始化
          ;-----------------------------------

          CSH:
          MOV TMOD, #11H ;定時器0/1均設置為方式1,定時方式 計聳器按16位工作
          mov TH1,#0feh ;
          mov TL1,#70h ;PWM調速,定時0.8ms
          mov ntw,#10 ;PWM對T1中斷計數,即可有10檔速度調節(jié)
          mov ntwkzy,#03 ;左右電機預置PWM脈寬
          mov ntwkz,#03 ;左電機調速脈寬,此值為高電平的時間
          mov ntwky,#03 ;右電機調速脈寬
          SETB ET0 ;開T0中斷
          setb ET1 ;開T1中斷
          SETB EA ;系統開中斷
          SETB TR0 ;啟動定時器0
          SETB TR1 ;啟動定時器1
          RET

          t0zd:


          RETI
          ;---------------------------------
          ;小車狀態(tài)子程序
          ;---------------------------------
          xcqj: ;小車前進
          setb zjfx ;左機正轉(IN2)
          setb yjfx ;右機正轉(IN3)
          RET
          xczz: ;小車左轉
          clr zjfx ;左機反轉(IN2)
          setb yjfx ;右機正轉(IN3)
          RET
          xcyz: ;小車右轉
          setb zjfx ;左機正轉(IN2)
          clr yjfx ;右機反轉(IN3)
          RET
          xcht: ;小車后退
          clr zjfx
          clr yjfx
          ret


          ;---------------------------------
          ;T1中斷子程序
          ;---------------------------------

          t1zd:
          mov th1,#0feh
          mov tl1,#70h
          push acc
          push psw
          djnz ntw,t101 ; NTW 不等于0 則運行T101 等于0 則 送低電平
          mov ntw,#10
          clr p3.5
          clr p3.7
          ajmp t1fh
          t101: mov a,ntw;這里實現了軟件方式的電機調速功能 設置 PWM 高電平的脈沖寬度10個檔位這里有一點需要注意 NTW開始是設置的10自減1然后與
          ;預先設置的左右電機的預設置的檔位比較 這里是3 那么就是減7次也就是要等待7個T1中斷之后才會SETB P3.5也就是說 這里的檔位 值越小 轉得越快
          cjne a,ntwkz,t102 ; 不相等執(zhí)行102 相等則順序執(zhí)行 比較 左電機預設置 的 PWM數量
          setb p3.5
          t102: cjne a,ntwky,t1fh ; 比較 右電機預設置 的 PWM數量其實這里我設置的都是一樣的檔 都是3 實際中可能有些情況需要調節(jié)2個輪子的轉速度 不過一般情況下
          ;設置一樣的 方便些 不過原理還是要看懂 知道怎么設置
          setb p3.7
          t1fh: pop psw
          pop acc
          reti


          END

          突然想到要利用鍵盤控制電機調速的同志。。T1 的入口參數就是 ntwkz ntwky
          ntwkz equ 3Dh ;左電機PWM脈寬設置
          ntwky equ 3Ch ;右電機PWM脈寬設置
          T1每次中斷就從10檔開始自減 一直減到你設置的檔位 然后輸出PWM波形
          只需要改變 3DH 3CH 中的值 那么就可以實現調速功能了
          另外想說下 平時也有很多事 因此不能盡快回復大家的帖子 請大家原諒下
          一些基礎的資料我會整理后發(fā)完整的上來給大家
          不需要回復和登陸
          希望大家理解和支持。

          電路圖符號相關文章:電路圖符號大全


          塵埃粒子計數器相關文章:塵埃粒子計數器原理


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();