课程设计任务书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-VREFVcc20Iout111lsbDI07Iout212DI16DI25Rfb9DI34DI416Vref8DI515DI614msbDI713ILE19WR218CS1WR12Xfer17U1DAC0832PS0IOWPS0IOWVCC数据总线数据总线2RR2R542A542AUout1234Motor+5V图二DAC0832的双极性输出在本次设计中,VREF取+5V,采用DAC0832的双极性输出。六、总体设计本次设计总体上可分为硬件设计部分与软件的编写部分,其中硬件部分又可细分为CPU组态的选择与连接;储存单元的地址分配,译码与线路连接;控制信号的产生;数据输入输出的接口设计;DAC0832的连接等。软件编写时又可分为数据的读取,数据处理以及数据输出三大部分。设计的整体框架如图三所示:图三设计的整体框架图七、详细设计—硬件部分1.8088最小组态的连接本次设计中,8088CPU采用最小组态的连接,由一片8088CPU芯片,一片时钟发生器芯片8284,3片地址锁存器芯片74LS373,一片双向总线驱动器芯片74LS245组成。如图四所示:其中,8284是专门为8088CPU提供时钟的,其频率由外接的石英晶体来决定,同时8284还提供给8088CPU复位的功能,其复位开关由RC放电电路连接8088CPU的低八位地址线与数据线公用,故在工作时必先将地址信号锁存,否则地址信号必然丢失。在74LS373中,将其/OE端接地,表示输出允许;LE端接8088CPU的ALE控制信号,配合完成地址锁存。3片74LS373的20个输出管脚组成了地址总线,与其他设备连接。74LS245为双向总线驱动芯片,其类似于在8088CPU数据端与数据总线加了一道单向通行的门,其开通与否及方向有8088CPU的/DEN及DT//R信号控制。该芯片一端连接CPU,另一端连接数据总线。除了数据总线及地址总线外,8088CPU最小组态还应引出控制总线,不过在本次设计中所实现的功能很简单,故只用引出/RD,/WR,IO//M三根控制线。总体设计硬件设计软件设计CPU组态的选择与连接控制信号的产生储存单元的地址分配,译码数据输入输出的接口设计数据输入数据处理数据输出DAC0832的连接2.控制信号的相应处理在实际的运用中,我们一般会较形象的运用/MEMR,/MEMW,/IOR,/IOW这四种控制信号,故需要一定的物理电路来实现逻辑变换,将从CPU引出的/RD,/WR,IO//M三个控制信号变为/MEMR,/MEMW,/IOR,/IOW,相应电路图如图五所示:RD32AD016LOC/WR29AD115QS0ALE25AD214QS1INA24AD313AD412S0,DEN26AD511S1DT/R27AD610S2M/IO28AD79AD88RQ/GT031AD97RQ/GT130AD106AD115AD124NMI17AD133INTR18AD142AD1539MN/MX33TEST23A16/S338READY22A17/S437A18/S536A19/S635CLK19RESET21BHE/S734U18086F/C13READY5EFI14CLK8CSYNC1PCLK2ASYNC15OSC12RESET10X117X216RDY14RDY26AEN13RES11AEN27U28284A02A13A24A35A46A57A68A79B018B117B216B315B414B513B612B711E19DIR1U374LS245D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U474LS373D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U574LS373D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U674LS373U715MHz10K+10uF..地址总线数据总线124VCC数据总线地址总线RDIO/MWRRDWR12AIO/M图四8088最小组态连接图123U1A74LS00456U1B74LS008910U1C74LS00111213U1D74LS0012U2A34U2B56U2C89U2D1011U2E1213U2FRDIO/MWRIORMEMRIOWMEMWIORMEMRIOWMEMW1234RDIO/MWR图五四个控制信号的产生图3.储存单元的地址分配,译码存储单元连接图如图六所示,/MEMR,/MEMW信号作用于2KRAM完成对其的读写操作,/MEMR作用于4KROM完成对其的读操作。2KRAM有11根地址线,4KROM有12根地址线。通过138译码器来产生片选信号,同时留出两个地址空间/PS0和/PS1用作I/O设备的地址,/PS0用作写I/O设备的地址,/PS1用作读/O设备的地址。地址分配的详情如下表所示:A15A14A13A12A11A10~A0一个可用地址2KRAMPS0PS14KROM1111111100000101011×全0~全1全0~全1全0~全1全0~全1C000H~C7FFHC800H~CFFFHD000H~D7FFHF000H~FFFFH其中需要注意的是,A19到A16四根地址线未参与译码,故给出的地址都只是物理地址的后16位(本应有20位物理地址),同时CPU重启后是从FFFF0H这个地址开始读程序的,故储存程序的4KROM的地址范围一定要包含这一地址即低16位地址应有FFF0H。在该储存单元中应为一跳转指令,跳到程序首部地址A08A17A26A35A44A53A62A71A823A922A1019E18G20W21D09D110D211D313D414D515D616D717U16116A08A17A26A35A44A53A62A71A823A922A1019A1121CE18OE/VPP20D09D110D211D313D414D515D616D717U22732地址总线地址总线A10--A0A11--A0数据总线数据总线2KRAM4KROMMEMRMEMWMEMRMEMWA1B2C3E14E25E36Y015Y114Y213Y312Y411Y510Y69Y77U374LS138A11A12A13A14A15A15--A11123APS0PS01234PS1PS1123A图六存储单元连接图4.DAC0832的连接DAC0832的连接图如图七所示,其采用单缓冲双极性输出,其I/O端口地址为/PS0,参照前面的地址分配表,/PS0的地址空间为C800H~CFFFH,为了方便后面编程,可令/PS0地址为C800H本次设计中DAC0832的单缓冲工作方式是使输入寄存器和DAS寄存器同时处于受控的锁存器状态,分别受到地址选中信号/PS0和外设写信号/IOW的控制。DAC0832的输入数据线直接与数据总线相连,DAC0832的双极性输出可参看前面所述Vcc20Iout111lsbDI07Iout212DI16DI25Rfb9DI34DI416Vref8DI515DI614msbDI713ILE19WR218CS1WR12Xfer17U1DAC0832PS0IOWPS0IOWVCC数据总线数据总线2RR2R542A542AUout1234Motor+5V图七DAC0832单缓冲双极性输出图5.数据输入接口设计系统通过读取8个开关的状态从而读取数据,为防止直接接入数据总线给DAC0832工作带来影响,在开关与数据总线之间加入了数据输入三态缓冲器74LS244,如图八所示:其输出端直接与数据总线相连,输入端连接在带有开关的电路中。开关闭合时,244的输入端接收到得是低电平信号,即代表二进制数0,同时发光二极管有电流流过发光。故在数据输入端,发光二极管亮代表输入数据0,暗代表输入数据为1。其中,外设读型号/IOR与外设地址选中信号/PS1相与产生一控制信号作用于244的数据输出允许端,用以打开或关闭数据传送通道。同/PS0一样,可令/PS1的地址为D000H,用以后面编程。数据总线数据总线PS1IORPS1IOR1A121A241A361A482A1112A2132A3152A4171Y1181Y2161Y3141Y4122Y192Y272Y352Y431G12G19U174LS244123AVCC12345678123图八通过244芯片读取用户输入的数值八、详细设计—软件件部分从前面可知极性输出时Uout=-VREF×D/256,式中D表示要输出给0832的数字,假设从244中我们读到用户设定的速度为Di(用补码表示),我们可知电机速度与Uout得对应关系为Uout=VREF时速度为500,Uout与转速成线形关系,故可得到Uout/VREF=Di/500,所以给0832输入的数字D可由Di表示,既:D=-Di×256/500其中500为最大转速绝对值,Di为用户输入转速,D为输出到0832的数值,据此关系可编写程序如下:DATASEGMENTOUTPORTEQU0C800H;