ImageVerifierCode 换一换
格式:DOC , 页数:38 ,大小:955KB ,
资源ID:1129461      下载积分:10 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-1129461.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于8086的直流电机速度控制设计说明书.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

基于8086的直流电机速度控制设计说明书.doc

1、武汉理工大学计算机控制技术课程设计说明书摘 要直流电动机在生产和生活中都有着广泛的应用,从我们的日常出行,到工业生产,随处可见直流电机的身影,直流电机具有控制简单,运行稳定,造价低廉等特点,因此随处可见。在众多应用过程中,都涉及到对直流电动机进行调速的部分。本次课程设计的背景就是在直流电机技术快速发展的今天,直流电机调速的方法也多种多样,运用最广泛的还是PWM脉宽调制的方法,通过调节输出波形的占空比来调节输出的电压。本次课程设计就是基于8086 CPU 这一经典的控制芯片,通过简单的按键操作,即可达到操作电机转速的目的。这里需要运用到可编程接口芯片8255。8255具有3组控制口,可以同时控制

2、键盘,数码管和直流电机,可以实现课程设计的要求。同时运用L298驱动芯片来更加稳定地控制直流电机。8255的输出口输出循环变化的高低电平组合来模拟PWM波形,从而达到调速的目的。关键字:PWM脉宽调制,8086,8255,L298,直流电动机目 录1 系统原理分析与设计12 硬件电路设计33 主要硬件原理介绍43.1 8086CPU介绍43.2 8255芯片介绍83.3 74LS48芯片介绍113.4 L298芯片介绍133.5 74LS373芯片介绍144 系统软件设计165 系统仿真运行206 心得体会26参考文献27附录1:protues仿真电路图28附录2 系统程序2936直流电机速度

3、控制1 系统原理分析与设计根据题目的要求,电路应该实现以下几个功能:利用7段数码管可以显示电机每分钟的转数,系统连接有按键,通过按键来控制电机的运行和停止,通过按不同的键来设置不同的速度,并在数码管上显示出来,然后,每个按键都对应一个键值,按不同的键会在显示速度的同时显示出所对应的键值。通过已知的功能可以大致画出系统的流程图,如图1-1。8位键盘主控芯片直流电机驱动电路4位7段数码管驱动芯片4位7段数码管直流电动机图1-1 系统流程图通过系统流程图,可以看到这里需要的几个主要芯片,主控芯片,数码管驱动芯片和直流电机的驱动芯片,主控芯片需要具备的功能是有3个外设接口,可以分别连接键盘,数码管和直

4、流电机,其中键盘为输入口,数码管和直流电机是输出口,通过查阅教材和资料,发现8255芯片可以做到以上几点,因为它有3个外设接口,只要输入不同的控制字,就可以实现各个口的分别输入和输出。而数码管驱动芯片,这里选择了74LS48的驱动芯片,因为题目中只需要显示数字,那么74LS48可以输入BCD码,然后输出7个高低电平来控制数码管显示相应的数字,而我们知道8255的一个接口有8位,因此,余下的4位可以控制数码管的位选,这样就可以控制哪一位的数码管亮起了。而直流电机的驱动芯片选择了L298芯片,该芯片控制简单,输出电压稳定,还有一定的放大作用。这里需要说明的是,对于直流电机的调速,我选择的是PWM脉

5、宽调制的方法。通过调节输出不同占空比的矩形波来调节直流电机的速度。而要实现PWM脉宽调制,那么就要输出不同占空比的矩形波,这里通过8255的外设接口,输出不同比例组合的高低电平来模拟PWM波,具体原理是:我给定一个8为的高低电平组合,即为一个周期,而组合中高电平越多则占空比越大,直流电机转速越快,这样如果我让这个8位的高低电平组合循环执行左移或右移指令,那么在每一位的输出口上就会循环输出高低电平,而且这个占空比就是我给定的占空比,这样只需要一个输出接口就可以控制直流电机的转速了。2硬件电路设计根据前面的分析,绘制了电路图如图2-1:图2-1 硬件电路图如图所示,8086CPU工作在最小模式下,

