最新8255端口控制步进电机控制框图和程序汇总

合集下载

6.4 可编程并行接口8255

6.4 可编程并行接口8255

19
图6.20
方式2下的信号定义
20
A口方式2的工作过程简要叙述如下。 工作在方式2的A口,可以认为是前面方式1的输入 和输出相结合而分时工作的。其工作过程和方式1的输 入和输出过程一样。值得注意的是,在这种工作方式 之下,8255与外设之间是通过A口的8条线PA0-PA7交换 数据的。在PAO-PA7上,可能出现8255A口输出数据到 外设,也可能出现外设通过PAO-PA7将数据传送给8255. 这就要防止PA0-PA7上的数据线竞争问题A口在STB锁存数据后,外设即可去 掉要输入的数据;A口的是在ACK有效时才将数据输出, 有外设获得输出的数据,完成双向传送的功能。
15
方式1下数据输入过程如下所述。 当外设有数据需要输入时,将数据送到8255口上, 并利用输出STB脉冲将数据锁存,同时,产生INTR信号 并使IBF有效。有效的IBF通知外设不再送数据。产生已 锁存的中断请求要求CPU从8255的口上读取数据。CPU响 应中断,读取数据后使IBF和INTR变为无效。上述过程 可用图6.19的简单时序图进一步说明。 在方式1之下,8255的A口和B口均可以为输入或输 出;也可以一个为输入,另一个为输出;还可以一个工 作于方式1,而另一个工作于方式0。这种灵活的工作特 点是由其可编程的功能来实现的。
18
②此时A口输入、输出均具备锁存数据的能力。 CPU写A口时,数据锁存于A口,外设的STB可将输入数 据锁存于A口。 ③在这种方式下,A口的数据输入或数据输出均可 引起中断。由图6.20可见,输入或输出中断还受到中 断允许状态INTE2和INTE1的影响。INTE2是由PC4控制的, 而INTE1是由PC6控制的。利用C口的按位操作,通过PC4 或PC6的置位或复位,可以允许或禁止相应的中断请求。

8255控制步进电机

8255控制步进电机

微型计算机原理综合实验装题目:步进电机控制订线学院电子信息工程学院学科门类工科专业电子科学与技术学号**********姓名张少雄指导教师高芳2008 年12 月21 日步进电机控制摘要:在本实验中,通过汇编语言对可编程I/O口扩展芯片8255编程,控制其输出信号。

8255的输出端连接驱动电路,使驱动电路按照程序设定好的方式导通,来控制步进电机的转动。

并且在程序中设定,由键盘控制步进电机的转向。

关键词:步进电机、微处理器、8255、控制、转向。

目录一.实验目的--------------------------------------2二.设计要求------------------------------2三、设计原理------------------------------3 四.硬件工作原理--------------------------4 五.程序框图------------------------------5 六.总结与体会-----------------------------5 参考文献----------------------------------6附录--------------------------------------7一.实验目的1.1掌握8255的使用方法掌握8255可编程I\O扩展芯片的编程方法,通过对工作方式的设定,使其能够对步进电机的驱动电路起到控制作用。

1.2掌握步进电机的工作原理了解步进电机的工作原理,熟悉型号为30BYJ011的步进电机的性能参数和四相八拍工作方式的特点,1.3 掌握模拟电路的基本知识通过对步进电机的驱动电路的设计,进一步掌握模拟电路在实际中的应用。

二.设计要求2.1外设电路要求设计外设电路,使电路能够驱动步进电机的转动,符合步进电机的使用要求。

本实验采用的步进电机型号为30BYJ011,工作方式为四相八拍,工作电压为DC12V 。

基于8255的步进电机控制系统设计

基于8255的步进电机控制系统设计

基于8255的步进电机控制系统设计一、实验设计的目的与要求通过步进电机控制系统实验设计,用8255扩展端口控制步进电机,编写程序输出脉冲序列到8255的PA口,控制步进电机正传,反转,加速,减速。

