微机原理接口技术综合实验 步进电机
微机实验报告 步进电机正反转及调速设计

微机原理与接口设计实验报告步进电机正反转及调速设计专业:机械设计制造及其自动化班级:10090112小组成员:周先军 10901239张赓 10901240胡一国 08901312组别: B5摘要:本系统是基于STM8系列单片机的步进电机转速转向控制器。
该系统采用STM8S103F3P6单片机作为主控制器,运用L298全桥驱动器驱动步进电机,通过摇杆、按键控制电机转速,并且通过1602液晶显示器显示当前转速。
该系统中使用的四相步进电机,具有控制精度高,转动扭矩大等特点,实际生产中有广泛的运用。
系统中除了传统按键控制外,还增加遥控控制,单片机通过AD读取摇杆控制信号,实时控制电机转速。
整个系统具有结构简单、可靠性高、成本低和实用性强等特点,具有较高的通用性和应用推广价值。
关键词:四相步进电机 STM8单片机控制 L298驱动电路正反转摇杆控制一、系统方案1.1控制系统方案方案一:采用8086系列单片机。
8086是Inter系列的16位微处理器,数据处理能力强。
但是8086系列的CPU指令数据需要放置在内存中,需要依赖外部非易失存储器和RAM才可以工作,外部电路复杂。
方案二:采用STM8系列单片机。
STM8是意法半导体生产的8位单片机,哈弗结构。
拥有8K字节Flash,1K字节RAM,1K EEPROM,内部集成5路10位ADC,高级控制定时器可带死区控制PWM 、以及SPI 、I2C等接口。
整体性能优越,价格便宜,周边电路简单。
综上对比,选择方案二。
1.2驱动电路方案方案一:采用ULN2003达林顿管阵列控制电机。
ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成,工作电压高,工作电流大,灌电流可达500mA。
但系统采用通用四线四相步进电机,需要两路同时灌、输电流,该驱动设计只能满足5线步进电机的驱动,不符合要求。
方案二;采用L298集成全桥驱动芯片。
L298内部含有4通道逻辑驱动电路,是一种二相和四相电机专业驱动器,内含有两个H桥的高电压大电流双全桥式驱动器,接受标准的TTL逻辑电平信号,可驱动46V、2A以下的电机。
微机原理与接口实验报告_步进机_汇编

