新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 通過(guò)51單片機(jī)來(lái)控制直流電機(jī)

        通過(guò)51單片機(jī)來(lái)控制直流電機(jī)

        作者: 時(shí)間:2012-12-01 來(lái)源:網(wǎng)絡(luò) 收藏

        原理很簡(jiǎn)單了 直接上電路圖和源程序吧
        點(diǎn)擊瀏覽下一頁(yè)
        看不清楚圖的請(qǐng)點(diǎn)保存 或者點(diǎn)開(kāi)連接地址看大圖
        下面是針對(duì)上面電路圖的程序
        (直接復(fù)制粘貼進(jìn)去運(yùn)行 還是那句話 程序別光是復(fù)制粘貼 要一句句看懂 看出核心的那一段代碼是怎么利用單片機(jī)加上一個(gè)芯片來(lái)控制電機(jī)的為以后自己寫(xiě)其他驅(qū)動(dòng)程序打基礎(chǔ) )

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

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


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

        ;系統(tǒng)初始化
        ;-----------------------------------

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

        t0zd:


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


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

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


        END

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

        電路圖符號(hào)相關(guān)文章:電路圖符號(hào)大全


        塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理


        關(guān)鍵詞: 51單片機(jī) 直流電機(jī)

        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 宝丰县| 华蓥市| 于田县| 南召县| 乌鲁木齐县| 麻江县| 长治县| 桂东县| 南靖县| 汝南县| 古蔺县| 万盛区| 丰原市| 福鼎市| 辽宁省| 沧州市| 广西| 栾城县| 大城县| 察雅县| 鄂州市| 乌兰察布市| 九台市| 楚雄市| 绥江县| 龙南县| 商洛市| 凤阳县| 广元市| 南开区| 阳西县| 中西区| 土默特左旗| 正安县| 花莲县| 松桃| 衡水市| 葫芦岛市| 溧水县| 伊川县| 含山县|