根据下述资料完成对硬件仿真的实现Word文件下载.docx
- 文档编号:19468669
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:14
- 大小:140.87KB
根据下述资料完成对硬件仿真的实现Word文件下载.docx
《根据下述资料完成对硬件仿真的实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《根据下述资料完成对硬件仿真的实现Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
ULN2003采用DIP—16或SOP—16塑料封装。
ULN2003方框图如图4.2所示。
4.2ULN2003内部方框图
利用ULN2003以及AT89C51设计的步进电机驱动电路如图4.3所示。
图4.3ULN2003和AT89C51构成的驱动电路
51的25-28口接ULN2003的1-4输入端。
另外,用键盘来对电机的状态进行控制。
在上述设计的基础上,可以用数码管显示电机的转速,采用AT89C51的P1口和P2口作为2位单个数码管的显示驱动。
其电路图如图4.4所示。
通过图4.2所示的AT89C51的内部变成发送数据。
图4.4显示电路图
其中两个数码管是共阴的。
R3和R4是用来保护数码管,以免烧坏数码管。
将图4.3和图4.4连接起来,使之实现:
按下启动键S1,电机旋转,按一下加1键S2,速度增加1转/分,按一下减1键S3,速度降低1转/分。
本设计设置了速度范围,其速度最低和最高分别为:
9转/分,75转/分,按下停止键S4,电机停转。
速度值在数码管上显示出来。
综合以上设计的控制电路方案,总设计方案框图如4.5所示。
图4.5步进电机控制电路设计框图
5步进电机调速系统的软件设计
5.1软件设计思路
控制系统分2个功能模块,分别是转速设置、数码管显示速度。
5.1.1转速设置
根据赋给计数器的计数初值,我们可以计算出步进电机各相脉宽信号的频率和电机转速,也可以反过来根据对电机转速要求,计算并调整计算初值。
本设计中采用了12Mhz的晶振,一个机器周期是1us。
其计算方法:
(5.1)
上式计算出了一个机器周期。
分子上的12是12个节拍,分母是晶振频率。
所以单片机内部时钟频率为f=106hz,设计数初值为n,要求转速为15转/分(0.25转/秒),对四相步进电机而言即为5步/秒,则有:
(5.2)
(5.3)
反过来,当计数器初值确定时,决定了电机的转速,如计数初值为0时,有电机转速为3步每秒(本设计中最慢速度);
当计数初值为40000时,电机转速为1.25步每秒(本设计中最快速度)。
具体设置初值及转速见表5.2。
表5.2转速设置表
步速
转速(转/秒)
计数初值
0.15
333333
5
0.25
200000
15
0.75
66667
25
1.25
40000
5.1.2数码管显示
因为本设计中采用的数码管是共阴的,所以当AT89C51的对应管脚发送的是高电平信号,数码管中对应的LED就亮起来。
本设计中的相应速度档次不涉及小数点,故数码管的dp位无论在何时均为低电平。
数码管的各个数字显示二进制代码如表5.3所示:
表5.3数码管的显示原理
数字
要亮的LED
相应P0/P1输出的二进制及16进制
abcdef
11111100、FCH
bc
01100000、60H
abdeg
11011010、DAH
abcdg
11110010、F2H
4
bcfg
01100110、66H
acdfg
10110110、B6H
6
acdefg
10111110、BEH
7
abc
11100000、E0H
8
abcdefg
11111110、FEH
9
abcdfg
11110110、F6H
只要将当前的转速在对应的时刻送到P0及P1即可,其中P1存储的是个位的数字,而P0存储十位的数字。
5.2程序流程图及其汇编程序
5.2.1程序流程图
根据上述的设计思路,结合51单片机的设计原则,可以得出如图4.6所示的程序流程图。
图5.6程序流程图
5.2.2汇编程序及注释
START
bit
01H
;
起动及停止标志
MinSpd
EQU9
起始转动速度
MaxSpd
EQU75
最高转动速度
Speed
DATA23H
流动速度计数
ORG0000H
LJMPDJSD
ORG0010H
LJMPMAIN
ORG0030H
MAIN:
MOV
SPEED,#MinSpd
起始转动速度送入计数器
CLR
StartEnd
停转状态
MOVTMOD,#00000001B
SETBEA
SETBET1
LOOP:
ACALL
KEY
键盘程序
JNB
P0,m_NEXT1
无键继续
KEYPROC
否则调用键盘处理程序
m_NEXT1:
MOVA,Speed
MOVB,#10
DIVAB
CMPA,#0;
若寄存器A中存储的是0,跳转至DISPS0,P0置FCH
JEDISPS0
CMPA,#1
JEDISPS1
CMPA,#2
JEDISPS2
CMPA,#3
JEDISPS3
CMPA,#4
JEDISPS4
CMPA,#5
JEDISPS5
CMPA,#6
JEDISPS6
CMPA,#7
JEDISPS7
CMPA,#8
JEDISPS8
CMPA,#9
JEDISPS9
DISPS0:
DISPS0~DISP9,让数码管显示0~9的特定数
MOVP0,#0FCH
JMPNext
DISPS1:
MOVP0,#060H
DISPS2:
MOVP0,#0DAH
DISPS3:
MOVP0,#0F2H
DISPS4:
MOVP0,#066H
DISPS5:
MOVP0,#0B6H
DISPS6:
MOVP0,#0BEH
DISPS7:
MOVP0,#0E0H
DISPS8:
MOVP0,#0FEH
DISPS9:
MOVP0,#0F6H
CMPB,#0;
若寄存器B中存储的是0,跳转至DISPS0,P1置FCH
JEDISPG0
CMPB,#1
JEDISPG1
CMPB,#2
JEDISPG2
CMPB,#3
JEDISPG3
CMPB,#4
JEDISPG4
CMPB,#5
JEDISPG5
CMPB,#6
JEDISPG6
CMPB,#7
JEDISPG7
CMPB,#8
JEDISPG8
CMPB,#9
JEDISPG9
DISPG0:
MOVP1,#0FCH
DISPG1:
MOVP1,#060H
DISPG2:
MOVP1,#0DAH
DISPG3:
MOVP1,#0F2H
DISPG4:
MOVP1,#066H
DISPG5:
MOVP1,#0B6H
DISPG6:
MOVP1,#0BEH
DISPG7:
MOVP1,#0E0H
DISPG8:
MOVP1,#0FEH
DISPG9:
MOVP1,#0F6H
Next:
JBSTART,m_Next2
CLRTR1;
关闭电机
JMPLOOP
ORLP2,#11110000B
m_Next2:
SETBTR1;
启动电机
AJMP
LOOP
主程序结束
KEYPROC:
MOV
A,B
获取键值
JB
ACC.0,StartStop
分析键的代码,某位被按下,则该位为1
ACC.3,KeySty
ACC.1,UpSpd
ACC.2,DowSpd
KEY_RET
StartStop:
SETBStartEnd
启动
KeySty:
CLRStartEnd;
停止
UpSpd:
INC
SPEED
A,SPEED
CJNE
A,#MaxSpd,K1;
到了最多的次数?
DEC
SPEED;
是则减去1,保证下次仍为该值
K1:
DowSpd:
DEC
A,#MAXSPD,KEY_RET
不等(未到最大值),返回
MOVSPEED,#MinSpd;
KEY_RET:
RET
KEY:
MOVA,P2
MOVB,A
RET
DjZS:
定时器T1用于电机转速控制
PUSHACC
PUSHPSW
SUBBA,#MinSpd;
减基准数
MOVDPTR,#DjH
MOVCA,@A+DPTR
MOVTH1,A
SUBBA,#MinSpd
MOVDPTR,#DjL
MOVTL1,A
MOVA,DjCount
CPLA
ORLP2,A
JNBACC.7,d_Next1
JMPd_Next2
d_Next1:
MOVDjCount,#11110111B
d_Next2:
RLA
MOVDjCount,A;
回存
ANLP2,A
POPPSW
POPACC
RETI
DjH:
DBD8,DA,DB,DD,DE,DF,E0,…
DjL:
DBF0,71,D5,1F,54,73,80,…
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 根据 下述 资料 完成 硬件 仿真 实现