东南大学微机实验课程设计 电机(2)

2019-04-22 10:01

《微机实验及课程设计》报告

计数器1用于记录获得的脉冲个数,在方式0下工作,计数初值为0FFFFH,时钟为光电检测器的输出,光带检测器每次有输出,则计数器1存储器中的值递减1。计数器2用于定时,计数初值100,时钟为计数器0的输出,这样可以定时5秒。然后进入小循环(代码中的LOOPER):该小循环在程序最底层,每顺序执行一次即进行一次循环,首先判断按键,以决定是否退出程序以及7段数码管显示的是测得值还是标准值。接着检测PB7是否为1,即是否经过5秒,如果没有达到5秒,则进行开关处的检测,判断开关当前所处的档位,然后赋给相应高低电平时间(软件计时,即延时代码),然后让0832输出相应的方波,在延时程序中,将要显示的值显示到7段数码管中,然后跳回,重新开始一遍小循环;如果达到5秒,计数器1停止计数,锁存计数值,由此计算转速,根据转速设置对应红绿灯的亮灭。并将该次的测得值与标定值(预期)进行比较,根据两者之间的差异对输出方波的占空比进行调整。然后将该次的测得值在PC屏幕上显示。接着返回,重新开始大循环,继续下一轮的检测与控制。

进一步设计

(1)设置急停按钮功能;

K5输出为1时表示急停命令,通过检验8255PA5端口是否为高电平可知K5的状态。当K5为1时,输出80h给0832,使得Ub输出电平为0,使得电机停止转动。从而实现急停的功能。此外,由于每秒对A口进行检测一次,所以当急停命令撤除后,下个周期就能够重新开始运转。

(3)在PC 上同步显示设定和转速曲线。

以设置值shezhi为横坐标,以实际值shiji为纵坐标,通过int 10h中断进行图形的绘制,其中每秒钟进行一次小段绘制。从而实现设定和转速曲线的绘制。

四. 方案实现与测试

DATA SEGMENT

ioport EQU 0b800h-0280h io0832 EQU ioport+290H ; d/a

io8255k EQU ioport+28BH ; 8255 KONG

io8255a EQU ioport+288H ; 8255 a

io8255b EQU ioport+289H ; 8255 b

io8255c EQU ioport+28AH ; 8255 c

io8253k EQU ioport+283H ; 8253控制

io82532 EQU ioport+282H ; 8253计数器2

io82531 EQU ioport+281H ; 8253计数器1

io82530 EQU ioport+280H ; 8253计数器0

mess DB 'Strike r to show the tested value!,s to show the sandard value!',0AH,0DH,'$'

LEDCOD DB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

BUF1 DW ?

6

《微机实验及课程设计》报告

BUF2 DW ? NUM1 DB 0 NUM2 DB 0 NUM3 DB 0 NUM4 DB 0 KEYS DB 0

SAND DW 0 ;标准值 RESU DW 0 ;测得值 MINU DW 0 ;偏差值 REPL DW 0 ;显示值 REPG DB 0 ;显示值个位 REPS DB 0 ;显示值十位 ZFSIT DB 0FFH ;D/A输出极性控制

K0B2 DW 0100H K1B2 DW 0150H K2B2 DW 0200H K3B2 DW 0250H K4B2 DW 0300H K5B2 DW 0350H DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX

MOV DX,io8255k

MOV AL,82H ;A输出负责数码显示,B用于输入开关状态和输入负责监控计时器是否计时完毕,C输出负责控制计数器工作, OUT DX,AL

MOV DX,io8253k

MOV AL,36h ;计数器0,方式3,先读写低8位,再读写高8位

OUT DX,AL ;输入时钟,1MHZ

MOV DX,io82530

MOV AX,50000 ;初

值50000,输出时钟周期50ms OUT DX,AL

NOP NOP

MOV AL,AH OUT DX,AL

MOV DX,io8255k MOV AL,00H OUT

DX,AL ;C0(GATE1)低电平,定时器1禁止计数

MOV DX,offset mess MOV AH,09H

INT 21H ;显示提示信息

INTK:

MOV DX,io8253k MOV AL,70H OUT

DX,AL ;计数器1,方式0,先读写低8位,再读写高8位。 MOV

DX,io82531 ;输入时钟为光电开关输出。

MOV AL,0ffH

OUT DX,AL ;从FF到零,65536 NOP NOP

OUT DX,AL ;高八位

MOV DX,io8253k MOV AL,90H

OUT DX,AL ;计数器2,方式0,只读写低8位,检测时间5秒

MOV DX,io82532 MOV AL,100

OUT DX,AL ;初值 100 ,检测 5 秒 50ms * 100 计数器 0

7

《微机实验及课程设计》报告

输出是计数器 2 的 CLK

MOV DX,io8255k MOV AL,01H

OUT DX,AL ;PC0输出1, MOV REPG,AH ;个位 JMP COUNTER

EXPRO: MOV AH,4CH

INT 21H ;退定时器1开始计数

LOOPER: MOV AH,06H MOV DL,0FFH

INT 21H ;判断输入按键 JE COUNTER ;没有按键就继续执行COUNTER

MOV BL,AL

XOR BL,73H ;判断是否有按键为s(标准值) JZ SANREP MOV BL,AL

XOR BL,72H ;判断是否有按键为r(测得值) JZ RESREP JMP EXPRO

