日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

51单片机控制步进电机的c语言程序,用AT89C51单片机控制步进电机的汇编源程序...

發布時間:2024/10/14 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51单片机控制步进电机的c语言程序,用AT89C51单片机控制步进电机的汇编源程序... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

描述

下面程序完成的主要功能:實現步進電機的正反轉,加速、減速;顯示電機轉速(轉速級別)和工作狀態(正轉、反轉、不轉)。

源程序

SPEED EQU 10H ;SPEED為轉速等級標志,共7級,即1~7

FX EQU 11H ;FX 為方向標志

COUNT EQU 12H ;COUNT中斷次數標志

ORG 0000H

AJMP MAIN

ORG 0003H ;外部中斷0入口地址,加速子程序

AJMP UP

ORG 0013H ;外部中斷1入口地址,減速子程序

AJMP DOWN

ORG 000BH ;定時器0中斷入口地址,控制中斷次數來達到控制轉速 AJMP ZDT0

ORG 0030H

MAIN: MOV SP,#60H

MOV TMOD,#01H ;工作于定時、軟件置位啟動,模式1(16 位計時器)

MOV TH0,#0CFH

MOV TL0,#2CH

MOV COUNT,#01H

SETB ET0 ;定時/計數器允許中斷

CLR IT0 ;外部中斷為電平觸發方式,低電平有效

CLR IT1

SETB EX0 ;外部允許中斷

SETB EX1

SETB EA ;開總中斷

MOV R1,#11H ;四相單四拍運行,共陽數碼管方向顯示8,速度值顯示0

MOV SPEED,#00H

MOV FX,#00H

XIANS: MOV A,SPEED

MOV DPTR,#LED

MOVC A,@A+DPTR ;查表獲取等級對應數碼管代碼

MOV P2,A ;第二個數碼管顯示轉速等級

MOV A,FX ;準備判斷轉向

CJNE A,#11H,ELS

MOV P0, #0F9H ;第一個數碼管顯示 1,表示正轉

AJMP QD

ELS: CJNE A,#00H,ZHENG

MOV P0,#0C0H ;第一個數碼管顯示 0,表示不轉

AJMP QD

ZHENG: MOV P0,#0BFH ;第一個數碼管顯示-,表示反轉

QD: JB P3.4,DD ;P3.4 接啟動開關 K1,P3.4=1 時啟動

CLR TR0 ;停止定時/計數器

MOV P0,#0C0H ;第一個數碼管顯示 0,表示不轉

MOV P2,#0C0H ;第二個數碼管顯示 0,表示轉速為 0

MOV SPEED,#00H ;重新賦初值

MOV FX,#00H

AJMP QD

DD: MOV A,SPEED

JNZ GO ;A 不等于 0,即初始速度不為零,則轉移到 GO

CLR TR0 ;停止定時/計數器

AJMP QD

GO: SETB TR0 ;開啟定時/計數器

ACALL DELAY

AJMP XIANS

DELAY: MOV R6,#10 ;延時子程序

DEL1: MOV R7,#250

HERE1: DJNZ R7, HERE1

DJNZ R6,DEL1

RET

;以下 ZDT0 為定時器中斷程序

ZDT0: PUSH ACC

PUSH DPH

PUSH DPL

MOV TH0,#0D8H

MOV TL0,#0F0H

DJNZ COUNT,EXIT

JB P3.5,NIZHUAN ;查詢方向標志,P3.5 接換向開關 K2

MOV FX,#11H

NIZHUAN:MOV A,FX

CJNE A,#11H,FZ ;若A不等于11,即正轉,則轉移到 FZ

MOV A,R1 ;R1 記錄上一次電機脈沖狀態

MOV P1,A

RR A ;循環右一位

MOV R1,A

MOV P1,A

AJMP RE

FZ: MOV A,R1

MOV P1,A

RL A ;循環左移一位

MOV P1,A

MOV R1,A

RE: MOV A,SPEED

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV COUNT,A ;把轉速級別賦給 COUNT

JB P3.5 ,FFX ;P3.5 接換向開關K2, 即換向位,若P3.5=1,則跳到 FFX

MOV FX,#11H

AJMP EXIT

FFX: MOV FX,#0FEH;只要FX不等于11H,就可以通過循環左移或右移進行換向

EXIT: POP DPL

POP DPH

POP ACC

RETI

;以下 UP 為加速中斷程序

UP: PUSH ACC

ACALL DELAY ;延時防抖

JB P3.2,UPEX ;P3.2 為外部中斷0位,接增速開關S2,低電平有效,若P3.2=1,則退出

MOV A,SPEED

CJNE A,#7,SZ ;最大等級為 7,若 A 不等于 7,則轉移到 SZ

AJMP UPEX ;若 A=7,則退出

SZ: INC SPEED ;SPEED= SPEED+1

UPEX: POP ACC

HERE2: JNB P3.2,HERE2 ;本條指令為防止開關 S2 按下去后彈不起,導致一直產生中斷

RETI

;以下 DOWN 為減速中斷程序

DOWN: PUSH ACC

ACALL DELAY

JB P3.3,DEX ;P3.3 為外部中斷1位,接減速開關S3,低電平有效,P3.3=1則退出

MOV A,SPEED

CJNE A,#0,SJ

AJMP DEX

SJ: DEC SPEED ;SPEED= SPEED-1

DEX: POP ACC

HERE3: JNB P3.3,HERE3

RETI

TAB: DB 0,60,40,35,30,28,25,21 ;經仿真,小于21時,由于脈沖太快,會出現失步 ;

LED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H

END

打開APP精彩內容

點擊閱讀全文

總結

以上是生活随笔為你收集整理的51单片机控制步进电机的c语言程序,用AT89C51单片机控制步进电机的汇编源程序...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。