进一步掌握微机原理与接口的理论和实际方法。

培养和锻炼开发控制系统的能力。

为今后单片机的学习与应用开发打下良好的基础。

要求了解步进电机控制的基本原理,掌握控制步进电机的转动的编程方法,进一步了解单片机控制外部设备的常用电路。

二、步进电机原理1.步进电机的工作原理该步进电机为一四相步进电机,采用单极性直流电源供电。

只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。

图1是该四相反应式步进电机工作原理示意图。

图1 四相步进电机步进示意图开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。

当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。

而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。

依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。

四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。

单四拍与双四拍的步距角相等,但单四拍的转动力矩小。

八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。

单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示:a. 单四拍b. 双四图2.步进电机工作时序波形图拍c八拍2.步进电机的驱动原理步进电动机是一种数字元件,易于数字电路接口,但一般数字电路的信号的能量远远不足以驱动步进电动机。

因此,必须有一个与之匹配的驱动电路来驱动步进电动机。

灯塔信号控制 (8255)

灯塔信号控制 (8255)

沈阳工程学院课程设计设计题目:单片机课程设计系别电气工程系班级发电053 班学生姓名王东旭学号 25 指导教师曲乐声、王德君职称讲师起止日期: 2007年 6月 18日起——至 2007年6月22日止沈阳工程学院课程设计任务书设计题目:灯塔信号控制(8255)系别电气工程系班级发电053 班学生姓名王东旭学号 25指导教师曲乐声、王德君职称讲师课程设计进行地点:信息工程系单片机实验室310 任务下达时间: 2007 年 6 月 8 日起止日期:2007年6月18日起—至2007年6月22日止教研室主任李贞 2007年 6月 8日批准一、设计的原始资料及依据单片机应用技术课程设计使学生更进一步加深对课程内容和知识的理解,提高使用汇编语言分析问题、解决问题的能力,通过查阅资料,阅读程序,提高设计程序的能力及动手能力。

达到理论联系实际、灵活应用单片机解决实际问题的目的,同时也使学生通过动手进行硬件设计及程序设计从而提高解决实际问题的能力。

二、课程设计的主要内容及要求1、认真查阅资料,完成以下题目中的一个题目。

(1)节日彩灯控制(P1口、8255) (2)运算器电路(P1口、8255) (3)水位监测控制(4)温度监测控制(P1口、8255) (5)模拟交通灯控制(P1口、8255)(6)工业流水线控制(P1口、8255) (7 )灯塔信号控制(P1口、8255) (8)、两路模拟信号转换2、遵守课程设计时间安排3、按时上机,认真调试程序4、独立完成设计任务,认真书写报告三、对设计说明书撰写内容、格式、字数的要求1、课程设计封皮2、课程设计任务书3、课程设计成绩评定表4、目录5、正文(设计思想、程序流程图、程序清单及相关说明、设计总结或体会)6、参考文献四、设计完成后应提交成果的种类、数量、质量等方面的要求课程设计后可提交完整的报告,并根据下列条件评定成绩。

1、未完成设计任务,没达到设计要求则成绩为“不及格”。

微机原理利用8255控制直流电机程序

微机原理利用8255控制直流电机程序

