微机原理及应用课程设计说明书微型直流电机调速系统设计.docx

上传人:b****6 文档编号:4511592 上传时间:2022-12-01 格式:DOCX 页数:24 大小:206.21KB
下载 相关 举报
微机原理及应用课程设计说明书微型直流电机调速系统设计.docx_第1页
第1页 / 共24页
微机原理及应用课程设计说明书微型直流电机调速系统设计.docx_第2页
第2页 / 共24页
微机原理及应用课程设计说明书微型直流电机调速系统设计.docx_第3页
第3页 / 共24页
微机原理及应用课程设计说明书微型直流电机调速系统设计.docx_第4页
第4页 / 共24页
微机原理及应用课程设计说明书微型直流电机调速系统设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

微机原理及应用课程设计说明书微型直流电机调速系统设计.docx

《微机原理及应用课程设计说明书微型直流电机调速系统设计.docx》由会员分享,可在线阅读,更多相关《微机原理及应用课程设计说明书微型直流电机调速系统设计.docx(24页珍藏版)》请在冰豆网上搜索。

微机原理及应用课程设计说明书微型直流电机调速系统设计.docx

微机原理及应用课程设计说明书微型直流电机调速系统设计

微机原理及应用

课程设计说明书

设计题目:

微型直流电机调速系统设计

 

课程设计任务:

微型直流电机调速系统设计

一、设计目的

通过步进电机控制系统的设计,使同学们进一步掌握:

(1)汇编语言程序的设计和调试;

(2)直流电机的基本工作原理和控制驱动方法;

(3)D/A接口芯片DAC0832的应用;

(4)微机基本应用系统的设计方法;

二、设计内容

利用实验装置,设计一个直流电机控制系统的原理线路,编制应用程序,实现直流电机的转速控制。

操作和功能要求如下:

(1)开始运行,直流电机停止;

(2)按下“加速”键,直流电机升速;按下“减速”键,直流电机减速;

(3)可以改变直流电机的转向。

三、设计要求

(1)设计原理线路;

(2)编制应用程序;

(3)联合调试,实现上述功能;

(4)编写设计说明书(含原理图,程序及说明,实验方法,过程及结果)。

评分:

基础知识掌握情况(占10%)

课设完成情况(占30%)

课设创新(占10%)

答辩(占10%)

设计报告(占20%)

考勤(占10%)

总评成绩:

指导教师:

一、系统功能要求分析…………………………………………………1

二、方案设计及其说明…………………………………………………2

三、原理线路设计………………………………………………………3

1.原理线路

2.工作原理说明

3.操作时序分析

4.特点说明

四、程序设计……………………………………………………………4

1.程序结构及流程

2.程序算法分析

3.关键程序段说明

4.源程序清单

五、系统调试及结论……………………………………………………5

1.调试方法

2.重点问题及解决方法

3.运行结果及结论

六、设计体会……………………………………………………………6

参考文献………………………………………………………………7

 

一、系统功能要求分析

此设计要求利用实验装置,设计一个直流电机控制系统的原理线路,编制应用程序,实现直流电机转速控制的功能,并且进一步可增加转速测量的功能。

系统功能具体要求及分析如下:

(1)开始运行,电机停止:

未按任何键之前,设定初值,使经DA0832转换后的电流为零,电机不转。

(2)按档调速功能:

直流电机可有三个转速,分为一、二、三档,其中按下按键“一”电机在低速档运行;按下按键“二”电机在中速档运行;按下按键“三”电机在高速档运行。

(3)连续调速功能:

按下“加速”键,编程控制DA0832输入数字量累加,直流电机可在原速基础上升速;按下“减速”键,编程控制DA0832输入数字量自减,直流电机可相对原速减速。

(4)停止功能:

设有停止键,控制电机的停止运行。

调节电位器改变DA0832的基准电压,使得初值00H对应的输出电流为0,从而电机停止运行。

(5)改变转向功能:

原理上,调节DAC0832的基准电压,使得某一中间值对应转速为零,则在输入数字量大于此值时为正电压,电机正转;再输入数字量小于此值时为负电压,电极反转。

(6)测速功能:

在一定时间内对霍尔元件产生的脉冲数计数,从而求得电机转速,并在数码管显示。

二、方案设计及其说明

(一)硬件设计

在硬件上,所用到的芯片主要有:

