计算机硬件课程设计样本1Word格式.docx

上传人:b****6 文档编号:21083583 上传时间:2023-01-27 格式:DOCX 页数:16 大小:176.83KB
下载 相关 举报
计算机硬件课程设计样本1Word格式.docx_第1页
第1页 / 共16页
计算机硬件课程设计样本1Word格式.docx_第2页
第2页 / 共16页
计算机硬件课程设计样本1Word格式.docx_第3页
第3页 / 共16页
计算机硬件课程设计样本1Word格式.docx_第4页
第4页 / 共16页
计算机硬件课程设计样本1Word格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

计算机硬件课程设计样本1Word格式.docx

《计算机硬件课程设计样本1Word格式.docx》由会员分享,可在线阅读,更多相关《计算机硬件课程设计样本1Word格式.docx(16页珍藏版)》请在冰豆网上搜索。

计算机硬件课程设计样本1Word格式.docx

本设计通过软件编程使8253输出定时信号申请中断,CPU发出命令由8255的下C口输出脉宽信号来控制步进电机的走步。

电机的转动和停止则是通过8255的A0端子输出高低电平来继续或暂停8253的计数从而控制中断申请来实现的。

8253的定时时间决定了电机转动的快慢。

相对简单的硬件电路,使软件设计成为本设计课题的中心内容。

1、设计思路

控制系统分五个功能模块,分别是转速设置、转向设置、固定步数转动、连续转动、退出系统,在前四个功能块中都设置了ESC键来取消或暂停执行当前操作。

程序中同时提供五个操作界面,一个主菜单和四个子菜单界面,进行可视控制。

(1)转速设置

根据赋给计数器的计数初值,我们可以计算出步进电机各相脉宽信号的频率和电机转速,也可以反过来根据对电机转速要求,计算并调整计算初值。

这里采用的是8253的0号计数器和方波产生方式,输入时钟为f=46875hz,设计数初值为n,要求转速为0.25转/秒,对四相步进电机而言即为5步/秒,则有:

f/n=5

n=f/5=46875/5=9375

反过来,当计数器初值确定时,决定了电机的转速,如计数初值为0时,有电机转速为1步每秒(本设计中最慢速度);

当计数初值为125时,电机转速为375步每秒(本设计中最快速度)。

具体设置初值及转速见表2。

表2

步速

转速

按键

计数初值

1

0.05

F1

46875

3

0.15

F2

15625

5

0.25

F3

9375

15

0.75

F4

3125

25

1.25

F5

1875

75

3.75

F6

625

125

6.25

F7

375

18.75

F8

(2)转向设置

在内存单元中设置一方向标志FLAG1,假设FLAG1为0时为顺时针转向,则当设置FLAG1不为0时即可使电机转逆时针转动。

判断操作在中断子程序中进行。

(3)连续转动设置

在此功能模块中,通过让8255的A0口输出高电平到8253的GATE0使其0号计数器继续工作(平常时A0口为低电平使8253的0号计数器暂停计数),并开放中断进入循环等待中断状态,在等待状态中若有键盘的‘ESC’键按下,则认为暂停要求而关闭中断和暂停8253计数回到主菜单。

需要继续原转向原速度运行,再选择此功能模块即可。

(4)固定步数转动设置

通过键盘输入0到999的十进制值来设定转动步数。

判断已转步数即中断次数是这样实现的,设置一内存单元FLAG0,中断时在中断子程序中求反,而在循环等待中断的程序中判断其有无变化,无变化继续循环,有变化则使计数寄存器CX减1后继续循环,当CX=0时退出等待中断状态,并关中断和暂停8253计数。

在这个等待程序中也判断键盘有无ESC键按下,若有则认为暂停要求而退出。

(6)中断子程序

在中断子程序中,将值为11001100B的内存单元循环左移或右移一位,通过8255的下C口输出低四位,控制步进电机的相序变化,从而使电机连续转动。

左移或右移将使电机顺时针或逆时针转动,它由标志FLAG1来决定。

