ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:292.38KB ,
资源ID:9245231      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9245231.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(函数发生器1.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

函数发生器1.docx

1、函数发生器1二、函数发生器1的设计一、题义分析及解决方案1.1题义需求分析:需求分析:字号统一采用小四 根据题意函数发生器具有将现实世界的一些数字模型转化成计算机能表示和处理的波形的一种仪器,它能控制各种波形的顺序播放和有效调节波形频率和幅度的作用。因为波形要输出到示波器和通过开关的控制输入波形的播放,故需要输入/输出接口部件,计算机处理的是数字信号而示波器处理的是模拟信号,所以在输入/输出接口部件和示波器之间加一个数/模转换器,由于计算机处理和数模转换后的信号很弱,故还要看数/模转换器是否自带放大器,而波形的产生和相关波形的切换和控制调节频率通过相应的程序来实现。当然还要对控制这一系列有序执

2、行提出问题:各级标题按照模板要求进行修改一 .题义分析及解决方案1.题义需求分析2.解决问题方法及思路1) 硬件部分2) 软件部分1)函数选择开关量(输入设备接口) 2)怎样描述这四个函数波形 3)波形输入到输出的转换(即数/模转换) 4)波形的输出,怎样观察输出的波形,四种波形的切换1.2解决问题方法及思路硬件部分:根据题意要求及分析,本程序中用到的硬件器件为:数/模转换器选用National Semiconductor的DAC0832;选择8255A作为CPU与DAC0832之间的并行接口芯片,其中A口作为开关量的输入端。 软件部分:根据题义要求及分析,本程序中硬件实现部分为:程序采用循环

3、依次显示四组波段的方式。首先对8255A进行初始化,方式0,A口输入,显示过程中判断开关量是否有变化。若没有变化,则继续显示;若有改变,就重新判断要输出的波形。相应地,在程序中编制显示正弦波段、三角波段、锯齿波段和脉冲波段,由上述的判断结果,根据条件进行跳转。软件部分问题:波形幅度和频率问题。二、硬件设计2.1选择芯片:8255A8255A在本设计中的作用:它是把打入的数据锁存,8255A有3个8位端口PA,PB,PC。本设计只用到PA口中的一个8位数据输入锁存器,把通过开关装置打入的数据锁存,再由8255A通过数据总线传送到8086,由8086送到DAC0832的DI7DI0对其进行数模转换

4、,最后在示波器上显示波形。8255A的功能分析:它是一种通用的可编程并行I/O接口芯片,又称“可编程外设接口芯片”。8255A由4部分组成:数据总线缓冲器;三个8位端口PA、PB、PC;A组和B组的控制电路;读写控制逻辑。1) 数据总线缓冲器 :一个三态8位的双向缓冲器,用作8255A同系统数据总线相连是的缓冲部件。CPU通过执行输入/输出指令来实现对缓冲器发送或接受数据。8255A的控制字或状态字也是通过该缓冲器传送的。2) 端口A中有一个8位数据输入锁存器和一个8位输出锁存/缓冲器。3) A、B组控制电路:A组控制部件用来控制PA口和PC口的高4位,B组控制部件用来控制PB口和PC口的低四

5、位。4) 读写控制逻辑:用来管理数据信息,控制字和状态字的传送。 8255A的工作方式有3种:方式0、方式1、方式2。本设计只用到方式0,即基本输入/输出。在方式0下,每个口都作为基本的输入/输出口。C口的高四位和低四位以及A口、B口都可以独立地设计输入口或输出口。在方式0下,CPU可以采用无条件读写方式与8255A交换数据。本设计只用到了PA口作为数据输入。8255A的技术参数:与TTL完全兼容,采用40条引脚的双直插式封装,减少了系统器件数,提高了直流驱动能力。符号测试条件规范值单位最大最小输入低电平电压 VIL0.8-0.5V输入高电平电压 VIHVCC2.0V输出低电平电压(数据总线)

