资源描述
题 目:基于8086的Proteus仿真波形发生器的设计目录
简介…………………………………………………………2
1.1.8086的介绍……………………………………………2
1.2.8086CPU的编程结构………………………………………3
1.3. 8086/8088CPU的两种工作模式………………………………4
2.Proteus仿真软件…………………………………………5
3.1. 8253芯片基本概述……………………………………5
3.2 8253引脚图……………………………………………6
3.3 主要功能模块单元………………………………………10
4 .0 译码器74LS138…………………………………………11
5.0 系统仿真电路图…………………………………………13
6.0 仿真波形图…………………………………………14
附录 代码………………………………………………15
参考文献…………………………………………………18
简介
《嵌入式硬件技术基础》以80x86微处理器为平台来阐述微机系统的组成和系统的接口技术,通过汇编语言将原理与应用联系起来,同时将开发嵌入式应用系统所需要的硬件基础知识进行了详细的阐述。《嵌入式硬件技术基础》可分为3个部分,第1部分主要介绍组成嵌入式应用系统功能部件的原理、结构,第2部分主要介绍硬件编程语言——汇编语言及其与C语言的混合编程,第3部分主要介绍嵌入式应用系统的典型接口芯片、接口技术,以及嵌入式应用系统软、硬件设计的基本方法。
8086的介绍
8086微处理器是Intel公司推出的第三代CPU芯片,它们的内部结构基本相同,都采用16位结构进行操作及存储器寻址,但外部性能有所差异,两种处理器都封装在相同的40脚双列直插组件(DIP)中。
2.8086微处理器的一般性能特点:
Ø 16位的内部结构,16位双向数据信号线;
Ø 20位地址信号线,可寻址1M字节存储单元;
Ø 较强的指令系统;
Ø 利用第16位的地址总线来进行I/O端口寻址,可寻址64K个I/O端口;
Ø 中断功能强,可处理内部软件中断和外部中断,中断源可达256个;
Ø 单一的+5V电源,单相时钟5MHz。
另外,Intel公司同期推出的Intel8088微处理器一种准16位微处理器,其内部寄存器,内部操作等均按16位处理器设计,与Intel8088微处理器基本上相同,不同的是其对外的数据线只有8位,目的是为了方便地与8位I/O接口芯片相兼容。
3.8086CPU的编程结构
编程结构:是指从程序员和使用者的角度看到的结构,亦可称为功能结构。
如图2-1所示是8086CPU的内部功能结构。
从功能上来看,8086CPU可分为两部分,即总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。
(1) 执行部件(EU)
功能:负责指令的执行。
组成:包括①ALU(算术逻辑单元)、②通用寄存器组和③标志寄存器等,主要进行8位及16位的各种运算。
(2) 总线接口部件(BIU)
功能:负责与存储器及I/O接口之间的数据传送操作。具体来看,完成取指令送指令队列,配合执行部件的动作,从内存单元或I/O端口取操作数,或者将操作结果送内存单元或者I/O端口。
组成:它由①段寄存器(DS、CS、ES、SS)、②16位指令指针寄存器IP(指向下一条要取出的指令代码)、③20位地址加法器(用来产生20位地址)和④6字节(8088为4字节)指令队列缓冲器组成。
图2-1 8086/8088CPU内部功能结构图
8086CPU的两种工作模式
为了适应各种使用场合,在设计8086CPU芯片时,就考虑了其应能够使它工作在两种模式下,即最小模式与最大模式。
所谓最小模式,就是系统中只有一个8086微处理器,在这种情况下,所有的总线控制信号,都是直接由8086CPU产生的,系统中的总线控制逻辑电路被减到最少,该模式适用于规模较小的微机应用系统。
最大模式是相对于最小模式而言的,最大模式用在中、大规模的微机应用系统中,在最大模式下,系统中至少包含两个微处理器,其中一个为主处理器,即8086/8086CPU,其它的微处理器称之为协处理器,它们是协助主处理器工作的。
与8086CPU配合工作的协处理器有两类,一类是数值协处理器8087另一类是输入/输出协处理器8089。
8087是一种专用于数值运算的协处理器,它能实现多种类型的数值运算,如高精度的整型和浮点型数值运算,超越函数(三角函数、对数函数)的计算等,这些运算若用软件的方法来实现,将耗费大量的机器时间。换句话说,引入了8087协处理器,就是把软件功能硬件化,可以大大提高主处理器的运行速度。
8089协处理器,在原理上有点象带有两个DMA通道的处理器,它有一套专门用于输入/输出操作的指令系统,但是8089又和DMA控制器不同,它可以直接为输入/输出设备服务,使主处理器不再承担这类工作。所以,在系统中增加8089协处理器之后,会明显提高主处理器的效率,尤其是在输入/输出操作比较频繁的系统中。
仿真工具--Proteus软件
Proteus 是一个基于ProSPICE混合模型仿真器的,完整的嵌入式系统软、硬件设计仿真平台。
ISIS——智能原理图输入系统,系统设计与仿真的基本平台;
VSM仿真单元——含混合模型仿真、VSM仿真、高级图形仿真(ASF)等;
ARES ——高级PCB布线编辑软件。
PROTEUS VSM的仿真方式:
n 交互式仿真- 检验用户所设计的电路是否能正常工作.
n 基于图表的仿真(ASF)-用来研究电路的工作状态及进行细节的测量.
n PROTEUS VSM中的仿真工具:
n 探针-直接布置在线路上,用于采集和测量电压/电流信号;
n 电路激励-系统的激励信号源;
n 虚拟仪器-用于定性分析电路的运行状况;
n 曲线图表-用于定量分析电路的参数指标。
8253基本概述
intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz) 8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。 执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
8253引脚图和内部结构及引脚定义
8253由以下几个部分组成:
(1 数据总线缓冲器(8位、三态、双向);
(2 读/写控制逻辑;
CS:片选信号,低电平有效;
RD:读信号,低电平有效;
WR:写信号,低电平有效
A1A0:端口选择信号
(3 三个通道( 0 ~ 2);
(4 一个控制寄存器;
8253内部可分为6个模块,每个模块的功能如下:
1. 数据总线缓冲器及数据总线D0~D7
2. 读/写控制逻辑及控制引脚
CS* A1 A0
I/O地址
读操作RD*
写操作WR*
0 0 0
0 0 1
0 1 0
0 1 1
40H
41H
42H
43H
读计数器0
读计数器1
读计数器2
无操作
写计数器0
写计数器1
写计数器2
写控制字
3. 控制字寄存器
在初始化编程时,CPU写入方式控制字到控制字寄存器中,用以选择计数通道及其相应的工作方式。
8253的控制字:
8253的工作方式也是有控制字来决定,其控制字意义如下
4. 计数通道0、计数通道1、计数通道2
3个计数通道内部结构完全相同。每个计数通道都由一个16位计数初值寄存器、一个16位减法计数器和一个16位计数值锁存器组成
计数初值存于预置寄存器,在计数过程中,减法计数器的值不断递减,而预置寄存器中的预置不变。输出锁存器用于写入锁存命令时,锁定当前计数值。
计数器的3个引脚说明:
(1)CLK时钟输入信号
在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1
(2) GATE门控输入信号
控制计数器工作,可分成电平控制和上升沿控制两种类型
(3) OUT计数器输出信号
当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号
8253有6种工作方式,由方式控制字确定
区分这6种工作方式的主要标志由3点:一是输出波形不同;二是启动计数器的触发方式不同;三是计数过程中门控信号GATE对计数器操作的控制不同。
1..方式0--低电平输出(GATE信号上升沿继续计数)
2.方式1--低电平输出(GATE信号上升沿重新计数)
3.方式2--周期性脉冲输出
4.方式3--周期性方波输出
OUT输出低电平,装入计数值n后,OUT立即跳变为高电平。如果当前GATE为高电平,则立即开始减“1”计数,OUT保持为高电平,若n为偶数,则当计数值减到n/2时,OUT跳变为低电平,一直保持到计数值为“0”,系统才重新置入计数值n,实现循环计数。这时OUT端输出周期为n×CLK周期,占空比为1:1的方波序列:若n为奇数,则OUT端输出周期为n×CLK周期,占空比(n+1)/2 : (n-1)/2的近似方波序列。
5.方式4--单次负脉冲输出(软件触发)
6.方式5--单次负脉冲输出(硬件触发)
每种工作方式的设置过程类似:
⑴ 设定工作方式
⑵ 设定计数初值
〔 ⑶ 硬件启动 〕
⑷ 计数初值进入减1计数器
⑸ 每输入一个时钟计数器减1的计数过程
⑹ 计数过程结束
由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用与由任何一种微处理器组成的系统中。
当A1A0分别为00 01 10 11时分别选中三个通道和控制字寄存器在8088系统中,8088的A1A0分别与8253的A1A0相连在8086系统中,通常将8253的8位数据线与8086的低8位相连,即使用偶地址,所以8086的A2A1分别与8253的A1A0相连
Intel 8253是一片具有三个独立的16位计数器通道的可编程定时器/计数器芯片。每个通道都可以编程设定6种工作方式之一种;
由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用与由任何一种微处理器组成的系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器和单脉冲发生器等。
表8-4 控制功能表
CS
RD
WR
A1A0
功 能
0
1
0
0 0
写计数器0
0
1
0
0 1
写计数器1
0
1
0
1 0
写计数器2
0
1
0
1 1
写控制字寄存器
0
0
1
0 0
读计数器0
0
0
1
0 1
读计数器1
0
0
1
1 0
读计数器2
0
0
1
1 1
无操作
1
X
X
X X
禁止使用
0
1
1
X X
无操作
计数器(0 ~ 2)即三个计数器/定时器通道。每个通道包括:8位控制字寄存器、16位计数初值寄存器、减一计数器和输出锁存器。作定时器用:其CLK端上的输入脉冲应是标准的、精确的;作计数器用:对其CLK端上的脉冲计数,脉冲宽度可以不等。采用减一计数器,为0时,从OUT端上输出一个脉冲定时时间= 时钟脉冲周期X预置的计数初值 。
主要功能模块单元
(1)可编程定时/计数器模块8253
本电路模块可用于产生定时中断,实现实时时钟实验等,具体接法请参照实验。本电路端口地址为CS。
译码器74LS138
74LS138介绍:
138 为3 线-8 线译码器,共有 54/74S138和 54/74LS138 两种线路结构型式,其主
要电特性的典型值如下:
当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为
低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低
电平译出。
利用 G1、/(G2A)和/(G2B)可级联扩展成 24 线译码器;若外接一个反
相器还可级联扩展成 32 线译码器。
若将选通端中的一个作为数据输入端时,138 还可作数据分配器。
管脚图:
引出端符号:
A、B、C 译码地址输入端
G1 选通端
/(G2A)、/(G2B) 选通端(低电平有效)
Y0~Y7 译码输出端(低电平有效)
2.4.74HC373 概述:
74HC373是一款高速CMOS器件,74HC373引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC373遵循JEDEC标准no.7A。
74HC373是八路D 型锁存器,每个锁存器具有独立的D 型输入,以及适用于面向总线的应用的三态输出。所有锁存器共用一个锁存使能(LE)端和一个输出使能(OE)端。
74HC373包含八个具有三态输出的D 型透明锁存器。当LE为高时,数据从Dn输入到锁存器,在此条件下,锁存器进入透明模式,也就是说,锁存器的输出状态将会随着对应的D输入每次的变化而改变。当LE为低时,锁存器将存储D输入上的信息一段就绪时间,直到LE的下降沿来临。
当OE为低时,8个锁存器的内容可被正常输出;当OE为高时,输出进入高阻态。OE端的操作不会影响锁存器的状态。
系统仿真电路图
仿真波形图
程序代码:
CODE SEGMENT
ASSUME CS:CODE
IOCON EQU 8006H
IOA EQU 8000H
IOB EQU 8002H
IOC EQU 8004H
START:
MOV AL,90H
MOV DX,IOCON
OUT DX,AL
MOV AL,0H
MOV DX,IOA
IN AL,DX ;
MOV AH,AL
MOV BL,AL
START1:
NOP
NOP
MOV BH,00H
MOV AL,0H
MOV DX,IOA
IN AL,DX
CMP AL,BL
JZ JUDGMENT
MOV AH,AL
MOV BL,AL
JUDGMENT: ;按键选择
CMP AL,0FEH
MOV BH,06H ;数码管输出显示
JZ A
CMP AL,0FDH
MOV BH,5BH
JZ A
CMP AL,0FBH
MOV BH,4FH
JZ A
CMP AL,0F7H
MOV BH,66H
JZ A
CMP AL,0EFH
MOV BH,6DH
JZ A
CMP AL,0DFH
MOV BH,7DH
JZ A
CMP AL,0BFH
MOV BH,07H
JZ A
CMP AL,7FH
MOV BH,7FH
JZ A
MOV BH,00H
B:
NOP
NOP
MOV AL,0FFH
MOV DX,IOB
OUT DX,AL ;B 口输出
MOV AL,00H
MOV DX,IOC
OUT DX,AL ;C口输出
JMP START1
A:
NOP
NOP
MOV AL,AH
MOV DX,IOB
OUT DX,AL ;B口输出
MOV DX,IOC
MOV AL,BH
OUT DX,AL ;C口输出
MOV AL,AH
ROR AL,1
MOV AH,AL
CALL DELAY ;调用延时
JMP START1
CODE ENDS
DELAY PROC NEAR ;延时
PUSH AX
MOV AL,0
PUSH CX
MOV CX,AX
LOOP $
POP CX
POP AX
RET
DELAY ENDP
END START
参考文献
嵌入式硬件基础/王晓薇,周传生,李冶——北京:电子工业出版社
展开阅读全文