微机接口课程设计本地步进电机综合控制.doc

上传人:laozhun 文档编号:4145098 上传时间:2023-04-07 格式:DOC 页数:14 大小:63.50KB
返回 下载 相关 举报
微机接口课程设计本地步进电机综合控制.doc_第1页
第1页 / 共14页
微机接口课程设计本地步进电机综合控制.doc_第2页
第2页 / 共14页
微机接口课程设计本地步进电机综合控制.doc_第3页
第3页 / 共14页
微机接口课程设计本地步进电机综合控制.doc_第4页
第4页 / 共14页
微机接口课程设计本地步进电机综合控制.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《微机接口课程设计本地步进电机综合控制.doc》由会员分享,可在线阅读,更多相关《微机接口课程设计本地步进电机综合控制.doc(14页珍藏版)》请在三一办公上搜索。

1、 微机接口课程设计题目:本地步进电机综合控制姓 名:xx 班 级:xx 学 号: xx指导老师: xx完成日期:2012年1月4日一、 任务要求实现外接步进电机模块的“启动”、“正反转”功能,同时,电机的当前转速显示在数码管上。通过小键盘按键结束整个程序的运行,显示相应的标志。数码管和键盘的功能由74系列器件实现。转速显示格式: #转/分,表示顺时针每分钟#转 #转/分,表示逆时针每分钟#转自定义键 : 显示在数码管上,结束整个程序运行。二、 硬件架构(连线)1. 实验设置步进电机模块;8253A定时模块;8259A中断控制器;计数分频电路74LS393;74系列模块;4片8255A;小键盘和

2、数码管等2. 硬件连线74系列模块控制键盘输入;前两片8255A显示正反转停止及转速信息;第三片8255A显示步速信息;第四片8255A驱动步进电机;8253A产生步进电机驱动的定时信号;8259A接收并处理来自8253A的定时中断请求;具体连接如下试验仪中部的地址输出端CS-1CS-4分别连接到8255模块下方的CS-1CS-4;8253的片选CS连接地址输出端CS1(300H),8253的A0、A1分别连地址总线A2、A3,8253的GATE0连+5V,8253的CLK0连74LS393分频输出的47K输出端,8253的OUT0连接到8259的IRQ0;8259的片选CS-1连地址输出CS

3、6(3A0),8259的INT1连接总线输入INTR,8259的模块的INT-A连总线的INTA,8259的SP/1连+5V;75LS393的片选CS2连接地址输出CS4(360),片选CS1连接地址输出CS3(340)如按以上连线,则8255的A口、B口,C口和控制口的地址依次为200H、204H、208H和20CH;8253的T0、T1、T2及控制口的地址分别为300H、304H、308H和30CH;8259的基地址是3A8H,偶地址为3A0H。三、 流程图本程序主要包括以下几部分:1、主程序;2、输入子程序;3、延时子程序;4、中断服务程序。以下为流程图:主程序流程图将初值写入到8253

4、中去同时开启中断依据存储的各位数值,计算十进制数,并转化为写入8253里的初值存储在NUM中依次读入百位、十位、个位的值显示并存储写入初值100,并显示STOPN=1依次读入百位、十位、个位的值显示并存储主程序关中断初始化8255初始化8259,装载中断向量,清8259有关屏蔽位开始停止键装载DS,各变量赋初值,STOPN=-1反转键读取控制键的键值正转键关中断取反NY00H01H02H输入子程序流程图从列端口输出全零,读行端口NNYN3列全部扫面完毕?扫描下一列YY保护现场输入子程序延时去抖行端口低四位全为高电平?行端口低四位全为高电平?再次从列端口输出全零,读行端口从第零列开始逐列扫描读到

5、的值为全1恢复现场,返回键值存储在AL中根据行值和列值计算键值NY写中断结束字,中断返回STEP=0将数保存到CL中,向第三块8255C口写入黄颜色的信息将CL中的数在第三块两个数码管上显示结束中断,恢复现场比较CL中的内容是否大于等于99CL=99?保护现场中断服务程序FLAG=0?判断STEP里的值是正还是负将RNUM里的值右移移位并输出到第四块8255的A口,步数STEP加一将RNUM里的值左移移位并输出到第四块8255的A口,步数STEP减一正数?中断服务程序流程图先将数保存到CL中,在将CL中的数取反,向第三块8255C口写入红颜色的信息延时子程序流程图略四、 代码实现.486pPO