(7)菜单界面设置

利用DOS下的BIOS功能调用,设计出简单而易于操作的界面,详细设计特点请参考程序清单。

2、程序流程图

(1)主程序框图如图2(见下页),除中断子程序外,将所有的框图集中到一起。

(2)中断服务子程序框图如图3。

图3中断服务子程序框图

六、心得体会

本次课设,是结合了硬件设计和软件设计以及调试,是一个综合性比较强的课程设计。

通过此次课程设计,我在一些方面有了感触:

1、硬件方面,应认真理解硬件电路的组成及其功能,才能为下一步的编程打下基础。

2、程序方面,一定要联系设计好的硬件来进行编程。

我在程序方面的总结是:

(1)写程序注释写得越详细越好、不要怕麻烦。

写上使用方法、结果起始地址是存高字节还是低等问题,这有助于后来的调试和改错。

(2)画流程图有助于写程序以及日后查错。

(3)随时备份,建议版本形式备份,并写清楚该版本实现了什么,改进了什么,还没有实现什么等。

3、调试方面与错误排除:

不能急于求成,但不要放弃,要保持清醒的头脑。

七、源程序

DSEGSEGMENT

CLOCK0EQU290H

CLOCK1EQU291H

CLOCK2EQU292H

CLOCKCEQU293H

PA55EQU280H

PB55EQU281H

PC55EQU282H

P55CEQU283H

INTNUMDB0DH

MAMESDB0DH,0AH

DB"

*************WELCOMETOCONTROLSYSTEM*************"

0DH,0AH,'

$'

MAMUDB"

1.SETUPSPEED"

0DH,0AH

2.SETUPDIRECTION"

3.ROTATINGWITHFIXEDSTEP"

4.CONTINUALROTATING"

5.EXIT"

*******************PLEASEINPUTCHOICE:

$"

MENU1DB0DH,0AH,0DH,0AH

F1.ROTATINGSPEEDIS0.05R/S"

F2.ROTATINGSPEEDIS0.15R/S"

F3.ROTATINGSPEEDIS0.25R/S"

F4.ROTATINGSPEEDIS0.75R/S"

F5.ROTATINGSPEEDIS1.25R/S"

F6.ROTATINGSPEEDIS3.75R/S"

F7.ROTATINGSPEEDIS6.25R/S"

F8.ROTATINGSPEEDIS18.75R/S"

INTERESCTOEXIT"

MENU2DB0DH,0AH,0DH,0AH

1.CLOCKWISE"

2.ANTI_CLOCKWISE"

MENU3DB0DH,0AH,0DH,0AH

PLEASEINPUTTHENUMBEROFSTEP:

MENU4DB0DH,0AH,0DH,0AH

CONTINUALROTATING!

"

EROMSDB0DH,0AH

YOURCHOISEISINVALID!

PLEASECHOOSEAGAIN"

'

F0DB0DH,0AH

ROTATINGSPEEDIS:

F1DB"

0.05R/S"

F2DB"

0.15R/S"

F3DB"

0.25R/S"

F4DB"

0.75R/S"

F5DB"

1.25R/S"

F6DB"

3.75R/S"

F7DB"

6.25R/S"

F8DB"

18.75R/S"

SPEDMDWF1,F2,F3,F4,F5,F6,F7,F8

CLCMSDB0DH,0AH

DIRECTIONISCLOCKWISE"

ANTMSDB0DH,0AH

DIRECTIONISANTI_CLOCKWISE"

QUITMSDB"

ENTERESCTOEXIT"

INTSEGDW?

INTOFFDW?

MCHOCDWSTSED,STDIR,ROTFX,CTROT

SPEDNDW46875,15625,9375,3125,1875,625,375,125

SPEEDDW46875

FLAG1DB0

FLAG0DB?

BUFFERDB4

DB?