6、 VOLIOL=2.5mA0.45V输出低电平电压(外围端口) VOLIOL=1.7mA0.45V输出高电平电压(数据总线) VOHIOH=-400A2.4V输出高电平电压(外围端口) VOHIOH=-200A2.4V达林顿驱动电流 IOARREXT = 750VEXT = 1.5V-4.0-1.0mA电源电流 ICC120mA输入负载电流 IILVIN=VCC0V10A输出浮动电流 IOFLVOUT=VCC0.45V10A(表2-1)2.2选择芯片:数/模转换器DAC0832DAC0832在本设计中的作用:DAC0832是National Semiconductor生产的一款D/A(数字/模

7、拟)转换器,其采用CMOS工艺和R2RT形电阻解码网络, 转换结果为一对差动电流 I01和 I02输出。在本设计中主要用来将开关打入的数字信号转换为相应的模拟信号。DAC0832的功能分析:DAC0832是8位D/A转换器,转换周期为1s。它由8位输入锁存器、8位DAC寄存器、8位D/A转换电路组成。当ILE为高电平,CS为低电平,WR1为负脉冲时,在LE1产生正脉冲;LE1为高电平时,输入寄存器的状态随数据输入线状态变化,LE1的负跳变将输入数据线上的信息存入输入寄存器。当Xfer为低电平,WR2输入负脉冲时,则在LE2产生正脉冲;LE2为高电平时,DAC寄存器的输入与输出寄存器的状态一致,

8、LE2的负跳变,输入寄存器内容存入DAC寄存器。DAC0832的输出是电流型的。在微机系统中,通常需要电压信号,电流信号和电压信号之间的转换可由运算放大器实现。DAC0832的技术参数:DAC0832芯片采用CMOS工艺,四象限乘法型DAC,与微机兼容,数据输入能与双缓冲、单缓冲或直接通过三种方式工作。是一个8位D/A转换器,输入电平与TTL、CMOS兼容,单电源+5+15V工作,基准电压的范围为 10V,电流建立时间为1s,低功耗200mw,20引脚,双列直接式封装。 附图下标格式要统一,参看模板DAC0832芯片的内部原理图如下:(图2-2)2.3硬件总逻辑图及其说明硬件总逻辑图: (图2

9、-3)逻辑图说明I. DAC0832的IOUT与示波器红头相连;II. DAC0832的GND与示波器的黑头相连,即接地;III. DAC0832的CS片选与CS2相连;IV. 数字信号来源于开关量,输出于LF351,显示于示波器;V. 8255的CS片选与CS1相连;VI. 开关与8255A的PA口相连。三、控制程序设计 3.1控制程序设计思路说明A. 程序分为五个段落,分别是主程序、正弦波、三角波、锯齿波、脉冲波。B. 在每个“段落”中检查开关量是否有改变,有则切换到相应波形,无则循环显示本波段。C. 在开关中设置开关量:00h:锯齿波 01h:三角波 02h:正弦波 03h:脉冲波。D.

10、 四个波段循环切换显示。3.2程序流程图 主控流程图 锯齿波流程图 脉冲波流程图图(3-7)锯齿波波形图(3-8)三角波波形3.3控制程序 .MODEL TINY PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址, 也为DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_ID EQU 10EBH ;厂商ID号Device_ID EQU 8376 ;设备ID号 .STACK 100 .DATA IO_Bit8_BaseAddress DW ? msg0 DB BIOS不支持访问PCI $msg1 DB 找不到Star PCI9052板卡 $ms

11、g2 DB 读8位I/O空间基地址时出错$ MSG3 DB 按键有误,请检查!COM_ADD DW 00F3H ;控制口偏移量PA_ADD DW 00F0H ;PA口偏移量PB_ADD DW 00F1H ;PB口偏移量PC_ADD DW 00F2H ;PC口偏移量D_A DW 00E0H ;D_A转换的数据端口的偏移量zxb_data db 128,134,141,147,153,159,165,171 DB 177,183,188,194,199,204,209,214 DB 218,223,227,231,234,238,241,244 DB 246,248,250,252,253,255

12、,255,255 DB 128,121,115,109,103,96,90,84 DB 79,73,67,62,57,51,47,42 DB 37,33,29,25,21,18,15,12 DB 10,7,5,4,2,1,0,0BUFFER DW 10BUFFER1 DB 10BUFFER2 DB 10BUFFER3 DB 10flag db ? .CODE START: MOV AX,DATA MOV DS,AX NOP CALL InitPCI CALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址 MOV DX,COM_ADD MOV AL,90H ;PA

13、输入口,0方式 OUT DX,AL MOV DX,PA_ADD IN AL,DX MOV flag,AL R1: CMP FLAG,00h JNZ R2 CALL ZXB_HANSHU JMP R5 ;标志=00,则输出“正弦波”,输完后转至查看是否有按键 R2: CMP FLAG,01H JNZ R3 CALL SJB_HANSHU JMP R5 ;标志=01,则输出“锯齿波”,输完后转至查看是否有按键 R3: CMP FLAG,02H JNZ R4 CALL JCB_HANSHU JMP R5 ;标志=02,则输出“三角波”,输完后转至查看是否有按键 R4: CMP FLAG,03H JN

