1、红外遥控及按键控制步进电机毕业设计目 录一、红外遥控步进电机系统设计 11.1系统设计原理 11.2总体设计1二、系统硬件模块设计22.1 红外遥控工作模块2 2.2 步进电机工作模块3 2.2.1步进电机工作原理3 2.2.2步进电机的动作实现原理3 2.3 LED数码管模块5 2.4 硬件设计5 2.4.1 步进电机驱动电路 5 2.4.2 红外遥控驱动电路 6 2.4.3 系统硬件电路设计图 6 2.4.4 在XL1000上的连线图 7 2.4.5 系统资源分配表 7三、系统软件设计83.1 主程序设计83.2 中断子程序设计93.3 按键控制步进电机程序 103.4 红外遥控步进电机程
2、序 14四、系统调试和制作24五、性能分析25六、心得及体会26七、参考文献27一、红外遥控步进电机系统设计1.1系统设计原理利用红外遥控器控制步进电机其实和用键盘控制步进电机原理类似,只不过按键是用导线传递键是否按下的信号,而红外则是利用LED发射红外线传递按键信息。由于红外采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”,在解码时通过判断高低电平持续时间的长短来识别发送的键值。控制步进电机正、反方向转动、单步、连续、快慢等动作,原理其实并不
3、困难。步进电机将电脉冲信号转换成角位移,即给一个脉冲,步进电机就转动一个角度,转动的角度大小与施加的脉冲数成正比,因此,单步和连续的动作区别只是单片机给步进电机脉冲个数不同而已。每按一次单步键就是给电机一个脉冲,而连续则是不断的给电机脉冲,达到连续运转的目的。1.2总体方案设计根据该系统设计要求,需要通过红外遥控器按下按键和显示器来改变步进电机的运动状态以及显示,只需要红外遥控器中6个按键就可满足需求,外加8位LED数码显示管即可。由于实验箱上只有8个连体数码管,因此需要动态扫描。通过从键盘上输入正、反转命令,按键数值显示在数码管上,CPU再读取正、反转命令,加减速后执行。经键盘可完成启动、停
4、止、正转、反转、速度设置控制功能。按下红外遥控器上的相关按钮电机执行相关动作,同时数码管上显示按键的数值,系统大部分都是软件实现的,整个设计框图如下:二、系统硬件模块设计2.1 红外遥控工作模块本模块应完成对红外遥控器有无键按下进行确认,当有键按下时,确定按键值,并根据所得键值进行处理,包括所按键是不是停止键还是执行键。如是停止键,不断扫描键盘程序,等待执行键按下;如是执行键就启动产生步进电机控制信号程。显示模块主要是完成在进行键盘按下时,通过数码管显示输入的数据值(转矩数、转动方向、转动速率及运行方式)。红外遥控编解码原理:红外遥控系统由发射和接收两大部份组成,应用编/解码专用集成电路芯片来
5、进行控制操作,如图1 所示。发射部份包括键盘矩阵、编码调制、LED红外发送器;接收部份包括光、电转换放大器、解调、解码电路。由于采用不同芯片其发送和接受的过程是不一样的,我们用的实验箱采用的是HT6221红外编码芯片。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”,如图2。解码方法:a解码的关键是如何识别0和1从位的定义我们可以发现0 1 均以 0.56m
6、s的低电平开始不同的是高电平的宽度不同0为0.56ms,1为1.68ms,所以必须根据高电平的宽度区别0和1。 b如果从0.56ms低电平过后开始延时0.56ms以后若读到的电平为低说明该位为0反之则为1为了可靠起见延时必须比0.56ms长些但又不能超过1.12ms,否则如果该位为0读到的已是下一位的高电平因此取1.12ms+0.56ms/2=0.84ms 最为可靠一般取0.84ms。c根据码的格式应该等待9ms 的起始码和4.5ms 的结果码完成后才能读码左右均可这样接收到的仅仅是普通的代码要得到标准的键值还必须进行代码识别和代码转换。2.2步进电机工作模块2.2.1 步进电机工作原理步进电
7、机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。2.2.2步进电机的动作实现原理(1)电机单步与连续的控制给一个脉冲
8、,步进电机就转动一个角度,转动的角度大小与施加的脉冲数成正比,因此,单步和连续的动作区别只是单片机给步进电机脉冲个数不同而已。每按一次单步键就是给电机一个脉冲,而连续则是不断的给电机脉冲,达到连续运转的目的。步进电机的步进角度是7.5度,一圈360度,需要48个脉冲完成。(2)电机正反的控制步进电机的转动需要向电机以一定的顺序分配驱动脉冲。如四相单四拍,其脉冲分配的方式和顺序为A-B-C-D-A,如此周而复始,即可转动。转动方向与脉冲顺序有关,如果给相反脉冲,那么电机就会反转。在程序中,步进电机的正反转则是一个公有键,按下转动方向就相反,通过判断20号单元的第一位20H.0是0还是1,若是0则
9、去查反转的表,否则去查正转的表,实行起来比较方便。如图3:编码结果(十六进制)ABCD0701110300110B10110910010D11010C11000E1110060110(3)电机快慢的控制单片机的晶振为12MHz,单周期指令执行时间为1MHz,由于机械动作需要一定时间来完成,如果以这么快的速度来给脉冲,电机是不会转动的,因此,在两个脉冲之间必须要有一定时间差,电机才有时间来执行动作。电机转动的速度与脉冲频率成正比,控制脉冲间隔时间就相当于控制了步进电机的转动角频率即快慢。通过单片机的定时/计数器T0来控制,定时产生脉冲的方法称为硬件定时,该法首先根据定时的时间长短设定定时器的工作
10、模式,然后输入定时器的定时常数,则定时器就会定时溢出,单片机就会每溢出一次就产生一个脉冲控制步进电机转动,而改变装载值的大小,就会实现变速。也就是说,步进电机的转速由单片机内部定时器的中断频率决定的,不断改变定时器的装载初值就可改变电机的运转速度。(4)电机的停止步进电机具有瞬间启动和急速停止的优越特性。故在设计中,不论电机处于何种状态,只要按下停止键,马上跳转到主程序,停止给脉冲,电机停止运转。2.3 LED数码管模块 图4在本次仿真中使用的是共阳极八个七段数码管。如图4所示。数码管是由7个发光管组成的8字形构成的,加上小数点就是8个。分别把它命名为A、B、C、D、E、F、G、H、DP,由于
11、接法是共阳接法,所以低电平是亮,高电平是灭,接口由单片机P0口控制。而右边是选择使用数码管的控制接口,程序中单片机P3口控制,在按键控制步进电机中,取第一位数码管亮。 实验箱采用的数码管较为特殊,和一般的共阴、共阳数码管都不一样,在Proteus中共阳数码管给高电平才表示选中,而实验箱采用低电平选中,各字段表也不一样。如一般共阳给C0H表示0,但实验箱需要给28H,为了仿真的需要,后面的程序均采用的是一般共阳数码管写法,在实验箱上调试程序时进行了变更。2.4 硬件资源分配 2.4.1 步进电机驱动电路2.4.2红外遥控驱动电路2.4.3 系统硬件电路设计图2.4.4在XL1000上的连线图2.
12、4.5系统资源分配表在上面的仿真图中,因为Proteus软件中没有红外模块,所以本次仿真用的是按键键盘代替。1、P3.0一P3.7: 显示位选线,即选中哪个数码管。2、P0.0一P0.7:输出字形码到LED数码管,用于显示按下的键值。3、P1.0:P1.5:连接六个按键,控制步进电机的单步、连续、正反转、加速、减速、停止。4、P2.0、P2.1、P2.2、P2.3: 步进电机控制脉冲输出口,通过控制给脉冲的频率和数量达到加减速和单步、连续的目的。 5、本仿真使用了程序存储器调用,地址资源用到了15H,29H,3CH,50H,63H,77H,8AH,9EH,0B1H,0C5H,0A0H,28H,
13、0B0H,38H,0C0H,48H,0D0H,58H,0E0H,68H。内外部存储器是统一编址的,在0000HFFFFH范围内选址。控制正反转调用地址07H,03H,0BH,09H,0DH,0CH,0EH,06H。三、系统软件设计 3.1 主程序设计系统的软件设计通常采用模块化结构,软件系统总体框架一般包括三部分:主程序、中断服务子程序以及其他相应的辅助子程序(包括正转子程序、反转子程序、LED显示子程序、红外键盘子程序)。 图3.1 主程序 红外遥控步进电机程序运行总思路:首先,检测是否有红外按键扫描信号;通过遥控按键,发出信号,是实验箱上感应信号后,对应数码管显示按键的数值,并且执行步进电
14、机的工作状态,达到红外控制步进电机的效果。3.2 中断子程序设计本次设计采用直流电源供电,只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。按键子程序中包括按键扫描、按键去抖动、按键的键后处理.按键扫描采用单个按键的扫描,分别对不同功能的按键扫描并存放不同的按键标志。按键去抖动采用延时去抖法。根据按键扫描后的按键标志位结果来处理相应的子程序。显示模块采用传统的LED数码管显示数字,程序编译容易,资源占用少。使用八位数码管,动态扫描显示的方式。3.3按键控制步进电机程序Minspd EQU 25Maxspd EQU 35Speed DATA 23HORG 0000HAJMP st
15、artORG 000BH ;T0的中断服务程序入口JMP BUJIN ;转到BUJINORG 0030H ;主程序start: SETB 20H.1 ;设置步进电机正转 MOV R0,#00H MOV TMOD,#01H MOV TH0,#115 MOV TL0,#96 ;定时约35ms SETB EA ;开中断总开关 SETB ET0 ;允许T0中断 CLR TR0 ;停止T0工作 MOV P2,#0FFHmain: MOV Speed,#Minspd MOV P3,#01H CALL DELAY ;延时96us MOV P0,#92H ;置数码管显示5 JB P1.2,Q1 ;若按下P1.
16、2口,顺序执行使步进电机反转;否则,转去执行单步工作,步进电机正转 MOV P3,#01H CALL DELAY MOV P0,#0A4H ;置数码管显示2 JNB P1.2,$ CPL 20H.1 Q1: JNB P1.0,Danbu JNB P1.1,Lianxu AJMP mainDanbu: MOV P3,#01H CALL DELAY MOV P0,#0C0H ;置数码管显示0 JNB P1.0,$ CALL ZF ;置转动方向 JMP mainLianxu: SETB TR0 ;启动中断 MOV P3,#01H CALL DELAY MOV P0,#0F9H ;置数码管显示1 CA
17、LL KEY JMP Lianxu ;设置步进电机在连续工作的情况下,执行正反转、加减速工作KEY: JNB P1.5,mainKY2: JNB P1.0,DanbuKY4: JB P1.2,KY6 MOV P3,#01H CALL DELAY MOV P0,#0A4H ;置数码管显示2 JNB P1.2,$ ;执行步进电机正反转 CPL 20H.1KY6: JB P1.3, KY7 MOV P3,#01H CALL DELAY MOV P0,#0B0H ;置数码管显示3 JNB P1.3,$ JMP Upspd ;执行步进电机加速工作KY7 : JB P1.4,K1 MOV P3,#01H
18、CALL DELAY MOV P0,#99H ;置数码管显示4 JNB P1.4,$ JMP Dowspd ;执行步进电机减速工作Upspd: INC Speed MOV A,Speed CJNE A,#Maxspd,K1 DEC Speed JMP K1Dowspd: DEC Speed MOV A,Speed CJNE A,#Minspd,K1 MOV Speed,#MinspdK1: RETBUJIN: CALL ZF CLR TR0 MOV A,Speed PUSH PSW ;将程序状态字压入堆栈 SUBB A,#Minspd ;借位减 POP PSW MOV R1,A MOV DPT
19、R,#DjH ;将表DjH的地址依次送寄存器DPTR中 MOVC A,A+DPTR MOV TH0,A MOV A,R1 MOV DPTR,#DjL MOVC A,A+DPTR MOV TL0,A RETIZF: JNB 20H.1 ,FanzhuanZhengzhuan:MOV A,R0 MOV DPTR,#TABLE MOVc A,A+DPTR JNZ K3 MOV R0,#00H AJMP ZhengzhuanFanzhuan:MOV A,R0 MOV DPTR,#TABLE1 MOVc A,A+DPTR JNZ K3 MOV R0,#00H AJMP FanzhuanK3: MOV P
20、2,A INC R0 RETDELAY: MOV R7,#60H DJNZ R7,$ RETDjH: DB 15H,29H,3CH,50H,63H,77H,8AH,9EH,0B1H,0C5HDjL: DB 0A0H,28H,0B0H,38H,0C0H,48H,0D0H,58H,0E0H,68HTABLE: DB 07H,03H,0BH,09H,0DH,0CH,0EH,06H ;正转表 DB 00H ;正转结束TABLE1: DB 06H,0EH,0CH,0DH,09H,0BH,03H,07H ;反转 DB 00H ;反转结束END3.4 红外遥控步进电机程序ORG 0000HSJMP STAR
21、T0ORG 000BH ;T0中断入口(定时器0中断)AJMP ZHDUAN ;转中断服务程序 ORG 0030H ;主程序START0: MOV SP,#60H MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV 35H,#00H MOV 31H,#3CH MOV 30H,#0B0H MOV 32H,#1START:WAIT: JB P3.7, $ ;等待遥控信号出现SB: MOV R4,#8 ;8毫秒为高电平错误SBA: MOV R5,#250SBB: JB P3.7,SXB1DJNZ R5,SBB DJNZ R4,SBA MOV
22、 R4,#2 JMP SBCSXB1: MOV R5,#5SXB2: JNB P3.7,SBB ;去掉20US的尖峰干扰信号 DJNZ R5,SXB2JMP STARTSBC: MOV R5,#250SB1: JB P3.7,SB2 ;2MS内不为高电平错误 DJNZ R5,SB1 DJNZ R4,SBC JMP STARTSB2: MOV R5,#5 ;去掉20US的尖峰干扰信号SB2_A: JNB P3.7,SB1 DJNZ R5,SB2_A MOV R4,#3SB2_1: MOV R5,#250SB3: JNB P3.7,SXC ;监测4.5MS高电平,如3MS内出现低电平错误 DJNZ
23、 R5,SB3 DJNZ R4,SB2_1 MOV R4,#2JMP SB3_1SXC: MOV R5,#5 ;去掉20US的尖峰干扰信号SXC1: JB P3.7,SB3 DJNZ R5,SXC1 JMP STARTSB3_1: MOV R5,#250 ;监测4.5MS高电平,如5MS内不为低错误SB3_2: JNB P3.7,SB4 DJNZ R5,SB3_2 DJNZ R4,SB3_1 JMP STARTSB4: MOV R5,#5 ;去掉20US的尖峰干扰信号SB4_1: JB P3.7,SB3_2 DJNZ R5,SB4_1 MOV R1,#1AH ;设定1AH为起始RAM区 MOV
24、 R2,#4PP: MOV R3,#8JJJJ: MOV R5,#250JJJJ2: JB P3.7,JJJJ3 ;1MS内不为低电平错误 DJNZ R5,JJJJ2 JMP STARTJJJJ3: LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态 MOV C,P3.7 ;将P3.7状态0或1存入C中 JNC UUU ;如果为0就跳转到UUU MOV R5,#250JJJJ4: JNB P3.7,UUU NOP DJNZ R5,JJJJ4 JMP STARTUUU: MOV A,R1 ;将R1中地址的给A RRC A ;将C中的值移入A中的最低位 MOV R1
25、,A ;将A中的数暂存在R1中 DJNZ R3,JJJJ ;接收地址码的高8位 INC R1 ;对R1加1,换成下一个RAM DJNZ R2,PP;以下对代码是否正确和定义进行识别 MOV A,1AH ;比较高8位地址码 XRL A,#00000000B ;判断1AH的值是否等于00000000,相等的话A为0 JNZ EXIT ;如果不等解码失败退出 MOV A,1BH ;比较低8位地址 XRL A,#11111111B ;再判高8位地址是否正确 JNZ EXIT ;如果不相等说明解码失败退出 LCALL YS3 MOV A,1CH ;比较数据码和数据反码是否正确? CPL A XRL A,
26、1DH ;将1CH的值取反后和1DH比较 不同则无效丢弃,核对数据是否准确 JNZ EXIT ;如果不相等说明解码失败退出 LCALL YS3 CLR P2.6 ;选中数码管 CLR P3.3 ;解码成功喇叭响?AJMP BIJIAO;判断在118毫秒内是否有连发码AA: MOV R1,#25XX: ACALL YS2 JNB P3.7,HH ;跳转到HH DJNZ R1,XXEXIT: ;对所有端口清零 AJMP START;连发码判断程序段-HH: MOV R6,#4S: ACALL YS1 ;调用882微秒延时子程序 JB P3.7,EXIT ;延时882微秒后判断P3.7脚是否出现高电
27、平如果有就退出解码程序 DJNZ R6, S ;重复4次,目的是确认 JNB P3.7, $ ;等待高电? LCALL YS3 AJMP AABIJIAO: MOV A,1CH ;红外键值;显示按键 MOV P2,#01H CJNE A,#10h,T1 MOV P0,#7EH ;数码管显示1T1: CJNE A,#03h,T2 MOV P0,#0A2H ;数码管显示2T2: CJNE A,#01h,T3 MOV P0,#62H ;数码管显示3T3: CJNE A,#06h,T4 MOV P0,#74H ;数码管显示4T4: CJNE A,#09h,T5 MOV P0,#61H ;数码管显示5T
28、5: CJNE A,#1dh,T6 MOV P0,#21H ;数码管显示6T6: CJNE A,#1fh,NEXT MOV P0,#7AH ;数码管显示7;T7: AJMP WAIT;单步正转NEXT: CJNE A,#10H,LRUN2 CLR ET0 ;禁止T0中断 SJMP RRUN1RRUN: MOV 35H,#00H ;RRUN1: MOV A,35H MOV DPTR,#TABR MOVC A,A+DPTR JZ RRUN MOV P1 , A INC 35H AJMP WAIT;单步逆转LRUN2: CJNE A,#03H,CRRUN2 CLR ET0 SJMP LRUN1LRUN: MOV 35H,#00HLRUN1: MOV A,35H MOV DPTR,#TABL MOVC A,A+DPTR JZ LRUN MOV P1 , A INC 35H AJMP WAIT;连续正转CRRUN2: CJNE A, #01H,CLRUN2 SETB 20H.0 ;标志位为1,说明正转 MOV TMOD ,#01H MOV TH0,31H MOV TL0,30H SETB TR0 SETB EA SETB ET0 A
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1