6、RT1EQU340H ;(cs1)数码管段码端口PORT2EQU360H ;(cs2)数码管位选端口,键盘矩阵的行列端口DATA SEGMENT AT 0 USE16 ORG 1000H FLAG DB ? BAIWEI DB ? SHIWEI DB ? GEWEI DB ? NUM DW ? STOPN DB ?DATA ENDSCODESEGMENT USE16ASSUMEDS:DATA,CS:CODEORG1500H BEG:JMPSTARTSEVENCOD DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H

7、,86H,8EH KEYCOD DB 0EEH,0DEH,0BEH,0EDH,0DDH,0BDH ;前两行按键的键码 DB 0EBH,0DBH,0BBH,0E7H,0D7H,0B7H ;在此处添加后两行键的键码KEYVAL DB 0,1,2,3,4,5,6,7,8,9,0AH,0BH ;12个按键的键值TEN DB 10RNUM DB 10001000BSTEP DB 0START:CLI MOVEAX,60000000HMOVCR0,EAX;装载DSMOVAX,DATAMOVDS,AX;初始化8255MOV AL,80HMOV DX,20CHOUT DX,ALMOV AL,80HMOV DX

8、,20DHOUT DX,ALMOV AL,80HMOV DX,20EHOUT DX,AL;AMOV AL,0FFHMOV DX,200HOUT DX,ALMOV AL,0FFHMOV DX,201HOUT DX,AL MOV AL,0FFHMOV DX,202HOUT DX,AL;BMOV AL,0FFHMOV DX,204HOUT DX,ALMOV AL,0FFHMOV DX,205HOUT DX,ALMOV AL,0FFHMOV DX,206HOUT DX,AL;最右边8255 MOV AL,80H MOV DX,20FH OUT DX,AL;初始化8259;初始化8259 ICW1,IC

9、W2MOV AL,00010011BMOV DX,3A0HOUT DX,ALMOV AL,70HMOV DX,3A8HOUT DX,AL MOV AL,00000001b;ICW4非自动中断 OUT DX,AL;中断屏蔽字MOV AL,11111110BMOV DX,3A8HOUT DX,AL;设置中断向量MOV AX,0MOV ES,AXMOV BX,70H*4MOV AX,OFFSET RUNMOV ES:BX,AXMOV AX,SEG RUNMOV ES:BX+2,AX MOV STOPN,-1 AG1: LEA BX,SEVENCODCALL INPUTCMP AL,00HJZ ST1

10、CMP AL,01HJZ ZZCMP AL,02HJZ FZJMP AG1 ;开始停止键ST1: NEG STOPN CMP STOPN,1;判断是否需要启动设备 JNZ BQIDONG JMP S1BQIDONG:MOV DX,200H MOV AL,92H OUT DX,AL CLI JMP AG1 ;设置默认值100S1: MOV DX,200H MOV AL,0FFH OUT DX,AL MOV AL,1 MOV BAIWEI,AL XLAT MOV DX,204H OUT DX,AL MOV AL,0 MOV SHIWEI,AL XLAT MOV DX,201H OUT DX,AL

11、MOV AL,0 MOV GEWEI,AL XLAT MOV DX,205H OUT DX,AL MOV FLAG,0 JMP EXIT ;正转ZZ: MOV DX,200H MOV AL,0FFH OUT DX,ALA1: CALL INPUT CMP AL,03H JB A1 SUB AL,3 MOV BAIWEI,AL XLAT MOV DX,204H OUT DX,AL CALL INPUT SUB AL,3 MOV SHIWEI,AL XLAT MOV DX,201H OUT DX,AL CALL INPUT SUB AL,3 MOV GEWEI,AL XLAT MOV DX,205

12、H OUT DX,AL MOV FLAG,0;设置正反转标志位 MOV STOPN,1 JMP EXIT ;反转FZ: MOV DX,200H;反转 MOV AL,0BFH OUT DX,ALA2: CALL INPUT CMP AL,03H JB A2 SUB AL,3 MOV BAIWEI,AL XLAT MOV DX,204H OUT DX,AL SUB AL,3 MOV SHIWEI,AL XLAT MOV DX,201H OUT DX,AL CALL INPUT SUB AL,3 MOV GEWEI,AL XLAT MOV DX,205H OUT DX,AL MOV FLAG,1 M

13、OV STOPN,1 JMP EXIT ;计算数值 EXIT: MOV AL,BAIWEI MUL TEN MOV BL,SHIWEI ADD AL,BL MUL TEN MOV BL,GEWEI ADD AL,BL MOV AH,0 MOV NUM,AX;输入的值放在num中 MOV DX,0 MOV AX,58750 DIV NUM MOV NUM,AX;转换为计数初值 MOV AL,00110110B;8254方式3BCD码MOV DX,30CHOUT DX,ALMOV DX,300HMOV AX,NUMOUT DX,ALMOV AL,AHOUT DX,ALSTIJMP AG1;通过行扫