14、Z R5 CALL MCB_HANSHU ;标志=03,则输出“脉冲波”,输完后转至查看是否有按键 ;以下代码为查看是否有按键输入 R5: CALL IF_CHANGE T1: CMP AL,00H JNZ T2 MOV FLAG,AL JMP R1 ;若按键=00,则改标志flag=00,并显示波形 T2: CMP AL,01H JNZ T3 MOV FLAG,AL JMP R1 ;若按键=01,则改标志flag=01,并显示波形 T3: CMP AL,02H JNZ T4 MOV FLAG,AL ;若按键=02,则改标志flag=02,并显示波形 JMP R1 T4: CMP AL,03H

15、 JNZ T5 ;若按键=03,则改标志flag=03,并显示波形 MOV FLAG,AL JMP R1 T5: and al,0fh MOV AH,AL AND AL,03H MOV FLAG,AL MOV AL,AH AND AL,08H CMP AL,0 JNZ SAT JMP R1 SAT: MOV AL,AH AND AL,04H JNZ SUB1 JMP ADD1 SUB1: CMP FLAG,00H JNZ J1 mov al,buffer1 sub al,1 mov buffer1,al JMP R1 J1: CMP FLAG,01H JNZ J2 SUB BUFFER2,1

16、JMP R1 J2: CMP FLAG,02H JNZ J3 SUB BUFFER3,1 JMP R1 J3: SUB BUFFER,1 JMP R1 ADD1: CMP FLAG,00H JNZ JJ1 MOV AL,BUFFER1 ADD AL,1 MOV BUFFER1,AL JMP R1 JJ1: CMP FLAG,01H JNZ JJ2 ADD BUFFER2,1 JMP R1 JJ2: CMP FLAG,02H JNZ JJ3 ADD BUFFER3,1 JMP R1 JJ3: ADD BUFFER,1 JMP R1 ;正弦波子过程 ZXB_HANSHU PROC NEAR PUS

17、H AX LEA BX,ZXB_DATA MOV DX,D_A mov cx,5 b1: push cx MOV cx,32 MOV AL,-1 S1: INC AL PUSH AX XLAT OUT DX,AL CALL DELAY3 POP AX LOOP S1 MOV CX,32 S2: PUSH AX XLAT OUT DX,AL CALL DELAY3 POP AX DEC AL LOOP S2 MOV CX,32 MOV AL,32 S3: INC AL PUSH AX XLAT OUT DX,AL CALL DELAY3 POP AX LOOP S3 MOV CX,32 S4:

18、DEC AL PUSH AX XLAT OUT DX,AL CALL DELAY3 POP AX LOOP S4 pop cx loop b1 POP AX RET ZXB_HANSHU ENDP ;三角波 SJB_HANSHU PROC NEAR PUSH AX PUSH CX MOV DX,D_A MOV AL,0 MOV CX,5 SJ0: OUT DX,AL CALL DELAY5 INC AL CMP AL,0FFH JNZ SJ0 DEC AL SJ1: OUT DX,AL CALL DELAY5 DEC AL CMP AL,0 JNZ SJ1 LOOP SJ0 POP CX PO

19、P AX RET SJB_HANSHU ENDP ;锯齿波 JCB_HANSHU PROC NEAR PUSH AX PUSH CX MOV DX,D_A MOV CX,5 JJ: MOV AL,0 J0: OUT DX,AL CALL DELAY7 INC AL CMP AL,0FFH JNZ J0 LOOP JJ POP CX POP AX RET JCB_HANSHU ENDP ;脉冲波 MCB_HANSHU PROC NEAR PUSH AX push cx MOV DX,D_A MOV AL,0 MOV CX,50 M1: ADD AL,0FFH OUT DX,AL CALL DEL

20、AY3 SUB AL,0FFH OUT DX,AL CALL DELAY3 LOOP M1 pop cx POP AX RET MCB_HANSHU endp;- ;脉冲波的延时函数 DELAY1 PROC NEAR PUSH CX MOV CX,BUFFER D1: PUSH CX MOV CX,300 DELAY2: LOOP DELAY2 POP CX LOOP D1 POP CX RET DELAY1 ENDP ;- ;其他波的延时函数 DELAY3 PROC NEAR MOV CH,BUFFER1 D2: PUSH CX MOV CX,20 DELAY4: LOOP DELAY4 P

