微机原理课程设计-函数发生器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

二○一一~二○一二学年第一学期信息科学与工程学院自动化系课程设计计划书课程名称:班级:姓名:学号:指导教师:二○一一年十二月十一日一.设计题目函数发生器的设计经过这段时间对微机原理及接口技术的相关学习,利用所学的知识来设计一个函数发生器,使其具有外部选择波形的功能。二.设计任务及需求分析a)波形的产生方式:要求产生方波、正向锯齿波、负向锯齿波、三角波、阶梯波。实现这个要求可以利用8位数模转换器DAC0832。在8088中编写相应可以产生所需波形的程序,输出数字量给DAC0832,利用0832的数模转换功能,输出相应的电信号波形。使用一片DAC0832芯片,其他的各个输出波共用同一端口Iout1。b)按键选择功能:波形编号为0~4,通过按键选择产生相应的输出波形。CPU外围扩展可编程中断控制器8259A对外为中断进行管理。使用按键的方式,将外部的按键连接在8259A的中断输入线IR0~IR4上面,分别对应相应的波形序号0~4,按下按键,由于在按键的一端皆有下拉电阻是终端输入端口的初始电平为低,按下按键之后,电平拉高,产生中断,为了减小按键抖动产生的误判,在程序中应改进行按键去抖动的处理。三.总体设计方案四.具体方案选择和硬件设计3.1最大组态系统搭建参考《微机原理、汇编与接口技术》朱定华第171页利用8284产生CPU所需要的CLK、READY、RESET信号。该电路只利用石英晶体构成振荡器结合8284产生固定的时钟频率。另外复位RESET电路中串联电容,具有滤波的作用。电路如下图:a)8088外部时钟电路:8088CPU8259A中断控制8255I/O扩展DAC0832波形输出按键输入数码管输出*该电路产生的CLK约为4Mhz。b)地址锁存器使用74LS373,数据总线驱动器使用74LS245,总线控制器使用8288.由于版面的问题详细电路图可以参见附录总图。3.2按键选择产生的波形类型方案1:可以CPU的I/O查询功能,将按键接到CPU的各个I/O端口,设定一个扫描周期,对端口上的电平变化信息进行查询和记录,当端口上面出现低电平则说明有按键被按下,根据硬件电路设定,不同的端口接不同的按键,这样就可以直到按下了几号键,并产生对应的波形。方案2:利用中断来记录无不的按键动作。使用一片8259A将按键接到8259A的IR0~IR4,这样每一个不同的按键被按下时候,触发对应引脚的中断,实现按键选择DAC转换类型的选择。若使用中断的方式,就可以将各个按键对应的波形产生函数写在中断服务程序中。通过比较觉得使用8259A来扩展比较好,因为本身I/O端口是有限的。使用外部中断的扩展就可以节省不少空间。再者使用中断的方式来做的话已不用频繁的进行端口的扫描和电平比较。在思路上更简洁。设计8259A的中断触发方式是上升沿有效,就必须外部实现每按键一次产生一个上升沿。电路如下图所示,IR0~IR7引脚外连上拉电阻,没有按键的情况下固定为高电平,一旦有按键按下时候,IRx端变成低电平,当按键弹起之后IRx变成高电平,这样在按键的过程中间就产生了上升沿,按键一次就可以触发一次对应的中断。值得注意的是,在按键检测中,需要做消除抖动的处理。有因为8259A被设置成为上升沿有效,若按一次键出现了好几次抖动,那么每次抖动就会触发一次中断,这样中断检测就出现了错误,因此在检测到中断(即检测到上升沿的时候),利用了电容对按键两端进行滤波处理,是抖动产生的毛刺被平整。8259A基本与原理简介:D0~D7为8259与数据总线之间的通信端口,INT为芯片与CPU的链接端口,当IR0~IR7中有一个引脚接受到中断的触发信号,并且此时没有其他的中端正在被响应,则8259A就向CPU的INTR端发出中断请求信号,等待CPU响应中断请求,CPU在一个机器周期的最后一个T才检测INTR线,若发现哟中断信号且IF为1(中断开),则会响应中断。响应中断时候内部自动的关中断,发出中断响应信号。然后执行保留断点,获取终端服务程序的入口地址,进行保护现场,执行中断服务程序,最后恢复现场,返回到中断前的下一条指令。硬件电路的设计如下图:*图中的CS端口连接在地址译码电路输出端口的Y0口上。*若需要对功能进行扩展直接增加按键接口即可。*按键上面并联电容起到硬件消除抖动的作用。根据电容的充放电时间:T=R*C=10000*0.1/1000000=1ms如果消抖的延时时间可以增大电容,取在0.1~1uf之间,是充放电时间大于抖动时间即可。*另外按键消抖也可采用RS触发器来对按键进行消抖,电路如下图:GND14VCC28D011IR018D110IR119D29IR220D38IR321D47IR422D56IR523D65IR624D74IR725INT17INTA26SP/EN16CS1RD3CAS012WR2CAS113A027CAS215U148259INTRINTAIORIOWa0d0d1d2d3d4d5d6d712345678161514131211109RP110kvccS2SW-PBS1SW-PBS3SW-PBS4SW-PBS5SW-PBC?0.1ufC?0.1ufC?0.1ufC?0.1ufC?0.1uf开关闭合先一边,输出波形只改变一次,因此可以得到很好的方波。由于本设计中才用的时两点式的按键,而非才用此类单刀双掷开关,使用单稳态触发器消抖硬件选择上需要做更改,且电路硬件连接不方便,故采用电容消抖的方式。3.3数模转换电路设计采用DAC0832芯片对CPU给定的数字量惊醒数模转换后输出,由于输出的电压值和电流值比较小,很可能达不到外设的要求,于是先对DAC0832芯片的Iout1输出信号进行放大处理后再输出。DAC0832的基本原理如下:改芯片具有8路输入D0~D7分别连接在数据总线上面的d0~d7端口,芯片内部为具有统一参考点的8个并联支路,由于并联的关系使得每条之支路对应输出电路贡献电流的权值符合2进制编码,内部电路为T行电路,通过输出8为二进制数对每条支路的通断进行控制,于是得到的输出电流值也就是与二进制数对应的大小。当二进制数是0,则输出0V,当二进制数位256时输出值即为最大电流,可见DAC转换器的精度是Vref/256,当基准电压设定为+5V时,精度就是0.01953V.在该芯片的引脚中Iout1与Iout2互补,其和为一个常数。Cs为片选端口,在执行DA转换之前必须先通过地址译码器选中芯片,然后开启转换。Vref即为参考电压,在实际中常将它置于-10V~+10V之间。具体电路如下图:*图中给定的基准电压是+5V,故输出值的范围是0~+5V之间。*实际输出电压值经过LM324运放进行放大后从Aout端口输出。*由于DAC0832可以直接通过译码器选通因此没有在使用8255的扩展增加复杂度。3.4输出波形的代号显示方案1:使用8255外扩输出端口,有与在8259A和DAC0832的数据输入端口上都使用了数据总线来传送数据,为了不在各个外设上产生信号的错乱,利用一片8255能够很好的解决问题。方案2:直接使用输出寄存器74LS273。原因是考虑到对于总线输出端口的分时复用,8259A和DAC0832的数据输入端口都需Vcc20Iout111lsbDI07Iout212DI16DI25Rfb9DI34DI416Vref8DI515DI614msbDI713ILE19WR218CS1WR12Xfer17U7DAC0832VCCVCC-+DS1LM358R11.5KR21KR310KR54.7KR6RES4R410KAoutVCCGNDd0d1d2d3d4d5d6d7IOW+5要你与CPU交换数据,若不使用8255A作为I/O扩展,就只能使用分时复用的方式。因此在各个外围器件间使用输出的寄存器必不可少,因此为了是数码管常量并能够输出正确的数值,那么采用一个74LS273,便可以达到要求。经过比较,觉得方案一使用8255来外扩的数据传送更方便,对输出的控制更方便,因为在程序中需要在按键之后的到某一种波形的同时,保持LED数码管长时间输出固定值,不受D0~D7影响,因此才用8255的扩展方式方为上策。8255的CS端口连接在译码器的Y1端口,当按键被检测到以后,在程序中就选通8255,并将数据总线向上AD0~AD7并行写入到8255寄存器,然后有8255直通的方式同时驱动数码管点亮。在8255的输出端口外部使用了74ls273的寄存器,可以起到驱动的作用是的数码管亮度达到要求。电路设计如下:*CLR是清零端,接到高电平,那么寄存始终都不会执行清零。只将上一次输入的数据锁存。这样能够在改变输出值一次之后,使得在一次按键选择之后,一直在输出被选中的波形序号。*图中实际上是一个带小数点数码管,其原理同七段数码管。*8255才用方式0,只起到一个扩展和控制输出时间作用。3.5总体电路图(包含有最大组态电路)五.程序设计5.1程序设计思路1.在主函数中进行循环等待按键中断的产生,若有中断进入中断服务程序,记录按键编号,然后返回主函数。2.在主函数中对按键号码进行检测并调用对应的子函数产生相应的波形。3.若再次按键则可以选择其他的波形进行输出。每有按键则持续输出当前波形。这里在主函数中进行循环。按键编码:IR0对应方波;IR1对应正向锯齿波;IR2对应负向锯齿波;IR3对应三角波;IR4对应阶梯形波;IR5对应者退出选择。4.若在主函数中有按键5产生中断则直接推出主函数。5.在波形产生函数中只产生相应的数字量改变,并将它输出到DAC0832的输入端口。DAC0832执行转换并将其输出。6.在子函数只实现对应的数字量产生对应电压并将它送到DAC0832的输入端口。在子函数的开头向LED数码管送入当前波形的序号。S019MRDC7S13MWTC9S218AMWC8IORC13IOWC11AIOWC12INTA14IOB1CEN15DT/R4AEN6DEN16MCEPDE17CLK2ALE5U68288AD016A88AD115A97AD214A106AD313A115AD412A124AD511A133AD610A142AD79A1539A16/S338NMI17A17/S437INTR18A18/S536A19/S635RD32S0/DEN26WR/LOC29S1DT/R27HOLD31S2IO/M28HLDA30ALEQS025MN/MX33INAQS124SSO34TEST23CLK19READY22RESET21U18088OC1C111D31Q22D42Q53D73Q64D84Q95D135Q126D146Q157D177Q168D188Q19U274LS373OC1C111D31Q22D42Q53D73Q64D84Q95D135Q126D146Q157D177Q168D188Q19U374LS373OC1C111D31Q22D42Q53D73Q64D84Q95D135Q126D146Q157D177Q168D188Q19U474LS373G19DIR1A12B118A23B217A34B316A45B415A56B514A67B613A78B712A89B811U574LS24512345611128U1074LS30U9ORA1B2C3G2A4G2B5G16Y77Y69Y510Y411Y312Y213Y114Y015U1274LS138VCCVCCGND14VCC28D011IR018D110IR119D29IR220D38IR321D47IR422D56IR523D65IR624D74IR725INT17INTA26SP/EN16CS1RD3CAS012WR2CAS113A027CAS215U148259Vcc20Iout111lsbDI07Iout212DI16DI25Rfb9DI34DI416Vref8DI515DI614msbDI713ILE19WR218CS1WR12Xfer17U7DAC0832F/C13READY5EFI14CLK8CSYNC1PCLK

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功