计算机硬件课程设计样本1.docx
- 文档编号:7947975
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:16
- 大小:176.83KB
计算机硬件课程设计样本1.docx
《计算机硬件课程设计样本1.docx》由会员分享,可在线阅读,更多相关《计算机硬件课程设计样本1.docx(16页珍藏版)》请在冰豆网上搜索。
计算机硬件课程设计样本1
《微机原理及其应用》
课程设计报告
姓名:
王毅
学号:
040220337
同组实验者:
李问
指导教师:
周芳
日期:
2005.6
步进电机控制系统设计
一、实验目的
1、利用PC机和实验箱设计并实现给定步进电机的控制。
2、进一步掌握微机硬件和软件综合设计方法。
二、实验内容
1、基本要求
(1)控制步进电机转动,要求转速1步/秒。
(2)基于实验箱,设计并实现接口和驱动电路。
(3)用汇编语言编制程序。
2、提高要求
(1)改善步进电机的控制性能,控制步进电机转/停;正转/反转;改变转速(至少3档);单步。
(2)改善人机接口。
三、总体设计
1、8253定时控制步进速度。
2、8255输出控制脉冲,再经75452驱动电机。
3、系统运行时,首先显示主菜单,选择子菜单(设置参数)或控制工作,或返回DOS。
四、硬件设计
因采用了PC机和PC总线接口应用平台,硬件电路相对简单,除利用了PC机本身资源外(如中断资源),还利用了平台上的8253计数/定时器、8255并行接口单元,再加上外围驱动电路,便构成可步进电机控制电路,硬件原理图如图1:
图中75452元件是正与非驱动器,OC门输出,所以加上拉电阻;8253的作用是输出定时信号向CPU申请中断要求输出电机走步的控制信号。
五、软件设计
本设计通过软件编程使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
375
18.75
F8
125
(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
DB"2.SETUPDIRECTION",0DH,0AH
DB"3.ROTATINGWITHFIXEDSTEP",0DH,0AH
DB"4.CONTINUALROTATING",0DH,0AH
DB"5.EXIT",0DH,0AH
DB"*******************PLEASEINPUTCHOICE:
$"
MENU1DB0DH,0AH,0DH,0AH
DB"F1.ROTATINGSPEEDIS0.05R/S",0DH,0AH
DB"F2.ROTATINGSPEEDIS0.15R/S",0DH,0AH
DB"F3.ROTATINGSPEEDIS0.25R/S",0DH,0AH
DB"F4.ROTATINGSPEEDIS0.75R/S",0DH,0AH
DB"F5.ROTATINGSPEEDIS1.25R/S",0DH,0AH
DB"F6.ROTATINGSPEEDIS3.75R/S",0DH,0AH
DB"F7.ROTATINGSPEEDIS6.25R/S",0DH,0AH
DB"F8.ROTATINGSPEEDIS18.75R/S",0DH,0AH
DB"INTERESCTOEXIT",0DH,0AH
DB"*******************PLEASEINPUTCHOICE:
$"
MENU2DB0DH,0AH,0DH,0AH
DB"1.CLOCKWISE",0DH,0AH
DB"2.ANTI_CLOCKWISE",0DH,0AH
DB"INTERESCTOEXIT",0DH,0AH
DB"*******************PLEASEINPUTCHOICE:
$"
MENU3DB0DH,0AH,0DH,0AH
DB"PLEASEINPUTTHENUMBEROFSTEP:
$"
MENU4DB0DH,0AH,0DH,0AH
DB"CONTINUALROTATING!
",0DH,0AH
DB"INTERESCTOEXIT",0DH,0AH,'$'
EROMSDB0DH,0AH
DB"YOURCHOISEISINVALID!
PLEASECHOOSEAGAIN",'$'
F0DB0DH,0AH
DB"ROTATINGSPEEDIS:
$"
F1DB"0.05R/S",0DH,0AH,'$'
F2DB"0.15R/S",0DH,0AH,'$'
F3DB"0.25R/S",0DH,0AH,'$'
F4DB"0.75R/S",0DH,0AH,'$'
F5DB"1.25R/S",0DH,0AH,'$'
F6DB"3.75R/S",0DH,0AH,'$'
F7DB"6.25R/S",0DH,0AH,'$'
F8DB"18.75R/S",0DH,0AH,'$'
SPEDMDWF1,F2,F3,F4,F5,F6,F7,F8
CLCMSDB0DH,0AH
DB"DIRECTIONISCLOCKWISE",0DH,0AH,'$'
ANTMSDB0DH,0AH
DB"DIRECTIONISANTI_CLOCKWISE",0DH,0AH,'$'
QUITMSDB"ENTERESCTOEXIT",0DH,0AH,'$'
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
MOVAL,0DH
INT21H
POPDS
INAL,21H
MOVINTIMR,AL
ANDAL,11011111B
OUT21H,AL
MOVDX,CLOCKC
MOVAL,00110110B
OUTDX,AL
MOVDX,P55C
MOVAL,10000000B
OUTDX,AL
STI
OMANU:
MOVDX,OFFSETMAMES
MOVAH,09H
INT21H
MOVDX,OFFSETMAMU
INT21H
MOVAH,01H
INT21H
CMPAL,'1'
JBERROR
CMPAL,'5'
JAERROR
JEEXIT
ANDAL,0FH
DECAL
MOVAH,00H
SHLAX,1
MOVBX,OFFSETMCHOC
ADDBX,AX
CALL[BX]
JMPOMANU
ERROR:
MOVDX,OFFSETEROMS
MOVAH,09H
INT21H
JMPOMANU
EXIT:
MOVAL,INTIMR
OUT21H,AL
PUSHDS
MOVDX,INTOFF
MOVAX,INTSEG
MOVDS,AX
MOVAH,25H
MOVAL,0DH
INT21H
POPDS
MOVAH,4CH
INT21H
STSEDPROCNEAR
PUSHAX
PUSHDX
PUSHBX
OMENU1:
MOVDX,OFFSETMENU1
MOVAH,09H
INT21H
MOVAH,00H
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
MOVAH,09H
INT21H
MOVDX,SPEDM[BX]
INT21H
JMPEXIT1
ERROR1:
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH
INT21H
MOVDX,OFFSETEROMS
MOVAH,09H
INT21H
JMPOMENU1
EXIT1:
POPBX
POPDX
POPAX
RET
STSEDENDP
STDIRPROCNEAR
PUSHDX
PUSHAX
OMENU2:
MOVDX,OFFSETMENU2
MOVAH,09H
INT21H
MOVAH,01H
INT21H
CMPAL,1BH
JEEXIT2
CMPAL,'1'
JECLFLG
CMPAL,'2'
JEANTFLG
MOVDX,OFFSETEROMS
MOVAH,09H
INT21H
JMPOMENU2
CLFLG:
MOVFLAG1,0
MOVDX,OFFSETCLCMS
MOVAH,09H
INT21H
JMPEXIT2
ANTFLG:
MOVFLAG1,1
MOVDX,OFFSETANTMS
MOVAH,02H
INT21H
JMPEXIT2
EXIT2:
POPAX
POPDX
RET
STDIRENDP
ROTFXPROCNEAR
PUSHDX
PUSHCX
PUSHBX
PUSHAX
PUSHSI
OMENU3:
MOVDX,OFFSETMENU3
MOVAH,09H
INT21H
MOVDX,OFFSETBUFFER
MOVAH,0AH
INT21H
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
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDX,PA55
MOVAL,0FFH
OUTDX,AL
STI
AGAIN1:
CMPCX,00H
JEEXIT3
MOVAH,06H
MOVDL,0FFH
INT21H
CMPAL,1BH
JEEXIT3
CMPFLAG0,0
JEAGAIN1
DECCX
MOVFLAG0,0
JMPAGAIN1
ERROR3:
MOVDX,OFFSETEROMS
MOVAH,09H
INT21H
JMPOMENU3
EXIT3:
CLI
MOVDX,PA55
MOVAL,00H
OUTDX,AL
POPSI
POPAX
POPBX
POPCX
POPDX
RET
ROTFXENDP
CTROTPROCNEAR
PUSHDX
PUSHAX
MOVDX,OFFSETMENU4
MOVAH,09H
INT21H
MOVDX,CLOCK0
MOVAX,SPEED
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDX,PA55
MOVAL,0FFH
OUTDX,AL
STI
AGAIN2:
MOVAH,06H
MOVDL,0FFH
INT21H
CMPAL,1BH
JNEAGAIN2
CLI
MOVDX,PA55
MOVAL,00H
OUTDX,AL
POPAX
POPDX
RET
CTROTENDP
INTPROCPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDS
MOVAX,DSEG
MOVDS,AX
STI
MOVDX,PC55
MOVAL,TURN
OUTDX,AL
CMPFLAG1,0
JETNCLC
ROLAL,1
JMPEXITI
TNCLC:
RORAL,1
EXITI:
MOVTURN,AL
MOVFLAG0,1
CLI
MOVAL,20H
OUT20H,AL
POPDS
POPDX
POPCX
POPBX
POPAX
IRET
INTPROCENDP
CSEGENDS
ENDMAIN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机硬件 课程设计 样本