红外遥控及按键控制步进电机毕业设计.docx

上传人:b****8 文档编号:9784798 上传时间:2023-02-06 格式:DOCX 页数:31 大小:1.53MB
下载 相关 举报
红外遥控及按键控制步进电机毕业设计.docx_第1页
第1页 / 共31页
红外遥控及按键控制步进电机毕业设计.docx_第2页
第2页 / 共31页
红外遥控及按键控制步进电机毕业设计.docx_第3页
第3页 / 共31页
红外遥控及按键控制步进电机毕业设计.docx_第4页
第4页 / 共31页
红外遥控及按键控制步进电机毕业设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

红外遥控及按键控制步进电机毕业设计.docx

《红外遥控及按键控制步进电机毕业设计.docx》由会员分享,可在线阅读,更多相关《红外遥控及按键控制步进电机毕业设计.docx(31页珍藏版)》请在冰豆网上搜索。

红外遥控及按键控制步进电机毕业设计.docx

红外遥控及按键控制步进电机毕业设计

目录

一、红外遥控步进电机系统设计………………………………………1

1.1系统设计原理……………………………………………………………1

1.2总体设计……………………………………………………………………1

二、系统硬件模块设计…………………………………………………2

2.1红外遥控工作模块…………………………………………………………2

2.2步进电机工作模块…………………………………………………………3

2.2.1步进电机工作原理……………………………………………………3

2.2.2步进电机的动作实现原理……………………………………………3

2.3LED数码管模块……………………………………………………………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

三、系统软件设计………………………………………………………8

3.1主程序设计………………………………………………………………8

3.2中断子程序设计…………………………………………………………9

3.3按键控制步进电机程序………………………………………………10

3.4红外遥控步进电机程序………………………………………………14

四、系统调试和制作……………………………………………………24

五、性能分析……………………………………………………………25

六、心得及体会…………………………………………………………26

七、参考文献……………………………………………………………27

 

一、红外遥控步进电机系统设计

1.1系统设计原理

利用红外遥控器控制步进电机其实和用键盘控制步进电机原理类似,只不过按键是用导线传递键是否按下的信号,而红外则是利用LED发射红外线传递按键信息。

由于红外采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,在解码时通过判断高低电平持续时间的长短来识别发送的键值。

控制步进电机正、反方向转动、单步、连续、快慢等动作,原理其实并不困难。

步进电机将电脉冲信号转换成角位移,即给一个脉冲,步进电机就转动一个角度,转动的角度大小与施加的脉冲数成正比,因此,单步和连续的动作区别只是单片机给步进电机脉冲个数不同而已。

每按一次单步键就是给电机一个脉冲,而连续则是不断的给电机脉冲,达到连续运转的目的。

1.2总体方案设计

根据该系统设计要求,需要通过红外遥控器按下按键和显示器来改变步进电机的运动状态以及显示,只需要红外遥控器中6个按键就可满足需求,外加8位LED数码显示管即可。

由于实验箱上只有8个连体数码管,因此需要动态扫描。

通过从键盘上输入正、反转命令,按键数值显示在数码管上,CPU再读取正、反转命令,加减速后执行。

经键盘可完成启动、停止、正转、反转、速度设置控制功能。

按下红外遥控器上的相关按钮电机执行相关动作,同时数码管上显示按键的数值,系统大部分都是软件实现的,整个设计框图如下:

二、系统硬件模块设计

2.1红外遥控工作模块

本模块应完成对红外遥控器有无键按下进行确认,当有键按下时,确定按键值,并根据所得键值进行处理,包括所按键是不是停止键还是执行键。

如是停止键,不断扫描键盘程序,等待执行键按下;如是执行键就启动产生步进电机控制信号程。

显示模块主要是完成在进行键盘按下时,通过数码管显示输入的数据值(转矩数、转动方向、转动速率及运行方式)。

红外遥控编解码原理:

红外遥控系统由发射和接收两大部份组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。

发射部份包括键盘矩阵、编码调制、LED红外发送器;接收部份包括光、电转换放大器、解调、解码电路。

由于采用不同芯片其发送和接受的过程是不一样的,我们用的实验箱采用的是HT6221红外编码芯片。

当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。

这种遥控码具有以下特征:

采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,如图2。

解码方法:

a.解码的关键是如何识别0和1从位的定义我们可以发现01均以0.56ms的低电平开始不同的是高电平的宽度不同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步进电机工作原理

步进电机是一种将电脉冲转化为角位移的执行机构。

当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。

现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。

2.2.2步进电机的动作实现原理

(1)电机单步与连续的控制

给一个脉冲,步进电机就转动一个角度,转动的角度大小与施加的脉冲数成正比,因此,单步和连续的动作区别只是单片机给步进电机脉冲个数不同而已。

