1、 一一 设计题目设计题目 函数发生器的设计函数发生器的设计 经过这段时间对微机原理及接口技术的相关学习, 利用所学的知识来设计一个函数发生 器,使其具有外部选择波形的功能。 二二 设计任务及需求分析设计任务及需求分析 a) 波形的产生方式:要求产生方波、正向锯齿波、负向锯齿波、三角波、阶梯波。 实现这个要求可以利用 8 位数模转换器 DAC0832。 在 8088 中编写相应可以产生所 需波形的程序,输出数字量给 DAC0832,利用 0832 的数模转换功能,输出相应的电信 号波形。使用一片 DAC0832 芯片,其他的各个输出波共用同一端口 Iout1。 b) 按键选择功能:波形编号为 0
2、4,通过按键选择产生相应的输出波形。 CPU 外围扩展可编程中断控制器 8259A 对外为中断进行管理。使用按键的方式, 将外部的按键连接在8259A的中断输入线IR0IR4上面, 分别对应相应的波形序号04, 按下按键, 由于在按键的一端皆有下拉电阻是终端输入端口的初始电平为低, 按下按键 之后,电平拉高,产生中断,为了减小按键抖动产生的误判,在程序中应改进行按键去 抖动的处理。 三三 总体设计方案总体设计方案 四四 具体具体方案选择和方案选择和硬件设计硬件设计 3.1 3.1 最大组态系统搭建最大组态系统搭建 参考微机原理、汇编与接口技术朱定华第 171 页 利用 8284 产生 CPU
3、所需要的 CLK、READY、RESET 信号。 该电路只利用石英晶体构成振荡器结合 8284 产生固定的时钟频率。 另外复位 RESET 电路中串联电容,具有滤波的作用。电路如下图: a)8088 外部时钟电路: 8088CPU 8259A中断控制 8255I/O 扩展 DAC0832 波形输出 按键输入 数码管输出 *该电路产生的 CLK 约为 4Mhz。 b)地址锁存器使用 74LS373,数据总线驱动器使用 74LS245,总线控制器使用 8288. 由于版面的问题详细电路图可以参见附录总图。 3.3.2 2 按键选择产生的波形类型按键选择产生的波形类型 方案方案 1:可以 CPU 的
4、 I/O 查询功能,将按键接到 CPU 的各个 I/O 端口,设定一个 扫描周期, 对端口上的电平变化信息进行查询和记录, 当端口上面出现低电平则说明有 按键被按下,根据硬件电路设定,不同的端口接不同的按键,这样就可以直到按下了几 号键,并产生对应的波形。 方案方案 2:利用中断来记录无不的按键动作。使用一片 8259A 将按键接到 8259A 的 IR0IR4,这样每一个不同的按键被按下时候, 触发对应引脚的中断, 实现按键选择 DAC 转换类型的选择。 若使用中断的方式, 就可以将各个按键对应的波形产生函数写在中断 服务程序中。 通过比较觉得使用 8259A 来扩展比较好,因为本身 I/O
5、 端口是有限的。使用外部 中断的扩展就可以节省不少空间。 再者使用中断的方式来做的话已不用频繁的进行端口 的扫描和电平比较。在思路上更简洁。 设计 8259A 的中断触发方式是上升沿有效,就必须外部实现每按键一次产生一个 上升沿。电路如下图所示,IR0IR7 引脚外连上拉电阻,没有按键的情况下固定为高电 平,一旦有按键按下时候,IRx 端变成低电平,当按键弹起之后 IRx 变成高电平,这样 在按键的过程中间就产生了上升沿,按键一次就可以触发一次对应的中断。 值得注意的是,在按键检测中,需要做消除抖动的处理。有因为 8259A 被设置成 为上升沿有效,若按一次键出现了好几次抖动,那么每次抖动就会
6、触发一次中断,这样 中断检测就出现了错误,因此在检测到中断(即检测到上升沿的时候) ,利用了电容对 按键两端进行滤波处理,是抖动产生的毛刺被平整。 8259A 基本与原理简介: D0D7 为 8259 与数据总线之间的通信端口,INT 为芯片与 CPU 的链接端口,当 IR0IR7 中有一个引脚接受到中断的触发信号,并且此时没有其他的中端正在被响应, 则 8259A 就向 CPU 的 INTR 端发出中断请求信号,等待 CPU 响应中断请求,CPU 在 一个机器周期的最后一个 T 才检测 INTR 线, 若发现哟中断信号且 IF 为 1 (中断开) , 则会响应中断。响应中断时候内部自动的关中断,发出中断响应信号。然后执行保留断 点, 获取终端服务程序的入口地址, 进行保护现场, 执行中断服务程序, 最后恢复现场, 返回到中断前的下一条指令。 硬件电路的设计如下图: *图中的 CS 端口连接在地址译码电路输出端口的 Y0 口上。 *若需要对功能进行扩展直接增加按键接口即可。 *按键上面并联电容起到硬件消除抖动的作用。根据电容的充放电时间: T=