6、16位地址线分时复用。而这里通过地址线构成了8255各个外设接口的地址,其中AD15,AD5为高电平,AD2和AD1来选择8255的外设端口因此有4种组合地址,这里为了保证8255的4个端口地址为偶地址。所以CPU的AD0与译码器的输出段Y4通过逻辑与的组合生成了8255的片选信号。因此最后8255的4个端口的值为8020H、8022H、8024H、8026H。而从图中可以看到我用了两个地址锁存器,因为8086工作在最小模式下,需要地址线和数据线分时复用,因此我通过锁存器将我设置好的地址锁存,来保证各个端口的地址的稳定性。8255芯片的A口连接的是键盘,因此A口是输入口,B口和C口分别连接了数

7、码管和直流电机,因此B口和C口是输出口,这样可以确定8255的控制字为10010000B,即90H。同时由于8255输出的高电平不足以驱动直流电机的正常运转。因此,这里加入了一个放大电路,放大输出信号后接到了L298的电压输入端。这就是大致的电路图的一个介绍和分析,后面会对每个芯片做一个简单的介绍。3主要硬件原理介绍3.1 8086CPU介绍Intel 8086是一个由Intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖。不久,Intel 8088就推出了,拥有一个外部的8位数据总线,允许便宜的芯片用途。它是以8080和8085(它与8080有组合语言上的原始码兼容性)的设计为

8、基础,拥有类似的寄存器组,但是数据总线扩充为16位。总线界面单元(Bus Interface Unit)透过6字节预存(prefecth) 的队列(queue)喂指令给执行单元(Execution Unit),所以取指令和执行是同步的,8086 CPU有20条地址线,可直接寻址1MB的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。为了便于对存储器进行存取操作,每一个存储单元都有一个惟一的地址与之对应,其地址范围用十进制表示为01048575,用十六进制表示为00000HFFFFFH。Intel 8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引

9、寄存器(包含了堆栈指标)。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。它提供64K 8 位元的输出输入(或32K 16 位元),以及固定的向量中断。大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。运算结果会储存在操作数中的一个。 Intel 8086有四个 内存区段(segment) 寄存器,可以从索引寄存器来设定。区段寄存器可以让 CPU 利用特殊的方式存取1 MB内存。8086 把段地址左移 4 位然后把它加上偏移地址。大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。尽管这样对组合语言而言大部分被接受(也甚至有用),可以完

10、全地控制分段,使在编程中使用指针 (如C 编程语言) 变得困难。它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。更坏的是,这种方式产生要让内存扩充到大于 1 MB 的困难。而 8086 的寻址方式改变让内存扩充较有效率。在这个系统中,8086作为整个系统的主控芯片,用来控制协调整个系统的工作如图所示就是仿真中的8086芯片的模型,这里隐藏了8086的VCC和GND两个引脚。如图3-1图3-1 8086管脚图1.数据总线D0D15 16位(8088仅8位),双向传输, 可分别使用其低8位或高8位,该总线与地址总线A0A15共用CPU引脚形成复用总线AD0AD1

11、5, 地址、数据分时传送。2.地址总线A0A1920位,单向,地址由CPU产生,用于寻址访问存储器单元或IO端口。A0A15与D0D15复用,A16A19与状态信号S3S6复用(A16/S3 A19/S6)。其中AD15AD0地址数据复用信号(标号216、39),双向,三态。 在总线周期的T1状态(地址周期)AD15AD0上出现的 是低16位的地址信号A15A0;在T3状态(数据周期)AD15AD0上出 现的是数据信号D15D0。作为分时复用管脚,因为既做地址信号,又做数据信号,因此是双向信号。 在总线周期的T1状态AD15AD0输出CPU所要访问的存储器或者I/O端口的地址; 而在总线周期的