汇编及接口技术课程设计步进电机控制系统班 级: 090614学 号:姓 名:时 间:2011—12—28成绩:目录(一)设计目的(二)设计内容(三)硬件线路设计(四)硬件测试(五)程序清单(六)调试过程(七)总结正文内容一、设计目的1. 了解微机控制的竞赛抢答器的基本原理。
2. 进一步熟练8255、(8254)的使用。
二、设计内容编程控制步进电机,使其能够正常运转,要求:1.开关K8控制电机的启动与停止:当K8向上拨时,电机启动,否则电机停止;2.开关K1~7控制电机的转速:K1向上拨时,得到最低转速,…… K7向上拨时,得到最高转速。
3.电机反转。
三、硬件线路设计1、硬件电路设计提示:1)8255的端口A(PA0-PA7)和开关K1-K8相连。
2)8255的端口B(PB0-PB7)通过驱动连接到LED的a~h各段。
3)8255的端口C(如PC7、PC6)分别和发光二极管L2(绿)、L1(红)连接。
4) 8255的端口C(如PC5、PC4)分别和KL1、KL2相连。
2、编程提示:首先初始化8255,然后判断是启动还是复位操作,若是复位操作,则控制8255输出的数据使绿色和红色指示灯、LED数码管全灭;否则启动下一次抢答,使绿色发光二极管亮,当8255的输入口PB有不为0的数据时,则使绿色发光二极管灭并使红色发光二极管点亮。
并判断先拨动开关的组号,在LED上显示出其组号。
注意:IOY2的地址比IOY0的多40H。
比如IOY0的地址为0D800H,则IOY2的首地址为0D840H。
3、实验连线8255模块的WR、RD连到ISA总线接口模块的IOWR、IORD,8255选通信号CE连到ISA总线接口模块的IOY0。
8255模块的数据线AD7~AD0、地址线A7~A0分别连到ISA总线接口模块的LAD0~LAD7,LA0~LA7。
步进电机的HA—PC0,HB—PC1,HC—PC2,HD—PC3。
四、硬件测试运行该代码以检测硬件,或直接使用机器自带的程序进行测试!MY_DATA SEGMENTA8255 DW 0C400HB8255 DW 0C401HC8255 DW 0C402HD8255 DW 0C403HSHUN DB 06H,03H,09H,0CH ;顺时针旋转MY_DATA ENDsMY_CODE SEGMENTMY_PROC PROC FARASSUME CS:MY_CODE, DS:MY_DATA START: MOV AX,MY_DA TAMOV DS,AXMOV DX,D8255MOV AL,80HOUT DX,ALMOV BL,33HNEW: MOV DX,C8255IN AL,DXTEST AL,80HJNZ NEXTMOV DX,A8255MOV AL,00H ;停止步进电机OUT DX,ALJMP NEWNEXT: MOV DX,A8255AGAIN: MOV AL,BLOUT DX,ALCALL DELAYROL BL,1JMP NEWEXIT: MOV AX,4C00HINT 21HMY_PROC ENDPDELAY PROC NEAR ;延时程序PUSH CXMOV BP,300HD1: MOV CX,-1D2: LOOP D2DEC BPJNZ D1POP CXRETDELAY ENDpMY_CODE ENDSEND START五、程序清单:P55b equ 201h ;8255B口输出P55C equ 202h ;8255C口输入P55CTRL equ 203h ;8255控制口DATA SEGMENTBUF db 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV DX,P55CTRLMOV AL,99HOUT DX,AL ;8255C输入,B输出MOV BUF,11HOUT1:MOV AL,BUFMOV DX,P55bOUT DX,ALJE IN1 ;有无键按下IN1:MOV DX,P55CIN AL,DX ;读开关状态TEST AL,01HJNZ K0TEST AL,02HJNZ K1TEST AL,04HJNZ K2TEST AL,08HJNZ K3TEST AL,10HJNZ K4TEST AL,20HJNZ K5TEST AL,40HJNZ K6STOP:MOV DX,P55b MOV AL,0FFHJMP OUT1K0:MOV BL,10HTEST AL,80H ;K7是否为JZ ZX0JMP NX0K1:MOV BL,18HJMP SAMK2:MOV BL,20HJMP SAMK3:MOV BL,40HJMP SAMK4:MOV BL,80HJMP SAMK5:MOV BL,0C0HJMP SAMK6:MOV BL,0FFHJMP SAMCALL DELAYMOV AL,BUF ROR AL,1 ;循环右移MOV BUF,ALJMP OUT1NX0:CALL DELAYMOV AL,BUFROL AL,1 ;循环左移MOV BUF,ALJMP OUT1 DELAY PROC NEAR DELAY1:MOV CX,0100H DELAY2:LOOP DELAY2 DEC BLJNZ DELAY1RETDELAY ENDP CODE ENDSEND START六、调试过程首先根据连线提示进行硬件的连接。
微机原理 步进电机共10页文档

华北科技学院计算机系综合性实验实验报《微机原理与接口技术A》课程综合性实验报告图1P55A EQU 288H ;8255 A PORT OUTPUT P55C EQU 28AH ;8255 C PORT INPUTP55CTL EQU 28BH ;8255 COUTRL PORT stack segment stackstack endsDATA SEGMENTBUF DB 0START: MOV AX,CSMOV DS,AXMOV AX,DATAMOV DS,AXMOV DX,OFFSET MESMOV AH,09INT 21HMOV DX,P55CTLMOV AL,8BHOUT DX,AL ;8255 C INPUT, A OUTPUTMOV BUF,33HOUT1: MOV AL,BUFMOV DX,P55AOUT DX,ALpush dxMOV AH,06hmov dl,0ffhINT 21H ;ANY KEY PRESSEDpop dxJE IN1MOV AH,4CHINT 21HIN1: MOV DX,P55CIN AL,DX ;INPUT SWITCH VALUETEST AL,01HJNZ K0TEST AL,02HJNZ K1TEST AL,04HJNZ K2TEST AL,08HJNZ K3TEST AL,10HJNZ K4TEST AL,20HJNZ K5TEST AL,40HJNZ K6STOP: MOV DX,P55AMOV AL,0FFHJMP OUT1K0: MOV BL,10HSAM: TEST AL,80H步进电机原理及使用说明步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
微机原理与接口技术实验报告