1.8255控制直流电机程序+8259中断控制+一个最大转速报警功能程序:CODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEDAPORT EQU 0FFE0H ;伪指令定义DAPORT、字形位口、PCTL PAZXK EQU 0FFDCHZWK EQU 0FFDDHPCTL EQU 0FFD9HPA EQU 0FFD8HPORT0 EQU 0FFE2HPORT1 EQU 0FFE1HORG 3670HSTART: MOV BUF,00HMOV BUF+1,08HMOV BUF+2,03HMOV DX,PCTL ;写控制字90H,决定PA口输入MOV AL,90HOUT DX,ALMOV DX,PORT0MOV AL,13HOUT DX,ALMOV AL,08HMOV DX,PORT1OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,7FHOUT DX,ALMOV AL,80H ;开始运行时直流电机停止P8259:CLIMOV AX,OFFSET START1MOV BX,003CHMOV [BX],AXMOV BX,003EHMOV AX,0000HMOV [BX],AXMOV SI,0000HSTICON8: CALL DIS ;等待中断,进行自锁保护JMP CON8START1:CLIMOV DX,PAIN AL,DXTEST AL,08HJNZ STOP ;读PA,是否用户要求停止JMP GOONSTOP:MOV DX,DAPORTMOV AL,80HOUT DX,ALMOV BUF+4,8MOV BUF+5,0CALL JDALJMP START1 ;返回,等待用户开启GOON:MOV DX,PAIN AL,DX ;通过PA口读入三个开关的状态AND AL,07H ;保留开关状态信息的低三位MOV AH,AL ;TEST AL,04HJZ ZZ ;判定正反转;------------------------ 反转模块-------------------------MOV BUF+3,1;反转时LED倒数第三位显示1 TEST AL,02H ;判定加速与否JZ L1TEST AL,01H ;暂停电机JZ L3MOV AL,V ALCMP AL,00H ;加速时设置反转速度的上限为00HJZ L3SUB AL,1MOV V AL,AL ;把反转转速暂存到V ALJMP L3L1: MOV AL,AHTEST AL,01H ;停止速度JZ L3MOV AL,V ALCMP AL,80H ;减速时设置反转转速的下限80HJZ L3ADD AL,1MOV V AL,AL;------------------- 显示反转转速的大小模块-----------------------L3: JZ BJJJMP XSSBJJ: PUSH AX ;最大速度报警,LED灯亮MOV AL,0FFHMOV DX,0FFD9HOUT DX,ALPOP AXXSS: MOV AL,V AL ;把速度送至BUF+4 BUF+5显示AND AL,0FHMOV BUF+5,ALMOV AL,V ALMOV CL,4SHR AL,CLMOV BUF+4,ALMOV AL,V ALMOV DX,DAPORTOUT DX,ALCALL JDAL ;调用数码管延时显示子程序JDALJMP START1;------------------------ 正转模块ZZ-------------------------ZZ: MOV BUF+3,0TEST AL,02H ;判定加速与否JZ L2TEST AL,01H ;判定是否锁定JZ L4MOV AL,V AL+1CMP AL,0FFH ;设置正转速度的上限0FFHJNC L4ADD AL,1MOV V AL+1,ALJMP L4L2: MOV AL,AHTEST AL,01H ;判定是否锁定JZ L4MOV AL,V AL+1CMP AL,80HJZ L4SUB AL,1OUT DX,ALMOV V AL+1,AL;------------------- 显示正转转速的大小模块-----------------------L4: JNC BJBJ: PUSH AX ;最大速度报警,LED灯亮MOV AL,0FFHMOV DX,0FFD9HOUT DX,ALPOP AXXS: MOV AL,V AL+1AND AL,0FHMOV BUF+5,ALMOV AL,V AL+1MOV CL,4SHR AL,CLMOV BUF+4,ALMOV AL,V AL+1MOV DX,DAPORTOUT DX,ALCALL JDALJMP START1IRET;================================================================ ;------------------设置延时显示长短子程序----------------JDAL: CALL DISMOV CX,0f5H ;定义延时时间长短P6: PUSH CXCALL DIS ;调用显示子程序DISPOP CXLOOP P6RET;----------------------数码管显示子程序--------------------------DIS: MOV CL,20HMOV BX,OFFSET BUFDIS1: MOV AL,[BX]PUSH BXMOV BX,OFFSET LEDXLAT ;取出字形码POP BXMOV DX,ZXKOUT DX,ALMOV AL,CLMOV DX,ZWKOUT DX,ALPUSH CXMOV CX,10HDELY: LOOP $ ;等待CMP CL,01HJZ EXITINC BXSHR CL,1JMP DIS1EXIT: MOV AL,00HMOV DX,ZWKOUT DX,ALRETBUF DB ?,?,?,?,?,?LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HV AL DB 80H,80H ;定义正转和反转的速度暂存空间CODE ENDSEND START。