CPU8086、并行通信接口芯片8255A、可编程定时计数芯片8253、可编程中断控制器8259A、以及键盘扫描显示芯片8279。

(1)电机转速的控制:

电机转速大小的控制可以通过改变加于电机两端的电压来实现,选用DAC0832芯片实现数字量到模拟量的转化,设置电机转速给定值,不同的数字量对应输出不同的电流,再通过一个高输入阻抗的线性运算放大器LM324得到相应的模拟电压信号,从而控制电机转速。

(2)按键状态的检测及显示:

设K1、K2、K3为一、二、三档,K4为停止键,K5、K6为加速和减速键。

选用8255芯片PA口读取按键状态从而控制电机在不同档运行以及电机加速或减速,并且可以通过8255的PB口输出控制相应按键指示灯的亮灭以及利用8279芯片得到数码管相应的显示,如:

在一档,其灯亮,且显示“1”。

(3)转速的测量及显示:

利用霍尔传感器产生转速脉冲,用8253芯片设计定时/计数电路通过脉冲计数测得转速。

可用8253的CT0记脉冲数,CT1定时到利用8259产生中断,显示计数。

经分析,实验时电机旋转一圈可产生4个脉冲,则可以定时0.25S产生中断,利用8279对计数进行显示,即为转速。

(二)软件设计

设计中用到的有8253、8255,8259的初始化程序,各开关状态检测及电机速度控制子程序,以及调用库函数DISPLAY8显示程序,中断服务程序,延时子程序等。

三、原理线路设计

3.1原理框图:

 

3.2工作原理说明

1、数模转换模块:

利用DAC0832芯片,其工作原理如下:

DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式。

其由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。

运算放大器输出的模拟量与输入的数字量成正比,从而实现D\A转换。

DAC0832输出的是电流,本设计中需用输出电压控制电机转速,所以还必须经过一个外接的运算放大器转换成电压。

DAC0832外部线路如图所示。

2、按键控制模块:

利用并行接口通信8255芯片,其有三个8位的并行I/O端口为PA、PB、PC,一个控制端口,运用可编程功能对控制端口写入不同的控制字可定义PA、PB、PC的工作方式或者直接对C口进行操作。

 

8255有两个控制字如图:

图2.1C口置位/复位控制字图2.2工作方式控制字

 

在此设计中,用PA、和PB工作在基本输入输出方式,PA输入开关状态,PB作为输出口控制8个LED的亮灭。

8255接线原理如图2.3

图2.3

3、测速模块:

利用8253和8259芯片。

8253有3个完全独立的16位定时计数器:

CT0、CT1、CT2,均为减法计数器,可预置计数初值,有6种可选择的工作方式,写入相应控制字,以实现计数、定时、分频等功能。

 

8253接线原理如图3.1.

图3.1

在此设计中,选用计数器0工作在方式二作为计数器,对霍尔元件产生的转速脉冲进行计数;用计数器1工作在方式二作为定时器,定时0.25S,可循环定时,每次定时到会产生负脉冲,利用其上升沿作为8259的中断信号,在中断服务中对所计数进行显示。

方式二为计数分频方式,工作方式如图3.2。

4、显示模块:

利用可编程键盘/显示接口8279,8279可为64键的接触式按键阵列提供扫描接口,显示部分能为发光二极管、数码管、液晶显示器等提供扫描显示接口。

由于它本身可提供扫描信号,因而可代替微处理器完成键盘和显示器的控制,单个芯片就能完成键盘输入和LED显示控制两种功能。

在此设计中,通过调用8279显示函数在晶体管上显示开关状态和电机运行速度。

3.3操作时序分析

(1)开始运行时,电机停止,未按键前,状态灯全灭,状态显示00,转速显示00。

(2)按下K1键LED1亮,状态显示01,表示为一档,电机以低速运行,晶体管高两位显示相应速度。

(3)按下K2键LED2亮,状态显示02,表示为二档,电机以中速运行,晶体管高两位显示相应速度。

(4)按下K3键LED3亮,状态显示03,表示为三档,电机以高速运行,晶体管高两位显示相应速度。

(5)按下K4键LED4亮,状态显示04,为停止档,电机停止运行,晶体管高两位显示00。

(6)按下K5键LED5亮,状态显示AA,为连续加速档,电机在原速上逐渐加速,直至最高速度后以最高速度运行,速度显示增加至显示最高速。