每按一次单步键就是给电机一个脉冲,而连续则是不断的给电机脉冲,达到连续运转的目的。

步进电机的步进角度是7.5度,一圈360度,需要48个脉冲完成。

(2)电机正反的控制

步进电机的转动需要向电机以一定的顺序分配驱动脉冲。

如四相单四拍,其脉冲分配的方式和顺序为A-B-C-D-A,如此周而复始,即可转动。

转动方向与脉冲顺序有关,如果给相反脉冲,那么电机就会反转。

在程序中,步进电机的正反转则是一个公有键,按下转动方向就相反,通过判断20号单元的第一位20H.0是0还是1,若是0则去查反转的表,否则去查正转的表,实行起来比较方便。

如图3:

编码结果(十六进制)

A

B

C

D

07

0

1

1

1

03

0

0

1

1

0B

1

0

1

1

09

1

0

0

1

0D

1

1

0

1

0C

1

1

0

0

0E

1

1

1

0

06

0

1

1

0

(3)电机快慢的控制

单片机的晶振为12MHz,单周期指令执行时间为1MHz,由于机械动作需要一定时间来完成,如果以这么快的速度来给脉冲,电机是不会转动的,因此,在两个脉冲之间必须要有一定时间差,电机才有时间来执行动作。

电机转动的速度与脉冲频率成正比,控制脉冲间隔时间就相当于控制了步进电机的转动角频率即快慢。

通过单片机的定时/计数器T0来控制,定时产生脉冲的方法称为硬件定时,该法首先根据定时的时间长短设定定时器的工作模式,然后输入定时器的定时常数,则定时器就会定时溢出,单片机就会每溢出一次就产生一个脉冲控制步进电机转动,而改变装载值的大小,就会实现变速。

也就是说,步进电机的转速由单片机内部定时器的中断频率决定的,不断改变定时器的装载初值就可改变电机的运转速度。

(4)电机的停止

步进电机具有瞬间启动和急速停止的优越特性。

故在设计中,不论电机处于何种状态,只要按下停止键,马上跳转到主程序,停止给脉冲,电机停止运转。

2.3LED数码管模块

图4

在本次仿真中使用的是共阳极八个七段数码管。

如图4所示。

数码管是由7个发光管组成的8字形构成的,加上小数点就是8个。

分别把它命名为A、B、C、D、E、F、G、H、DP,由于接法是共阳接法,所以低电平是亮,高电平是灭,接口由单片机P0口控制。

而右边是选择使用数码管的控制接口,程序中单片机P3口控制,在按键控制步进电机中,取第一位数码管亮。

实验箱采用的数码管较为特殊,和一般的共阴、共阳数码管都不一样,在Proteus中共阳数码管给高电平才表示选中,而实验箱采用低电平选中,各字段表也不一样。

如一般共阳给"C0H"表示"0",但实验箱需要给"28H",为了仿真的需要,后面的程序均采用的是一般共阳数码管写法,在实验箱上调试程序时进行了变更。

2.4硬件资源分配

2.4.1步进电机驱动电路

2.4.2红外遥控驱动电路

2.4.3系统硬件电路设计图

2.4.4在XL1000上的连线图

2.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,0B0H,38H,0C0H,48H,0D0H,58H,0E0H,68H。

内外部存储器是统一编址的,在0000H—FFFFH范围内选址。

控制正反转调用地址07H,03H,0BH,09H,0DH,0CH,0EH,06H。

三、系统软件设计

3.1主程序设计

系统的软件设计通常采用模块化结构,软件系统总体框架一般包括三部分:

主程序、中断服务子程序以及其他相应的辅助子程序(包括正转子程序、反转子程序、LED显示子程序、红外键盘子程序)。

图3.1主程序

红外遥控步进电机程序运行总思路:

首先,检测是否有红外按键扫描信号;通过遥控按键,发出信号,是实验箱上感应信号后,对应数码管显示按键的数值,并且执行步进电机的工作状态,达到红外控制步进电机的效果。

3.2中断子程序设计

本次设计采用直流电源供电,只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。

按键子程序中包括按键扫描、按键去抖动、按键的键后处理.按键扫描采用单个按键的扫描,分别对不同功能的按键扫描并存放不同的按键标志。

按键去抖动采用延时去抖法。

根据按键扫描后的按键标志位结果来处理相应的子程序。

显示模块采用传统的LED数码管显示数字,程序编译容易,资源占用少。

使用八位数码管,动态扫描显示的方式。

3.3按键控制步进电机程序

MinspdEQU25

MaxspdEQU35

SpeedDATA23H

ORG0000H

AJMPstart

ORG000BH;T0的中断服务程序入口

JMPBUJIN;转到BUJIN

ORG0030H;主程序

start:

SETB20H.1;设置步进电机正转

MOVR0,#00H

MOVTMOD,#01H

MOVTH0,#115

