微机原理单片机课程设计报告_微机原理课程设计报告
微机原理单片机课程设计报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“微机原理课程设计报告”。
一、课程设计的性质和目的通过课程设计,进行硬件设计和程序设计的方法和技能训练,巩固在课堂上学到的有关软件程序设计和硬件电路设计的基本知识和基本方法,通过具体课题的训练,进一步熟悉汇编语言的结构和使用方法,掌握软硬结合的控制程序设计,达到能独立阅读、查阅资料、编制和调试完善特定功能的目的。
二、课程设计的要求
1、遵循硬件设计模块化。
2、要求程序设计结构化。
3、程序简明易懂,多运用输入输出提示,有出错信息及必要的注释。
4、要求程序结构合理,语句使用得当。
5、适当追求编程技巧和程序运行效率。
三、主要仪器设备及软件
PC机、Keil软件、Proteus绘图软件及仿真等。
四、课程设计题目及要求
题目:步进电机的单步正转反转以及加速正反转
要求:通过四个按键分别控制步进电机的单步正向.单步反向转动以及快速正向转动和快速反向转动。
五、课题分析及设计思路
硬软件设计思路:
本步进电机控制系统通过四个键盘来控制步进电机的单步正转、单步反转、快速正转和快速反转,步进电机旋转的角度取决于键盘接通时间长短,接通时间越长,旋转角度越大,其功能表如表1.2.1。
表1.2.1键盘功能表
总体方案设计:在该步进电机控制系统中,需要接收键盘信息并识别,然后将数据传送给步进电机使步进电机旋转,采用了一片74LS138,1硬件设计框图 ○
2硬件设计电路图:
○
3XXXX流程图如下: ○
六、程序主要代码与分析:DATASEGMENT;数据段
SRDB01H,03H,02H,06H,04H,0CH,08H,09H;电机激磁信号
X1DB0;控制电机正转X2DB7;控制电机反转DATAENDS
CODESSEGMENT;代码段
ASSUMECS:CODES,DS:DATA
START:MOVAX,DATA;初始化数据段MOVDS,AX
LEASI,SR;SI指向SR首地址
MOVBH,0;清除BX高四位,用于指向电机激磁信号MOVSI,0;SI清零S1:INAL,40H;读按键状态
CMPAL,0FH;检测按键是否被按下
JES1;无按键按下,继续读按键状态MOVCX,64H;LOOP$
INAL,40H;CMPAL,0FH;JES1;CALLS2;JMPS1;
S2PROC
TESTAL,01H;JES3;TESTAL,02H;JES
4TESTAL,04H;JES
5TESTAL,08H;JES6
RET;S2ENDP
S3PROC;PUSHAX;PUSHBX
S7:INAL,40H;TESTAL,01H;JES7;MOVBL,X1;BLMOVAL,[BX+SI];BX+SIOUT48H,AL;CMPX1,07;JES8;INCX1;X1JMPS9;NOP;S8:MOVX1,00H;X1有按键按下,延时去抖动 读按键状态
检测按键是否被按下
无按键按下,继续读按键状态 判断几号按键按下,处理相应状态 继续读取按键状态 测试是否是一号按键按下 若一号键按下则跳转s3 测试是否是二号按键按下 测试是否是三号按键按下 测试是否是四号按键按下 子程序返回 单步正转子程序 寄存器入栈 读按键状态 仍被按下 则等待松手
等于X1指向的激磁单元
指向的地址单元内容送给AL 送电机转动
判断X1是否加到7 是则清零X
1指向下一个激磁信号 跳转到程序返回 延时一个机器周期
从新指向第一个单元
POPAXRETS3ENDP
S4PROC;单步反转子程序PUSHAXPUSHBXS10:INAL,40HTESTAL,02HJES10MOVBL,X
2MOVAL,[BX+SI]OUT48H,ALCMPX2,00HJES11DECX2JMPS12NOP
S11:MOVX2,07S12:POPBXPOPAXRETS4ENDP
S5PROC;PUSHAX;PUSHBX
MOVBL,X1;BLMOVAL,[BX+SI];BX+SINOP
OUT48H,AL;CMPX1,07;JES13;INCX1;X1JMPS14;NOP
S13:MOVX1,00;X1S14:POPBXPOPAX
RET;S5ENDP
S6PROC;快速正转子程序 寄存器入栈 等于X1指向的激磁单元
指向的地址单元内容送给AL 送电机转动
判断X1是否加到7 是则清零X1
指向下一个激磁信号 跳转到程序返回 从新指向第一个单元 子程序返回 快速反转子程序
PUSHBXMOVBL,X2
MOVAL,[BX+SI]OUT48H,ALNOP
CMPX2,00HJES15DECX2JMPS16NOP
S15:MOVX2,07HS16:POPBXPOPAXRETS6ENDP
CODESENDS
ENDSTART
七、实验结果截图
八、心得体会
这次试验之前是用C语言编写的,按下按键后,它实现的效果是单步正向和单步反向
转动°,而不是正向或反向转动,因此用C语言编写失败,改用微机语言编写。编程时,初始化代码段,设置正传和反转,接着判断按键的状态,进行循环,按键按下后,还要进行延时去抖动。当然,编程时,流程图是不可少的,按照流程图来编,思路清晰,逻辑性强,出错率减少不少。个人觉得,今后应加强练习,来提高编程能力。