1、课 程 设 计 任 务 书20092010 学年第 1 学期学 院: 信息科学与工程学院专业年级: 自动化 075 班课 程: 微机原理与应用指导教师: 柴琳学号: 7姓名: 王强一、设计题目8086 微机应用 DAC0832 控制小直流电机转速的设计二、设计目的巩固“微机原理”课程学过的知识,加强理论与实践的联系。通过本课程设计,使学生初步了解 8086 系列微机系统的硬件设备,学会 8086 系列编程指令的基本功能。三、设计内容与要求1、内容采用 8086CPU 构建微机系统,扩展 4K EPROM 和 2K 静态 RAM 作为存储系统,采用最小模式,利用 DAC0832,编制程序输出双极
2、性模拟电压驱动小直流电机,使电机能以不同转速正反向运行。2、设计要求(1) 、查阅文献资料,了解 DAC0832 双极性电压输出控制原理,并在报告书中综述之。(2) 、设计系统的硬件连接原理图,对原理图加以说明。(3) 、画出程序框图,并说明。(4) 、编写应用程序,并注解程序。(5) 、提交课程设计说明书。四、设计资料与参数1、电机转速由 8 个按钮开关以补码形式给定输入,并以发光二极管形式显示出来。电机的转速变化范围为反向 500 rpm正向 500rpm;2、DAC0832 双极性电压输出控制原理,控制小直流电机以不同转速运行。3、小直流电机额定电压为 5V。电源:5V 由外部提供。五、
3、设计前准备DAC0832 双极性电压输出控制原理自学DAC0832 是电流形式输出,当需要电压形式输出时,必须外接运算放大器。根据输出电压的极性不同,DAC0832 又可分为单极性输出和双极性输出两种输出方式。 (1) 单极性输出。DAC0832 的单极性输出电路如图一 所示。VREF 可以接5V 或10V 参考电压,当接5V 时,输出电压范围是 0V5V;当接5V 时,输出电压范围是 0V 5V;当接10V 时,输出电压范围是 0V10V ;当接10V 时,输出电压范围是 0V 10V。若输入数字为 0255 ,则输出为:Uout VREFD/256。式中 D 为输入 DAC0832 的十进
4、制数,因为转换结果 Ioutl 接运算放大器的反相端,所以,式中有一个负号。若VREF5V, 输入数字为:0255 时,Vout (04.98)V。图一 DAC0832 的单极性输出(2) 双极性输出。即在单极性电压输出的基础上,在输出端再加一级运算放大器,就构成了双极性电压输出。通过运放 A2 将单向输出转变为双向输出。由VREF 为 A2 运放提供一个偏移电流,该电流方向应与 A1 输出电流方向相反,且选择 R1=R3=2R2。使得由 VREF 引入的偏移电流恰为 A1 输出电流的 1/2。因而 A2 的运放输出将在 A1 运放输出的基础上产生位移。双极性输出电压与VREF 及 A1 运放
5、输出 V1 的关系是:Uout = (2U1+ VREF)。DAC0832 的双极性输出电路如图二所示。根据前面单极性输出表达式 U1 VREFD/256,故 Uout = (2U1+ VREF) = VREFD/128VREF图二 DAC0832 的双极性输出在本次设计中,VREF 取+5V,采用 DAC0832 的双极性输出。六、总体设计本次设计总体上可分为硬件设计部分与软件的编写部分,其中硬件部分又可细分为 CPU 组态的选择与连接;储存单元的地址分配,译码与线路连接;控制信号的产生;数据输入输出的接口设计;DAC0832 的连接等。软件编写时又可分为数据的读取,数据处理以及数据输出三大
6、部分。设计的整体框架如图三所示:总体设 计硬件设计软件设计CPU 组态的选择与连接控制信号的产生储存单元的地址分配,译码数据输入输出的接口设计数据输入数据处理数据输出DAC0832 的连接图三 设计的整体框架图七、详细设计硬件部分1.8086 最小组态的连接本次设计中,8086CPU 采用最小组态的连接,由一片 8086CPU 芯片,一片时钟发生器芯片 8284,3 片地址锁存器芯片 74LS373,一片双向总线驱动器芯片 74LS245 组成。如图四所示:其中,8284 是专门为 8086CPU 提供时钟的,其频率由外接的石英晶体来决定,同时 8284 还提供给 8086CPU 复位的功能,
7、其复位开关由 RC 放电电路连接8086CPU 的低八位地址线与数据线公用,故在工作时必先将地址信号锁存,否则地址信号必然丢失。在 74LS373 中,将其/OE 端接地,表示输出允许;LE端接 8086CPU 的 ALE 控制信号,配合完成地址锁存。 3 片 74LS373 的 20 个输出管脚组成了地址总线,与其他设备连接。74LS245 为双向总线驱动芯片,其类似于在 8086CPU 数据端与数据总线加了一道单向通行的门,其开通与否及方向有 8086CPU 的/DEN 及 DT/R 信号控制。该芯片一端连接 CPU,另一端连接数据总线。除了数据总线及地址总线外,8086CPU 最小组态还
8、应引出控制总线,不过在本次设计中所实现的功能很简单,故只用引出/RD,/WR,IO/M 三根控制线。2.控制信号的相应处理在实际的运用中,我们一般会较形象的运用/MEMR,/MEMW,/IOR,/IOW 这四种控制信号,故需要一定的物理电路来实现逻辑变换,将从 CPU 引出的/RD ,/WR ,IO/M 三个控制信号变为/MEMR,/MEMW,/IOR,/IOW,相应电路图如图五所示:RD32 AD0 16LOC/WR29 AD1 15QS0ALE25 AD2 14QS1INA24 AD3 13AD4 12S0,DEN26 AD5 11S1DT/R27 AD6 10S2M/IO28 AD7 9
9、AD8 8RQ/GT031 AD9 7RQ/GT130 AD10 6AD11 5AD12 4NMI17 AD13 3INTR18 AD14 2AD15 39MN/MX33 TEST23 A16/S3 38READY22 A17/S4 37A18/S5 36A19/S6 35CLK19RESET21 BHE/S7 34U1 8086F/C13 READY 5EFI14 CLK 8CSYNC1 PCLK 2ASYNC15 OSC 12RESET 10X117X216 RDY1 4RDY2 6AEN1 3RES11 AEN2 7U2 8284A02 A13A24 A35A46 A57A68 A79B
10、0 18B1 17B2 16B3 15B4 14B5 13B6 12B7 11E19 DIR1U374LS245D03 Q0 2D14 Q1 5D27 Q2 6D38 Q3 9D413 Q4 12D514 Q5 15D617 Q6 16D718 Q7 19OE1 LE11U474LS373D03 Q0 2D14 Q1 5D27 Q2 6D38 Q3 9D413 Q4 12D514 Q5 15D617 Q6 16D718 Q7 19OE1 LE11U574LS373D03 Q0 2D14 Q1 5D27 Q2 6D38 Q3 9D413 Q4 12D514 Q5 15D617 Q6 16D718
11、 Q7 19OE1 LE11U674LS373U715MHz10K+10uF.地地地地地地地地124VCC地地地地地地地地RDIO/MWRRDWR12AIO/M图四 8086 最小组态连接图12 3U1A74LS0045 6U1B74LS008910U1C74LS00111213U1D74LS001 2U2A3 4U2B5 6U2C89 U2D1011 U2E1213 U2FRDIO/MWRIORMEMRIOWMEMWIORMEMRIOWMEMW1234RDIO/MWR图五 四个控制信号的产生图3. 储存单元的地址分配,译码存储单元连接图如图六所示,/MEMR,/MEMW 信号作用于 2K R
12、AM 完成对其的读写操作,/MEMR 作用于 4K ROM 完成对其的读操作。2K RAM 有 11根地址线,4K ROM 有 12 根地址线。通过 138 译码器来产生片选信号,同时留出两个地址空间/PS0 和/PS1 用作 I/O 设备的地址, /PS0 用作写 I/O 设备的地址,/PS1 用作读/O 设备的地址。地址分配的详情如下表所示:A15 A14 A13 A12 A11 A10A0 一个可用地址2K RAMPS0PS14K ROM1 11 11 11 10 0 00 0 10 1 01 1 全 0全 1全 0全 1全 0全 1全 0全 1C000HC7FFHC800HCFFFHD
13、000HD7FFHF000HFFFFH其中需要注意的是,A19 到 A16 四根地址线未参与译码,故给出的地址都只是物理地址的后 16 位(本应有 20 位物理地址) ,同时 CPU 重启后是从FFFF0H 这个地址开始读程序的,故储存程序的 4K ROM 的地址范围一定要包含这一地址即低 16 位地址应有 FFF0H。在该储存单元中应为一跳转指令,跳到程序首部地址A08 A17A26 A35A44 A53A62 A71A823 A922A1019E18 G20 W21D0 9D1 10D2 11D3 13D4 14D5 15D6 16D7 17U1 6116A08 A17A26 A35A44
14、 A53A62 A71A823 A922A1019 A1121CE18 OE/VPP20D0 9D1 10D2 11D3 13D4 14D5 15D6 16D7 17U2 2732地地地地地地地地A10-A0 A11-A0地地地地地地地地2K RAM 4K ROMMEMRMEMWMEMRMEMWA1 B2C3E14 E25E36Y0 15Y1 14Y2 13Y3 12Y4 11Y5 10Y6 9Y7 7U374LS138A11A12A13A14A15A15-A1112 3APS0PS01234PS1PS1123A图六 存储单元连接图4. DAC0832 的连接DAC0832 的连接图如图七所示
15、,其采用单缓冲双极性输出,其 I/O 端口地址为/PS0,参照前面的地址分配表,/PS0 的地址空间为 C800HCFFFH,为了方便后面编程,可令/PS0 地址为 C800H本次设计中 DAC0832 的单缓冲工作方式是使输入寄存器和 DAS 寄存器同时处于受控的锁存器状态,分别受到地址选中信号/PS0 和外设写信号/IOW 的控制。DAC0832 的输入数据线直接与数据总线相连,DAC0832 的双极性输出可参看前面所述Vcc20Iout1 11lsbDI07 Iout2 12DI16DI25 Rfb 9DI34DI416 Vref 8DI515DI614 msbDI713ILE 19WR
16、2 18CS1WR1 2Xfer17U1 DAC0832PS0IOWPS0IOWVCC地地地地地地地地2RR2R54 2A54 2A Uout1234Motor+5V图七 DAC0832 单缓冲双极性输出图5. 数据输入接口设计系统通过读取 8 个开关的状态从而读取数据,为防止直接接入数据总线给DAC0832 工作带来影响,在开关与数据总线之间加入了数据输入三态缓冲器74LS244,如图八所示:其输出端直接与数据总线相连,输入端连接在带有开关的电路中。开关闭合时,244 的输入端接收到得是低电平信号,即代表二进制数 0,同时发光二极管有电流流过发光。故在数据输入端,发光二极管亮代表输入数据 0
17、,暗代表输入数据为 1。其中,外设读型号/IOR 与外设地址选中信号/PS1 相与产生一控制信号作用于 244 的数据输出允许端,用以打开或关闭数据传送通道。同/PS0 一样,可令/PS1 的地址为 D000H,用以后面编程。地地地地地地地地PS1IORPS1IOR1A1 21A2 41A3 61A4 82A1 112A2 132A3 152A4 171Y118 1Y2161Y314 1Y4122Y19 2Y272Y35 2Y431G 12G 19U1 74LS24412 3AVCC1234567812 3图八 通过 244 芯片读取用户输入的数值八、详细设计软件件部分从前面可知双极性输出时
18、Uout = VREFD/128 VREF,式中 D 表示要输出给 0832 的数字,假设从 244 中我们读到用户设定的速度为 Di(用补码表示),我们可知电机速度与 Uout 得对应关系为 Uout= VREF 时速度为 500,Uout= VREF 时速度为-500,Uout 与转速成线形关系,故可得到Uout/VREF=Di/500,所以给 0832 输入的数字 D 可由 Di 表示,既:D=Di128/500+128其中 500 为最大转速绝对值,Di 为用户输入转速,D 为输出到 0832 的数值,据此关系可编写程序如下:开始读取用户设定速度按公式转换成输出的数据0832 进行数模
19、转换成电压输出延时DATA SEGMENTOUTPORT EQU 0C800H ;0832 的端口地址,输出数据INPORT EQU 0D000H ;244 的端口地址,读入数据 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV DX,INPORT IN AL,DX ;从 244 读入用户设定转速MOV DL,80H IMUL DL ;Di 乘以 128(带符号的乘)CWDMOV DX,500IDIV DX ;Di 乘以 128 除以 500ADD AX,80H ;得到最后的 D 放入 AX 中MOV DX,OUTPORT ;输出给 0
20、832OUT DX,ALDELAY: MOV CX,5000 ;延时一段时间后再循环LOOP $JMP START ;循环采集给定速度并输出CODE ENDSEND START注:所有运算在计算机中都是通过补码进行的,最后的结果 D 一定为一正数,补码与原码相同,故可直接输出给 0832九、小结通过本次课程设计,使我对 8086 微机的在整体上有了一个重新的认识,是我知道了一个微型的计算机系统是如何在一起协调而又高效的工作的。在课堂上,我们学习的都是零散的知识,很少有时间能将整个所学的东西串起来好好体会,故自己对微机的工作原理还是停留在一个较为表象的认识上。经过本次课程设计,我发现了许多自己以前不曾注意的问题,比如 CPU 重启后是从FFFF0H 这个地址开始读程序的,故储存程序的 ROM 的地址范围一定要包含这一地址,这是我们在划分存储器地址单元时需要注意到这一问题;又比如外设与数据总线相连时必须要加接口芯片,仅仅在 CPU 与数据总线加接口芯片是不够的,要注意外设之间的相互影响等。总之,本次课程设计对我来说是一次很好的对自己所学知识的检验,同时我也学会了更加细致,严谨的去分析问题,解决问题,这对我以后的学习生活都是大有裨益的。