12、T3状态,AD15AD0上出现的是CPU和存储器或I/O端口交换的数据。T2状态对于读周期和写周期来说AD15AD0上的状态是不同的: 在是读周期, AD15AD0要从CPU驱动(地址周期)切换为存储器或I/O端口驱动(数据周期),AD15AD0管脚需要在一个状态周期内维持高阻状态,以便不同总线驱动源的切换。如果是写周期,地址和数据信号都是由CPU驱动,所以CPU从T2开始便输出数据。T2T3都是数据周期。A19/S6A16/S3 (Address/Status):地址状态复用信号(标号3538),输出。 在总线周期的T1状态(地址周期)A19/S6A16/S3上出现的是地址的高4位。在T2T

13、4状态,A19/S6A16/S3上输出状态信息。3.控制信号 与CPU工作模式无关的信号有:BHE#、NMI、INTR、RD#、CLK、RESET、READY#、TEST#、MN/MX#、GND最小模式下控制信号M/IO#(Memory/Input and Output): 存储器或者I/O控制信号,输出,三态。M/IO#输出为高电平,指示CPU正在执行存储器访问指令, 进行和存储器之间数据交互; 如果为低电平,表示CPU正在执行I/O指令, 进行和I/O接口之间数据传输。为1时,CPU作存储器访问;为0时,CPU作端口访问。DT/R#(Data Transmit/Receive):数据驱动器

14、数据流向控制信号,输出,三态。在8086系统中,通常采用8286或8287作为数据总线的驱动器, 用DT/R#信号来控制数据驱动器的数据传送方向。当DT/R#1时,数据驱动器进行数据发送;DT/R#0时,数据驱动器进行数据接收。用于控制双向数据总线收发器的驱动方向。BHE#/S7(O):为0时,总线高字节允许传送;为1时,总线高字节禁止传送。BHE#控制对存储器按双字节输出时,高字节总线允许打开传送。即只给一个字地址,输出两个字节。S7备用。RD#(Read):读信号,输出,三态。RD#信号有效,表示CPU执行一个对存储器或I/O端口的读操作,在一个读操作的总线周期中,RD#在T2T3状态中有

15、效,为低电平。为0时,CPU作读操作。WR#:写信号,输出,三态。WR#信号有效,表示CPU执行一个对存储器或I/O端口写操作,在写操作总线周期中,WR#在T2T3状态中有效,为低电平。为0时,CPU作写操作;M/IO#,RD#, WR#组合成系统的存储器和端口的读写信号: MEMR#,MEMW#,IOR#,IOW#。高电平有效时,将地址存入外部地址锁存器。通常用RD#以及WR#信号控制存储器或I/O的读出和写入端。RD#和 WR#指出CPU当前进行的是读还是写操作, 它和M/IO#信号一起,指出当前进行的是存储器读、I/O读、存储器写、I/O写四种操作中的哪一种。RD#和WR#信号除了在T2

16、T3状态中有效外,还在TW(等待)状态有效。表4.2.2为对存储器或I/O的读写操作选择。表3-1 RD#,WR#,M/IO#对应真值表RD#WR#M/IO#对应的操作010I/O写操作011存储器写操作100I/O读操作101存储器读操作DEN#(Data Enable)(O):数据使能信号,输出,三态,低电平有效。 用于数据总线驱动器的控制信号。为0时,数据输出有效,与DT/R#配合,用于控制双向数据总线收发器的开与关。CPU的信号线上,特别是地址、数据、控制线上, 通常连接多个器件,也就是说, CPU的每根信号线要带多个负载,为增强其负载能力,通常在CPU的地址、 数据、控制线上设计驱动

17、器。因地址信号采用8282地址锁存器锁存,其本身具有较强的负载能力,所以不再另加驱动器。数据线驱动一般采用双向数据驱动器8286。DEN#用作对数据驱动器的使能。DEN#在存储器或I/O访问周期或中断响应周期都为低电平, 即为有效电平。如果是读周期或者中断响应周期,DEN#从T2状态中开始有效,一直到T4状态中结束;如果是写周期,则从T2状态的开始就是有效电平。在DMA方式时,DEN#被置为高阻状态。 ALE(Address Latch Enable)(O):地址锁存使能信号,输出,高电平有效。是用来作为地址锁存器的锁存控制信号。8086的AD15AD0是地址数据复用信号,地址信息仅在T1状态

18、有效,为了使地址信号在整个读写周期都有效, 通常要用ALE把地址信号锁存在地址锁存器当中为1时, 地址锁存允许,高电平有效时,控制将地址存入外部地址锁存器。NMI(Non-Maskable Interrupt):非屏蔽中断请求,输入,上升沿有效。NMI不受中断允许标志的影响。 当CPU检测到NMI有一个正沿触发的信号以后, CPU执行完当前指令便响应中断类型号为2的非屏蔽中断请求。为1时,(上升沿)产生不可屏蔽中断请求。非屏蔽中断是不受中断允许标志IF的影响的,不能用软件进行屏蔽。RESET复位信号,输入,高电平有效。 复位信号有效时,CPU结束当前操作并对标志寄存器FLAG 、IP、DS、S

19、S、ES及指令队列清零,并将CS设置为FFFFH。 当复位信号撤除时,(即电平由高变低时)CPU从FFFF0H开始执行程序。 这也是8086系统程序的起始地址,即开机后程序的起始位置。一般的8086系统,将系统程序固化在ROM中,ROM的地址应包含FFFF0H。READY(Ready):准备好信号,输入,高电平有效。为了CPU能和不同速度的存储器或I/O接口进行连接, 设计了READY信号。CPU在每个总线周期的T3状态对READY进行采样。 当READY信号有效时表示存储器或I/O准备好发送或接收数据。CPU执行典型的总线周期,在4个T状态内完成总线操作。 如果存储器或I/O的速度较慢,不能

20、与CPU的速度相匹配,可令READY为低。CPU在T3采样到READY为低电平以后,便在T3之后插入Tw, 延长读写周期,使CPU能和较慢速度的存储器或I/O接口相匹配。 为1时,被访问部件准备就绪;为0时,被访问部件未准备就绪。MN/MX#(Minimum/Maximum Mode Control):最大最小模式控制信号,输入。决定8086工作在哪种工作模式。如果MN/MX#1(+5V),CPU工作在最小模式。MN/MX#0(接地), CPU则工作在最大模式。3.2 8255芯片介绍8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编

21、程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部 分、控制部分。1与CPU连接部分根据定义,8255能并行传送8位数据,所以其数据线为8根D0D7。由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0A1。此外CPU要

22、对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。各信号的引脚编号如下:(1)数据总线DB:编号为D0D7,用于8255与CPU传送8位数据。(2)地址总线AB:编号为A0A1,用于选择A、B、C口与控制寄存器。(3)控制总线CB:片选信号、复位信号RST、写信号、读信号。当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。2与外设接口部分根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制2

23、4路开关。各通道的引脚编号如下:(1)A口:编号为PA0PA7,用于8255向外设输入输出8位并行数据。(2)B口:编号为PB0PB7,用于8255向外设输入输出8位并行数据。(3)C口:编号为PC0PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。3控制器8255将3个通道分为两组,即PA0PA7与PC4PC7组成A组,PB0PB7与PC0PC3组成B组。如图7.5所示,相应的控制器也分为A组控制器与B组控制器,各组控制器的作用如下:(1)A组控制器:控制A口与上C口的输入与输出。(2)B组控制器:控制B口与下C口的输入与输出。在这个系

24、统中8255起到了控制各个接口芯片的作用,它的作用是不可替代的。如图3-2即为仿真系统中的8255管脚图图3-2 8255管脚图RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.RD:读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引

25、脚为低跳变沿时,即/WR产生一个低脉冲且/CS=0时,允许CPU将数据或控制字写入8255。D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。方式0基本输入输出方式;方式1选通输入/出方式;方式2双向选通输入/输出方式;PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 工作于三种方式中的任何一种;PB0PB7:端口B输入输出线,一个8位的I/O锁存器,