14、描法,将键值存储到al中 INPUT PROC PUSH DX PUSH BX PUSH SI PUSH DI WT: MOVAL,00H ;00H为不显示任何信息时对应的七段代码 MOVDX,PORT1 OUTDX,AL MOVAL,00000000BMOVDX,PORT2 OUTDX,AL ;使数码管全灭,并使3根列线输出全0NOPNOP MOV DX,PORT2IN AL,DX ;(粗扫描)若无键按下转至WT执行,否则顺序执行 AND AL,0FHCMP AL,0FH JZ WT CALL DELAY MOVDX,PORT2 ;再次确认是否有键按下INAL,DXANDAL,0FH CMP

15、 AL,0FHJZWT MOVCX,3 ;(细扫描)开始对每一列进行逐列扫描 MOVBL,0FEHNEXT: MOV AL,BL;在横线上添加一条语句MOVDX,PORT2OUTDX,ALNOPNOPINAL,DX AND AL,0FH CMP AL,0FH JNZ KEY ROL BL,1 ;在横线上添加一条语句 LOOP NEXT JMP WT ;按键过早释放,可能导致无法识别KEY: SHL BL,4 ;8088/8086指令集中该指令格式错误! OR AL,BL ;字节键码信息存入AL,高4位为列信息低4位为行信息 LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,

16、12NEXT1: CMP AL,SI JZ FIND INC SI INC DI LOOP NEXT1 JMP WT ;本程序不支持多个按键同时按下FIND: MOV AL,DI ;AL中内容为所按键的键面值 PUSH AX MOV AL,00000000BMOVDX,PORT2 OUTDX,AL ;使数码管全灭,并使3根列线输出全0NOPNOP NEXT2: MOV DX,PORT2IN AL,DX ;(粗扫描)若无键按下转至WT执行,否则顺序执行 AND AL,0FHCMP AL,0FHJNZ NEXT2POP AXCALL DELAY POP DI POP SI POP BX POP D

17、X RET INPUT ENDP ;中断服务程序 RUN PROC FAR PUSH AX PUSH DX CMP FLAG,0 JZ ZHZ ROL RNUM,1 MOV AL,RNUM MOV DX,203H OUT DX,AL SUB STEP,1 JMP END1 ZHZ: ROR RNUM,1 MOV AL,RNUM MOV DX,203H OUT DX,AL ADD STEP,1END1: MOV CL,STEP CMP STEP,0 JGE W1 NEG CL MOV AL,05H MOV DX,20AH OUT DX,AL JMP W2W1: MOV AL,0AH MOV DX

18、,20AH OUT DX,ALW2: CMP CL,99 JB END2 MOV STEP,0 END2: MOV AL,CL MOV AH,00H DIV TEN XLAT MOV DX,202H OUT DX,AL XCHG AH,AL XLAT MOV DX,206H OUT DX,AL MOV AL,20H MOV DX,3A0H OUT DX,AL POP DX POP AX IRET RUN ENDP DELAY PROC MOV CX,2000 LOOP $ RET DELAY ENDP CODE ENDS END BEG五、 运行调试在按要求连接完线后,运行程序。键盘上最上面一

19、排三个键为控制键,依次代表启动停止键,正转,反转。从第二行开始横着依次代表数字08。在测试的时候,按下起止键在开始和停止两个状态切换;按下正转或反转后跟上三个数字键,该数字即为你需要运行的速度。正常运行前两块数码管显示速度信息,第三块显示步数信息,电机正常转动。六、 总结这次课程设计完成的是一个步进电机的旋转实验,主要涉及了数码管显示,按键识别,步进电机控制等几个部分,是对我们平时实验的一个综合。在实验过程中我采用了分解的方法将实验分为了几个部分,逐一实现。按键部分主要是在按键识别与现实的基础上进行改写,通过行扫描法来实现的。通过对程序的改写我也温习了一下以前学习的知识,熟悉了扫描方法的编程。在改写的过程到应用的过程中我也遇到了一些麻烦,最后在老师的指导下我顺利的解决了相关问题,通过这一点我也明白了解决问题时我们需要全面考虑,任何一个小的方面都可能影响到我们程序的运行。在编写其他功能时,前面的实验对我也有很大的启发,我想这也在说明平时的实验认真完成的重要性。应该来说,通过这次试验我学到了很多,收获颇丰,在实验结束时,看着自己的作品还是相当高兴的。但是,在实验过程中我也发现了自己的一些不足,例如对实验的调试过程还不是太熟悉,因此,对于解决一些问题也带来了很大的障碍,这是我今后学习中应该注意的地方。

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号