21、OP CX DEC CH JNZ d2 RET DELAY3 ENDP;- DELAY5 PROC NEAR PUSH CX MOV CH,BUFFER2 ADD CH,1 D3: PUSH CX MOV CX,2 DELAY6: LOOP DELAY6 POP CX DEC CH JNZ D3 POP CX RET DELAY5 ENDP;- DELAY7 PROC NEAR PUSH CX MOV CH,BUFFER3 ADD CH,1 D4: PUSH CX MOV CX,2 DELAY8: LOOP DELAY8 POP CX DEC CH JNZ D4 POP CX RET DELA

22、Y7 ENDP ;- InitPCI PROC NEAR MOV AH,00H MOV AL,03H INT 10H ;清屏 MOV AH,0B1H MOV AL,01H INT 1AH CMP AH,0 JZ InitPCI2 LEA DX,msg0 InitPCI1: MOV AH,09H INT 21H JMP Exit InitPCI2: MOV AH,0B1H MOV AL,02H MOV CX,Device_ID MOV DX,Vendor_ID MOV SI,0 INT 1AH JNC InitPCI3 ;是否存在Star PCI9052板卡 LEA DX,msg1 JMP In

23、itPCI1 InitPCI3: MOV DI,PCIBAR3 MOV AH,0B1H MOV AL,09H INT 1AH ;读取该卡PCI9052基地址 JNC InitPCI4 LEA DX,msg2 JMP InitPCI1 InitPCI4: AND CX,0FFFCH MOV IO_Bit8_BaseAddress,CX RET InitPCI ENDPModifyAddress PROC NEAR ADD COM_ADD,CX ADD PA_ADD,CX ADD PB_ADD,CX ADD PC_ADD,CX ADD D_A,CX RET ModifyAddress ENDPIF

24、_CHANGE PROC NEAR ; 读取控制开关的值,以便进行波形切换 PUSH DX MOV DX,PA_ADD IN AL,DX POP DX RETIF_CHANGE ENDPExit: MOV AH,4CH INT 21H END START 四、上机调试过程4.1硬件调试本设计用到的芯片有8255、0832还有G6区的八个开关,以及STAR ES598PCI,他们之间的连线情况如下: 8255的A0A1 -CPU的A1A2 8255的片选CS-片选芯片上的CS1DAC0832的CS-片选芯片上的CS2 8255的PA0-PA7-开关18;DAC0832的IOUT-示波器的红头相连

25、DAC0832的GND-示波器的黑头相连在基本确定了程序的框架和初步写出了源程序代码的情况下,按如上方式连线进行调试,刚开始由于程序本身的一些小问题导致无法对硬件的有效测试,后来通过逐步分解测试的方法进行测试,首先波动八个开关量的最低两位例如设置为00,在程序单步执行到语句IN AL, DX后通过观察“星研电子工作窗口”中AX的低八位数据来验证所读数据是否正确,结果发现第一次的00H 是正确的,因为程序是循环不断读取数据的结果后来开关量设为01读取的AL数据却仍然为00,不断的测试结果都是如此。后来在老师的建议下换了PCI卡后测试才正确,这说明有时并不是程序本身的问题,而是硬件出现了问题,因此

26、以后碰到类似的情况不要死钻牛角尖老或者不够自信总认为是自己的错误。4.2软件调试软件测试分以下几步:四种波形的正确输出调试波形的正确输出是设计的最基本要求,因此首先要保证波形输出的正确性,而对此的验证主要是通过依次调用相应的波形子函数来进行的,这一点通过四次调用不同的波形函数和通过对示波器波形的观察已经得到了确认。波形切换的测试因为波形切换的依据是开关量的设置,开关量最低两位负责波形的切换,00输出正弦波,01输出三角波,10输出锯齿波,11输出脉冲波,测试的过程也是通过设置不同的开关量进行的。必须注意的一点是第四位必须设为0,这在前面已经说明过。调试时很顺利,基本上实现了波形的任意切换。波形频率的测试这部分是本次设计最难的一部分,它经过了好几次的修正,刚开始是通过第三位控制加减频率,而频率的改变量的多少则是通过最后5位来确定的,变化范围只有0-31等32个层次,功能基本实现但不够灵活,所以后来放弃了这一思路,而改为通过第四位是否为一来调节,这样每按一次开关就相应的增一或减一,而且范围不受限制,真正实现了频率的改变。4.3联机调试调试分三步:A、每次调试,主程序都只调用一个波形函数,目的是确保每个波形能正确输出。B、在每个波形能正确输出的基础上,读取开关量的置进行波形切换,在读取8255A口的数据,通过

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1