微机原理实验报告——直流电机测速实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的内容