微机接口课程设计-本地步进电机综合控制.doc_第1页
微机接口课程设计-本地步进电机综合控制.doc_第2页
微机接口课程设计-本地步进电机综合控制.doc_第3页
微机接口课程设计-本地步进电机综合控制.doc_第4页
微机接口课程设计-本地步进电机综合控制.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机接口课程设计题目:本地步进电机综合控制姓 名:xx 班 级:xx 学 号: xx指导老师: xx完成日期:2012年1月4日一、 任务要求实现外接步进电机模块的“启动”、“正反转”功能,同时,电机的当前转速显示在数码管上。通过小键盘按键结束整个程序的运行,显示相应的标志。数码管和键盘的功能由74系列器件实现。转速显示格式: #转/分,表示顺时针每分钟#转 #转/分,表示逆时针每分钟#转自定义键 : 显示在数码管上,结束整个程序运行。二、 硬件架构(连线)1. 实验设置步进电机模块;8253A定时模块;8259A中断控制器;计数分频电路74LS393;74系列模块;4片8255A;小键盘和数码管等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连地址输出CS6(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中去同时开启中断依据存储的各位数值,计算十进制数,并转化为写入8253里的初值存储在NUM中依次读入百位、十位、个位的值显示并存储写入初值100,并显示STOPN=1依次读入百位、十位、个位的值显示并存储主程序关中断初始化8255初始化8259,装载中断向量,清8259有关屏蔽位开始停止键装载DS,各变量赋初值,STOPN=-1反转键读取控制键的键值正转键关中断取反NY00H01H02H输入子程序流程图从列端口输出全零,读行端口NNYN3列全部扫面完毕?扫描下一列YY保护现场输入子程序延时去抖行端口低四位全为高电平?行端口低四位全为高电平?再次从列端口输出全零,读行端口从第零列开始逐列扫描读到的值为全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口写入红颜色的信息延时子程序流程图略四、 代码实现.486pPORT1EQU340H ;(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,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,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,ICW2MOV 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 ST1CMP 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 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,205H 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 MOV 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;通过行扫描法,将键值存储到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 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,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 DX 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,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五、 运行调试在按要求连接完线后,运行程序。键盘上最上面一排三个键为控制键,依次代表启动停止键,正转,反转。从第二行开始横着依次代表数字08。在测试的时候,按下起止键在开始和停止两个状态切换;按下正转或反转后跟上三个数字键,该数字即为你需要运行的速度。正常运行前两块数码管显示速度信息,第三块显示步数信息,电机正常转动。六、 总结这次课程设计完成的是一个步进电机的旋转实验,主要涉及了数码管显示,按键识别,步进电机控制等几个部分,是对我们平时实验的一个综合。在实验过程中我采用了分解的方法将实验分为了几个部分,逐一实现。按键部分主要是在按键识别与现实的基础上进行改写,通过行扫描法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论