MOVTL0,#96;定时约35ms

SETBEA;开中断总开关

SETBET0;允许T0中断

CLRTR0;停止T0工作

MOVP2,#0FFH

main:

MOVSpeed,#Minspd

MOVP3,#01H

CALLDELAY;延时96us

MOVP0,#92H;置数码管显示5

JBP1.2,Q1;若按下P1.2口,顺序执行使步进电机反转;否则,转去执行单步工作,步进电机正转

MOVP3,#01H

CALLDELAY

MOVP0,#0A4H;置数码管显示2

JNBP1.2,$

CPL20H.1

Q1:

JNBP1.0,Danbu

JNBP1.1,Lianxu

AJMPmain

Danbu:

MOVP3,#01H

CALLDELAY

MOVP0,#0C0H;置数码管显示0

JNBP1.0,$

CALLZF;置转动方向

JMPmain

Lianxu:

SETBTR0;启动中断

MOVP3,#01H

CALLDELAY

MOVP0,#0F9H;置数码管显示1

CALLKEY

JMPLianxu;设置步进电机在连续工作的情况下,执行正反转、加减速工作

KEY:

JNBP1.5,main

KY2:

JNBP1.0,Danbu

KY4:

JBP1.2,KY6

MOVP3,#01H

CALLDELAY

MOVP0,#0A4H;置数码管显示2

JNBP1.2,$;执行步进电机正反转

CPL20H.1

KY6:

JBP1.3,KY7

MOVP3,#01H

CALLDELAY

MOVP0,#0B0H;置数码管显示3

JNBP1.3,$

JMPUpspd;执行步进电机加速工作

KY7:

JBP1.4,K1

MOVP3,#01H

CALLDELAY

MOVP0,#99H;置数码管显示4

JNBP1.4,$

JMPDowspd;执行步进电机减速工作

Upspd:

INCSpeed

MOVA,Speed

CJNEA,#Maxspd,K1

DECSpeed

JMPK1

Dowspd:

DECSpeed

MOVA,Speed

CJNEA,#Minspd,K1

MOVSpeed,#Minspd

K1:

RET

BUJIN:

CALLZF

CLRTR0

MOVA,Speed

PUSHPSW;将程序状态字压入堆栈

SUBBA,#Minspd;借位减

POPPSW

MOVR1,A

MOVDPTR,#DjH;将表DjH的地址依次送寄存器DPTR中

MOVCA,@A+DPTR

MOVTH0,A

MOVA,R1

MOVDPTR,#DjL

MOVCA,@A+DPTR

MOVTL0,A

RETI

ZF:

JNB20H.1,Fanzhuan

Zhengzhuan:

MOVA,R0

MOVDPTR,#TABLE

MOVcA,@A+DPTR

JNZK3

MOVR0,#00H

AJMPZhengzhuan

Fanzhuan:

MOVA,R0

MOVDPTR,#TABLE1

MOVcA,@A+DPTR

JNZK3

MOVR0,#00H

AJMPFanzhuan

K3:

MOVP2,A

INCR0

RET

DELAY:

MOVR7,#60H

DJNZR7,$

RET

DjH:

DB15H,29H,3CH,50H,63H,77H,8AH,9EH,0B1H,0C5H

DjL:

DB0A0H,28H,0B0H,38H,0C0H,48H,0D0H,58H,0E0H,68H

TABLE:

DB07H,03H,0BH,09H,0DH,0CH,0EH,06H;正转表

DB00H;正转结束

TABLE1:

DB06H,0EH,0CH,0DH,09H,0BH,03H,07H;反转

DB00H;反转结束

END

3.4红外遥控步进电机程序

ORG0000H

SJMPSTART0

ORG000BH;T0中断入口(定时器0中断)

AJMPZHDUAN;转中断服务程序

ORG0030H;主程序

START0:

MOVSP,#60H

MOVP0,#0FFH

MOVP1,#0FFH

MOVP2,#0FFH

MOVP3,#0FFH

MOV35H,#00H

MOV31H,#3CH

MOV30H,#0B0H

MOV32H,#1

START:

WAIT:

JBP3.7,$;等待遥控信号出现

SB:

MOVR4,#8;8毫秒为高电平错误

SBA:

MOVR5,#250

SBB:

JBP3.7,SXB1

DJNZR5,SBB

DJNZR4,SBA

MOVR4,#2

JMPSBC

SXB1:

MOVR5,#5

SXB2:

JNBP3.7,SBB;去掉20US的尖峰干扰信号

DJNZR5,SXB2

JMPSTART

SBC:

MOVR5,#250

SB1:

JBP3.7,SB2;2MS内不为高电平错误

DJNZR5,SB1

DJNZR4,SBC

JMPSTART

SB2:

MOVR5,#5;去掉20US的尖峰干扰信号

SB2_A:

JNBP3.7,SB1

DJNZR5,SB2_A

MOVR4,#3

SB2_1:

MOVR5,#250

SB3:

JNBP3.7,SXC;监测4.5MS高电平,如3MS内出现低电平错误

DJNZR5,SB3

DJNZR4,SB2_1

MOVR4,#2

JMPSB3_1

SXC:

MOVR5,#5;去掉20US的尖峰干扰信号

SXC1:

JBP3.7,SB3

DJNZR5,SXC1

JMPSTART

SB3_1:

MOVR5,#250;监测4.5MS高电平,如5MS内不为低错误

SB3_2:

JNBP3.7,SB4

DJNZR5,SB3_2

DJNZR4,SB3_1

JMPSTART

SB4:

MOVR5,#5;去掉20US的尖峰干扰信号

SB4_1:

JBP3.7,SB3_2

DJNZR5,SB4_1

MOVR1,#1AH;设定1AH为起始RAM区

MOVR2,#4

PP:

MOVR3,#8

JJJJ:

MOVR5,#250

JJJJ2:

JBP3.7,JJJJ3;1MS内不为低电平错误

DJNZR5,JJJJ2

JMPSTART

JJJJ3:

LCALLYS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态

MOVC,P3.7;将P3.7状态0或1存入C中

JNCUUU;如果为0就跳转到UUU

MOVR5,#250

JJJJ4:

JNBP3.7,UUU

NOP

DJNZR5,JJJJ4

JMPSTART

UUU:

MOVA,@R1;将R1中地址的给A

RRCA;将C中的值移入A中的最低位

MOV@R1,A;将A中的数暂存在R1中

DJNZR3,JJJJ;接收地址码的高8位

INCR1;对R1加1,换成下一个RAM

DJNZR2,PP

;以下对代码是否正确和定义进行识别

MOVA,1AH;比较高8位地址码

XRLA,#00000000B;判断1AH的值是否等于00000000,相等的话A为0

JNZEXIT;如果不等解码失败退出

MOVA,1BH;比较低8位地址

XRLA,#11111111B;再判高8位地址是否正确

JNZEXIT;如果不相等说明解码失败退出

LCALLYS3

MOVA,1CH;比较数据码和数据反码是否正确?

CPLA

XRLA,1DH;将1CH的值取反后和1DH比较不同则无效丢弃,核对数据是否准确

JNZEXIT;如果不相等说明解码失败退出

LCALLYS3

CLRP2.6;选中数码管

CLRP3.3;解码成功喇叭响?

AJMPBIJIAO

;判断在118毫秒内是否有连发码

AA:

MOVR1,#25

XX:

ACALLYS2

JNBP3.7,HH;跳转到HH

DJNZR1,XX

EXIT:

;对所有端口清零

AJMPSTART

;连发码判断程序段-----------

HH:

MOVR6,#4

S:

ACALLYS1;调用882微秒延时子程序

JBP3.7,EXIT;延时882微秒后判断P3.7脚是否出现高电平如果有就退出解码程序

DJNZR6,S;重复4次,目的是确认

JNBP3.7,$;等待高电?

LCALLYS3

AJMPAA

BIJIAO:

MOVA,1CH;红外键值

;显示按键

MOVP2,#01H

CJNEA,#10h,T1

MOVP0,#7EH;数码管显示1

T1:

CJNEA,#03h,T2

MOVP0,#0A2H;数码管显示2

T2:

CJNEA,#01h,T3

MOVP0,#62H;数码管显示3

T3:

CJNEA,#06h,T4

MOVP0,#74H;数码管显示4

T4:

CJNEA,#09h,T5

MOVP0,#61H;数码管显示5

T5:

CJNEA,#1dh,T6

MOVP0,#21H;数码管显示6

T6:

CJNEA,#1fh,NEXT

MOVP0,#7AH;数码管显示7

;T7:

AJMPWAIT

;单步正转

NEXT:

CJNEA,#10H,LRUN2

CLRET0;禁止T0中断

SJMPRRUN1

RRUN:

MOV35H,#00H;

RRUN1:

MOVA,35H

MOVDPTR,#TABR

MOVCA,@A+DPTR

JZRRUN

MOVP1,A

INC35H

AJMPWAIT

;单步逆转

LRUN2:

CJNEA,#03H,CRRUN2

CLRET0

SJMPLRUN1

LRUN:

MOV35H,#00H

LRUN1:

MOVA,35H

MOVDPTR,#TABL

MOVCA,@A+DPTR

JZLRUN

MOVP1,A

INC35H

AJMPWAIT

;连续正转

CRRUN2:

CJNEA,#01H,CLRUN2

SETB20H.0;标志位为1,说明正转

MOVTMOD,#01H

MOVTH0,31H

MOVTL0,30H

SETBTR0

SETBEA

SETBET0

A

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1