SANREP: MOV AX,SAND MOV DX,0000h

MOV CX,000ah ;折算成0.5秒钟的电机转速

DIV CX ;这时转速应为一个2位数,存于AX中 MOV CL,10

DIV CL ;除10 MOV REPS,AL ;十位 MOV REPG,AH ;个位 JMP COUNTER

RESREP: MOV AX,RESU MOV DX,0000h

MOV CX,000ah ;折算成0.5秒钟的电机转速

DIV CX ;这时转速应为一个2位数,存于AX中 MOV CL,10

DIV CL ;除10 MOV REPS,AL ;十位 出程序

COUNTER: MOV DX,io8255b IN AL,DX AND AL,80H

JZ SWITMP ;8255 PB7是否为0,为零则计数未结束

FINISH: MOV DX,io8255k MOV AL,00H

OUT DX,AL ;定时器1停止计数

MOV DX,io82531 IN AL,DX MOV BL,AL IN AL,DX

MOV BH,AL ;16位计数值送BX

MOV AX,0FFFFH SUB

AX,BX ;计算脉冲个数

MOV RESU,AX ;将脉冲值保存到resu中

CMP AX,0000H

JZ RED CMP AX,0200H JB

GREEN ;脉冲小于0300H ,绿灯亮

MOV DX,io8255k MOV

AL,05H ;C口位控,pc2为1,接黄灯 OUT DX,AL JMP LOOP2

8

《微机实验及课程设计》报告

RED: MOV DX,io8255k MOV

AL,03H ;PC1为红灯 OUT DX,AL JMP LOOP2

GREEN: MOV DX,io8255k MOV

AL,07H ; PC3为绿灯 OUT DX,AL JMP LOOP2

SWITMP: JMP SWI ;SWI跳转过渡

LOOP2:

MOV DX,io8255c

IN AL,DX TEST AL,10H JNZ

NEXT1 ;PC7开环检测

MOV DX,RESU CMP DX,SAND JL LESSTHAN CMP DX,SAND JG GREATERTHAN NEXT1: JMP NEXT

LOOPERTMP: JMP LOOPER ;从DELAY跳转至LOOPER的过渡

LESSTHAN: MOV BL,KEYS TEST BL,01H JNZ CL0 TEST BL,02H JNZ CL1 TEST BL,04H JNZ CL2 TEST BL,08H JNZ CL3 TEST BL,10H JNZ CL4 TEST BL,20H JNZ CL5 JMP NEXT

CL0: SUB K0B2,0010H JMP NEXT

CL1: SUB K1B2,0010H JMP NEXT

CL2: SUB K2B2,0010H JMP NEXT

CL3: SUB K3B2,0010H JMP NEXT

CL4: SUB K4B2,0010H JMP NEXT

CL5: SUB K5B2,0010H JMP NEXT

GREATERTHAN: MOV BL,KEYS TEST BL,01H JNZ CG0 TEST BL,02H JNZ CG1 TEST BL,04H JNZ CG2 TEST BL,08H JNZ CG3 TEST BL,10H JNZ CG4 TEST BL,20H JNZ CG5 JMP NEXT

CG0: ADD K0B2,0010H JMP NEXT

CG1: ADD K1B2,0010H JMP NEXT

CG2: ADD K2B2,0010H JMP NEXT

CG3: ADD K3B2,0010H JMP NEXT

CG4: ADD K4B2,0010H

9

《微机实验及课程设计》报告

JMP NEXT CG5: ADD K5B2,0010H JMP NEXT NEXT: MOV AX,SAND CALL DISP ;显示标准值 MOV DL,0dh MOV AH,02 INT 21h MOV AX,RESU CALL DISP ;显示实际值 MOV DL,0ah MOV AH,02 INT 21h JMP INTK SWI: MOV DX,io8255b IN AL,DX ;8255b口为读取开关 MOV KEYS,AL TEST AL,40H JZ SWIST ;无需反转则继续检测其他情况 MOV ZFSIT,0FFH JMP SWISAND SWIST: MOV ZFSIT,00H MOV RESU,00H SWISAND: TEST AL,01H JNZ K0 TEST AL,02H JNZ KK1TMP TEST AL,04H JNZ KK2TMP TEST AL,08H JNZ KK3TMP TEST AL,10H JNZ KK4TMP TEST AL,20H JNZ K5TMP JMP LOOPERTMP K0: MOV SAND,880 ;假设标准 MOV BUF2,0050H ;高电平延时的常数 MOV AX,K0B2 MOV BUF1,AX ;低电平延时的常数 DELAY: MOV CX,BUF2 MOV AL,ZFSIT MOV DX,io0832 OUT DX,AL DELAY1: MOV AL,REPS MOV BX,OFFSET LEDCOD XLAT MOV DX,io8255a ; A口控制LED灯,低位 OUT DX,AL MOV AL,REPG MOV BX,OFFSET LEDCOD XLAT OR AL,80H MOV DX,io8255a ; PA7为1,写高位 OUT DX,AL LOOP DELAY1 JMP TTMP KK1TMP: JMP K1 KK2TMP: JMP K2 KK3TMP: JMP K3 KK4TMP: JMP K4 TTMP: MOV AL,80H MOV DX,io0832 OUT DX,AL MOV CX,BUF1

10


东南大学微机实验课程设计 电机(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:设计报告-企业设备管理系统

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: