推荐基于8086的Proteus仿真波形发生器的设计.docx
《推荐基于8086的Proteus仿真波形发生器的设计.docx》由会员分享,可在线阅读,更多相关《推荐基于8086的Proteus仿真波形发生器的设计.docx(19页珍藏版)》请在冰点文库上搜索。
推荐基于8086的Proteus仿真波形发生器的设计
芜湖职业技术学院
题目:
基于8086的Proteus仿真波形发生器的设计
院系名称:
专业班级:
指导教师:
学生姓名:
学号:
完成时间:
2011年1月10日
简介…………………………………………………………2
1.1.8086的介绍……………………………………………2
1.2.8086CPU的编程结构………………………………………3
1.3.8086/8088CPU的两种工作模式………………………………4
2.Proteus仿真软件…………………………………………5
3.1.8253芯片基本概述……………………………………5
3.28253引脚图……………………………………………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(BusInterfaceUnit)和执行部件EU(ExecutionUnit)。
(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-18086/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布线编辑软件。
PROTEUSVSM的仿真方式:
⏹交互式仿真-检验用户所设计的电路是否能正常工作.
⏹基于图表的仿真(ASF)-用来研究电路的工作状态及进行细节的测量.
⏹PROTEUSVSM中的仿真工具:
⏹探针-直接布置在线路上,用于采集和测量电压/电流信号;
⏹电路激励-系统的激励信号源;
⏹虚拟仪器-用于定性分析电路的运行状况;
⏹曲线图表-用于定量分析电路的参数指标。
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*A1A0
I/O地址
读操作RD*
写操作WR*
000
001
010
011
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分别为00011011时分别选中三个通道和控制字寄存器在8088系统中,8088的A1A0分别与8253的A1A0相连在8086系统中,通常将8253的8位数据线与8086的低8位相连,即使用偶地址,所以8086的A2A1分别与8253的A1A0相连
Intel8253是一片具有三个独立的16位计数器通道的可编程定时器/计数器芯片。
每个通道都可以编程设定6种工作方式之一种;
由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用与由任何一种微处理器组成的系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器和单脉冲发生器等。
表8-4控制功能表
CS
RD
WR
A1A0
功能
0
1
0
00
写计数器0
0
1
0
01
写计数器1
0
1
0
10
写计数器2
0
1
0
11
写控制字寄存器
0
0
1
00
读计数器0
0
0
1
01
读计数器1
0
0
1
10
读计数器2
0
0
1
11
无操作
1
X
X
XX
禁止使用
0
1
1
XX
无操作
计数器(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端的操作不会影响锁存器的状态。
系统仿真电路图
仿真波形图
程序代码:
CODESEGMENT
ASSUMECS:
CODE
IOCONEQU8006H
IOAEQU8000H
IOBEQU8002H
IOCEQU8004H
START:
MOVAL,90H
MOVDX,IOCON
OUTDX,AL
MOVAL,0H
MOVDX,IOA
INAL,DX;
MOVAH,AL
MOVBL,AL
START1:
NOP
NOP
MOVBH,00H
MOVAL,0H
MOVDX,IOA
INAL,DX
CMPAL,BL
JZJUDGMENT
MOVAH,AL
MOVBL,AL
JUDGMENT:
;按键选择
CMPAL,0FEH
MOVBH,06H;数码管输出显示
JZA
CMPAL,0FDH
MOVBH,5BH
JZA
CMPAL,0FBH
MOVBH,4FH
JZA
CMPAL,0F7H
MOVBH,66H
JZA
CMPAL,0EFH
MOVBH,6DH
JZA
CMPAL,0DFH
MOVBH,7DH
JZA
CMPAL,0BFH
MOVBH,07H
JZA
CMPAL,7FH
MOVBH,7FH
JZA
MOVBH,00H
B:
NOP
NOP
MOVAL,0FFH
MOVDX,IOB
OUTDX,AL;B口输出
MOVAL,00H
MOVDX,IOC
OUTDX,AL;C口输出
JMPSTART1
A:
NOP
NOP
MOVAL,AH
MOVDX,IOB
OUTDX,AL;B口输出
MOVDX,IOC
MOVAL,BH
OUTDX,AL;C口输出
MOVAL,AH
RORAL,1
MOVAH,AL
CALLDELAY;调用延时
JMPSTART1
CODEENDS
DELAYPROCNEAR;延时
PUSHAX
MOVAL,0
PUSHCX
MOVCX,AX
LOOP$
POPCX
POPAX
RET
DELAYENDP
ENDSTART
参考文献
嵌入式硬件基础/王晓薇,周传生,李冶——北京:
电子工业出版社
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)