26、一个8位的输入输出缓冲器。 不能工作于方式二;PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。不能工作于方式一或二。A1,A0:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.当A1=0,A0=0时,PA口被选择;当A1=0,A0=1时,PB口被选择;当A1=1,A0=0时,PC口被选择;当A1=1.A0=1时,控制寄存器被选择。3.3 74LS48芯片介绍74LS48是一个译码

27、芯片,可以将BCD码转换成7段数码管的地址码,因此经常用来驱动4位或单独一位的7段数码管显示电路。输出高电平有效。举一个例子:假设需要输出数字“1”,2进制的编码为0001B,那么就将0001,4个电平分别送入74LS48的DCBA口,那么就输出了一个“0110000”的编码,如果不加入反相器就需要用共阴极的7段数码管,这样bc两段就点亮了,在数码管显示器上就显示一个“1”,如果用共阳极的7段数码管,还需要在74LS48的输出段加入反相器。74LS48可以译码015编码。这里的系统只需要输出数字,因此,完全可以满足要求,这里要注意的就是,74LS48只能完成一位7段数码管的驱动,因此,还需要产

28、生位选信号,选择相应的位,然后再显示相应的数,位选信号这里用8255来产生,因为这里只需要4位就可以显示数字,那么8255剩下的4位就可以产生位选信号,这样可以控制4位7段数码管的循环滚动显示。具体的译码对应表如表3-2表3-2 74LS48译码表十进制数输 入BI/RBO输 出LIRBIA3 A2 A1 A0a b c d e f g012345678910111213141511111111111111111ddddddddddddddd00000000111111110000111100001111001100110010001101010101010101011111111111111

29、1011011010111000100111110011100100011011111110100001011011010100110101000101010001010001110110011100011111011111110下面介绍74LS48的管脚图,如图3-3是仿真系统中74LS48的模型图图3-3 74LS48管脚图A- D译码地址输入端BI/RBO 消隐输入(低电平有效)/脉冲消隐输出(低电平有效)LT 灯测试输入端(低电平有效)RBI 脉冲消隐输入端(低电平有效)QA-QG段 输出相应的数码管段选信号48 为有内部上拉电阻的 BCD七段译码器/驱动器,共有 54/7448、54

30、/74LS48 两种线路结构型式,54适于工用,74适于商用,输出端(ag)为高电平有效,可驱动灯缓冲器或共阴极 VLED。当要求输出 015 时,消隐输入(BI)应为高电平或开路,对于输出为 0 时还要求脉冲消隐输入(RBI)为高电平或者开路。当BI为低电平时,不管其它输入端状态如何,ag均为低电平。当RBI和地址端(AD)均为低电平,并且灯测试输入端(LT)为高电平时,a g为低电平,脉冲消隐输出(RBO)也变为低电平。当BI 为高电平或开路时,LT为低电平可使ag均为高电平。因此,本电路中LT,BI,RBI均不需要因此置高电平。3.4 L298芯片介绍L298芯片是用来驱动直流电动机的。

31、L298是SGS公司的产品,内部包含4通道逻辑驱动电路。L298可以直接对电机进行控制,无需隔离电路通过改变控制端的电平即可对电机执行正反转,停止的操作,非常方便,异能满足直流减速电机的大电流要求。这里我用到了L298的一个输入输出端,来驱动一台电机。下面给出在系统仿真中L298的管脚图,如图3-4。图3-4 L298管脚图VCC:芯片电压。 VS:电机电压,最大可接50V。GND:共地接法。OUT1OUT4:输出端,接电机。其中OUT1和OUT2为一组,驱动一个电机,OUT3和OUT4是一组,驱动另一个电机EN1、EN2:高电平有效,EN1、EN2分别为 IN1和IN2、IN3和IN4的使能

