资源描述
华科微机原理课程设计
目 录
一、设计要求………………………………………2
二、设计目的………………………………………2
三、设计的具体实现…………………………… 2
1.系统概述…………………………2
2.硬件电路的设计………………5
3.软件程序的设计……………… 6
四、结论与展望…………………………………10
五、心得体会及建议……………………………11
六、附录………………………………………12
七、参考文献……………………………… 12
转速表设计报告
一、设计要求:
用PC的软硬件资源设计转速表,正确测量电动机的转速并显示。
具体要求:
1.用数码管显示转速;
2.转速显示范围自行确定;
3.用一个拨动开关控制转速表的启动和停止;
4.转速表的采样周期自行确定;
二、设计目的
运用《微机原理及应用》等课程知识,根据题目要求进行软硬件系统的设计和调试,从而加深对课程知识的理解,使学生综合应用知识能力,设计能力,调试能力,及撰写报告能力得到显著提高。
理解传感器测速原理及实现过程,掌握8253可编程定时/计数功能,8255可编程并行接口芯片的工作方式及实现过程,8259可编程中断控制器的实现的过程和数码管动态显示的的实现。三、设计的具体实现
1.设计思路与总体方案
系统概述
本系统首先用传感器将转速转化为脉冲电信号,再通过8253,8259进行定时,确定采样周期为1S,同时8253的另一个通道进行计数,最后通过8255控制数码管以动态显示的方式将结果显示出来。
1) 设计思路
(1)在被测电机主轴上固定一个圆盘,圆盘的边缘上打上小孔,红外传感器的发射端和接收端装在圆盘的两侧,电机带动圆盘转到有小孔的位置是,红外光通过,这样电动机每转动一周传感器就会发出一个脉冲信号,从而将转速转化为电信号。同时通过调动电位器的来改变电动机的转速。
(2)将8253的计数器0用作定时,设为工作方式0,并将其CLK端与1M时钟相连,初值设为50000,定时时间为50ms。并将定时器OUT端与8259中断请求端相连,这样每50ms 8253就向8259发出一次中断请求,因此通过对中断次数的计数来实现1S定时。
(3)8253的计数器1用作计数,将传感器输出的脉冲信号与计数器1的CLK端相连。定时时间1S到时从计数器1中读取计数值,即得到转速。
(4)采用一片8255控制数码管的动态显示,其中PA接数码管的段控制端,PC口接数码管的位控制端,PB设为输入拨动开关,这样设8255工作方式0,PA、PC口为输出,PB口为输入。
2) 总体方案
首先用传感器将转速转化为脉冲电信号,再通过8253,8259进行定时,确定采样周期为1S,同时8253的另一个通道进行计数,最后通过8255控制四个数码管以动态显示的方式将结果显示出来显示范围确定为0~99999r/min。并通过开关控制启动和停止。
3) 原理框图
图1.中断服务程序
图2.主程序
1. 硬件电路的设计
1) 电路图
图3.电路设计图
电路图连接方式如上图所示,电位器控制电机的转速,传感器输出的脉冲电信号接计数器1的CLK1端,计数器0的0UT端接8259的IR0端,通过8253,8259进行定时,确定采样周期为1S,同时8253为一个通道进行计数,最后通过8255控制数码管以动态显示的方式将结果显示出来。8255的PA接数码管的段控制端,PC口接数码管的位控制端,PB设为输入拨动开关,其中拨动开关S0控制PB输入,输入高电平时数码管开始工作,低电平时数码管停止工作。
在数码管显示电路中,由于发光二级管发光时,通过的平均电流为10~20mA,而通常输出锁存器不能提供这么大电流,所以LED各段必须接驱动电路如上图所示。
3.软件程序设计
1)8253的初始化及定时的实现
图4.8253的控制字
计数通道0工作方式3,初始值5000,接1M脉冲产生50ms的定时脉冲程序为
MOV AL, 36H
MOV DX, CONTROL
OUT DX, AL
MOV AL, 50H
MOV DX, COUNT0
OUT DX, AL
MOV AL, 0C3H
OUT DX,AL
计数通道1作为计数通道,为工作方式2,初始值为最大值0FFFFH ,其程序为:
MOV AL, 74H
MOV DX, CONTROL
OUT DX, AL
MOV AL, 0FFH
MOV DX, COUNT1
OUT DX, AL
MOV AL, 0FFH
OUT DX,AL
读取8253的计数器1的计数值,先所存后读写,由于计时器为减,所以需要最大值减去当前计数值得到每秒计数值,再通过计算得到每分的转速其程序为:
MOV AL, 01000000B
MOV DX, CONTROL
OUT DX,AL ;对8253的计数通道1的数据锁存
MOV DX, COUNT1
IN AL, DX ;先读低8位再读高位
MOV BL, AL
IN AL, DX
MOV AH, AL
MOV AL, BL ;至此已将读出通道1的数据到AX中
MOV [DI], 0FFFFH
SUB [DI], AX
MOV DX, PA8255
MOV AL, [DI]
OUT DX, AL ;将8253所记录的转数读到DX中
MOV BL, 3CH
MUL BL ;乘以60,把每秒的转数转成每分钟的转数
MOV [DI], AX
2)8259的初始化
8259的ICW1设置为边沿触发,单片,需要ICW4,ICW2设定中断源为IR0;OCW1设定为只有IR0中断请求允许
MOV DX, CS8259A
MOV AL, ICW1
OUT DX, AL
MOV DX, CS8259B
MOV AL, ICW2
OUT DX, AL
MOV AL, ICW4
OUT DX, AL
MOV AL, OCW1
OUT DX, AL
设置中断向量
CLI ;IF=0,关闭中断
MOV AX, 0
MOV DS, AX
MOV BX, 4*ICW2
MOV AX, CODE
SHL AX, 4 ;AX左移四位
ADD AX, OFFSET IENTER ;取IENTER的偏移量与AX相加
MOV [BX], AX
MOV AX, 0
INC BX
INC BX
MOV [BX], AX ;设置中断矢量
利用8259中断次数定时1S,即利用8253每50mS给出一个中断请求,8259通过计20次中断来实现1S的定时
IENTER PROC NEAR
PUSH AX
PUSH DX
INC CNT
CMP CNT, 14H
JZ A4 ;中断20次结束中断,将转数转成每秒的转数
A5: MOV DX, CS8259A
MOV AL, 20H ;将中断类型号送入AL中开始中断
OUT DX, AL
POP DX
POP AX
IRET ;中断返回
A4: MOV CL, 11H
CALL JISUAN ;调用JISUAN
JMP A5
IENTER ENDP ;8259,定时1秒
3)8255的控制字
图5.8255的控制字
开关S0的设计S0为1时开始工作显示转速,S0为0时退出程序;
NOP ;空操作命令
MOV CL, 0
MOV DX, PB8255
MOV AL, 0
IN AL, DX ;8255B端口数据读入AL中
AND AL, 00000001B
CMP AL, 00000001B
JNZ EXIT ;开关0控制,S0=1,则开始工作
CALL LED ;调用LED显示程序,显示转速
JMP START ;无条件跳转到A1
EXIT: MOV AH, 4CH
INT 21H ;S0=0,退出程序
4) 转速的显示
将要显示的十六进制的数转化为十进制,并存入TEMP中其程序为:
PRINT PROC NEAR ;将显示值转化为十进制并保存
PUSH CX
MOV DX, 0
MOV AX, [DI]
MOV CX, 1000
DIV CX ;商在AX余数在DX
MOV [SI], AL
INC SI
MOV AX, DX
MOV DX, 0
MOV CX, 100
DIV CX ;商在AX余数在DX
MOV [SI], AL
INC SI
MOV AX, DX
MOV CL, 10
DIV CL ;商在AL余数在AH
MOV [SI], AL
INC SI
MOV [SI],AH ;至此ZHUANSU已经全部转存入TEMP
MOV SI, OFFSET TEMP
POP CX
RET
将TEMP存储的转速值,通过四位数码管以动态显示的方式将其示出来其中PA接数码管的段控制端,PC口接数码管的位控制端,PA、PC口为输出
LED PROC NEAR
AGAIN: MOV CH, 00100000B ;初始化位选码
MOV SI, OFFSET TEMP
A2: MOV DX, OUTBIT
MOV AL, 0
OUT DX, AL ; OUTBIT地址空间数据清零
MOV DX, OUTSEG
MOV BX, OFFSET LEDMAP
MOV BL, BX+[SI] ;转化为段码
MOV AL,[BX]
INC SI
OUT DX, AL ;输出段码
MOV DX, OUTBIT
MOV AL, CH
OUT DX, AL ;输出位选码
SHR CH, 1 ;右移一位,指向下一个数码管
CMP CH, 00000010B ;用到的8255的端口为PC2~PC5
JZ A3
JMP A2
DEC COUNT
JNZ AGAIN
MOV COUNT, 100 ;重复显示数据100次
四、结论与展望
通过本次课程设计成功的实现了对电动机转速的测量,但在在实践中可以有多种方法来实现,比如我们可以选择霍尔传感器来测定其转速,例如还可以用8253两个计数通道来实现定时,但它们各有各自的优点,需要我们结合实际情况来选择最佳的放案和方法。
微机原理这门课程很好的把软件和硬件结合在一起,这就要求我们不仅有良好硬件电路基础,还要求我们有较高的编程水平这就要求我们在今后的学习和工作中,注重软硬件结合,利用它们各自的优点从中找到最优的方案,以达到最优的效果。
五、心得体会及建议
这次微机原理课程设计,从选题到定
稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是
可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而
且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得
了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所
学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服
,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇
到问题,可以说得是困难重重,难免会遇到过各种各
样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的
知识理解得不够深刻,掌握得不够牢固,比如在编写汇编程序时,可以看出自己薄弱环节,通
过这次课程设计之后,一定把以前 所学过的知识重新温故。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,微机的发展也空前的活跃, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握微机这门课程的开发技术是十分必要的。
六、附录
元器件明细表1.
名称
数量
PC机
1台
8253编程定时/计数
1片
8255可编程并行接口芯片
1片
8259可编程中断控制器
1片
8段数码管
4个
单刀双掷开关
2个
电位器
1个
直流电动机
1个
红外传感器
1个
七、参考文献
①·陈继红 徐晨 王春明 徐慧·微机原理及应用·高等教育出版社· 2011
②·马争·微计算机与单片机解题指南与实验指导·高等教育出版社·2010
③·朱定华 林卫 ·微机原理、汇编与接口技术实验教程·清华大学出版社·2010
④·刘乐善·微型计算机接口技术及应用·华中科技大学出社·2003
⑤·黄勤·计算机硬件技术基础实验教程·重庆大学出版社·1990
附件
源程序:
OUTBIT=9002H
OUTSEG=9004H
MODE=82H
PA8255=8000H
PB8255=8001H
CTL8255=8003H ; 8255芯片
ICW1=00010011B
ICW2=00100000B
ICW4=00000001B
OCW1=11111110B
CS8259A=0D000H
CS8259B=0D001H ; 8259芯片
CONTROL=0A003H
COUNT0=0A000H
COUNT1=0A001H
COUNT2=0A002H ; 8253芯片
;******************* 数据段定义开始***********************
DATA SEGMENT
LEDMAP:
DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H
DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H
TEMP DB 16H DUP (?)
CNT DB 0
ZHUANSU DW 0FFFFH
COUNT DB 100
DATA ENDS
;******************* 数据段定义结束***********************
;*******************代码段定义开始***********************
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
;*******************代码段主体开始***********************
START:
MOV DX, CTL8255
MOV AL, MODE
OUT DX, AL ; 8255基本输入输出方式,A,C输出,B输入
MOV AL, 36H ;8253
MOV DX, CONTROL
OUT DX, AL
MOV AL, 50H
MOV DX, COUNT0
OUT DX, AL
MOV AL, 0C3H
OUT DX,AL ;8253计数通道0接1M脉冲产生50ms的定时脉冲
ANDY PROC NEAR
MOV AL, 74H
MOV DX, CONTROL
OUT DX, AL
MOV AL, 0FFH
MOV DX, COUNT1
OUT DX, AL
MOV AL, 0FFH
OUT DX,AL
RET
ANDY ENDP ;8253计数通道1接电机脉冲 并初始化为0FFFFH
CLI ;IF=0,关闭中断
MOV AX, 0
MOV DS, AX
MOV BX, 4*ICW2
MOV AX, CODE
SHL AX, 4 ;AX左移四位
ADD AX, OFFSET IENTER ;取IENTER的偏移量与AX相加
MOV [BX], AX
MOV AX, 0
INC BX
INC BX
MOV [BX], AX ;设置中断矢量
CALL IINIT ;8259芯片的初始化
MOV AX, DATA
MOV DS, AX
MOV CNT, 0
MOV AL, CNT
MOV DX, PA8255
OUT DX, AL ;8255A端口清零
STI ;IF=1,中断允许
A1: NOP ;空操作命令
MOV CL, 0
MOV DX, PB8255
MOV AL, 0
IN AL, DX ;8255B端口数据读入AL中
AND AL, 00000001B
CMP AL, 00000001B
JNZ EXIT ;开关0控制,S0=1,则开始工作
CALL LED ;调用LED显示程序,显示转速
JMP START ;无条件跳转到A1
EXIT: MOV AH, 4CH
INT 21H ;S0=0,退出程序
LED PROC NEAR
AGAIN: MOV CH, 00100000B ;初始化位选码
MOV SI, OFFSET TEMP
A2: MOV DX, OUTBIT
MOV AL, 0
OUT DX, AL ; OUTBIT地址空间数据清零
MOV DX, OUTSEG
MOV BX, OFFSET LEDMAP
MOV BL, BX+[SI] ;转化为段码
MOV AL,[BX]
INC SI
OUT DX, AL ;输出段码
MOV DX, OUTBIT
MOV AL, CH
OUT DX, AL ;输出位选码
SHR CH, 1 ;右移一位,指向下一个数码管
CMP CH, 00000010B ;用到的8255的端口为PC2~PC5
JZ A3
JMP A2
DEC COUNT
JNZ AGAIN
MOV COUNT, 100 ;重复显示数据100次
A3: RET
LED ENDP ;数码管显示
PRINT PROC NEAR ;将显示值转化为十进制并保存
PUSH CX
MOV DX, 0
MOV AX, [DI]
MOV CX, 1000
DIV CX ;商在AX余数在DX
MOV [SI], AL
INC SI
MOV AX, DX
MOV DX, 0
MOV CX, 100
DIV CX ;商在AX余数在DX
MOV [SI], AL
INC SI
MOV AX, DX
MOV CL, 10
DIV CL ;商在AL余数在AH
MOV [SI], AL
INC SI
MOV [SI],AH ;至此ZHUANSU已经全部转存入TEMP
MOV SI, OFFSET TEMP
POP CX
RET
PRINT ENDP
IENTER PROC NEAR
PUSH AX
PUSH DX
INC CNT
CMP CNT, 14H
JZ A4 ;中断20次结束中断,将转数转成每秒的转数
A5: MOV DX, CS8259A
MOV AL, 20H ;将中断类型号送入AL中开始中断
OUT DX, AL
POP DX
POP AX
IRET ;中断返回
A4: MOV CL, 11H
CALL JISUAN ;调用JISUAN
JMP A5
IENTER ENDP ;8259,定时1秒
IINIT PROC NEAR
MOV DX, CS8259A
MOV AL, ICW1
OUT DX, AL
MOV DX, CS8259B
MOV AL, ICW2
OUT DX, AL
MOV AL, ICW4
OUT DX, AL
MOV AL, OCW1
OUT DX, AL
RET
IINIT ENDP ;对8259A芯片写入控制字和操作命令
JISUAN PROC NEAR
MOV DI, OFFSET ZHUANSU
MOV CNT, 0
PUSH AX
MOV AL, 01000000B
MOV DX, CONTROL
OUT DX,AL ;对8253的计数通道1的数据锁存
MOV DX, COUNT1
IN AL, DX ;先读低8位再读高位
MOV BL, AL
IN AL, DX
MOV AH, AL
MOV AL, BL ;至此已将读出通道1的数据到AX中
MOV [DI], 0FFFFH
SUB [DI], AX
MOV DX, PA8255
MOV AL, [DI]
OUT DX, AL ;将8253所记录的转数读到DX中
MOV BL, 3CH
MUL BL ;乘以60,把每秒的转数转成每分钟的转数
MOV [DI], AX
CALL PRINT
CALL ANDY
POP AX
RET
JISUAN ENDP
;*******************代码段主体结束***********************
CODE ENDS
END START
;*******************代码段定义结束***********************
18
展开阅读全文