微机原理与接口技术实验报告
本次实验是关于微机原理与接口技术的实验报告,通过本次实验,我们将深入
了解微机原理与接口技术的相关知识,并通过实际操作来加深对这些知识的理解和掌握。
实验一,微机原理。
在本次实验中,我们首先学习了微机的基本原理,包括微机的组成结构、工作
原理和基本功能。
通过实际操作,我们了解了微机的主要组成部分,如中央处理器(CPU)、内存、输入输出设备等,并学习了它们之间的工作原理和相互配合关系。
同时,我们还学习了微机的基本指令系统和数据传输方式,加深了对微机工作原理的理解。
实验二,接口技术。
在接口技术的实验中,我们学习了微机与外部设备之间的接口技术,包括并行
接口、串行接口和通用接口等。
我们通过实际操作,了解了这些接口技术的工作原理和应用场景,学会了如何通过接口技术实现微机与外部设备的数据交换和通信。
实验三,实验综合。
在本次实验的最后,我们进行了一个综合实验,通过实际操作来综合运用微机
原理和接口技术的知识,实现一个具体的功能。
通过这个实验,我们加深了对微机原理与接口技术的理解,掌握了如何将理论知识应用到实际操作中。
总结。
通过本次实验,我们深入学习了微机原理与接口技术的相关知识,并通过实际
操作加深了对这些知识的理解和掌握。
微机原理与接口技术作为计算机科学与技术的基础知识,对我们今后的学习和工作都具有重要意义。
希望通过这次实验,能够对大家的学习和工作有所帮助,并为今后的学习打下坚实的基础。
以上就是本次实验的实验报告,希望对大家有所帮助。
感谢大家的阅读!。
步进电机控制接口实验