8255引脚图及引脚功能

8255引脚图及引脚功能

8255引脚图及引脚功能单片机系统中常用的地址锁存器芯片74LS373以及coms的74hc373。

是带三态缓冲输出的8D触发器,其引脚图与结构原理图、电路连接图如下:<74LS373引脚图内部结构原理图电路连接图>E G 功 能0 0 直通Qi = Di0 1 保持(Qi保持不变)1 X 输出高阻<74LS373功能表>E G D QL H H HL H L LL L X Q上表是74LS373的真值表,表中:L——低电平;H——高电平;X——不定态;Q0——建立稳态前Q的电平;G——输入端,与8031ALE连高电平:畅通无阻低电平:关门锁存。

图中OE——使能端,接地。

当G=“1”时,74LS373输出端1Q—8Q与输入端1D—8D相同;当G为下降沿时,将输入数据锁存。

8255A(2)7.2 可编程并行接口由于我们现在常用的微机系统均以并行方式处理数据,所以,并行接口也是最常用的接口电路。

并行接口有以下几方面的特点:(1)并行接口是在多根数据线上,以数据字节(字)为单位与输入/输出设备或被控对象传送信息的,如打印机接口、A/D、D /A转换器接口、IEEE-488接口、开关量接口、控制设备接口等。

在实际应用中,凡在CPU与外设之间同时需要两位以上信息传送时,就要采用并行口。

并行口适用于近距离传送的场合。

由于各种I/O设备和被控对象多为并行数据线连接,CPU用并行口来组成应用系统很方便,故使用十分普遍。

(2)并行传送的信息,不要求固定的格式,这与串行传送的信息有数据格式的要求不同。

例如,异步串行通信的格式是一个数据,它包括起始位、数据位、校验位和停止位。

(3)从并行接口的电路结构来看,并行口有硬线连接接口和可编程接口之分。

硬线连接接口的工作方式及功能用硬线连接来设定,用软件编程序的方法不能加以改变;如果接口的工作方式及功能可以用软件编程序的方法加以改变,则就叫可编程接口。

8255端口控制步进电机控制框图和程序

8255端口控制步进电机控制框图和程序

9.4工程应用9.4.1项目1:用8255A端口控制步进电机1.项目要求与目的(1)项目要求:根据开关的状态,用8255端口控制步进电机,编写程序输出脉冲序列到8255的PA口,控制步进电机正转、反转,加速,减速。

(2)项目目的:●了解步进电机控制的基本原理。

●掌握控制步进电机转动的编程方法。

●了解单片机控制外部设备的常用电路。

2.项目电路连接与说明(1)项目电路连接:8255的片选CS孔用导线接至译码处200H~207H插孔,8255的PA0-PA3用导线接至步进电机的A、B、C和D,PB0-PB3用导线接至开关K0、K1和K2。

(2)项目说明:步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。

切换是通过8255输出脉冲信号来实现的。

所以调节脉冲信号的频率便可以改变步进电机的转速,改变各相脉冲的先后顺序,可以改变电机的旋转方向。

步进电机的转速应由慢到快逐步加速。

步进电机驱动方式可以采用双四拍(AB→BC→CD→DA→AB)方式,也可以采用单四拍(A→B→C→D→A)方式,或单、双八拍(A→AB→B→BC→C→CD→D→DA→A)方式。

实际控制时公共端是接在+5V上的,所以实际控制脉冲是低有效。

8255的PA口输出的脉冲信号经(MC1413或ULN2003A)倒相驱动后,向步进电机输出脉冲信号序列。

当开关K0=0时,步进电机驱动方式采用单/双八拍工作方式,当开关K1=0时,步进电机驱动方式采用双四拍工作方式,当开关K2=0时,步进电机驱动方式采用单四拍反转工作方式。

