三角波发生器设计报告.docx
《三角波发生器设计报告.docx》由会员分享,可在线阅读,更多相关《三角波发生器设计报告.docx(10页珍藏版)》请在冰豆网上搜索。
三角波发生器设计报告
计算机硬件技术课程设计
学院:
自动化工程学院
班级:
姓名:
学号:
同组人:
2015年1月
一、目的············································
二、内容············································
三、设计任务········································
四、方案选择及原理··································
五、所用器件········································
六、原理及结果图····································
七、流程图··········································
八、程序代码········································
九、设计中遇到的问题································
十、收获及体会····································
三角波发生器
一、目的
1、了解和掌握8086、DAC0832等接口芯片和示波器的原理和功能;
2、能用这些接口芯片构建一个简单的系统控制对象,
3、掌握接口电路的综合设计与使用;
4、通过自己动手,进一步了解计算机工作原理,接口技术,提高计算机硬件,软件综合应用能力,即对微机原理,接口技术,汇编语言程序设计进行综合训练。
2、内容
利用D/A设计一个三角波发生器,可利用按键改变其输出波形的幅值。
例如,可利用5个按键改变其输出波形的幅值,当按下按键时使D/A输出幅值从1V增加到5V。
三、设计任务
1、选用8086和适当的存储器及接口芯片完成相应的功能。
2、画出详细的硬件连接图。
3、画出软件流程图。
4、给出所有程序清单并加上必要注释。
5、完成设计说明书(列出参考文献,所用器件型号)。
四、方案选择及原理
D/A转换器产生各种波形的原理:
利用D/A转换器输出的模拟量与输入数字量成正比关系这一特点,将D/A转换器作为微机输出接口,CPU通过程序向D/A转换器输出随时间呈现不同变化规律的数字量,则D/A转换器就可输出各种各样的模拟量,如方波、三角波、锯齿波、正弦波等。
五、所用器件
CPU8086、地址锁存器74LS373、译码器74154、数/模转换器DAC0832
主要器件简介
8086功能简介
1.概述
Intel8086是一个由Intel于1978年所设计的16位微处理器芯片。
8086CPU有20条地址线,可直接寻址1MB的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。
为了便于对存储器进行存取操作,每一个存储单元都有一个惟一的地址与之对应,其地址范围用十进制表示为0~1048575,用十六进制表示为00000H~FFFFFH。
Intel8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。
资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。
它提供64K8位元的输出输入(或32K16位单元),以及固定的向量中断。
大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。
运算结果会储存在操作数中的一个。
Intel8086有四个内存区段(segment)寄存器,可以从索引寄存器来设定。
区段寄存器可以让CPU利用特殊的方式存取1MB内存。
8086把段地址左移4位然后把它加上偏移地址,8086的寻址方式改变让内存扩充较有效率。
2.CPU工作于最小模式中部分引脚信号定义
(1)AD15~AD0(AddressDataBus):
地址/数据总线,双向,三态。
这是一组采用分时的方法传送地址或数据的复用引脚。
根据不同时钟周期的要求,决定当前是传送要访问的存储单元或I/O端口的低16位地址,还是传送16位数据,或是处于高阻状态。
(2)(RD)读选通信号,三态,输出,低电平有效
信号低电平有效时,表示CPU正在进行读存储器或读I/O端口的操作
(3)(WR)写选通信号,三态,输出,低电平有效
信号有效时,表明CPU正在执行写总线周期,同时由信号决定是对存储器还是对I/O端口执行写操作
(4)(M/IO)存储器或I/O端口控制信号,三态,输出
信号为高电平时,表示CPU正在访问存储器,为低电平时,表示CPU正在访问I/O端口。
(5)INTR(InterruptRequest)可屏蔽中断请求信号,输入,电平触发或边沿触发,高电平有效
CPU在每条指令周期的最后一个时钟周期检测此信号,一旦检测到此信号有效,并且中断允许标志位IF=1时,CPU在当前指令执行完后,转入中断处理程序。
用STI指令,可使中断允许信号标志位IF置“1”,用CLI指令可使IF置“0”,从而可实现中断屏蔽。
3.8086指令系统
按功能分类,8086的指令共有六大类,它们是:
数据传送指令、算术运算指令、逻辑运算和移位指令、字符串处理指令、控制转移指令以及处理器控制指令。
常用指令简介:
(1)MOV传送指令(Move)
指令格式:
MOV 目的,源
指令功能:
将源操作数(一个字或一个字节)传送到目的操作数
(2)IN 输入指令(Input)
指令格式:
INAL,端口地址
或INAX,端口地址
INAL,DX;端口地址存放在DX寄存器中
或INAL,DX
指令功能:
输入指令用来从指定的外设寄存器取信息送入累加器。
(3)OUT 输出指令(Output)
指令格式:
OUTAL,端口地址
或OUTAX,端口地址
OUTAL,DX;端口地址存放在DX寄存器中
或OUTAL,DX
指令功能:
输出指令用来把累加器的内容送往指定的外设存储器
当端口地址大于FFH时,必须使用第二种寻址方式,即先将端口号送入DX寄存器,再执行操作。
(4)CMP 比较指令(Compare)
指令格式:
CMP 目的,源
指令功能:
两个操作数相减,不产生运算结果,仅影响标志,接着可用条件跳转指令决定程序去向
(5)JMP 无条件转移指令
指令格式:
JMP 目的
指令功能:
使程序无条件的转移到指定的地址去执行
74LS373功能简介
74LS373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8D触发器。
74LS373工作原理简述:
(1)1脚是输出使能(OE),是低电平有效,当1脚是高电平时,不管输入3、4、7、8、13、14、17、18如何,也不管11脚(锁存控制端,G)如何,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部呈现高阻状态(或者叫浮空状态);
(2)当1脚是低电平时,只要11脚(锁存控制端,G)上出现一个下降沿,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)立即呈现输入脚3、4、7、8、13、14、17、18的状态。
锁存端LE 由高变低时,输出端8位信息被锁存,直到LE 端再次有效。
当三态门使能信号OE为低电平时,三态门导通,允许Q0~Q7输出,OE为高电平时,输出悬空。
74154功能简介
74154为4线-16线译码器,当选通端(E1、E2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。
如果将E1和E2中的一个作为数据输入端,由ABCD对输出寻址。
A、B、C、D 译码地址输入端(低电平有效)
E1、E2 选通端(低电平有效)
0-15 输出端(低电平有效)。
DAC0832功能简介
DAC0832是CMOS工艺制造的8位单片D/A转换器,属于R-2RT型电阻网络的8位D/A转换器,建立时间150ms,为电流输出型,并且片内带输入数字锁存器。
DAC0832与89S52接成的是单缓冲方式,由于DAC0832是电流输出,而我们用的是模拟电压,在这种情况下,要将输出的电流转换成电压,转换电路接成同相电压输出形式。
引脚的功能定义
1、DI0—DI7:
8位数字量输入信号。
2、CS:
输入寄存器的选择信号,低电平有效。
3、WRI、WR2:
前者为输入寄存器的“写”选通信号,低电平有效。
后者为DAC寄存器的“写”选通信号。
4、XFER:
数据转移控制信号,用来控制WR2信号,低电平有效。
5、IOUTI:
电流输出引角1端,此电流输出端为是“1”的各位权电流汇集输出端。
当DAC寄存器全为“1”时,此电流最大,当DAC寄存器全为“0”时,此电流为“0”。
6、IOUT2:
电流输出引角2端,此电流输出端是逻辑电平为“0”的各位输出电流之和。
在数值上,IOUT,+IOUT2=常数。
7、Rfb:
反馈信号输入端,芯片内已连接有反馈电阻。
8、VREF:
基准电压输入端,可在-10V—+10V范围内选择。
9、AGND、DGND:
模拟地和数字地,为了防止串扰,系统的模拟地应共接与一点,系统字地汇于一点,然后两地再共接与一点。
10、VCC:
工作电源,可在+5V—+15V间选择。
六、原理及结果图
原理图
运行结果
七、流程图
八、程序代码
CODESEGMENT;代码段开始
ASSUMECS:
CODE;代码段定义
START:
MOVCX,256;计数器设为256,计数器大小与上升高度相等
MOVAL,00H;高度初始值为0
MOVDX,0000H;DAC0832地址为0000H
LOOP1:
OUTDX,AL;输出AL
MOVBX,125;延迟环节的计数器使用BX,延迟125个单位时间
DELAY1:
DECBX;BX自减1
JNZDELAY1;直到BX为0才延迟结束
INCAL;AL自加1
LOOPLOOP1;三角波上升过程的循环,256次后结束
MOVCX,256;计数器重设为256,开始AL下降
MOVAL,0FFH;AL为255
MOVDX,0000H
LOOP2:
OUTDX,AL;输出AL
MOVBX,125;延迟
DELAY2:
DECBX
JNZDELAY2
DECAL;AL自减1
LOOPLOOP2;三角波下降的循环,256次后返回上一段程序
JMPSTART;AL再次上升
CODEENDS;代码段结束
ENDSTART;整个程序结束
九、设计中遇到的问题
本次大作业中所用到的proteus仿真软件可以说是很熟悉了,只要的问题的如何在软件当中画出他的仿真电路图,根据在计算机硬件这门课程中学到的有关于cpu8086以及D/A数模转换的基础知识原理,在绘制仿真的过程中,在如何用键盘输入1-5V这个环节上可谓是下了蛮大功夫,在仿真的过程中实在不知道如何输入这一环节,为此和同学讨论了许久怎样实现这个功能,最后被网上一篇有关微机原理的内容点醒,于是用了5个开关分别接入1,2,3,4,5V,在仿真的过程可以接入1,2,3,4,5V,通过这样改变幅值。
而这CPU程序代码这一块,书上107页有实现三角波输出的具体代码段,主要是通过EMU8086仿真运行,在一番修改过后时间得到正确的代码,再转化成.exe格式放入8086中,最终实现整个设计的目的。
十、收获及体会
通过本次大作业的课程设计,通过自己的不断实践过程,对于我们所学习的计算机硬件方面的东西有了更深的了解,发现其实在我们当中许许多多的东西都用到了微机原理,而我们做课程设计就是在一样设计成品在实际运用到生活当中之前先在仿真实验当中验证它是可行的,是可以达到我们设计目的的,然后再把它投入到人类需求方面,现在越来越多的东西趋近于智能控制,而我们所要做的就是学会怎样让一种想法变成现实,敢想敢做才是这门课程开设的精髓。