DB4DUP(?

CW10DW10

INTIMRDB?

TURNDB11001100B

DSEGENDS

STACKSEGMENTPARASTACK'

STACK'

DB100DUP(?

STACKENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG,SS:

STACK

MAIN:

MOVAX,DSEG

MOVDS,AX

MOVAH,35H

MOVAL,0DH

INT21H

MOVINTSEG,ES

MOVINTOFF,BX

PUSHDS

MOVAX,CS

MOVDS,AX

MOVDX,OFFSETINTPROC

MOVAH,25H

POPDS

INAL,21H

MOVINTIMR,AL

ANDAL,11011111B

OUT21H,AL

MOVDX,CLOCKC

MOVAL,00110110B

OUTDX,AL

MOVDX,P55C

MOVAL,10000000B

STI

OMANU:

MOVDX,OFFSETMAMES

MOVAH,09H

MOVDX,OFFSETMAMU

INT21H

MOVAH,01H

CMPAL,'

1'

JBERROR

5'

JAERROR

JEEXIT

ANDAL,0FH

DECAL

MOVAH,00H

SHLAX,1

MOVBX,OFFSETMCHOC

ADDBX,AX

CALL[BX]

JMPOMANU

ERROR:

MOVDX,OFFSETEROMS

EXIT:

MOVAL,INTIMR

OUT21H,AL

MOVDX,INTOFF

MOVAX,INTSEG

POPDS

MOVAH,4CH

STSEDPROCNEAR

PUSHAX

PUSHDX

PUSHBX

OMENU1:

MOVDX,OFFSETMENU1

INT16H

CMPAL,1BH

JZEXIT1

CMPAH,59

JBERROR1

CMPAH,66

JAERROR1

SUBAH,59

MOVBH,0

MOVBL,AH

SHLBL,1

MOVAX,SPEDN[BX]

MOVSPEED,AX

MOVDX,OFFSETF0

MOVDX,SPEDM[BX]

JMPEXIT1

ERROR1:

MOVDL,0AH

MOVAH,02H

MOVDL,0DH

JMPOMENU1

EXIT1:

POPBX

POPDX

POPAX

RET

STSEDENDP

STDIRPROCNEAR

PUSHAX

OMENU2:

MOVDX,OFFSETMENU2

JEEXIT2

JECLFLG

2'

JEANTFLG

JMPOMENU2

CLFLG:

MOVFLAG1,0

MOVDX,OFFSETCLCMS

JMPEXIT2

ANTFLG:

MOVFLAG1,1

MOVDX,OFFSETANTMS

JMPEXIT2

EXIT2:

STDIRENDP

ROTFXPROCNEAR

PUSHCX

PUSHSI

OMENU3:

MOVDX,OFFSETMENU3

MOVDX,OFFSETBUFFER

MOVAH,0AH

MOVCL,BUFFER[1]

CMPCL,3

JAERROR3

LEASI,BUFFER

ADDSI,2

MOVCH,00H

MOVAX,00H

NEXT:

MULCW10

MOVBL,[SI]

ANDBX,000FH

ADDAX,BX

INCSI

LOOPNEXT

MOVCX,AX

MOVFLAG0,0

MOVDX,CLOCK0

MOVAX,SPEED

MOVAL,AH

MOVDX,PA55

MOVAL,0FFH

AGAIN1:

CMPCX,00H

JEEXIT3

MOVAH,06H

MOVDL,0FFH

CMPFLAG0,0

JEAGAIN1

DECCX

JMPAGAIN1

ERROR3:

JMPOMENU3

EXIT3:

CLI

MOVAL,00H

POPSI

POPCX

ROTFXENDP

CTROTPROCNEAR

MOVDX,OFFSETMENU4

STI

AGAIN2:

JNEAGAIN2

CTROTENDP

INTPROCPROC

MOVDX,PC55

MOVAL,TURN

CMPFLAG1,0

JETNCLC

ROLAL,1

JMPEXITI

TNCLC:

RORAL,1

EXITI:

MOVTURN,AL

MOVFLAG0,1

MOVAL,20H

OUT20H,AL

IRET

INTPROCENDP

CSEGENDS

ENDMAIN

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

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

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