(7)按下K6键LED6亮,状态显示DD,为连续减速档,电机在原速上逐渐减速,直至停止,速度显示逐减至显示00。

3.4特点说明

(1)在调速方面既可以直接的选择低、中、高某一档位让电机运行,要想更精准的调速,可使用连续加减速按键加或减至自己想要的速度让电机以此速度运行。

可见,此系统的调速是灵活的。

(2)本设计有速度显示功能,将此刻的电机转速成为可观量,切实的掌握电机转速,从而按主覌要求要求进行调速。

(3)在测速时,采用定时到产生中断进行计数显示的方法,时延比较小,较为精确。

 

四、程序设计

4.1程序结构及流程

中断服务程序流程:

电机加速程序流程:

4.2程序算法分析

在主程序中有8253、8255、8259的初始化以及开关状态检测程序,检测到某开关闭合转入相应的档位子程序或连续加减速子程序并进行速度的输出,控制电机的调速。

为实现测速,加入了中断服务程序,0.25S产生一次中断,即0.25S采一次值,进入中断服务程序,锁存计数值并计算得所记脉冲数进行显示,即为电机的转速。

4.3关键程序段说明

1、显示程序段

LedDisplayPROCNEAR;输出显示速度,状态

CALLDELAY

MOVAL,COUNTER2

MOVAH,AL

ANDAL,0FH;取低四位

MOVBuffer,AL;显示速度低位

ANDAH,0F0H;取高四位

RORAH,4

MOVBuffer+1,AH;;显示速度高位

MOVBuffer+2,10H;中间4位不需要显示

MOVBuffer+3,10H

MOVBuffer+4,10H

MOVBuffer+5,10H

MOVAL,COUNTER1

MOVAH,AL

ANDAL,0FH

MOVBuffer+6,AL;显示状态低位

ANDAH,0F0H

RORAH,4

MOVBuffer+7,AH;显示状态高位

LEASI,Buffer

CALLDELAY

CALLDisplay8;调用现实函数

RET

LedDisplayENDP

2、中断服务程序段

INT_0PROCNEAR

CLI;关中断

PUSHDX;寄存器入栈保护

PUSHAX

MOVDX,TCL;写8253控制字

MOVAL,00000000B

OUTDX,AL

XORBX,BX;BX清零

MOVDX,T0;读T0的低字节,存放BL

INAL,DX

MOVBL,AL

INAL,DX;读T0的高字节,存放BH

MOVBH,AL

MOVAX,Counter3;取T0上次中断时的CE

SUBAX,BX;计算脉冲数存放AX

MOVCounter3,BX;中断后的CE存放Counter3数组

MOVCOUNTER1,AL;脉冲数输出显示

MOVDX,IO8259_0;8259的IR0中断

MOVAL,20H

OUTDX,AL

POPAX;寄存器出栈

POPDX

STI;开中断

IRET;中断返回

INT_0ENDP

4.4源程序清单(见附录)

五、系统调试及结论

5.1调试方法

先在星研软件下编好程序进行编译链接,若无语法错误,则与硬件连接,全速运行,看预期功能是否实现,若有逻辑错误,可进行:

(1)加跳转指令进行调试:

若程序中出现逻辑错误,可在某一句的后边加跳转指令,跳过下一段指令,以检测前面的程序是否有问题。

这样可以缩小查找问题的范围,以发现问题之所在。

(2)单步进入进行调试:

星研软件中可进行单步调试,这样可以掌握指令的执行顺序及跳转的位置,并可观察每一步运行后寄存器内值的变化,从而发现一些问题。

5.2重点问题及解决方法

问题一:

状态灯显示混乱,开关与LED没有对应显示。

解决:

通过对实验箱上的LED进行电平测试,发现所采用的8个LED灯是在接低电平的情况下亮的,由此,应对8255的A口输入量取反后再由B口输出控制灯的亮灭,这样开关状态刚好与状态灯的亮灭对应,解决了此问题。

问题二:

测速时,速度显示为不变值或一直显示00。

解决:

经请教老师,发现是设计思路有误。

开始时,我们是用8255检测按键状态,通过对PC口的置位和复位控制计数器8253的门控信号,以此控制计数的停止来产生中断再显示计数。