32、端。IN1 IN4:输入端,输入端电平和输出端电平是对应的。启用IN1和IN2是一组,IN3和IN4是一组。SENSA、SENSB:分别为内部两个H桥的电流反馈脚,不用时可以接地。了解了管脚的功能以后,可以知道不同的电平搭配可以控制不同的输出效果,从而控制电机的正反转和停止操作。具体的对应值如表3-3表3-3 L298控制真值表电机旋转方式控制端IN1控制端IN2控制端IN3控制端IN4M1正转高低/反转低高/停止低低/M2正转/高低反转/低高停止低低/在系统的电路中由于用不到SENSA,SENSB因此将它们都于GND相连,然后在VCC管脚加入4.5到7V的电压,用来驱动L298芯片,管脚VS

33、接到了放大后的PWM波形上,它用来驱动电机运转,这里我们只需要电机正转即可,而且这里只驱动一台电机,因此,IN1接高电平,IN2接低电平,IN3和IN4没有用到,因此悬空,相对应的,OUT1和OUT2接电机,OUT3和OUT4悬空。3.5 74LS373芯片介绍74LS373为三态输出的八 D 透明锁存器,共有 54S373 和 74LS373 两种线路。74LS373 的输出端 Q0Q7 可直接与总线相连。当三态允许控制端 OE 为低电平时,Q0Q7 为正常逻辑状态,可用来驱动负载或总线。当 OE 为高电平时,Q0Q7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响

34、。当锁存允许端 LE 为高电平时,O 随数据 D 而变。当 LE 为低电平时,Q 被锁存在已建立的数据电平。当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。在本次的系统中,OE端接地,LE端与8086CPU的ALE管脚相连,来达到地址锁存的目的。74LS373管脚图如图3-5所示图3-5 74LS373管脚图D0D7 数据输入端OE 三态允许控制端(低电平有效)LE 锁存允许端Q0-Q7为输出端74LS373真值表如表3-4所示。表3-4 74LS373真值表DnLEOEOnHHLHLHLLXLLQ0XXH高阻态4 系统软件设计这次编程的整体思路是先给定了82

35、55的控制字,然后设置好8255的各个端口的地址值,程序首先进行的任务就是扫描按键开关是否有动作,是否被按下,然后通过按下不同的按键开关,从PA口输入不同的高低电平的组合,然后程序对PA口输入的数据进行判断,若和对应的键值相等则跳转到对应的子程序。因为这里有8个按键,因此有9个按键的状态,分别为:没有开关按下,和开关07分别按下。因此需要编写8段子程序。这里对于没有开关按下的情况,就循环扫描键盘开关即可。8个子程序对应8个按键按下的状态。其中有三个控制键:START键SET键和CLEAR键,他们分别完成的任务是开始运转,停止,和停止并将显示器清零。对于这三个程序的编写需要和其他子程序分开,这里

36、的START,我就是让电动机全速的运转,并在显示上显示一个键值1,这里控制电机的PC口就输出一个全为1的PWM波,即让电机全速旋转。而对于SET,我就编写程序让PC口输出一个全0的排列,这样电动机就不再运转,并且在数码管显示器上显示一个键值2。而对于其他5个按键的编程则大同小异。以一个键值为7的键为例。要求再按下后,程序将PA口数据扫描进入寄存器,然后再执行相应子程序,在数码管上第一位显示数字,后三位显示转速。这里因为转速都是3位数,因此就空出一位来显示键值了,如例子中的键值为7,速度为500。因此就显示“7500”然后再在PC口输出相应的高低电平组合,这里500为额定转速,因此输出的是全1的

37、组合,这里要注意了子程序执行一次以后,要重新检查键值是否改变,因此这里需要重新扫描键盘,输入PA口的数据,然后在输出PC口和PB口的数据,这里要注意了,由于PC口要产生一个高低电平的PWM波,因此,需要端口高低电平的不断循环,因此当前的输出值需要送入另一个寄存器,然后用AL来存放其他端口的信息,其他端口内容输出结束以后,再将寄存器的内容返回给AL。如果不这样做,那么PC口会一直输出同一个值,这样不能达到调速的目的。同时还要注意一点,在IN和OUT指令中只能用DX和AL寄存器,因此在读取不同端口的值的时候,这几个寄存器内的内容是随时变化的。因此,每当我要给PC口输出波形的时候,都要重新赋值给AL