实验一 步进电机控制接口实验一、实验目的通过步进电机控制实验, 学习并行接口电路及其控制程序的设计原理与方法。
二、实验内容基本实验 控制四相步进电机以双八拍方式运行, 自己设置按键来控制电机的启停。
三、实验要求利用MFID 实验平台和步进电机驱动模块板进行硬件连接, 利用MF2KI 集成开发环境进行步进电机软件控制程序的设计、调试, 直到使步进电机正常运行。
四、实验原理1. 步进电机驱动模块板电路原理如图2.1.2所示。
模块板上包括接口的对象永磁式四相步进电机和驱动电路达林顿管TIP, 保护电路74LS373, 相序指示灯以及开关SW1和SW2等。
2.步进电机接口设计原理与方法的详细阐述, 参考计算机接口技术相关参考书。
图2.1.2 步进电机驱动模块电路原理框图五、实验步骤 步骤一: 硬件连接跳线设置: 模块电源L 区 JP8跳接。
单线连法如右图:A 相B 相C 相D 相OE#74LS373开关PA0 PA2 PA4 PA6 PC4 PC0 PC1按键开关T 区SW1 SW2排线接法如右图:步骤二: 将平台的电源开关拔到“内”的位置上。
在配套集成环境下进行硬件检测,来达到初始化芯片的目的。
步骤三: (演示实验步骤)打开集成环境在“演示实验”菜单下点开“基本接口实验”。
在“基本接口实验”中的“并行接口实验”中选择“步进电机”实验进行演示。
步骤四: (学生实验步骤)打开集成环境在“文件”菜单下学生可以选择新建自己的C++/ASM文件或者集成环境自带的C++/ASM参考程序进行调试、运行。
步骤五: 观看实验现象得出结论。
△步进电机接口控制流程图①△步进电机接口控制主程序:NAMA BUJINDIANJIDATA SEGMENTPSTA DB 05H,15H,14H,54H,50H,51H,41H,45H ;DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:CODEORG 100HBEGIN: MOV DX,303H ;初始化8255AMOV AL, 10000001B ;命令控制字OUT DX,AL ;送命令MOV AL,00001001B ;置PC4=1关闭74LS373OUT DX,ALL: MOV DX,302HIN AL,DXAND AL,00000010 ;查SW2按下?未按下, 等待 JNZ L ;按下后继续执行MOV DX,303H ;置PC4=0, 打开74LS37MOV AL,08HOUT DX,ALRELOAD: MOV SI,OFFSET PSTA ;设置相序表指针MOV CX,8 ;设8拍循环次数LOP: MOV DX,302HIN AL,DXAND AL,00000001 ;查SW1按下?未按下, 等待 JZ QUIT ;已按下, 退出MOV AL,[SI] ;未按下, 送相序代码到PA口 MOV DX,300HOUT DX,ALMOV DI,0AFHMOV BX,0FFFFH ;延时DELAY: DEC BXJNZ DELAYDEC DIJNZ DELAYINC SI ;相序表指针+1DEC CX ;循环次数-1JNZ LOP ;未到8次, 继续JMP RELOAD ;已到8次, 重新赋值QUIT: MOV DX,303H ;置PC4=1, 关闭74LS373MOV AL,09OUT DX,ALMOV AH,4CH ;程序退出, 带返回码结束INT 21HCODE ENDSEND START七、心得体会上机实验操作是一个把理论用于实践的很好机会。
步进电机实验微机原理