老师讲每个芯片的工作都是有时延的,这样连接下来,时延就比较大了,不能准确的测速,甚至不能正常的显示。

分析后我们直接用定时计数器1的OUT1作为8259的中断信号,利用其计数定时到的上升沿产生中断,对计数进行显示。

问题三:

测速时,电机以恒速运行,速度显示却不停变化。

解决:

8253计数器为减1计数,则初值减现值得计数值。

对程序进行调试分析,0.25S采一次数,发现在下一次计数时计数初值并没有重新装入,起初认为是8253计数器0工作方式的问题,但改变其工作方式并未解决问题,最后修改程序,用上次计完数的值减此次计数后的值得计数值进行显示,成为一个累减的过程。

这样修改后显示正确,但是减为零时的计数值需避过,否则会有错误。

问题四:

程序在单步运行时结果正确,全速运行时结果混乱。

解决:

原理上单步运行和全速运行所得结果是一样的,其差别主要在于单步时指令执行间时差更大,经分析,DAC0832的D/A转换是需要一定时间的,所以输出时必须要加延时程序,给它足够的转换时间。

问题五:

直流电机转速不受控制。

解决:

查资料知DAC0832输出的是电流,要输出电压,必须经过一个运算放大器转换。

5.3运行结果及结论

运行结果:

开始运行时,电机停止,状态灯全灭,速度显示为零,按下按键后,相应状态灯亮并显示相应的电机速度,按停止键后,电机停止运行。

结论:

运行结果与预期要求相符,利用实验装置完成小直流电机调速系统的原理线路设计,编制应用程序,实现了直流电机的转速控制和速度显示等一系列功能,达到了设计要求并且进行了功能的扩展。

六、设计体会

通过本次微机原理课程设计,我深刻体会到了微机原理课程的实用性及重要性。

让我知道学习并不是停留于课本和知识表面的,真正的学习是理论与时间的糅合,是将抽象化的知识变为切实可用的事物。

在设计的过程中,也是对自身的一种考验,考验知识的娴熟度,动手的能力,创新的思维,细心和耐心等,当然这也是一个发现不足的过程,知不足而后进,其中收益是很大的。

在设计的过程中,我们遇到了各种各样的问题,有失落过,却也有解决后的欣喜。

在摸索中,我进一步认识和掌握了各个芯片的功能及用法,练习了编程及调试,提高了独立思考的能力和解决问题的思维。

总之,在这几天中,自己的探索,老师的指导及与同学的讨论让我获益匪浅。

由于本次设计时间比较短,我们完成的设计达到了预期要求,但并不是尽善尽美的,还有很多进步的空间。

所以我会继续努力的,饱含信心和热情的去学习。

参考文献

[1]微机接口实验系统使用手册

[2]微机接口实验系统实验指导书

[3]微机原理及应用课程设计指导书

[4]微机原理及接口技术项目教程

[5]微型计算机原理及应用

 

附录:

源程序代码

.MODELTINY

EXTRNDisplay8:

NEAR

IO8259_0EQU0D000H

IO8259_1EQU0D001H

DAC0832EQU0F000H

PAEQU0E000H

PBEQU0E001H

PCEQU0E002H

PTLEQU0E003H

T0EQU0C000H

T1EQU0C001H

T2EQU0C002H

TCLEQU0C003H

.STACK100

.DATA