3.项目电路原理框图项目电路原理框图如图7-1所示。

电路由8255A芯片、驱动和步进电机等组成。

图7-1 用8255A端口控制步进电机电路框图4.项目程序设计(1)程序流程图用8255A端口控制步进电机程序流程图如图7-2所示。

图7-2 程序流程图(2)程序清单用8255A端口控制步进电机程序清单如下所示。

ASTEP EQU 01HBSTEP EQU 02HCSTEP EQU 04HDSTEP EQU 08HCODE SEGMENTASSUME CS:CODESTART :MOV DX, 203H ;8255控制口地址MOV AL, 82H ;PA口输出,B口输入OUT DX, AL ;写控制字K0:MOV DX, 200H ;PA口地址MOV AL,0 ;输出低电平OUT DX,AL ;电机停止转动MOV DX,201H ;PB口地址IN AL,DX ;读开关状态TEST AL,01H ;PB0位(K0=0吗?)JNZ K1 ;不是零转K1JMP STEP8 是零转单/双八拍工作方式K1: IN AL,DX ;读开关状态TEST AL,02H ;PB1位(K1=0吗?)JNZ K2 ;不是零转K2JMP STEP4 ;是零转双四拍工作方式K2:IN AL,DX ;读开关状态TEST AL,04H ;PB2位(K2=0吗?)JZ STEP41 ;是零转单四拍反转工作方式JMP K0 ;循环; 单/双八拍工作方式:A→AB→B→BC→C→CD→D→DA→A STEP8:MOV BX,9000H;设置初始延时时间MOV DX, 200H;PA口地址MOV AL,ASTEPOUT DX,ALCALL DELAYMOV AL,ASTEP+BSTEPOUT DX,ALCALL DELAYMOV AL,BSTEPOUT DX,ALCALL DELAYMOV AL,BSTEP+CSTEPOUT DX,ALCALL DELAYMOV AL,CSTEPOUT DX,ALCALL DELAYMOV AL,CSTEP+DSTEPOUT DX,ALCALL DELAYMOV AL,DSTEPOUT DX,ALCALL DELAYMOV AL,DSTEP+ASTEPOUT DX,ALCALL DELAYJMP K0; 双四拍工作方式:AB→BC→CD→DA→ABSTEP4:MOV BX,5000H;设置延时时间MOV DX, 200H;PA口地址MOV AL,ASTEP+BSTEP;PA0PA1(AB相)输出高电平 OUT DX,ALCALL DELAY ;调延时MOV AL,BSTEP+CSTEP ;BC输出高电平OUT DX,ALCALL DELAY ;调延时MOV AL,CSTEP+DSTEP;CD输出高电平OUT DX,ALCALL DELAY ;调延时MOV AL,DSTEP+ASTEP;DA输出高电平OUT DX,ALCALL DELAY ;调延时JMP K0; 单四拍反转工作方式: D→C→B→A→DSTEP41:MOV BX,1000H;设置延时时间MOV DX,200H;PA口地址MOV AL,DSTEP; D输出高电平OUT DX,ALCALL DELAY;调延时MOV AL,CSTEP; C输出高电平OUT DX,ALCALL DELAY;调延时MOV AL,BSTEP; B输出高电平OUT DX,ALCALL DELAY;调延时MOV AL,ASTEP; A输出高电平OUT DX,ALCALL DELAY;调延时JMP K0DELAY PROC NEAR ;延时子程序PUSH CXMOV CX,BXDD1:NOPLOOP DD1POP CXRETDELAY ENDP ; 延时子程序结束CODE ENDS ;代码段结束END START。

微机原理步进电机控制

微机原理步进电机控制

微机原理步进电机控制微机原理步进电机控制实验报告实验步进电机控制⼀、实验内容l、⽤8255的PA0,PA3输出脉冲信号,驱动步进电机转动,通过键盘设定来控制步进电机正转、反转、停⽌。