大连理工大学本科设计报告(计算机原理接口实验综合设计)题目:步进电机控制系统设计课程名称:计算机原理实验学院(系):电信专业:自动化班级:电自1301学号:201382062学生姓名:宁博成绩:2015年12月26 日题目:步进电机1. 设计要求利用实验台上的开关K7控制步进电机的转向,利用电位器控制步进电机的转速。
具体要求如下:1.利用D8255A的PA0-PA3做输出,输出步进电机的相序、驱动步进电机工作,相序之间的时间决定着步进电机的转速,而间隔时间由延时程序中的CX寄存器的初值决定。
2.利用D8255A的PB7做输入控制转向,与K7连接。
其中K7做步进电机的转向控制,用ADC0809实现AD转换,利用电位器控制转速,程序运行时通过K7和电位器对步进电机实施动态控制;3.利用8253做秒脉冲发生器,产生约2秒的周期性方波信号。
其中CNT0做分频器:将1MHZ信号分频为100HZ;CNT1做秒脉冲输出(0.5HZ);4.利用386模块的主8259的MIR5做中断请求输入,将CNT1的OUT1秒信号方波作为中断请求信号,引发中断服务ISR;5.在中断服务程序中实现对步进电机的转速、转向实时控制。
方法如下:在ISR中,对D8255A的PB口进行一次输入操作,并根据输入的数据:1)对D7(与K7对应)位的数据为步进电机的转向控制;2)ADC0809读入的数据为步进电机的转速控制。
2 .设计分析及系统方案设计1.使用“寄存器间接寻址”的方式输出相序信号:将步进电机的相序数据定义在数据段当中,使用SI查表(间接寻址)获取相序数据。
其中查表顺序决定着电机转动方向;2.对8253进行编程,使OUT1输出2秒周期的脉冲方波信号。
为了便于调试,建议使用逻辑笔监测OUT1的输出;3.编制与中断相关的程序。
包括中断屏蔽字的设定、中断向量表的创建以及开中断的操作。
上述这些操作都应当加到程序的初始化中;4.编写中断服务程序ISR。
微机原理及接口技术课程设计(步进电机)
微机原理及接口技术课程设报告题目步进电机转速实时控制学院电子信息工程学院专业学生姓名学号年级级指导教师职称二O一四年六月目录一、课程设计目的 (3)二、方案设计 (3)三、硬件系统的基本原理 (3)1、系统硬件子系统构成 (3)2、步进电机控制原理接线图 (4)3、工作原理 (5)四、软件框图及设计思想 (6)1、设计思想 (6)2、程序框图 (7)五、软件清单 (8)六、心得体会 (11)七、主要参考资料 (13)题目:步进电机转速实时控制一、课程设计目的:1、掌握四相步进电机接口电路的原理;2、理解步进电机正、反转工作原理和转速控制原理。
二、方案设计:本设计采用的步进电机为35BYJ46型四相八拍电机,电压为DC12V,电机的励磁线圈顺序已经在实验指导书中给定。
以8255A 作为并行输出接口,通过查询步进电机的励磁线圈顺序表以及计算出步进电机的相序表,编写出适当的程序来调节步进电机的正反转以及转速问题。
同时利用程序对步进电机事实与数码管同步的相应运转状态,从而使得整个步进电机控制系统得以准确实现。
三、硬件系统的基本原理:1、系统硬件子系统的构成:本设计采用的步进电机为35BYJ46型四相八拍电机,电压为DC12V,其励磁线圈及其励磁顺序如下图及下表所示:2、步进电机控制原理:4 - -3 - - -2 - - -1 - - -3、工作原理:4相步进电机示意图见下左图,转子由一个永久磁铁构成,定子分别由4组绕组构成电气连接示意图电机定子和转子示意图当S1连通电源后,定子磁场将产生一个靠近转子为N极,远离转子为S极才磁场,这样的定子磁场和转子的固有磁场发生作用,转子就会转动,正确地S1、S4的送电次序,就能控制转子旋转的方向。
例如:若送电的顺序为S1闭合断开S2闭合断开S3闭合断开S4闭合断开,周而复始的循环,在定子和转子共同作用下,电机就瞬时针旋转:若送电的顺序为S4闭合断开S3闭合断开S2闭合断开S1闭合断开,周而复始的循环,则电机就逆时针旋转,原理同理。
步进电机微机实验报告
步进电机微机实验报告步进电机微机实验报告引言:步进电机是一种特殊的电动机,它可以根据输入的电脉冲信号精确地控制转动角度和速度。
在本次实验中,我们使用了微机控制步进电机的转动,通过编写程序和控制电路,实现了步进电机的正转、反转和定位功能。
本报告将详细介绍实验的目的、原理、实验过程和结果,并对实验中遇到的问题进行分析和解决。
一、实验目的本次实验的目的是通过微机控制步进电机的转动,掌握步进电机的工作原理和控制方法。
具体目标包括:1. 理解步进电机的工作原理和结构特点;2. 掌握步进电机的控制方式和驱动电路设计;3. 通过编写程序实现步进电机的正转、反转和定位功能;4. 分析实验中可能遇到的问题,并提出解决方案。
二、实验原理步进电机是一种将电脉冲信号转化为机械转动的电动机。
它由定子、转子和驱动电路组成。
定子上有多个绕组,每个绕组上有若干个磁极。
转子上有多个磁极,与定子的磁极相对应。
通过改变绕组的通电顺序,可以使转子按一定的步距转动。
步进电机有两种常见的控制方式:全步进和半步进。
全步进模式下,每个步进脉冲使电机转动一个步距角度;半步进模式下,每个步进脉冲使电机转动半个步距角度。
在实验中,我们将使用全步进模式进行控制。
三、实验过程1. 设计驱动电路:根据步进电机的额定电流和电压,设计合适的驱动电路。
选择合适的功率晶体管和电流限制电阻,确保电机能够正常工作。
2. 连接电路:按照驱动电路的设计连接步进电机和微机。
注意接线的正确性和稳定性。
3. 编写控制程序:使用合适的编程语言编写步进电机的控制程序。
程序需要实现电机的正转、反转和定位功能。
4. 调试程序:通过调试程序,确保电机能够按照预期的方式工作。
可以通过改变电脉冲的频率和脉冲数来调整电机的转速和转动角度。
5. 实验结果记录:记录电机的转动角度、转速和实际运行情况。
分析实验结果,验证实验的准确性和可行性。
四、实验结果与分析经过实验,我们成功实现了步进电机的正转、反转和定位功能。
步进电机微机实验报告
一、实验目的1. 熟悉步进电机的工作原理和特性。
2. 掌握通过微机控制步进电机的基本方法。
3. 了解步进电机在微机控制下的应用。
二、实验原理步进电机是一种将电脉冲信号转换为角位移或线位移的电机,其特点是步进角固定,控制精度高,响应速度快。
步进电机的工作原理是:当给步进电机输入一定频率的脉冲信号时,电机就会以一定的步进角进行旋转。
步进电机的控制方式主要有以下几种:1. 单相控制:将步进电机绕组分为A、B、C、D四相,每相依次通电,实现电机的旋转。
2. 双相控制:将步进电机绕组分为A、B两相,通过改变A、B两相的通电顺序,实现电机的旋转。
3. 四相控制:将步进电机绕组分为A、B、C、D四相,通过改变A、B、C、D四相的通电顺序,实现电机的旋转。
三、实验设备1. 微机:一台2. 步进电机驱动器:一台3. 步进电机:一台4. 编程软件:例如Keil、IAR等5. 连接线:若干四、实验内容1. 步进电机基本特性测试(1)观察步进电机在不同脉冲频率下的转动情况。
(2)观察步进电机在不同脉冲数下的转动角度。
2. 步进电机单相控制(1)编写程序,实现步进电机单相控制。
(2)测试步进电机单相控制下的转动情况。
3. 步进电机双相控制(1)编写程序,实现步进电机双相控制。
(2)测试步进电机双相控制下的转动情况。
4. 步进电机四相控制(1)编写程序,实现步进电机四相控制。
(2)测试步进电机四相控制下的转动情况。
5. 步进电机转速控制(1)编写程序,实现步进电机转速控制。
(2)测试步进电机在不同转速下的转动情况。
6. 步进电机转向控制(1)编写程序,实现步进电机转向控制。
(2)测试步进电机正转和反转的情况。
五、实验步骤1. 连接步进电机驱动器和步进电机。
2. 在微机上编写程序,实现步进电机的基本控制。
3. 编写程序,实现步进电机单相、双相、四相控制。
4. 编写程序,实现步进电机转速和转向控制。
5. 运行程序,观察步进电机的转动情况。
微机原理接口技术综合实验 步进电机
INT 21HANY KEY PRESSED
POPDX *****控制信息出栈****
JE IN1***判断开关K0~K7是否被按下,是则跳转**
MOV AH,4CH
INT 21H***返回DOS****
IN1:MOV DX,P55a
IN AL,DX****从端口A读输入值****
JMP SAM
K6:MOV BL,0FFH
JMP SAM
第二部分:
DELAY PROC NEAR
DELAY1: MOV CX,0FFFFH;05A4H
DELAY2: LOOP DELAY2
DEC BL
JNZ DELAY1
RET
DELAY ENDP
代码解释:对应于按键K0~K6寄存器BL都有不同的值。根据BX值的不同通过指令DEC BX和指令JNZ DELAY1可以得到不同长度的延时,由不同长度的延时可以得到不同频率的输入脉冲,从而可以控制电机的转速。
实验说明
1、按图1连接线路,利用8255输出脉冲序列,开关K0~K6控制步进电机转速,K7控制步进电机转向。8255 CS接288H~28FH。PA0~PA3接BA~BD;PC0~PC7接K0~K7。
2、编程:
当K0~K6中某一开关为“1”(向上拨)时步进电机启动。K7向上打电机正转,向下打电机反转。
JNZ K6
STOP:MOV DX,P55c****程序第一次执行结束****
MOV AL,0FFH
JMP OUT1*****循环跳转*****
K0:MOV BL,10H
SAM:TEST AL,80H
JZ ZX0****检测K7是否被按下,否跳转到ZXO**
JMP NX0*****K7=1被按下跳转到NXO*****
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;*******************************;
DATA SEGMENT*****数据段定义开始*****
P55AEQU 288H ;8255APORTINPUT
P55CEQU 28AH ;8255CPORTOUTPUT
P55CTL EQU 28BH ;8255 COUTRL PORT
OUT DX,AL
MOV BUF,33H;***************************************
代码解释:最终目的是完成OUTDX,AL操作,即把控制字90H送到8255的控制口所在地址“0C800h-0280h+28BH”里。
2)、考虑到人机互动,这里还要在程序运行最开始输出一些提示信息,我这里用到的是DOS中断中INT 21的09号功能,关键代码如下:
图1
步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。
如图2所示:本实验使用的步进电机用直流+5V电压,每相电流为0.16A,电机线圈由四相组成:
即:φ1(BA)
φ2(BB)
φ3(BC)
φ4(BD)
驱动方式为二相激磁方式,各线圈通电顺序如下表。
MOV BUF,33H******控制信息初始化******
OUT1:MOV AL,BUF****控制信息为00110011****
MOV DX,P55C ***从C端口读出控制信息****
OUT DX,AL
PUSHDX ****控制信息入栈****
MOV AH,06H ****调用INT21控制台I/O输入**
JZ ZX0;判断K7是否为0,如果为0则跳转到ZX0处,电机顺时针转动
JMP NX0;如果不为0则跳转到NX0处,电机逆时针旋转。
K1:MOV BX,18H
JMP SAM
K2:MOV BX,20H
JMP SAM
K3:MOV BX,40H
JMP SAM
K4:MOV BX,80H
JMP SAM
K5:MOV BX,0C0H
DATA ENDS*****数据段定义结束*****
CODE SEGMENT*****代码段定义开始*****
ASSUME CS:CODE,DS:DATA*****数据段主体开始*****
START:MOV AX,CS
MOV DS,AX*****DS=CS*****
MOV AX,DATA
MOV DS,AX*****DS=DATA*****
K1:MOV BL,18H
JMP SAM
K2:MOV BL,20H
JMP SAM
K3: MOV BL,40H
JMP SAM
K4:MOV BL,80H
JMP SAM
K5:MOV BL,0C0H
JMP SAM
K6:MOV BL,0FFH
JMP SAM
ZX0: CALL DELAY
MOV AL,BUF****控制信息00110011****
1)、8255的方式控制字如下图所示:
由上图可知:8255方式控制字为10010000B=90H
知道了8255的控制字之后就可以给8255初始化了,初始化的关键代码如下
MOV DX,P55CTL;***************************************
MOV AL,90H;8255初始化:A口输入,C口输出。
JMP SAM
K6:MOV BL,0FFH
JMP SAM
第二部分:
DELAY PROC NEAR
DELAY1: MOV CX,0FFFFH;05A4H
DELAY2: LOOP DELAY2
DEC BL
JNZ DELAY1
RET
DELAY ENDP
代码解释:对应于按键K0~K6寄存器BL都有不同的值。根据BX值的不同通过指令DEC BX和指令JNZ DELAY1可以得到不同长度的延时,由不同长度的延时可以得到不同频率的输入脉冲,从而可以控制电机的转速。
6)、电机旋转方向控制的关键代码如下:
ZX0:CALL DELAY
MOV AL,BUF;AL=0011 0011
ROR AL,1;AL=1001 1001;循环右移,正转
MOV BUF,AL;BUF=1001 1001
JMP OUT1
NX0:CALL DELAY
MOV AL,BUF;AL=0011 0011
DELAY1: MOV CX,OFFFFH;05A4H
DELAY2: LOOP DELAY2
DEC BL
JNZ DELAY1
RET
DELAY ENDP*****延时子程序结束******
CODE ENDS*****代码段定义结束*****
END START*****主体程序结束*****
2、程序关键代码解释:
JNZ K6
STOP:MOV DX,P55c****程序第一次执行结束****
MOV AL,0FFH
JMP OUT1*****循环跳转*****
K0:MOV BL,10H
SAM:TEST AL,80H
JZ ZX0****检测K7是否被按下,否跳转到ZXO**
JMP NX0*****K7=1被按下跳转到NXO*****
MOV DX,OFFSET MES;************************
MOV AH,09;在屏幕上显示提示信息
INT 21H;************************
代码解释:把首地址为MES的字符串显示在屏幕上。
3)、有显示就要有输入,这里的输入用DOS调用里的INT21的06号功能,关键代码如下:
微机控制步进电机调速系统
一、实验目的
1、了解计算机控制步进电机原理
2、掌握步进电机正转反转设置方法。
3、掌握步进电机调速工作原理及程序控制原理。
二、设备与环境
TPC-2003A
微机。
Vc++编译器。
三、实验内容
硬件接线图参考实验指导书。
软件编程在TPC-2003A自带的VC++编译环境下使用。
在通用VC++下编程,需要拷贝相关的库文件。
ROL AL,1;AL=0011 0110;循环左移,反转
MOV BUF,AL;BUF=0011 0110
JMP OUT1
代码解释:根据K7键是否按下,程序分别跳转到ZX0和NX0,然后对AL分别进行循环左移和循环右移,通过把循环移动后AL的状态输出到8255的A口来实现电机的正转或反转。
教 师 评 价
ROR AL,1***控制信息右移电机正转***
MOV BUF,AL****控制信息10011001****
JMP OUT1
NX0:CALL DELAY
MOV AL,BUF
ROL AL,1***控制信息左移电机反转***
MOV BUF,AL
JMP OUT1
DELAY PROC NEAR*****延时子程序开始******
MOVAH,06h;调用INT 21的键盘输入功能**
MOXDL,0FFH
INT 21H;****ANY KEY PRESSED*******
代码解释:这里的指令:MOXDL,0FFH 表示此功能为输入,即开关K0~K7的输入。
4)、接下来程序要根据K0~K7的开关状态来进行相应的跳转动作,这里对开关状态判断指令比较关键,现列出其关键的代码段如下:
BUF DB 0
MES DB 'K0-K6 ARE SPEED CONTYOL',0AH,0DH
DB 'K6 IS THE LOWEST SPEED ',0AH,0DH
DB 'K0 IS THE HIGHEST SPEED',0AH,0DH
DB 'K7 IS THE DIRECTION CONTROL',0AH,0DH,'$'
****检测输入值来自那一个端口****
TEST AL,01H
JNZ K0****根据检测结果跳转*****
TEST AL,02H
JNZ K1
TEST AL,04H
JNZ K2
TEST AL,08H
JNZ K3
TEST AL,10H
JNZ K4
TEST AL,20H
JNZ K5
TEST AL,40H
用汇编语言编写控制程序需注明原理。
四、实验结果及分析
按原理图连接线路,利用8255输出脉冲序列,开关K0~K6控制步进电机转速,K7控制步进电机转向。8255 CS接288H~28FH。PC0~PC3接BA~BD;PA口接逻辑电平开关。
编程:当K0~K6中某一开关为“1”(向上拨)时步进电机启动。K7向上拨电机正转,向下拨电机反转。
JNZ K6;根据输入跳转
代码解释:首先指令IN AL,DX将开关的状态读入到AL中然后用TEST指令将AL中的内容与另一个数相与,判断相与之后的结果是否为0 如果不为零则发生相应的跳转(JNZ)去执行跳转之后的指令。
5)、跳转之后的指令的关键代码如下:
第一部分:
K0:MOV BX,01F01H
SAM:TEST AL,80H;AL与80H相与,用于判断K7是否为0
MOVDL,0FFH
INT 21HANY KEY PRESSED
POPDX *****控制信息出栈****
JE IN1***判断开关K0~K7是否被按下,是则跳转**
MOV AH,4CH
INT 21H***返回DOS****