38、,这也是我使用其他寄存器的目的。下面给出具体的程序流程图和几段程序来具体分析题目的要求是如何达到的。8255送控制字,确定各口地址并锁存扫描键盘,是否有键按下键值是否改变返回调用开始显示数码按键0输出波形显示数码按键2输出波形显示数码按键1输出波形显示数码按键4输出波形显示数码按键6输出波形显示数码按键5输出波形显示数码按键3输出波形显示数码按键7输出波形程序流程图如图4-1否是是否是图4-1 程序流程图键盘扫描程序和子程序节选:键盘扫描并且跳转程序:KEY: MOV DX,A_PORT ;读取PA口的数据 IN AL,DX MOV BH,AL ;将PA口数据送入寄存器BH CMP BH,0F

39、FH ;比较PA口数据和给定键值,首先是均无按键按下 JE KEY ;跳转回去重新扫描 CMP BH,0FEH ;比较PA口数据是否和第一个按键按下是相同 JE ONE ;相同则跳转到ONE子程序 CMP BH,0FDH ;比较PA口数据是否和第二个按键按下是相同 JE TWO ;相同则跳转到TWO子程序 CMP BH,0FBH ;比较PA口数据是否和第三个按键按下是相同 JE THREE ;相同则跳转到THREE子程序 CMP BH,0F7H ;比较PA口数据是否和第四个按键按下是相同 JE FOUR ;相同则跳转到FOUR子程序 CMP BH,0EFH ;比较PA口数据是否和第五个按键按下

40、是相同 JE FIVE ;相同则跳转到FIVE子程序 CMP BH,0DFH ;比较PA口数据是否和第六个按键按下是相同 JE SET ;相同则跳转到SET子程序 CMP BH,0BFH ;比较PA口数据是否和第七个按键按下是相同 JE BEGIN ;相同则跳转到BEGIN子程序 CMP BH,7FH ;比较PA口数据是否和第八个按键按下是相同 JE CLEAR ;相同则跳转到CLEAR子程序ONE子程序举例:ONE: MOV CX,0FFFFH MOV AX,0FFFFH ;送PC口数据全为1的PWM波D1: MOV DX,C_PORT;向PC口传输数据 OUT DX,AX ROL AX,1

41、 ;将AX中数据左移,用来调节占空比 MOV CX,AX ;将AX中数据转入寄存器存储,以备调用 MOV DX,A_PORT ;扫描PA口的键盘信息 IN AL,DX MOV BH,AL CMP BH,0FEH JNZ KEY ;键值改变则跳转 MOV DX,B_PORT ;不改变则输出PB口数据送数码管显示 MOV AL,0E7H ;第一位显示7 OUT DX,AL MOV AL,0D5H ;第二位显示5 OUT DX,AL MOV AL,0B0H ;第三位显示0 OUT DX,AL MOV AL,70H ;第四位显示0 OUT DX,AL MOV AX,CX ;将左移后的数据送回AX寄存器

42、,继续循环 JMP D15 系统仿真运行将电路连接好后,首先需要设置8086的参数,这里简单介绍一下protues中8086芯片的参数设置,Program File中载入编写好的程序,这里是CA.com。然后设置时钟频率Clock Frequency,这里设置为10KHZ,这里需要重点说明的是下面的高级设置Advanced Properties。8086参数设置如图5-1图5-1 8086仿真参数设置高级设置有两种配置方法:配置方式1:采用配置方式需要设置internal memory size,program loading segment,BIN entry point,stop on int 3。如可设置内存(internal memory size)大小10000H,程序下载到内存段(program loading segmen

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922