BUFFERDB8DUP(?

Counter1DB?

;定义速度数组

Counter2DB?

;定义电机状态数组

Counter3DW?

ReDisplayFlagDB0;中断标志

.CODE

START:

MOVAX,@DATA

MOVDS,AX

MOVES,AX

NOP;

CALLInit8259

CALLWriIntver

MOVDX,PTL;8255初始化

MOVAL,10010000B

OUTDX,AL

MOVDX,DAC0832;初速度为0

MOVAL,00H

OUTDX,AL

MOVDX,TCL

MOVAL,00110010B;计数器T0,工作方式1,初值0FFFFH

OUTDX,AL

MOVAL,01110100B;定时器T1,工作方式2,实现0.25秒定时

OUTDX,AL

MOVDX,T1;定时器T1装初值

MOVAX,31250

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVDX,T0;计数器T0装初值

MOVAX,200

OUTDX,AL

MOVAL,AH

OUTDX,AL

AGAIN:

STI;开中断

NOP

MOVCX,0FFFFH

LOOP$

MOVDX,PA;读开关状态

INAL,DX

TESTAL,00000001B

JENEXT1

CALLONE

JMPAGAIN

NEXT1:

TESTAL,00000010B

JENEXT2

CALLTWO

JMPAGAIN

NEXT2:

TESTAL,00000100B

JENEXT3

CALLTHREE

JMPAGAIN

NEXT3:

TESTAL,00001000B

JEAA

CALLTINGZHI

JMPAGAIN

AA:

TESTAL,00010000B

JECC

CALLJIASU

JMPAGAIN

CC:

TESTAL,00100000B

JEWU

CALLJIANSU

JMPAGAIN

WU:

NOTAL

MOVDX,PB

OUTDX,AL

MOVCounter2,00H

;CALLLedDisplay

CALLDELAY

NOP

NOP

CALLLedDisplay

JMPAGAIN

SHUCHU0:

CALLSHUCHU

JMPAGAIN

JIANSUPROCNEAR;减速函数

NOTAL

MOVDX,PB

OUTDX,AL

POPBX

POPCX

POPAX

CMPAL,00H

JBESHUCHU0

SUBAL,05H

PUSHAX

PUSHCX

PUSHBX

MOVDX,DAC0832

OUTDX,AL

MOVCounter2,0AAH

CALLLedDisplay

RET

JIANSUENDP

JIASUPROCNEAR;加速函数

NOTAL

MOVDX,PB

OUTDX,AL

POPBX

POPCX

POPAX

CMPAL,0FFH

JAESHUCHU0

ADDAL,05H

PUSHAX

PUSHCX

PUSHBX

MOVDX,DAC0832

OUTDX,AL

MOVCounter2,0DDH

CALLLedDisplay

RET

JIASUENDP

ONEPROCNEAR;1档运行函数

MOVDX,PB

NOTAL

OUTDX,AL

MOVAL,70H

CALLSHUCHU

MOVCounter2,01H

CALLLedDisplay

RET

ONEENDP

TWOPROCNEAR;2档运行函数

MOVDX,PB

NOTAL

OUTDX,AL

MOVAL,0A0H

CALLSHUCHU

MOVCounter2,02H

CALLLedDisplay

RET

TWOENDP

THREEPROCNEAR;3档运行函数

MOVDX,PB

NOTAL

OUTDX,AL

MOVAL,0F0H

CALLSHUCHU

MOVCounter2,03H

CALLLedDisplay

RET

THREEENDP

TINGZHIPROCNEAR;停止档位函数

MOVDX,PB

NOTAL

OUTDX,AL

MOVAL,0H

CALLSHUCHU

MOVCounter2,04H

CALLLedDisplay

RET

TINGZHIENDP

SHUCHUPROCNEAR;速度输出函数

CALLDELAY

MOVDX,DAC0832

;MOVAL,0H

OUTDX,AL

POPDX

POPCX

PUSHAX;保存原速度,以供连续调速

PUSHCX

PUSHDX

RET

SHUCHUENDP

Init8259PROCNEAR;中断初始化

MOVDX,IO8259_0

MOVAL,13H

OUTDX,AL

MOVDX,IO8259_1

MOVAL,08H

OUTDX,AL

MOVAL,09H

OUTDX,AL

MOVAL,0FEH

OUTDX,AL

RET

Init8259ENDP

WriIntverPROCNEAR;中断向量表

PUSHES

MOVAX,0

MOVES,AX

MOVDI,20H

LEAAX,INT_0

STOSW

MOVAX,CS

STOSW

POPES

RET

WriIntverENDP

INT_0PROCNEAR

CLI

PUSHDX;中断服务

PUSHAX

MOVREDISPLAYFLAG,1

MOVDX,TCL

MOVAL,00000000B

OUTDX,AL

XORBX,BX

MOVDX,T0

INAL,DX

MOVBL,AL

INAL,DX

MOVBH,AL

MOVAX,Counter3

SUBAX,BX

MOVCounter3,BX

MOVCOUNTER1,AL

MOVDX,IO8259_0

MOVAL,20H

OUTDX,AL

MOVDX,T0;计数器T0装初值

MOVAX,0FFFFH

OUTDX,AL

MOVAL,AH

OUTDX,AL

POPAX

POPDX

STI

IRET

INT_0ENDP

LedDisplayP

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1