8086微机应用DAC0832控制小直流电机转速的设计.docx
《8086微机应用DAC0832控制小直流电机转速的设计.docx》由会员分享,可在线阅读,更多相关《8086微机应用DAC0832控制小直流电机转速的设计.docx(10页珍藏版)》请在冰豆网上搜索。
8086微机应用DAC0832控制小直流电机转速的设计
课程设计任务书
2009~2010学年第1学期
一、设计题目
8086微机应用DAC0832控制小直流电机转速的设计
二、设计目的
巩固“微机原理”课程学过的知识,加强理论与实践的联系。
通过本课程设计,使学生初步了解8086系列微机系统的硬件设备,学会8086系列编程指令的基本功能。
三、设计内容与要求
1、内容
采用8086CPU构建微机系统,扩展4KEPROM和2K静态RAM作为存储系统,采用最小模式,利用DAC0832,编制程序输出双极性模拟电压驱动小直流电机,使电机能以不同转速正反向运行。
2、设计要求
(1)、查阅文献资料,了解DAC0832双极性电压输出控制原理,并在报告书中综述之。
(2)、设计系统的硬件连接原理图,对原理图加以说明。
(3)、画出程序框图,并说明。
(4)、编写应用程序,并注解程序。
(5)、提交课程设计说明书。
四、设计资料与参数
1、电机转速由8个按钮开关以补码形式给定输入,并以发光二极管形式显示出来。
电机的转速变化范围为反向500rpm~正向500rpm;
2、DAC0832双极性电压输出控制原理,控制小直流电机以不同转速运行。
3、小直流电机额定电压为5V。
电源:
5V由外部提供。
五、设计前准备
DAC0832双极性电压输出控制原理自学
DAC0832是电流形式输出,当需要电压形式输出时,必须外接运算放大器。
根据输出电压的极性不同,DAC0832又可分为单极性输出和双极性输出两种输出方式。
(1)单极性输出。
DAC0832的单极性输出电路如图一所示。
VREF可以接±5V或±10V参考电压,当接+5V时,输出电压范围是0V~-5V;当接-5V时,输出电压范围是0V~+5V;当接+10V时,输出电压范围是0V~-10V;当接-10V时,输出电压范围是0V~+10V。
若输入数字为0~255,则输出为:
Uout=-VREF×D/256。
式中D为输入DAC0832的十进制数,因为转换结果Ioutl接运算放大器的反相端,所以,式中有一个负号。
若VREF=+5V,输入数字为:
0~255时,Vout=-(0~4.98)V。
图一DAC0832的单极性输出
(2)双极性输出。
即在单极性电压输出的基础上,在输出端再加一级运算放大器,就构成了双极性电压输出。
通过运放A2将单向输出转变为双向输出。
由VREF为A2运放提供一个偏移电流,该电流方向应与A1输出电流方向相反,且选择R1=R3=2R2。
使得由VREF引入的偏移电流恰为A1输出电流的1/2。
因而A2的运放输出将在A1运放输出的基础上产生位移。
双极性输出电压与VREF及A1运放输出V1的关系是:
Uout=-(2U1+VREF)。
DAC0832的双极性输出电路如图二所示。
根据前面单极性输出表达式U1=-VREF×D/256,故Uout=-(2U1+VREF)=VREF×D/128-VREF
图二DAC0832的双极性输出
在本次设计中,VREF取+5V,采用DAC0832的双极性输出。
六、总体设计
本次设计总体上可分为硬件设计部分与软件的编写部分,其中硬件部分又可细分为CPU组态的选择与连接;储存单元的地址分配,译码与线路连接;控制信号的产生;数据输入输出的接口设计;DAC0832的连接等。
软件编写时又可分为数据的读取,数据处理以及数据输出三大部分。
设计的整体框架如图三所示:
图三设计的整体框架图
七、详细设计—硬件部分
1.8086最小组态的连接
本次设计中,8086CPU采用最小组态的连接,由一片8086CPU芯片,一片时钟发生器芯片8284,3片地址锁存器芯片74LS373,一片双向总线驱动器芯片74LS245组成。
如图四所示:
其中,8284是专门为8086CPU提供时钟的,其频率由外接的石英晶体来决定,同时8284还提供给8086CPU复位的功能,其复位开关由RC放电电路连接
8086CPU的低八位地址线与数据线公用,故在工作时必先将地址信号锁存,否则地址信号必然丢失。
在74LS373中,将其/OE端接地,表示输出允许;LE端接8086CPU的ALE控制信号,配合完成地址锁存。
3片74LS373的20个输出管脚组成了地址总线,与其他设备连接。
74LS245为双向总线驱动芯片,其类似于在8086CPU数据端与数据总线加了一道单向通行的门,其开通与否及方向有8086CPU的/DEN及DT//R信号控制。
该芯片一端连接CPU,另一端连接数据总线。
除了数据总线及地址总线外,8086CPU最小组态还应引出控制总线,不过在本次设计中所实现的功能很简单,故只用引出/RD,/WR,IO//M三根控制线。
2.控制信号的相应处理
在实际的运用中,我们一般会较形象的运用/MEMR,/MEMW,/IOR,/IOW这四种控制信号,故需要一定的物理电路来实现逻辑变换,将从CPU引出的/RD,/WR,IO//M三个控制信号变为/MEMR,/MEMW,/IOR,/IOW,相应电路图如图五所示:
图四8086最小组态连接图
图五四个控制信号的产生图
3.储存单元的地址分配,译码
存储单元连接图如图六所示,/MEMR,/MEMW信号作用于2KRAM完成对其的读写操作,/MEMR作用于4KROM完成对其的读操作。
2KRAM有11根地址线,4KROM有12根地址线。
通过138译码器来产生片选信号,同时留出两个地址空间/PS0和/PS1用作I/O设备的地址,/PS0用作写I/O设备的地址,/PS1用作读/O设备的地址。
地址分配的详情如下表所示:
A15A14
A13A12A11
A10~A0
一个可用地址
2KRAM
PS0
PS1
4KROM
11
11
11
11
000
001
010
11×
全0~全1
全0~全1
全0~全1
全0~全1
C000H~C7FFH
C800H~CFFFH
D000H~D7FFH
F000H~FFFFH
其中需要注意的是,A19到A16四根地址线未参与译码,故给出的地址都只是物理地址的后16位(本应有20位物理地址),同时CPU重启后是从FFFF0H这个地址开始读程序的,故储存程序的4KROM的地址范围一定要包含这一地址即低16位地址应有FFF0H。
在该储存单元中应为一跳转指令,跳到程序首部地址
图六存储单元连接图
4.DAC0832的连接
DAC0832的连接图如图七所示,其采用单缓冲双极性输出,其I/O端口地址为/PS0,参照前面的地址分配表,/PS0的地址空间为C800H~CFFFH,为了方便后面编程,可令/PS0地址为C800H
本次设计中DAC0832的单缓冲工作方式是使输入寄存器和DAS寄存器同时处于受控的锁存器状态,分别受到地址选中信号/PS0和外设写信号/IOW的控制。
DAC0832的输入数据线直接与数据总线相连,DAC0832的双极性输出可参看前面所述
图七DAC0832单缓冲双极性输出图
5.数据输入接口设计
系统通过读取8个开关的状态从而读取数据,为防止直接接入数据总线给DAC0832工作带来影响,在开关与数据总线之间加入了数据输入三态缓冲器74LS244,如图八所示:
其输出端直接与数据总线相连,输入端连接在带有开关的电路中。
开关闭合时,244的输入端接收到得是低电平信号,即代表二进制数0,同时发光二极管有电流流过发光。
故在数据输入端,发光二极管亮代表输入数据0,暗代表输入数据为1。
其中,外设读型号/IOR与外设地址选中信号/PS1相与产生一控制信号作用于244的数据输出允许端,用以打开或关闭数据传送通道。
同/PS0一样,可令/PS1的地址为D000H,用以后面编程。
图八通过244芯片读取用户输入的数值
八、详细设计—软件件部分
从前面可知双极性输出时Uout=VREF×D/128-VREF,式中D表示要输出给0832的数字,假设从244中我们读到用户设定的速度为Di(用补码表示),我们可知电机速度与Uout得对应关系为Uout=VREF时速度为500,Uout=-VREF时速度为-500,Uout与转速成线形关系,故可得到Uout/VREF=Di/500,所以给0832输入的数字D可由Di表示,既:
D=Di×128/500+128
其中500为最大转速绝对值,Di为用户输入转速,D为输出到0832的数值,据此关系可编写程序如下:
DATASEGMENT
OUTPORTEQU0C800H;0832的端口地址,输出数据
INPORTEQU0D000H;244的端口地址,读入数据
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVDX,INPORT
INAL,DX;从244读入用户设定转速
MOVDL,80H
IMULDL;Di乘以128(带符号的乘)
CWD
MOVDX,500
IDIVDX;Di乘以128除以500
ADDAX,80H;得到最后的D放入AX中
MOVDX,OUTPORT;输出给0832
OUTDX,AL
DELAY:
MOVCX,5000;延时一段时间后再循环
LOOP$
JMPSTART;循环采集给定速度并输出
CODEENDS
ENDSTART
注:
所有运算在计算机中都是通过补码进行的,最后的结果D一定为一正数,补码与原码相同,故可直接输出给0832
九、小结
通过本次课程设计,使我对8086微机的在整体上有了一个重新的认识,是我知道了一个微型的计算机系统是如何在一起协调而又高效的工作的。
在课堂上,我们学习的都是零散的知识,很少有时间能将整个所学的东西串起来好好体会,故自己对微机的工作原理还是停留在一个较为表象的认识上。
经过本次课程设计,我发现了许多自己以前不曾注意的问题,比如CPU重启后是从FFFF0H这个地址开始读程序的,故储存程序的ROM的地址范围一定要包含这一地址,这是我们在划分存储器地址单元时需要注意到这一问题;又比如外设与数据总线相连时必须要加接口芯片,仅仅在CPU与数据总线加接口芯片是不够的,要注意外设之间的相互影响等。
总之,本次课程设计对我来说是一次很好的对自己所学知识的检验,同时我也学会了更加细致,严谨的去分析问题,解决问题,这对我以后的学习生活都是大有裨益的。