根据下述资料完成对硬件仿真的实现Word文件下载.docx

上传人:b****6 文档编号:19468669 上传时间:2023-01-06 格式:DOCX 页数:14 大小:140.87KB
下载 相关 举报
根据下述资料完成对硬件仿真的实现Word文件下载.docx_第1页
第1页 / 共14页
根据下述资料完成对硬件仿真的实现Word文件下载.docx_第2页
第2页 / 共14页
根据下述资料完成对硬件仿真的实现Word文件下载.docx_第3页
第3页 / 共14页
根据下述资料完成对硬件仿真的实现Word文件下载.docx_第4页
第4页 / 共14页
根据下述资料完成对硬件仿真的实现Word文件下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

根据下述资料完成对硬件仿真的实现Word文件下载.docx

《根据下述资料完成对硬件仿真的实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《根据下述资料完成对硬件仿真的实现Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。

根据下述资料完成对硬件仿真的实现Word文件下载.docx

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,…

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

当前位置:首页 > 高中教育 > 数学

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

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