2、实验预备知识,步进电机驱动原理是通过对它每相线圈中的电流的顺序切换来使电机作步进式旋转。

驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速,⽤微电脑控制步进电机最适合。

⼆、实验步骤1、在系统处于命令提⽰符“P.”态下,按SCAL键。

2、按图6,9连好实验线路图,8255的PA0,PA3依次连到HA-HD插孔。

3、运⾏实验程序。

在系统处于命令提⽰符“P.”态下,输⼊1630,按EXEC键,显⽰BJ?,按“1”键正转;按“2”键反转;按“3”停⽌。

4、观察步进电机转动情况。

三、实验原理图, 实验接线图:四(实验程序清单CODE SEGMENT ;BJ.ASM ASSUME CS: CODE IOCONPT EQU 0FF2BH IOBPT EQU 0FF29H IOAPT EQU 0FF28HPA EQU 0FF20H ;字位⼝PB EQU 0FF21H ;字形⼝PC EQU 0FF22H ;键⼊⼝ORG 1630HSTART: JMP START0 BUF DB ?,?,?,?,?,? KZ DB ?ltime db ?lkey db ?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h db86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F1HSTART0: CALL BUF1 ;写显⽰缓冲区初值MOV AL,88H ;MOV DX,IOCONPTOUT DX,AL ;写命令字redikey: call dispkey ;调⽤显⽰键扫cmp KZ,01h ;是1键正转JZ ZZcmp KZ,02h ;是2键反转JZ STXJMP REDIKEY ;继续读键JMP ST ;转停⽌ STX:ZZ: CALL BUFZ ;显⽰正转值ZZ1: MOV DX,IOAPT ;PA⼝MOV AL,03H ;MOV DX,IOAPTOUT DX,AL ;驱动步进电机,A.B两相CALL DELPZ ;延时,读键MOV AL,06HMOV DX,IOAPTOUT DX,AL ;驱动步进电机,A.d两相CALL DELPZ MOV AL,0CHMOV DX,IOAPTOUT DX,AL ;驱动步进电机,C.D两相CALL DELPZ MOV AL,09H ;驱动步进电机,B.C两相MOV DX,IOAPT OUT DX,ALCALL DELPZMOV AL,03HMOV DX,IOAPTOUT DX,ALCALL DELPZMOV AL,06HMOV DX,IOAPTOUT DX,ALCALL DELPZMOV AL,0CHMOV DX,IOAPTOUT DX,ALCALL DELPZMOV AL,09HMOV DX,IOAPTOUT DX,AL;------------------------- FZ: CALL BUFF ;反转⼊⼝FZ1: MOV DX,IOAPTMOV AL,0CHOUT DX,ALCALL DELPFMOV AL,06HMOV DX,IOAPTOUT DX,ALCALL DELPFMOV DX,IOAPTMOV AL,03HOUT DX,ALCALL DELPFMOV AL,09HMOV DX,IOAPTOUT DX,ALCALL DELPFMOV AL,0CHMOV DX,IOAPTOUT DX,ALCALL DELPFMOV AL,06HMOV DX,IOAPTOUT DX,ALCALL DELPFMOV AL,03HMOV DX,IOAPTOUT DX,ALCALL DELPFMOV AL,09HMOV DX,IOAPTOUT DX,ALCALL DELPFMOV AL,00HOUT DX,ALST1: call dispkey cmp KZ,01hJZ ZZMONcmp KZ,02hJZ FZMONJMP ST1delpZ: mov cx,02h con1: push cx CALL dispkey pop cxcmp KZ,02hJZ FZMONcmp KZ,03hJZ STMONloop con1RETdelpF: mov cx,02h con2: push cx CALL dispkey pop cxcmp KZ,01hJZ ZZMONcmp KZ,03hJZ STMONloop con2RETZZMON: POP CXJMP ZZFZMON: POP CXJMP FZSTMON: POP CXJMP ST;-------------------------dispkey: call disp ;键盘显⽰⼦程序,见前注释call key mov ah,al ;newkeymov bl,ltime ;ltimemov dx,PA ;0ff21hout dx,alcmp ah,bhmov bh,ah ;bh=new keymov ah,bl ;al=timejz disk4mov bl,88hmov ah,88hdisk4: dec ahcmp ah,82hjz disk6cmp ah,0ehjz disk6cmp ah,00hjz disk5mov ah,20hdec bljmp disk7disk5: mov ah,0fhdisk6: mov bl,ahmov ah,bhdisk7: mov ltime,blmov lkey,bhmov KZ,bhmov al,ahretkey: mov al,0ffh ;键扫⼦程序mov dx,PB out dx,almov bl,00hmov ah,0fehmov cx,08hkey1: mov al,ahmov dx,PAmov ah,alnopnopnopnopnopnopmov dx,PCin al,dxnot alnopnopand al,0fhjnz key2inc blloop key1jmp nkeykey2: test al,01h je key3 mov al,00hjmp key6key3: test al,02h je key4 mov al,08hjmp key6key4: test al,04h je key5 mov al,10hjmp key6key5: test al,08hje nkeymov al,18hkey6: add al,blcmp al,10hjnc fkeymov bl,almov al,[bx+si]retnkey: mov al,20h fkey: retdata2: db 07h,04h,08h,05h,09h,06h,0ah,0bh DB 01h,00h,02h,0fh,03h,0eh,0ch,0dh DISP: MOV AL,0FFH ;显⽰⼦程序 ,5ms MOV DX,PAOUT DX,ALMOV CL,0DFH ;20HMOV BX,OFFSET BUF DIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,0a0HLOOP $POP CXCMP CL,0FEHJZ LX1INC BXROR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,0BH ;写”BJ----” MOV BUF+1,019HMOV BUF+4,17HMOV BUF+5,17HRETBUFZ: MOV BUF,0BH ;写”BJ---F” MOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,17HMOV BUF+5,0FHRETBUFF: MOV BUF,0BH ;写”BJ---r” MOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,17HMOV BUF+5,18HRETBUFS: MOV BUF,0BH ;写”BJ---S” MOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,17HMOV BUF+5,05HRETCODE ENDSEND START五、实验总结1、通过实验进⼀步了解8086的使⽤,学习汇编语⾔编程⽅法及调试技巧。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8255端口控制步进电机控制框图和程序
9.4工程应用
9.4.1项目1:用8255A端口控制步进电机
1.项目要求与目的
(1)项目要求:根据开关的状态,用8255端口控制步进电机,编写程序输出脉冲序列到8255的PA口,控制步进电机正转、反转,加速,减速。

(2)项目目的:
●了解步进电机控制的基本原理。

●掌握控制步进电机转动的编程方法。

●了解单片机控制外部设备的常用电路。

2.项目电路连接与说明
(1)项目电路连接:8255的片选CS孔用导线接至译码处200H~207H 插孔,8255的PA0-PA3用导线接至步进电机的A、B、C和D,PB0-PB3用导线接至开关K0、K1和K2。

(2)项目说明:步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。

切换是通过8255输出脉冲信号来实现的。

所以调节脉冲信号的频率便可以改变步进电机的转速,改变各相脉冲的先后顺序,可以改变电机的旋转方向。

步进电机的转速应由慢到快逐步加速。

步进电机驱动方式可以采用双四拍(AB→BC→CD→DA→AB)方式,也可以采用单四拍(A→B→C→D→A)方式,或单、双八拍(A→AB→B→BC→C→CD→D→DA →A)方式。

实际控制时公共端是接在+5V上的,所以实际控制脉冲是低有效。

8255的PA口输出的脉冲信号经(MC1413或ULN2003A)倒相驱动后,向步进电机输出脉冲信号序列。

当开关K0=0时,步进电机驱动方式采用单/双八拍工作方式,当开关K1=0时,步进电机驱动方式采用双四拍工作方式,当开关K2=0时,步进电机驱动方式采用单四拍反转工作方式。

3.项目电路原理框图
项目电路原理框图如图7-1所示。

电路由8255A芯片、驱动和步进电机等组成。

图7-1 用8255A端口控制步进电机电路框图
4.项目程序设计
(1)程序流程图
用8255A端口控制步进电机程序流程图如图7-2所示。

图7-2 程序流程图(2)程序清单
用8255A端口控制步进电机程序清单如下所示。

ASTEP EQU 01H
BSTEP EQU 02H
CSTEP EQU 04H
DSTEP EQU 08H
CODE SEGMENT
ASSUME CS:CODE
START :
MOV DX, 203H ;8255控制口地址
MOV AL, 82H ;PA口输出,B口输入
OUT DX, AL ;写控制字
K0:MOV DX, 200H ;PA口地址
MOV AL,0 ;输出低电平
OUT DX,AL ;电机停止转动
MOV DX,201H ;PB口地址
IN AL,DX ;读开关状态
TEST AL,01H ;PB0位(K0=0吗?)
JNZ K1 ;不是零转K1
JMP STEP8 是零转单/双八拍工作方式
K1: IN AL,DX ;读开关状态
TEST AL,02H ;PB1位(K1=0吗?)
JNZ K2 ;不是零转K2
JMP STEP4 ;是零转双四拍工作方式
K2:IN AL,DX ;读开关状态
TEST AL,04H ;PB2位(K2=0吗?)
JZ STEP41 ;是零转单四拍反转工作方式
JMP K0 ;循环
; 单/双八拍工作方式:A→AB→B→BC→C→CD→D→DA→A STEP8:MOV BX,9000H;设置初始延时时间
MOV DX, 200H;PA口地址
MOV AL,ASTEP
OUT DX,AL
CALL DELAY
MOV AL,ASTEP+BSTEP
OUT DX,AL
CALL DELAY
MOV AL,BSTEP
OUT DX,AL
CALL DELAY
MOV AL,BSTEP+CSTEP
OUT DX,AL
CALL DELAY
MOV AL,CSTEP
OUT DX,AL
CALL DELAY
MOV AL,CSTEP+DSTEP
OUT DX,AL
CALL DELAY
MOV AL,DSTEP
OUT DX,AL
CALL DELAY
MOV AL,DSTEP+ASTEP
OUT DX,AL
CALL DELAY
JMP K0
; 双四拍工作方式:AB→BC→CD→DA→AB
STEP4:MOV BX,5000H;设置延时时间
MOV DX, 200H;PA口地址
MOV AL,ASTEP+BSTEP;PA0PA1(AB相)输出高电平 OUT DX,AL
CALL DELAY ;调延时
MOV AL,BSTEP+CSTEP ;BC输出高电平
OUT DX,AL
CALL DELAY ;调延时
MOV AL,CSTEP+DSTEP;CD输出高电平
OUT DX,AL
CALL DELAY ;调延时
MOV AL,DSTEP+ASTEP;DA输出高电平
OUT DX,AL
CALL DELAY ;调延时
JMP K0
; 单四拍反转工作方式: D→C→B→A→D
STEP41:MOV BX,1000H;设置延时时间
MOV DX,200H;PA口地址
MOV AL,DSTEP; D输出高电平
OUT DX,AL
CALL DELAY;调延时
MOV AL,CSTEP; C输出高电平 OUT DX,AL
CALL DELAY;调延时
MOV AL,BSTEP; B输出高电平 OUT DX,AL
CALL DELAY;调延时
MOV AL,ASTEP; A输出高电平 OUT DX,AL
CALL DELAY;调延时
JMP K0
DELAY PROC NEAR ;延时子程序
PUSH CX
MOV CX,BX
DD1:
NOP
LOOP DD1
POP CX
RET
DELAY ENDP ; 延时子程序结束CODE ENDS ;代码段结束
END START。

相关文档
最新文档