




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计题目:基于MCS-51单片机的反应式步进电机控制器设计,要求能够控制其转速、正反转和运行步数。摘要:在中国这个发展中大国,单片机的出现意味着计算机分为通用计算机系统和嵌入式计算机系统。单片机单芯片因它的体积微小和成本低廉的优点而广泛的应用到家电、仪表、汽车电子、工业控制单元、办公自动化设备、通信设备等这些产品中去,是现代电子系统中极其重要的智能化工具。在未来,单片机将会进一步的走向低功耗、小体积、大容量、高性能、低价位和混合信号集成化。本设计基于AT89S51单片机,利用反应式步进电机控原理,对其控制进行硬件和软件的设计。以实现对反应式电机的控制器可对36BF003型步进电机进行正反转、启停、速度和步数控制。关键字:步进电机;单片机;拍数;控制器;反应式一、控制原理分析1.1三相步反应式进电机工作原理反应式步进电机又称可变磁阻式步进电机,它和普通的电机一样,也是有定子和转子组成,它利用磁阻转矩使转子转动。三相反应式步进电机定机定子上有六个极,每个极上装有控制绕组,每相对的两极组成一相。转子上有数个均匀分布的齿,其上没有绕组,当A相通电时,转子在磁场力的作用下与定子齿对齐,若切断A相电源,同时接通B相电源,在磁场力的作用下转子转过一个步距角(步距角由转子齿数、控制绕组相数和通电方式决定),如再使B相断电,同时使C相控制绕组通电,转子又转过一个步距角。如此循环通电,并按A→B→C→A顺序通电,步进电机便按一定的方向转动。电机的转速取决于控制绕组接通的断开的变化频率。若改变通电顺序,即按A→C→B→A方式通电,则电机反向转动。上述通电方式称为三相单三拍通电方式;这里的“拍”是指定子控制绕组每改变一次通电方式,为一拍;“单”是指每次只有一相控制绕组通电;“三拍”是指经过三次切换控制绕组的通电状态为一个循环。三相步反应式进电机除上述通电方式外,还有三相双三拍和三相单双六拍通电方式,三相双三拍通电顺序为AB→BC→CA→AB或AB→CA→BC→AB,三相单双六拍通电顺序为A→AB→B→BC→C→CA→A或A→AC→C→CB→B→BA→A,这里“AB”表示A、B两相同时通电,依此类推。三相反应式步进电机的步距角θs的大小是由转子的齿数、控制绕组的相数和通电方式所决定的,其关系为oθs=360/(r)o式中C为通电状态系数,当采用单拍方式时,C=1;而采用单双拍方式时,C=2;m为步进电机相数,当为步进电机转子数。若步进电机能电的脉冲频率为f(每秒的拍数,则步进电机的速度为n=60f/(r)式中:f为频率,单位为Hz;n为转速,单位为1.2基于单片机的步进电机驱动器控制原理步进电机驱动器控制系统的硬件设备由单片机、功率放大器、键盘输入设备和显示设备几个部分组成,其示意图如图1-1所示:1、键盘:键盘由号数字健、正转启动键、反转启动键、停止键、转速+、转速-等15个按键组成,通过键盘可以设置电机运行步数(电机转动角度)、转速、正/反转启动和停止。2、单片机:单片机是系统的控制单元,它通过对输入设置运算产生和分配控制电机的脉冲信号,同时也要产生步数和速度的显示信号。3、功率放大器:单片机输出的脉冲信号功率很小,不足以驱动电机转动,故需要功率放大器将信号放大以驱动电机转动。二、硬件设计2.1 电机的选用及其电路2.1.1 确定步进电机型号及其参数型号相数步距角/度)电压相电型号相数步距角/度)电压相电流最 大静 转矩(N.m)空 载起 动频率/(步绕组电阻分配方式外形尺寸重量g外径长度轴径36BF0033271.50.07831001.6三相六拍36430.222.1.2电机驱动电路原理由表2-1可知电机的额定电压是27V,本设计采用单电源功率放大电路驱动步进电机,电路原理图如图2-1所示。电路中由单片机AT89S51分配的控制脉冲从P0口的P0.0~P0.7输出,经74LS125反相后控制光电开关,光电隔离后,由功率管TIP122将脉冲信号进行电压和电流放大,驱动步进电机的各相绕组。使步进电机随着不同的脉冲信号分别作正转、反转、加速、减速和停止等动作。W3分别为电机三相绕阻,RL为绕组内阻,阻值为1.6Ω,100Ω电阻(R1、R2、R3)是一外接电阻,起限流作用,也是一个改善回路时间常数的元件。VD1、VD2、VD3为续流二极管,使电机绕组产生的反电动势通过续流二极管(VD1、VD2、VD3)而衰减掉,从而保护了功率管TIP122不受损坏。在100Ω外接电阻(R1、R2、R3)上并联一个200μF电容,可以改善注入步进电机绕组的电流脉冲前沿,提高了步进电机的高频性能。与续流二极管串联的200ΩR12)可减小回路的放电时间常数,使绕组中电流脉冲的后沿变陡,电流下降时间变小,也起到提高高频工作性能的作用。2.3单片机选择及其电路设计2.3.1 单片机的选用(1)本设计采用AT89S51,它是低功耗、高性能的单片机,其特性如下:(2)4KB可编程的Flash存储器(可经受1000次的擦除/写入);(3)全静态工作:0Hz~24Hz;(4)1288字节的内存RAM;(5)32可编程I/O线;(6)2个16位的定时/计数器;(7)编程串行通道;(8)片内振荡器。2.3.2单片机工作电路设计(1)电压选择单片机的工作电压范围为2.7~5.5V,在本设计中的单片机的工作电压是5V。(2)复位电路AT89S52单片机的RESET引脚为复位信号输入端,高电平有效,,当振荡器工作时,在此引脚上出现两个机器周期以上的高电平,就可以使单片机复位。本设计采用TPS3824处理器监控电路复位,电路原理图如图2-2所示。TPS3824是一个带有看门狗功能的监控器,在上电期间,监控器REST端向单片机复位引脚(RESET)发出一个复位信号,然后,其内部定时器每延时时间td向单片机发出一个复位信号,因此,在单片机正常工作期间,单片机P0.3口需要在时间t≤td时定期向监控器引脚发出一个正跳变或负跳变以触发监控器定时器复位,以防止单片机被误复位。当单片机死机无法正常工作时,P0.3无法输出触发监控器定时器复位信号,监控器则向单片机发出复位信号使系统复位,所以,使用TPS3824监控器复位电路具有系统死机自动复位功能。(3)时钟电路本系统运行程序不多,速度要求不高,采用外部时钟脉冲,选用ZPA(稳定度为1~9x10-4普通石英晶体振荡器)型12MHz石英晶体振荡器。其电路原理图如图2-3所示。如图2-3,时钟电路连接单片机引脚XTAL1和XTAL2向单片机提供时钟脉冲,电路中的电容C1和C2称为负载电容,也可以理解为谐振电容的一部分,两电容并串在电路中取值相同,一般为数pF至数十pF,这里选择30pF。(4)键盘输入电路键盘是一组按键的集合,它是最常用的单片机输入设备.操作人员可以通过键盘输入数据或者命令,实现简单的人机通信。单片机的键盘设计方式有独立式和矩阵式两种,由于本系统键盘由号数字键、正转控制键、反转控制键、停止控制键、加速键和减速键15个按键组成,通过键盘可以输入电机运行步数、控制电机正转/反转/停止和速度。系统按键数量较多,为节省口,简化电路,降低成本,本设计采用标准的4*4矩阵式由P1号接入单片机。电路原理如图2-4所示。电路中四个电阻起上拉电阻作用。(5)显示电路本设计采用七个八段数码管显示电机步数,显示步数范围是0~9999999步,由步进电机原理可知,步数x步距角为电机转角。一个八段数码管显示速度,编程设定显示范围是1~9,倍率是100,即实际转速为显示数x100,例如,速度显示1,则电机转速为100r/min。为简化电路,降低成本,八个八段显示数码管的阳极位段选线并联在一起,由一个8位的P2口控制,形成段选线多路复用。而各位的共阴极分别8位的P3口控制,实现各位的分时选通,构成一个动态显示器,如图2-5所示。图中右七个数码管显示步数,左一个数码管显示转速,74LS125为集成四个非门的芯片。三、软件设计3.1控制地址分配为方便程序检查和修改,在设计程序之前应对所用到或使用较多数据存储地单元命名标号,本程序数据储存地址命名如表3-1所示。表3-1 数据储存地址命名标号表名称标号地址单元名称标号地址单元步数个位储存地址GB40H步数百万位储存地址BWB46H步数十位储存地址SB41H电机转速查询表偏移量SD47H步数百位储存地址BB42H电机启控制JK48H步数千位储存地址QB43H电机控制偏移量输出脉冲KZ49H步数万位储存地址WB44H键按下状态KONZ4AH步数十万位储存地址SWB45H键按下状态中间变量KBL4BH3.2主程序设计为节省单片机程序扫描时间,使用定时器T0中断方式转入控制电机运行,定时器T0定时时间为电机运转“拍数”切换时间,即控制电机的脉冲切换时间,根据步进电机控制原理,改变此定时器定时时间可改变电机转速。由此定时器定时时间未到时不断进行键盘扫描的输出显示。时间初值查询表SD_TAB见程序所用到的查询表及其说明部分表4-1;主程序流程图如图3-1所示。主程序清单如下:ORG0000HLJMPMAINORG000BHLJMPDJKZORG0050HMAIN: ;主程序40H ;定义步数十位存储单元SB 40H ;定义步数百位存储单元BB 40H ;定义步数千位存储单元40H ;定义步数万位存储单元WB 40H ;定义步数十万位存储单元SWB 40H ;定义步数百万位存储单元BWB 40H ;定义步数个位存储单元SD 40H ;定义电机转速表查询偏移量存储单元JK 40H ;定义电机控制表偏移量存储单元40H ;定义输入口按键按下状态暂存单元KBL 40H ;定义输入口按键按下状态中间变量存储单元MOV P0,#00H 口初始化MOV P1,#0FFH ;MOV P2,#0FFH ;MOV P3,#0FFH ;MOV GB,#00H ;步数个位初始化MOV SB,#00H ;步数十位初始化MOV BB,#00H ;步数百位初始化MOV QB,#00H ;步数千位初始化MOV WB,#00H ;步数万位初始化MOV SWB,#00H ;步数十万位初始化MOV BWB,#00H ;步数百万位初始化MOV SD,#1 ;电机转速开机默认为200r/minMOV JK,#0 ;电机控制状态开机为停止MOV ;速度查询表偏移初始化0MOV TMOD,#01H ;T0控制模式为1MOV DPTR,#SD_TAB ;DPRT指向转速查询表首地址MOV A,SD ;取转速查询表偏移量MOVC A,@A+DPTR ;取定时器低位初值MOV TL0,A ;装入定时器低位初值MOV A,SD ;取转速查询表偏移量ADD A,#10 ;调整转速查询表偏移量,为取T0高位做准备A ;十进制数调整MOVC A,@A+DPTR ;取定时器高位初值MOV TH0,A ;装入定时器高位初值MOV ;T0开中断SETBTR0 ;启动T0LOOP:LCALLLCALLKEY_SUBDISP_SUB;调用键盘扫描录入程序;调用显示程序LJMP LOOP ;返回LOOPSD_TAB:DB72H,54H,05H,C5H,42H,95H,CEH,FDH,20H,3CHDBF6H,FBH,FCH,FDH,FEH,FEH,FEH,FEH,FFH,FFH3.2键盘录入子程序实现功能:通过扫描键盘,判断是否有键按下,若有键按下则改变相应控制地址单元的内容,为后面的显示和电机控制做准备。键盘数据录入子程序流程图如图3-2所示;输入键键号查询表IN_TAB见程序所用到的查询表及其说明部分表4-2;电机启/停控制和显示段选码表SRDS_TAB见程序所用到的查询表及其说明部分表4-3;键盘扫描子程序流程图如图3-2所示。键盘扫描方法:由硬件设计可知,键盘是4*4的行、列结构设计,行由P1.0~P1.3口输入,列由P1.4~P1.7口输入,其中行线通过上拉电阻接+5V,平时无按键动作时,行线处于高电平状态,而当有按键按下时,则对应的行线和列线短接,行线电平状态将由与此行线相连的列线电平决定。因此,其扫描方法是:先令P1.4列线为低电平,其余三根列线为高电平,读行线状态。如果行线都为高电平,则这一列线上没有键闭合,接着使下一列线P1.5为低电平,其余列线为高电平,用同样方法检查P1.5列上没无键闭合,依次类推,直到最后一列扫描完成。键盘录入程序代码如下:KEY_SUB: ;键盘录入程序LCALL KNUM_SUB ;调用键盘扫描程序MOV A, ;保存初次扫描输入状态ORL A, ;输入状态高四位置1MOV KBL, A ;保存CJNE A,KE_NEXT1 ;(A)≠0FFH,有按键输入,转去抖动LJMP KE_NEXT ;否则转子程序返回KE_NEXT1:MOV R7,;延时10ms去抖动LCALL DEL_SUB ;调用延时1ms程序DJNZ R7,KE_NEXT1 ;LCALL KNUM_SUB ;再次调用键盘扫描程序CJNE A, KE_NEXT ;若(A)=(KONZ),确认有键按下,等待按键;释放否则转子程序返回KE_LOOP1:LCALL KUNM_SUB ;再次调用键盘扫描程序ORL A,;键盘输入状态高四位置1CJNE A,KE_LOOP1 ;若(A)=0FFH,键已释放,执行去抖动,否;则转KE_LOOP1再次判断MOV R7,;延时10ms去抖动LCALL DEL_SUB ;调用延时1ms程序DJNZ R7,KE_NEXT1 ;MOV DPTR,B ;DPTR指向键号查询表首地址MOV R7,;从0号键开始扫描KE_LOOP2:MOV A,R7 ;取键号MOVC A,@A+DPTR ;查表取出相应键号状态码CJNE A,KE_NEXT2 ;与输入状态相比较,若LJMP KE_NEXT3 ;相等,则为该号键按下,转取键号KE_NEXT2:R7 ;否则取下一键号LJMP KE_LOOP2 ;转再次扫描KE_NEXT3:MOV A,R7 ;取按下键键号CJNE A,KE_NEXT4 ;若键号=9,转设置步数LJMP B_SET ;否则转判断是否<9KE_NEXT4:JC B_SET ;若键号<9,转设置步数,否则顺序判断CJNE A,KE_NEXT5 ;若键号≠12,LJMP DJ_SET ;否则转电机控制设置KE_NEXT5:JC DJ_SET ;若键号<12,转电机控制设置,否则继续判断CJNE A,KE_NEXT7 ;若键号≠13,转减速设置,;则顺序设置加速MOV A,SD ;取当前速度CJNE A,KE_NEXT6 ;若当前速度≠7,转速度加1档LJMP KE_NEXT ;否则当前速度为最大值,转子程序返回KE_NEXT6:SD ;当前速度增加1档LJMP KE_NEXT ;转子程序返回KE_NEXT7:MOV A, SD ;取当前速度CJNE A,KE_NEXT8 ;若当前速度≠0,转速度减1档LJMP KE_NEXT ;否则当前速度为最小值,转子程序返回KE_NEXT8:SD ;当前速度减1档LJMP KE_NEXT ;转子程序返回B_SET:MOVBWB,SWB;步数十万位移至百万位MOVSWB,WB;步数万位移至十万位MOVWB,QB;步数千位移至万位MOVQB,BB;步数百位移至千位MOVBB,SB;步数十位移至百位DJ_SET:
MOV SB,GB ;步数个位移至十位MOV GB,A ;步数新数移至个位LJMP KE_NEXT ;转子程序返回MOV DPTR,RDS_TAB ;DPTP指向控制与显示表首地址MOVC A,@A+DPTR ;取控制状态MOV JK,A ;控制状态存入控制单元KE_NEXT:RET ;子程序返回IN_TAB: 77H,B7H,D7H,E7H,7BH,BBH,DBH,EBH ;输入键键号查询表7DH,BDH,DDH,EDH,7EH,BEH,DEHSRDS_TAB: C0H,F9H,A4H,B0H,99H,92H82H,F8H,80H,90H,1,2,3 ;电机启/停控制和显示段选码表键盘扫描程序代码:KUNM_SUB:MOVP1,;键盘输入口置1CLRP1.4;扫描第一列MOVA,P1;读入输入状态SETBP1.4;关闭扫描第一列CLRP1.5;扫描第二列MOVA,P1;读入输入状态SETBP1.5;关闭扫描第二列CLRP1.6;扫描第三列MOVA,P1;读入输入状态SETBP1.6;关闭扫描第三列CLRP1.6;扫描第四列MOVA,P1;读入输入状态SETBP1.6;关闭扫描第四列RET;子程序返回3.3显示程序实现功能:根据转速控制单元SD和步数控制单元WB(十万位)、BWB(百万位)的内容查询SRKS_TAB取相应显示段码送相应显示位显示。电机启/停控制和显示段选码表SRDS_TAB见程序所用到的查询表及其说明部分表4-3;程序流程图如图3-4所示;8位八段数码管显示方法:由硬件结构可知,步数显示7位八段数码管和速度显示1位数码管的段选线并联在一起由单片机P2口控制,而各位的共阴极点分别由相应的P3口控制,实现各位的分时选通,构成8位的动态显示。根据实际情况,每位显示的字符不同,因此软件设计必须采用扫描显示方式,即在每一个瞬间只使某一位显示相应字符。在此瞬间,段选码由控制P2口输出需显示的段码,位选P3口输出位选码选通该位显示相应字符。如此轮流,使每一位显示该应显示的字符,并延时一段时间,这里延时3ms,以造成视觉暂留效果。显示代码如下:DISP_SUB: ;显示子程序MOV P2,;MOV P3,#00H ;关显示MOV R7,;设置显示位数MOV R0,GB ;取步数个位显示数字MOV DPTR,RDS_TAB ;DPTR指向控制与显示段码表首地址MOV A,;取步数位显示控制字PUSH ACC ;保护步数位显示控制字MOV A,@R0 ;取步数显示数字MOVC A,@A+DPTR ;取显示段码MOV P2,A ;送显示ACC ;取出位显示控制字MOV P3,A ;打开位显示DLOOP2:MOV R6,;延时3msLCALL DEL_TAB ;调用延时1ms程序DJNZ R6,DLOOP2 ;判断时是否到,未到刚返回延时,否则往下执行RL A ;取下一位显示控制字R0;R0 ;指向下一位显示数字存储地址DJNZ R7,DLOOP1;若(R7)-1=0,八位显示完成,往下执行,否则转显示下一位MOV P2,;MOV P3,#00H ;关显示RET ;子程序返回SRDS_TAB: C0H,F9H,A4H,B0H,99H,92H82H,F8H,80H,90H,1,2,3 控制和显示段选码表3.4电机控制程序实现功能:根据地址单元JK的内容控制电机的正转、反转和停止。时间初值查询表SD_TAB见程序所用到的查询表及其说明部分表4-1;单片机输出控制字查询表MQ_TAB见程序所用到的查询表及其说明部分表4-4;程序流程图如图3-5所示:电机控制程序代码如下:KT0_INT: ;电机控制程序中断服务程序MOV DPTR,#SD_TAB ;DPRT指向转速查询表首地址MOV A,SD ;取转速查询表偏移量MOVC A,@A+DPTR ;取定时器低位初值MOV TL0,A ;装入定时器低位初值MOV A,SD ;取转速查询表偏移量ADD A,#10 ;调整转速查询表偏移量,为取T0高位做准备A ;十进制数调整MOVC A,@A+DPTR ;取定时器高位初值MOV TH0,A ;装入定时器高位初值MOV R7,;循环7次,分别判断7位步数是否为0MOV R0,;R0指向步数个位KLOOP1:MOV A, @R0 ;取位步数CJNE A,KNEXT1 ;若位步数=0,判断下一位,否则转判断电机控制状态R0 ;R0指向步数下一位地址DJNZ R7,KLOOP1 ;若(R7)-1=0,则步数每一位均为0,转LJMP KNEXT ;程序返回KNEXT1:MOVA, JK;取电机控制状态CJNEA,KNEXT2;若电机控制状态=1,电机正转,否则判断是否反转LJMP ;转电机正转控制KNEXT2:CJNEA,KNEXT;若电机控制状态≠2,电机处于停止状态,;转返回,否则电机MOVA,KZ;取上一次电机控制表偏移量CJNEA,KNEXT3;若上一次电机控制表偏移量为不0,转减1,若为0,MOVA,;则电机控制表偏移量取5LJMPKNEXT6;KNEXT3:A ;电机控制表偏移量减1LJMP DNEXT5 ;转取脉冲输出MOVA,KZ;取上一次电机控制表偏移量CJNEA,#5,KNEXT4;若上一次电机控制表偏移量为不5,转加1,若为5,MOVA,;则电机控制表偏移量取0LJMPKNEXT5;转取脉冲输出KNEXT4:A ;电机控制表偏移量加1KNEXT5:MOV KZ,A ;保存当前电机控制表偏移量MOV DPTR,#MQ_TAB ;DPTR指向电机控制表首地址MOVC A,@A+DPTR ;取输出脉冲MOV P0,A ;输出脉冲MOV R7,;步数减1循环6次MOV R0,;R0指向步数个位储存单元KLOOP2:MOV A,@R0 ;取位步数CJNE A,KNEXT6 ;若位步数≠0,转位步数-1,否则MOV @R0,;往该位步数存9R0 ;R0指向下一位DJNZ R7,DLOOP2 ;若(R7)-1=0,六位判断完成,百万位减1,否则继;续判断BWB ;百万位减1LJMP KNEXT ;转程序返回KNEXT6:A;位步数-1MOV@R0,A;存回该单元KNEXT:RET ;程序返回SD_TAB: 72H,54H,05H,C5H,42H,95H,CEH,FDH,20H,3CH ;定时器初值查询F6H,FBH,FCH,FDH,FEH,FFH,FFHMQ_TAB: 01H,03H,02H,06H,04H,05H;单片机输出控制字查询表3.5延时1ms程序实现功能:利用软件循环运行延时约1ms。DEL_SUB:MOV R7, DLE1: MOV R6,#248DEL2: DJNZ R6,DEL2DJNZ R7,DEL1RET查指令表可知执行MOV指令需要用1个机器周期,DJNZ指令需要用2个机器用期,本系统使用12MHz晶振,一个机器周期时间长度为1us,所以该段程序执行时间为:[1+(1+2×248+2)×2+2]*1us=999us3.6程序所用到的查询表及其说明3.6.1 时间初值查询表SD_TAB根据步进电机原理,步进电机的转速为n=60f/(r)式中:式中C为通电状态系数,当采用单拍方式时,C=1;而采用单双拍方式时,C=2;m为步进电机转子数,,f因此,当步进电机转速为n时,步进电机的拍数切换时间与转速的关系为t=1/f=60/(nr)式中:t为电机拍数切换时间,单位为秒。由此可以算出程序中定时器所需定时时间根据程序查指令表可知定时器定时到开始到脉冲输出需要运行约648个晶振周期数的程序,系统用的是12MHz晶振,即运行此段程序需要648/12=54us的时间,故定时器T0所需定时时间T与转速的关系为-3-3T=t-(54×10)=60/(nr) -(54×1-3-3式中:定时器T0所需定时时间T的单位为秒。由选用电机的参数可知:步进电机相数m=3,因运行采用单双拍方式,C=2,步进电机转子数=40。而定时器工作在模式1下初值X与定时时间T的关系为166166因此,由公式可算得电机转速与定时器初值关系表如表4-1所示;电机转速与定时器初值关系表 表4-1转速(rin)1002003004005006007008009001000TL0初值72H54H05HC5H42H95HCEHFDH20H3CHTL1初值F6HFBHFCHFDHFEHFEHFEHFEHFFHFFH表地址偏移量0123456789定时器初值查询表SD_TAB如下:SD_TAB: 72H,54H,05H,C5H,42H,95H,CEH,FDH,20H,3CHF6H,FBH,FCH,FDH,FEH,FFH,FFH3.6.2 输入键键号查询表IN_TAB输入键键号与P1口状态关系如下表4-2所示:输入键键号与P1口状态关系表 表4-2键名P1口状态键名P1口状态077H87DH1B7H9BDH2D7H正转启动DDH3E7H反转启动EDH47BH停止7EH5BBH加速BEH6DBH减速DEH7EBH输入键键号查询表IN_TAB如下:IN_TAB: 77H,B7H,D7H,E7H,7BH,BBH,DBH,EBH7DH,BDH,DDH,EDH,7EH,BEH,DEH3.6.3 电机启/停控制和显示段选码表SRDS_TAB电机启/停控制与其状态、显示数与显示段选码关系表如下表4-3:电机启控制与其状态、显示数与显示段选码关系表显示数字显示段码显示数字显示段码0C0H880H1F9H990H2A4H正转启动13B0H反转启动2499H停止0592H682H7F8H电机启/停控制和显示段选码查询表SRDS_TAB如下:SRDS_TAB: C0H,F9H,A4H,B0H,99H,92H,82H,F8H80H,90H,1,2,33.6.4 单片机输出控制字查询表MQ_TAB步进电机采用单双六拍方式输出,电机绕组通电与单片机输出控制字关系如下表4-4:电机绕组通电与单片机输出控制字关系表 表4-4通电绕组A相AB相B相BC相C相CA相控制字01H03H02H06H04H05H单片机输出控制字查询表MQ_TAB如下:MQ_TAB: 01H,03H,02H,06H,04H,05H附录一:系统电路原理附录二:系统软件程序清单ORG 0000HLJMPMAIAORG000BHLJMPDJKZORG0050HMAIN: ;主程序40H ;定义步数十位存储单元SB 40H ;定义步数百位存储单元BB 40H ;定义步数千位存储单元40H ;定义步数万位存储单元WB 40H ;定义步数十万位存储单元SWB 40H ;定义步数百万位存储单元BWB 40H ;定义步数个位存储单元SD 40H ;定义电机转速表查询偏移量存储单元JK 40H ;定义电机控制表偏移量存储单元40H ;定义输入口按键按下状态暂存单元KBL 40H ;定义输入口按键按下状态中间变量存储单元MOV P0,#00H 口初始化MOV P1,#0FFH ;MOV P2,#0FFH ;MOV P3,#0FFH ;MOV GB,#00H ;步数个位初始化MOV SB,#00H ;步数十位初始化MOV BB,#00H ;步数百位初始化MOV QB,#00H ;步数千位初始化MOV WB,#00H ;步数万位初始化MOV SWB,#00H ;步数十万位初始化MOV BWB,#00H ;步数百万位初始化MOV SD,#1 ;电机转速开机默认为200r/minMOV JK,#0 ;电机控制状态开机为停止MOV ;速度查询表偏移初始化0MOV TMOD,#01H ;T0控制模式为1MOV DPTR,#SD_TAB ;DPRT指向转速查询表首地址MOV A,SD ;取转速查询表偏移量MOVC A,@A+DPTR ;取定时器低位初值MOV TL0,A ;装入定时器低位初值MOV A,SD ;取转速查询表偏移量ADD A,#10 ;调整转速查询表偏移量,为取T0高位做准备A ;十进制数调整MOVC A,@A+DPTR ;取定时器高位初值MOV TH0,A ;装入定时器高位初值MOV ;T0开中断SETBTR0 ;启动T0LOOP:LCALLKEY_SUB;调用键盘扫描录入程序LCALLDISP_SUB;调用显示程序LJMP LOOP ;返回LOOPKEY_SUB: ;键盘录入子程序LCALL KNUM_SUB ;调用键盘扫描程序MOV A, ;保存初次扫描输入状态ORL A, ;输入状态高四位置1MOV KBL, A ;保存CJNE A,KE_NEXT1 ;(A)≠0FFH,有按键输入,转去抖动LJMP KE_NEXT ;否则转子程序返回KE_NEXT1:MOV R7,;延时10ms去抖动LCALL DEL_SUB ;调用延时1ms程序DJNZ R7,KE_NEXT1 ;LCALL KNUM_SUB ;再次调用键盘扫描程序CJNE A, KE_NEXT ;若(A)=(KONZ),确认有键按下,等待按键;释放否则转子程序返回K
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金属包装容器智能制造装备选型考核试卷
- 嵌入式系统硬件设计考题及答案
- 医院规则秩序管理制度
- 幼儿开学规矩管理制度
- 学校积分超市管理制度
- 在托儿童健康管理制度
- 学校清洁消毒管理制度
- 网络流量管理工具使用考题及答案
- 学习物资采购管理制度
- 启迪中学宿舍管理制度
- 1、人教部编版二年级下册语文看拼音写词语(一类生字和书后词语)
- 老年肺炎临床诊断与治疗专家共识(2024年版)解读课件
- 2025年社会保障政策考试卷及答案关系
- 增材制造在虚拟现实辅助机械制造中的应用-洞察阐释
- 重庆金太阳2025届高三5月联考英语及答案
- 2025年宁夏银川市中考物理一模试卷(含解析)
- 医院新建门急诊医技综合楼工程施工组织设计
- 外籍人员雇佣合同(中英文对照)6篇
- 玻璃瓶合同协议
- 《不可或缺的医疗保障:课件中的健康险》
- 财产申报表-被执行人用
评论
0/150
提交评论