微机原理实验报告——直流电机测速实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本科实验报告

课程名称:微机原理及接口技术实验项目:直流电机测速实验实验地点:微机原理实验室专业班级:学号:

学生姓名:

指导教师:

2012年6 月25 日

一、实验目的

(1)掌握8254的工作原理和编程方法;

(2)了解光电开关,掌握用光电传感器测量电机转速的方法。

二、实验内容

光电测速的基本电路由光电传感器、计数器/定时器组成。被测电机主轴上固定一个圆盘,圆盘的边缘上有小孔。传感器的红外发射端和接收端装在圆盘的两侧,电机带动圆盘转到有孔的位置时,红外光通过,接收管导通,输出低电平。红外光被挡住时,接收截止,输出高电平。用计数器/定时器记录在一定时间内传感器发出的脉冲个数,就可以计算出电机的转速。

三、线路连接

(1)线路连接如图4.6所示。8254计数器/定时器0和2作为定时器,确定测速时间,定时器0的CLK0引脚输入1MHz脉冲,输出OUT0引脚作为定时器2的输入,与CLK2引脚相连,输出引脚OUT2与8255的PA0端相连。GATE0和GATE2均接+5V电源。8254计数器/定时器1作为计数器,输入引脚CLK1与直流电机计数端连接,GATE1与8255的PC0相连。电机DJ端与+5V~0V模拟开关SW1相连。

器/定时器0和2作为定时器,组成10~60秒定时器,测量脉冲个数,以此计算出电机每份钟的转速,并显示在计算机屏幕上。8255的PA0根据OUT2的开始和结束时间,通过PC0向8254计数器/定时器1发出开始和停止计数信号。

四、流程图

DA TA SEGMENT ;数据段

IOPORT EQU 0D880H-0280H ;8255端口基地址

IO8255K EQU IOPORT+283H ;8255控制口地址

IO8255A EQU IOPORT+280H ;8255 A口地址

IO8255C EQU IOPORT+282H ;8255 C口地址

IO8254K EQU IOPORT+28BH ;8254控制口地址

IO82542 EQU IOPORT+28AH ;8254计数器2端口地址

IO82541 EQU IOPORT+289H ;8254计数器1端口地址

IO82540 EQU IOPORT+288H ;8254计数器0端口地址

MESS DB 'STRIKE ANY KEY,RETURN TO DOS!',0AH,0DH,'$' ;提示信息

COU DB 0 ;预留单元并清零

COU1 DB 0

COUNT1 DB 0

COUNT2 DB 0

COUNT3 DB 0

COUNT4 DB 0

DA TA ENDS

CODE SEGMENT ;代码段

ASSUME CS:CODE,DS:DA T A

ST ART:MOV AX,DA T A ;初始化,取段基址

MOV DS,AX

MOV DX,OFFSET MESS ;MESS首地址

MOV AH,09H ;DOS 9号调用,

INT 21H ;显示提示信息

MOV DX,IO8254K ;DX←8254控制口地址

MOV AL,36H ;AL=36H , 控制字

OUT DX,AL ;设置计数器0,方式3,先读写低8位,再读写高8位

MOV DX,IO82540 ;DX←8254计数器0端口地址

MOV AX,50000 ;初始值为50000,输入时钟为1MHz,则输出时钟周期50ms

OUT DX,AL ;输出低8位

NOP ;空操作

NOP

MOV AL,AH ;AL←AH

OUT DX,AL ;输出高8位

MOV DX,IO8255K ;DX←8255控制口地址

MOV AL,90H, ;AL=90H,控制字

OUT DX,AL ;A口方式0输入,PA0输入;C口方式0输出,PC0输出

MOV DX,IO8255C ;DX←8255 端口C口地址,

MOV AL,00 ;AL=0

OUT DX,AL ;PC0=0,则GA TE1为低电平,定时器1禁止计数

LL:MOV AH,01H ;DOS 1号调用,判断是否有键按下?

INT 16H

JNZ QUIT1 ;ZF=0,有键按下,转到标号QUIT1

MOV DX,IO8254K ;DX←8254控制口地址

MOV AL,70H ;AL=70H,控制字

OUT DX,AL ;设置计数器1,方式0,先读写低8位,再读写高8位

MOV DX,IO82541 ;DX←8254计数器1地址

MOV AL,0FFH ;定时常数,实际为FFFFH

OUT DX,AL ;输出低8位

NOP ;空操作

NOP

OUT DX,AL ;输出高8位,开始计数

MOV DX,IO8254K ;DX←8254控制口地址

MOV AL,90H ;AL=90H,控制字

OUT DX,AL ;计数器2,方式0,只读写低8位

MOV DX,IO82542 ;DX←8254计数器2地址

MOV AL,100 ;AL=100,定时常数

OUT DX,AL ;CLK2=50ms,定时常数为100,则OUT2定时时间即检测时间为5秒

MOV DX,IO8255C ;DX←8255端口C地址

MOV AL,01H ;AL=01H

OUT DX,AL ;PC0输出1,即为高电平,定时器1开始计数

JMP A0 ;无条件转移到标号A0

QUIT1:JMP QUIT ;无条件转移到标号QUIT

A0:MOV DX,IO8255A ;DX←8255端口A地址

A1:IN AL,DX ;读入PA0的值,进行检测

AND AL,01H ;判断PA0是否为高电平1?

JZ A1 ;ZF=1,即PA0=0,为低电平,转到标号A1,继续检测

MOV DX,IO8255C ;ZF=0,即PA0=1,为高电平,定时器2定时5秒结束OUT2输出高电平

MOV AL,00H ;AL=00H

OUT DX,AL ;8255端口C输出0,定时器1停止计数

MOV DX,IO8254K ;DX←8254控制口地址

MOV AL,70H ;AL=70H

OUT DX,AL ;设置计数器1,方式0,先读写低8位,再读写高8位

MOV DX,IO82541 ;DX←8254计数器1地址

IN AL,DX ;读入计数器1的内容

相关文档
最新文档