方案设计书并实现红外遥控步进电机单片机课程方案设计书

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

课程设计任务书
学生姓名:专业班级:
指导教师:工作单位:
题目:设计并实现红外遥控步进电机
初始条件:
(1)Proteus仿真软件或XL1000综合仿真实验仪一台;
(2)课程设计辅导书:
1.李群芳、张士军,单片微型计算机与接口技术,电子工业出版社,2008
2.张毅刚、彭喜元、董继
成,单片机原理及应用,高等教育出版社,2004
3.赵晓安.,MCS-51单片机原理及应用,天津大学出版社,2001
(3)先修课程:微机原理与接口技术、单片机原理。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要
求)
(1)课程设计时间:1周;
(2)本课程设计统一技术要求:按照要求对选定的设计题目进行分析,画出实现
电路原理图,设计出各模块电路的功能,编写C51或汇编程序,上机调试、仿真,
记录实验结果,对实验结果进行分析;(除了代码,运行结果可以打印,其他手写)
(3)课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,
并标明参考文献至少5篇;
(4)写出本次课程设计的心得体会(至少500字)。

时间安排:
课程设计时间为:6月26日至7月1 日, 7月2日上午答辩。

指导教师签名:年月日
系主任(或责任教师)签名:
目录
1.设计原理及方法1
1.1 步进电机的工作原理1
1.2 红外遥控器的原理1
1.3 红外遥控步进电机的设计方法2
2.系统硬件线路设计2
2.1红外遥控及LED模块2
2.2步进脉冲产生模块:5
2 . 3硬件线路设计图7
3.程序框图8
4.资源分配表:9
5.源程序:10
7.心得及体会:21
8.参考文献:21
9.本科生课程设计成绩评定表22
1.设计原理及方法
1.1 步进电机的工作原理
步进电机是数字控制电机,它将电脉冲信号转化为角位移,实质上是一种数字/角度转换器。

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

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的,因此,单步和连续的动作区别只是单片机给步进电机脉冲个数不同而已。

每按一次单步键就是给电机一个脉冲,而连续则是不断的给电机脉冲,达到连续运转的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

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

步进电机可分为反应式步进电机(VR)、永磁式步进电机(PM)和混合式步进电机(HB)三种。

永磁式一般为两相,转矩和体积较小,步进角一般为7.5°或15°;反应
是一般为三相,可实现大转矩输出,步进角一般为 1.5°,但噪声和振动都很大,在欧美
等发达国家在20 世纪80年代已被淘汰;混合式应用最为广泛,它混合了永磁式和反应式的优点。

步进电机区别其他控制电机的最大特点是,它通过输入脉冲信号来进行控制的,即电机的总转到角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。

1.2 红外遥控器的原理
红外线遥控系统就是指利用红外线来传递控制信号, 实现对控制对象的远距离控制的目的。

由发射器发出红外线指令信号, 由接收器接收信号并对信号进行处理,最后实现对对象的各种功能的远距离控制。

通用红外发射器由指令键、指令信号产生电路、调制电路、驱动电路及红外发射器组成。

红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射雕红外光转换为相应的电信号,再送后置放大器。

接收电路将发射器发出的已调制的编码指令信号接收下来,并进行放大后送解调电路,解调电路将已调制的指令编码信号解调出来,即还原为编码信号。

指令译码器将编码指令信号进行译码,最后由驱动电路来驱动执行电路实现各种指令的操作控制(机构)。

红外遥控器的特点是不影响周边环境,不干扰其他电器设备,在室内近距离(小于
10m)遥控中得到了广泛的应用。

例如在录音机、音响设备、空调机以及玩具等其他小型电器装置上都纷纷采用红外线遥控。

1.3 红外遥控步进电机的设计方法
红外遥控器控制步进电机是利用LED 发射红外线传递按键信息。

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

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

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

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

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

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

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

按下红外遥控器上的相关按钮电机执行相关动作,同时数码管上显示按键的数值。

2.系统硬件线路设计
2.1 红外遥控及LED 模块
本模块应完成对红外遥控器有无键按下进行确认,当有键按下时,确定按键值,并根据所得键值进行处理(包括所按键是不是停止键还是执行键。

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

显示模块主要是完成
在进行键盘按下时,显示输入的数据值(转矩数、转动方向、转动速率及运行方式)
2.1.1红外遥控编解码原理
红外遥控系统由发射和接收两大部份组成,应用编 /解码专用集成电路芯片来进行控
制操作。

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

由于采用不同芯片其发送和接受的过程是不一样的,我们 用的实验箱采用的是 HT6221红外编码芯片,因此以 HT6221为例来说明红外遥控器编码 和解码原理,其管脚图如图1所示。

图表1 HT6221 管脚图
1. HT6221键码的形成
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。

这种遥控码 具有以下特征:采用脉宽调制的串行码,以脉宽为
0.565ms 、间隔0.56ms 、周期为
1.125ms 的组合表示二进制的“ 0”;以脉宽为0.565ms 、间隔1.685ms 、周期为
2.25ms 的 组合
表示二进制的“ 1”。

当一个键按下超过 36ms 振荡器使芯片激活如果这个键按下且延迟大约
108ms,这
108ms 发射代码由一个起始码 9ms ,一个结果码4.5ms ,低8位地址码9ms~18ms 高8位地 址码9ms~18ms ,8位数据码9ms~18ms 和这8位数据的反码9ms~18ms 组成 如果键按下超 过108ms 仍
未松开接下来发射的代码 连发代码将仅由起始码9ms 和结束码2.5ms 组成。

1.12ms 为 0,
2.24ms 为 1,如下图:
0.56™ *||<
■LU
+< 刿2.5ms
;(A(HA 1 &+D0*D7+ iXFD7)
9ms
H ----------- ------------------ ------------- lOems —
llllllll IIIIIIL
*- data period (2.24ms)
DOUT
"Une"
图表 2 发送波形
每发送一个码,HT6221 会先送出一个9ms 的头码和4.5ms 的间隙,然后依次送出
16 位的地址码(18ms~36m®、8位数据码(9ms~18m®和8位数据反码,如下图:
注:代码宽度算法:16 位地址码的最短宽度:1.12 *16=18ms
16 位地址码的最长宽度2.24ms *16=36ms
易知8 位数据代码及其8 位反代码的宽度和不变:( 1 . 1 2ms+2.24ms)* 8=27ms
32 位代码的宽度为18ms+27ms ~(36ms+27ms)
2 .代码格式(以接收代码为准,接收代码与发射代码反向)
位定义
单发代码格式
连发代码格式
3. 解码方法
1.解码的关键是如何识别0 和1 从位的定义我们可以发现0 1 均以0.56ms 的低电平开始
不同的是高电平的宽度不同0为0.56ms, 1为1.68ms所以
必须根据高电平的宽度区别0 和1 如果从0.56ms 低电平过后开始延时0.56ms 以后若读到的
电平为低说明该位为0 反之则为1 为了可靠起
见延时必须比0.56ms长些但又不能超过1.12ms否则如果该位为0读到的已是下一位的高电平因
此取1.12ms+0.56ms /2=0.84ms最为可靠一般取0.84ms
2.根据码的格式应该等待9ms 的起始码和4.5ms 的结果码完成后才能读码左右均可
这样接收到的仅仅是普通的代码要得到标准的键值还必须进行代码识别和代码转换。

2.1.2 LED 显示部分
共阳接法:低电平亮,高电平灭
数码管部分JP5(控制数码管的8段)
JP8 (输入高电平选中相应的数码管)
数码管实际上是由7个发光管组成的8字形构成的,加上小数点就是8个。

分别把它命名为ABCDEFGH,由于接法是共阳接法,所以低电平是亮,高电平是灭。

例如,要显示一个数字2则是C、F、H (小数点)不亮,P0.0-P0.7控制数码管的8段,0为亮,1为灭,从高往低排列,P0.0-P0.7写成二进制为10100010,把它转化为十六进制数为A2H,当然在此之前,还必须指定哪一个数码管亮。

CPU向字段输出口送出字形码,所有显示器接收到相同的字形码,由8个PNP的三极管,来控制这8位哪位工作如果要选中第一位,只需将该位清零即可。

所有数码管的8个笔划段a-h同名端连在一起,在这种接法中同一瞬间所有的数码管显示都是相同的,不能显示不同的数字。

在单片机里,首先显示一个数,然后关掉,然后显示第二个数,又关掉,那么将看到连续的数字显示,轮流点亮扫描过程中,每个显示器的点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余晖效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会由闪烁感。

2.2步进脉冲产生模块:
2.2.1 步进电机的控制
步进电机系统中有两个重要电路:脉冲分配电路和驱动电路。

脉冲分配电路有两个输入信号:步进脉冲和转向控制。

脉冲分配电路在步进脉冲和转向控制信号的共同作用下产生正确转向的4 相激励信号。

此激励信号经过驱动电路送至步进电机,从而控制步进电机向正确的方向转动,此激励信号的频率决定了步进电机的转速。

脉冲分配可通过脉冲分配器实现,也可通过软件实现。

驱动电路的主要作用是实现功率放大。

一般脉冲分配器输出的驱动能力是有限的,它不可能直接驱动步进电机,而须要经过一级功率放大。

对于功率比较小的步进电机,厂家已经生产出了集成度较高、脉冲分配与驱动电路集成在一起的芯片,应用中只需将它的输出端与步进电机相连即可。

步进电机步进时是机械转动,因此存在惯性。

当从静止状态启动步进时相当于开始转动的速度为0,它不可能立即就达到最大转速(频率),因此需要一个逐渐加速的过程,否则可能由于惯性儿导致“失步”。

比如,开始应该走20步。

却只走了19 步,丢失了一步。

步进电机的最高启动频率(又称突调频率)一般为0.1KHZ 到3-4KHZ ,以超过最高启动频率的频率直接启动,将会出现失步现象,甚至无法启动。

同理,当步进电机正以最高启动频率(可达几百千赫兹)步进时,他不可能立即停下来,很可能出现多走几步的情况,这当然也会造成错误,因此在停止之前应当有一个预先减速的过程,到该停止的位置时,速度已经很慢,惯性已经很小,可以立即停止。

步进电机在转换方向时,也一定要在电机降速停止或降到突跳频率范围之类再换向,以免产生较大的冲击儿损坏电机。

换向信号一定要在前一个方向的最后一个激励信号脉冲结束后以及下一个方向的第一个激励脉冲前发出。

步进电机在某一高速下运行时的正反向切换实质上包含了降速一换向一升速三个过程。

2.2.2 步进电机的调速
如果给步进电机发送一个控制脉冲,它就转一步,再发送一个脉冲,它会再转一步。

如果两个脉冲的间隔越短,步进电机就转得越快。

调整步进电机发出的脉冲频率,就可以对步进电机进行调速,而脉冲频率可以通过软件延时和硬件定时两种方式实现。

通过调用标准延时子程序产生脉冲的方法称软件延时,该法首先设置两个字节作为延时程序的入口地址,再根据需要延时的时间长短给这两个字节赋值,则单片机就会按照设置的延时时间不断地产生脉冲信号控制步进电机转动。

软件延时的方法程序简单、思路清晰,而且不占用单片机的硬件资源。

通过使用单片机的定时/计数器TO或T1,定时产生脉冲的方法称为硬件定时,该法首先根据定时的时间长短设定定时器的工作模式,然后输入定时器的定时常数,则定时器就会定时溢出,单片机就会每溢出一次就产生一个脉冲信号控制步进电机转动。

硬件定时的方法既需要硬件(定时/计数器TO或T1),又需要软件来产生所需频率的脉冲信号,是一种软硬结合的方法,虽然占用了一个定时器,但是提高了CPU 的利用率,CPU 在定时器没产生溢出时运行其它程序。

用定时中断方式来控制电动机变速时,实际上是不断改变定时器装载值的大小。


程序中,每按一次加减速键,程序中speed都会加减1,最后通过查表的方法改变定时计数器初值,达到加减速的目的。

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

电机的加减速控制,只需控制好脉冲频率即可,可以采用中断计时的方法,内部定时器中断主要是利用单片机的内部定时器的方式1(16 位计数方式)产生不同周期的定时信号,每次中断都给步进电机三个绕组一次脉冲,使得步进电机转动一个节拍。

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

不论步进电机处于何种状态,只要按下复位键,马上跳转到主程序,停止给脉冲,电机停止运转。

2.3 硬件线路设计图
原理图:
P3.2
VCC R0k
VCC
VCC
C3
S1
2uf
R1
10k vcc
J?
C0N6
R4
15K ■
n H R3 00
I C4
104
C1
30
C2
30pf
3.程序框

U5
m---- 2
3
P1.3 4
P1.0 1
Y1
6
~7~
8
9
T0~
~~V1 ~
P3.2 12
~13~
15
18
059 2MHz 20

3
HS0038
U2
GND
VCC
VO
P1.0 VCC
P1.1 P0.0/AD0
P1.2 P0.1/AD1
P1.3 P0.2/AD2
P1.4 P0.3/AD3
P1.5 P0.4/AD4
P1.6 P0.5/AD5
P1.7 P0.6/AD6
RST P0.7/AD7
Rx D/P3.0 TA/Vp p
TxD/P3.1 ALE
INIU/P3.2 ^^SEN
INI1/P3.3 P2.7/A15
T0/P3.4 P2.6/A14
T1/P3.5 P2.5/A13
WR/P3.6 P2.4/A12
RD7P3.7 P2.3/A11
XTAL2 P2.2/A10
XTAL1 P2.1/A9
GND P2.0/A8
U1 VCC
38
37
36
35 P0.4
34 P0.5
33 P0.6
32 P0.7
31
P0.0
P0.1
P0.2
P0.3
30
29
28
27
26
24
23
■2
2 21
9
10
12
13
14
VCC
VCC
15
16
RS
R/W
E
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
BG VCC
BG GND
LCD
VCC
R23
4.7
k R22
4.7
k R21
”---- ----
4.7 k
R20
4.7 k
6 5 4 1110 9
T
U
c
1
N
U3
ULN2003
2 3 4 5 6 7 NN
NN N N
1 2 3 4 5 6 7 8
0 12 3
4.资源分配表:
10H,单步正转03H单步逆转
01H连续正转06H连续逆转
09H加速1DH,减速
仆H停止
TH0 31H
TL0 30H
P1 OUT
P2选通
P0送数
5.源程序:
ORG 0000H
SJMP START0
ORG 000BH
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,#1
START:
HWAI: JB P3.7, $ ;等待遥控信号出现SB:
MOV R4,#8 。

8 毫秒为高电平错误SBA:
MOV R5,#250
SBB:
JB P3.7,SXB1
DJNZ R5,SBB
DJNZ R4,SBA
MOV R4,#2
JMP SBC
SXB1:
MOV R5,#5
SXB2: 。

去掉20US 的尖峰干扰信号
JNB P3.7,SBB
DJNZ R5,SXB2
JMP START
SBC:
MOV R5,#250
SB1:
JB P3.7,SB2 。

2MS内不为高电平错误
DJNZ R5,SB1
DJNZ R4,SBC
JMP START
SB2: 。

去掉20US 的尖峰干扰信号
MOV R5,#5
SB2_A:
JNB P3.7,SB1
DJNZ R5,SB2_A
MOV R4,#3
SB2_1:
MOV R5,#250
SB3: 。

监测4.5MS高电平,如3MS内出现低电平错误JNB P3.7,SXC
DJNZ R5,SB3
DJNZ R4,SB2_1
MOV R4,#2
JMP SB3_1
SXC: 。

去掉20US的尖峰干扰信号
MOV R5,#5
SXC1:
JB P3.7,SB3
DJNZ R5,SXC1
JMP START
SB3_1: 。

监测4.5MS 高电平,如5MS 内不为低错误
MOV R5,#250
SB3_2:
JNB P3.7,SB4
DJNZ R5,SB3_2
DJNZ R4,SB3_1
JMP START
SB4: 。

去掉20US 的尖峰干扰信号
MOV R5,#5
SB4_1:
JB P3.7,SB3_2
DJNZ R5,SB4_1
MOV R1,#1AH 。

设定1AH 为起始RAM 区
MOV R2,#4
PP: MOV R3,#8
JJJJ:
MOV R5,#250
JJJJ2: 。

IMS内不为低电平错误
JB P3.7,JJJJ3
DJNZ R5,JJJJ2
JMP START
JJJJ3:
LCALL YS1 。

高电平开始后用882 微秒的时间尺去判断信号此时的高低电平状态MOV C,P3.7 。

将P3.7 状态0 或1 存入C 中
JNC UUU 。

如果为0 就跳转到UUU
MOV R5,#250
JJJJ4:
JNB P3.7,UUU
NOP
DJNZ R5,JJJJ4
JMP START
UUU:
MOV A,@R1 。

将R1 中地址的给A
RRC A 。

将C 中的值移入A 中的最低位
MOV @R1,A 。

将A 中的数暂存在R1 中
DJNZ R3,JJJJ。

接收地址码的高8位
INC R1 。

对R1 加1,换成下一个RAM
DJNZ R2,PP 。

以下对代码是否正确和定义进行识别
MOV A,1AH 。

比较高8 位地址码
XRL A,#OOOOOOOOB。

判断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,1DH 。

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

如果不相等说明解码失败退出
LCALL YS3
CLR P2.6 。

选中数码管
CLR P3.3 。

解码成功喇叭响?
AJMP BIJIAO。

判断在118毫秒内是否有连发码
AA: MOV R1,#25
XX: ACALL YS2
JNB P3.7,HH 。

跳转到 HH
DJNZ R1,XX
EXIT: 。

对所有端口清零
AJMP START 。

连发码判断程序段 -----------
HH: MOV R6,#4
S: ACALL YS1 。

调用 882 微秒延时子程序
JB P3.7,EXIT 。

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

重复 4次,目的是确认
JNB P3.7, $ 。

等待高电平
LCALL YS3
AJMP AA
BIJIAO: MOV A,1CH 。

红外键值 。

显示按键
MOV P2,#01H
CJNE A,#10h,TT1
MOV P0,#7EH
TT1: CJNE A,#03h,T2
MOV P0,#0A2H
T2: CJNE A,#01h,T3
MOV P0,#62H
T3: CJNE A,#06h,T4
MOV P0,#74H
T4: CJNE A,#09h,T5
MOV P0,#61H
T5: CJNE A,#1dh,T6
MOV P0,#21H。

数码管显示 6 T6: CJNE A,#1fh,NEXT
MOV P0,#7AH。

数码管显示 7 。

单步正转 NEXT: CJNE A,#10H,NZHUAN2
CLR ET0。

数码管显示 1。

数码管显示 2 。

数码管显示 3 数码管显示 4 。

数码管显示 5
SJMP SZHUAN1
SZHUAN: MOV 35H,#00H SZHUAN1: MOV A,35H
MOV DPTR,#TABS
MOVC A,@A+DPTR
JZ SZHUAN
MOV P1 , A
INC 35H
AJMP HWAI。

单步逆转
NZHUAN2: CJNE A,#03H,LSZHUAN2
CLR ET0
SJMP NZHUAN1
NZHUAN: MOV 35H,#00H NZHUAN1: MOV A,35H
MOV DPTR,#TABN
MOVC A,@A+DPTR
JZ NZHUAN
MOV P1 , A
INC 35H
AJMP HWAI
连续正转
LSZHUAN2: CJNE A, #01H,LNZHUAN2
SETB 20H.0 。

标志位为1 ,说明正转MOV TMOD ,#01H
MOV TH0,31H
MOV TL0,30H
SETB TR0
SETB EA
SETB ET0
AJMP HWAI。

------------------------------。

连续逆转LNZHUAN2: CJNE A, #06H,JIASU
CLR 20H.0 。

标志位为0 ,说明反转
MOV TMOD ,#01H
MOV TH0,31H
MOV TL0,30H
SETB TR0
SETB EA
SETB ET0
AJMP HWAI。

------------------------------
JIASU: CJNE A, #09H,JIANSU
MOV A,32H
CJNE A,#5,JIA1
AJMP HWAI
JIA1: INC 32H
INC A
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,#03H
MOV P0,A
MOV A,32H
CJNE A,#1,JIA2
MOV 31H,#3CH
MOV 30H,#0B0H AJMP HWAI
JIA2: CJNE A,#2,JIA3 MOV 31H,#63H MOV 30H,#0C0H AJMP HWAI JIA3: CJNE A,#3,JIA4 MOV 31H,#8AH MOV 30H,#0D0H AJMP HWAI
JIA4: CJNE A,#4,JIA5 MOV 31H,#0B1H MOV 30H,#0E0H AJMP HWAI JIA5: CJNE A,#5,JIAMAX
MOV 31H, #0D8H
MOV 30H, #0F0H
JIAMAX: AJMP HWAI
JIANSU: CJNE A,#1DH,STOP
MOV A,32H
CJNE A,#1,JIAN1
AJMP HWAI
JIAN1: DEC 32H
DEC A
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,#03H
MOV P0,A
MOV A,32H CJNE A,#1,JIAN2
MOV 31H,#3CH
MOV 30H,#0B0H
AJMP HWAI
JIAN2: CJNE A,#2,JIAN3
MOV 31H,#63H
MOV 30H,#0C0H
AJMP HWAI
JIAN3: CJNE A,#3,JIAN4
MOV 31H,#8AH
MOV 30H,#0D0H
AJMP HWAI
JIAN4: CJNE A,#4,JIAN5 MOV 31H,#0B1H MOV 30H,#0E0H AJMP HWAI JIAN5: CJNE A,#5,JIANMAX
MOV 31H, #0D8H
MOV 30H, #0F0H
JIANMAX: AJMP HWAI
STOP: CJNE A,#1FH,FANHUI
CLR ET0
MOV P3,0FFH
AJMP HWAI
FANHUI: AJMP HWAI。

中断
ZHDUAN: JB 20H.0,SZH
NZH : MOV DPTR,#TABN
SJMP XHUAN
SZH: MOV DPTR,#TABS
SJMP XHUAN XHUAN1: MOV 35H,#00H XHUAN: MOV A,35H
MOVC A,@A+DPTR
JZ XHUAN1
MOV P1 , A
INC 35H
MOV TMOD ,#01H
MOV TH0,31H
MOV TL0,30H
SETB TR0
RETI
YS1: MOV R4,#20 。

延时子程序1,882 微秒D1: MOV R5,#20 DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10 。

延时子程序2,4740 微秒
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
YS3: MOV R4,#2 。

延时程序3, 1000 微秒
D3:MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET
TABLE: DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
TABS: DB 03H,09H,0CH,06H,00H
TABN: DB 03H,06H,0CH,09H,00H。

0 1 2 3 4 5 6 7 8 9
END
6.性能分析:
因为电机步进角为7.5°, 一圈需要360/7.5=48个脉冲。

电机转速为1/ (T*48 ),其中T 为定时计数器中断时间,开始时电机以最小速度运行,即查表中第一个数据,HT0=15H,TL0=A0H,通过计算为60ms,因为单片机给48个脉冲步进电机才转一圈,因此电机的速度为0.35转/s。

表中各种值对应的速度如下表:
电机单步运行:7.5°/次
电机连续运行:0.35 r/s~1.39r/s
数码管显示:红外按键值1-7
在实验箱上演示的结果表明程设计是符合要求的,利用红外遥控器按键1-7 分别能够实现步进电机单步正转,单步反转,连续正转,连续反转,加速,减速,停止操作,所以此次课程设计是比较成功的。

7.心得及体会:
这次课程设计已经结束,经历的时间比较长,在这段时间里我收获了知识,同时也收获了乐趣。

一开始根本不知道步进电机,对红外遥控器也没有接触过。

首先就是根据题目要求设计程序,虽然语言不限,但我还是选择了汇编语言。

但是设计起来还是很困难的,所以我又把微机原理跟单片机的书拿出来温习了一遍,总算有了点底气。

我把整个按键分为两大部分:单步和连续。

它们共有一个动作:正反转和停止,在连续时有加速和减速。

确定好思路后,写代码就非常简单了。

但是还是遇到很多不懂的地方,所以向同学请教了许多,很多问题也通过讨论得到了解决。

程序写好后就是上机调试了,其实如果汇编语言学得好的话,调试是很快的,但我却用了很多时间,这也让我认识到自己理论知识掌握的并不牢固,必须加强学习。

然后就可以将调试好的程序写入实验箱了,由于设计程序时就考虑到要实现的所有功能,而且程序已经调试成功,所以实验结果是很让人满意的,步进步进电机能够启动,而且通过遥控可以使其单步、连续转动,正反向变换和加减速。

通过此次课程设计,我巩固了自己的理论知识,也增强了实际动手能力,在设计与调试的过程中我体会到了快乐与艰辛,认识到理论知识对于时间的重要性,以及团队合作的力量。

任何人都不可能单枪匹马的去成功地干成一件事,团队合作才是硬道理。

总之,我收获了很多,也为我以后的工作奠定了一定的基础。

8.参考文献:
[1]韩全立。

单片机控制技术及应用。

北京:电子工业出版社,2004
[2]胡汉才。

单片机原理及系统设计。

北京:清华大学出版社,2002
[3]王晓明。

电动机的单片机控制。

北京:北京航天航空大学出版社,2002
[4]汪道辉。

单片机系统设计与实践。

北京:电子工业出版社,2006
⑸赵晓安.,MCS-51单片机原理及应用,天津大学出版社,2001
9 •本科生课程设计成绩评定表
指导教师签字:
年月曰。

相关文档
最新文档