函数发生器1
- 格式:doc
- 大小:37.63 KB
- 文档页数:23
函数信号发生器原理函数信号发生器是一种能够产生各种波形信号的仪器,它在电子、通信、自动控制等领域有着广泛的应用。
在本文中,我们将介绍函数信号发生器的原理,包括其工作原理、主要组成部分以及应用特点。
首先,函数信号发生器的工作原理是基于模拟电路的运作。
它通过内部的振荡电路产生基本波形信号,如正弦波、方波、三角波等,然后通过信号调制电路对这些基本波形进行调制,生成各种复杂的波形信号。
这些波形信号可以用来测试、校准各种电子设备,也可以作为实验中的输入信号进行研究和分析。
函数信号发生器的主要组成部分包括振荡电路、信号调制电路和控制电路。
振荡电路是函数信号发生器的核心部分,它能够产生稳定的基本波形信号。
信号调制电路则负责对基本波形进行调制,生成各种复杂的波形信号。
控制电路则用来控制函数信号发生器的工作模式、频率、幅度等参数,使其能够满足不同的应用需求。
函数信号发生器具有频率范围广、精度高、稳定性好等特点。
它可以产生从几赫兹到数百兆赫兹的信号,并且频率精度可以达到非常高的水平。
这使得函数信号发生器在各种精密测量和实验研究中得到了广泛的应用。
除此之外,函数信号发生器还具有输出电阻低、波形失真小、调制灵活等特点。
它的输出电阻通常在数百欧姆到数千欧姆之间,能够适应各种负载的要求。
波形失真也非常小,能够满足对波形质量要求较高的应用。
同时,函数信号发生器的调制方式灵活多样,可以实现各种复杂的波形输出,满足不同应用的需求。
总的来说,函数信号发生器是一种功能强大、应用广泛的仪器,它在各种领域都有着重要的作用。
通过了解函数信号发生器的原理和特点,我们可以更好地应用和理解它,为相关领域的工作和研究提供更好的支持和帮助。
函数发生器课程设计实验报告实验名称:函数发生器课程设计实验目的:1.掌握函数发生器的基本原理和特性;2.熟悉常见函数发生器的操作方法;3.学会使用函数发生器进行实际测量与实验。
实验原理:函数发生器是一种可以产生不同频率和波形的电子仪器,常用于科学研究、电子工程实验和生产测试等。
函数发生器可以通过调节工作模式、频率、幅度和偏移量等参数来产生不同的电信号。
常见的波形包括正弦波、方波、锯齿波和三角波等。
实验器材与仪器:1.函数发生器2.示波器3.电源实验步骤:1.连接函数发生器、示波器和电源,确保电路连接正确并稳定。
2.打开函数发生器,并将频率设置为100Hz,幅度设置为5V。
3.在示波器上观察输出波形,并记录实际测量值。
4.将函数发生器的频率和幅度分别调节为500Hz和10V,重复步骤3。
5.将函数发生器的工作模式切换为方波,重复步骤3。
6.将函数发生器的工作模式切换为锯齿波,重复步骤3。
7.将函数发生器的工作模式切换为三角波,重复步骤3。
实验结果与数据分析:经过实验测量得到的数据如下:1.正弦波频率为100Hz,峰峰值为4.88V。
2.正弦波频率为500Hz,峰峰值为9.79V。
3.方波频率为100Hz,峰峰值为4.88V。
4.锯齿波频率为100Hz,峰峰值为4.88V。
5.三角波频率为100Hz,峰峰值为4.88V。
由实验数据可知,函数发生器能够按照设定参数的要求产生不同频率和波形的电信号。
通过调节频率和幅度等参数,可以控制输出信号的特性,满足实际需求。
同时,通过示波器对输出信号进行测量和观察,可以验证函数发生器的工作状态和输出波形的准确性。
实验总结:本次实验通过对函数发生器的使用,熟悉了其基本原理和操作方法,并能够进行实际测量与实验。
函数发生器作为一种常用的仪器设备,广泛应用于各个领域的科学研究和工程实践中。
掌握函数发生器的使用方法对于今后的学习和工作具有重要的意义。
在实验过程中,需要注意正确连接电路和设备,并确保信号的稳定性和准确性。
函数发生器实验报告函数发生器实验报告引言:函数发生器是一种用于产生各种波形信号的实验仪器。
它在科学研究、电子工程、通信技术等领域中有着广泛的应用。
本次实验旨在通过搭建函数发生器电路并进行一系列实验,探究函数发生器的工作原理和性能特点。
实验目的:1. 了解函数发生器的基本原理和组成结构;2. 掌握函数发生器的使用方法和参数调节技巧;3. 研究函数发生器在不同频率、幅度和波形下的输出特性。
实验仪器和材料:1. 函数发生器主机;2. 示波器;3. 电缆和连接线;4. 电阻、电容等元件。
实验步骤:1. 搭建函数发生器电路:根据实验要求,连接函数发生器主机和示波器,并确保电路连接正确稳定。
2. 调节函数发生器参数:通过函数发生器主机上的旋钮和按钮,调节频率、幅度、波形等参数,观察示波器上的波形变化。
3. 测量输出信号的频率和幅度:利用示波器上的测量功能,测量函数发生器输出信号的频率和幅度,并记录数据。
4. 观察不同波形下的输出特性:通过调节函数发生器主机上的波形选择按钮,观察并记录正弦波、方波、三角波等不同波形下的输出特性。
5. 研究函数发生器的调制功能:尝试使用函数发生器的调制功能,如调幅、调频、调相等,观察输出信号的变化,并记录实验结果。
实验结果与分析:1. 频率和幅度调节:通过调节函数发生器主机上的旋钮,我们成功地改变了输出信号的频率和幅度。
频率的变化范围从几赫兹到数百千赫兹,幅度的变化范围从几毫伏到数十伏特。
这些调节功能使得函数发生器在实际应用中具有较大的灵活性。
2. 波形输出特性:我们观察到函数发生器能够产生多种波形,如正弦波、方波、三角波等。
通过调节函数发生器主机上的波形选择按钮,我们可以轻松地切换不同的波形。
这为不同实验需求提供了便利。
3. 调制功能实验:通过使用函数发生器的调制功能,我们实现了信号的调幅、调频、调相等操作。
这些操作使得输出信号具有了更多的变化特性,扩展了函数发生器的应用范围。
1.引言1.1函数信号发生器的应用意义函数发生器一般是指能自动产生正弦波、三角波、方波及锯齿波、阶梯波等电压波形的电路或仪器。
根据用途不同,有产生三种或多种波形的函数发生器,使用的器件可以是分立器件也可以是集成电路。
为进一步掌握电路的基本理论及实验调试技术,本课题采用有集成运算放大器与晶体差分放大器共同组成的方波—三角波—正弦波函数发生器的设计方法。
具体方法是由比较器和积分器组成方波—三角波产生电路,比较器输出的方波经积分器得到三角波,三角波到正弦波的变换电路主要由差分放大器来完成。
差分放大器具有工作点稳定,输入阻抗高,抗干扰能力较强等优点。
特别是作为直流放大器时,可以有效地抑制零点漂移,因此可将频率很低的三角波变换成正弦波。
波形变换的原理是利用差分放大器传输特性曲线的非线性。
通过此次设计,我们能将理论知识很好的应用于实践,不仅巩固了书本上的理论知识,而且锻炼了我们独立查阅资料、设计电路、独立思考的能力1.2设计目的(1)能够根据功能要求查找相关的元器件的说明书。
(2)能够对元器件的说明书进行学习并掌握元器件的控制方法和时序要求。
(3)能够利用Multisim、protel仿真软件对电路进行仿真调试。
(4)能够按着规范的课程设计的格式完成课程设计报告。
1.3设计内容和要求设计一个函数发生器,能产生方波、三角波、正弦波信号。
用LED显示其频率和波形参数,播报其频率和波形参数。
信号频率可通过键盘输入并显示。
基本要求:1、输出频率范围:100HZ—1KHZ和1KHZ—10000HZ两档2、输出电压幅值可设,方波:VP-P=12V3、三角波:VP-P=1V4、正弦波:VP-P>1V整个控制电路在Multisim、Protel仿真软件中连接调示。
2.函数发生器的总方案及原理框图2.1 原理框图2.2 函数发生器的总方案函数发生器一般是指能自动产生正弦波、三角波、方波及锯齿波、阶梯波等电压波形的电路或仪器。
函数信号发生器使用方法
函数信号发生器是一种用于产生各种波形信号的电子设备。
以下是使用函数信号发生器的一般步骤:
1. 首先,确保函数信号发生器与所需设备(如示波器、测试测量仪器等)连接正确。
通常,函数信号发生器具有一个输出端口,您需要使用合适的电缆将其连接到设备上。
2. 打开函数信号发生器的电源,并设置所需的输出波形类型。
函数信号发生器可提供多种波形选择,如正弦波、方波、三角波、锯齿波等。
3. 设置所需的频率或周期。
函数信号发生器可根据需要产生不同频率的信号。
您可以使用仪器的旋钮或按键设置所需的频率或周期。
4. 调整幅度或幅值。
函数信号发生器还可以调整信号的幅度或幅值。
您可以根据需要增加或减少信号的振幅。
5. 可选地,您还可以设置相位或延迟。
某些函数信号发生器还可以调整信号的相位或延迟。
这可以用于对不同信号进行时间校准或调整。
6. 当设置完成后,您可以将函数信号发生器的输出端口连接到所需的设备上,并调整设备上的任何其他参数以适应您的实验需求。
7. 最后,您可以检查连接和调整设备以确保它们按预期工作。
使用示波器或其他测试测量仪器观察产生的信号,并根据需要对设置进行微调。
请注意,具体的函数信号发生器型号和使用方法可能会有所不同,因此最好参考所使用的设备的用户手册以获取详细说明。
函数信号发生器的使用函数信号发生器是一种用于产生各种类型信号的电子设备。
它可以产生正弦波、方波、三角波等各种波形,可以调节频率、幅度、相位等参数,广泛应用于电子、通信、测量等领域。
本文将介绍函数信号发生器的基本原理、使用方法以及注意事项。
一、函数信号发生器的基本原理函数信号发生器是由振荡器、放大器、滤波器等电路组成的。
其中振荡器是最核心的部分,它产生原始的信号波形。
振荡器的基本原理是利用反馈电路实现自激振荡。
反馈电路将一部分输出信号送回到输入端,形成正反馈,使得振荡器产生周期性的振荡。
振荡器的频率由反馈电路和外部电路共同决定。
函数信号发生器的放大器和滤波器主要是为了增强信号的幅度和滤除杂波。
放大器将振荡器产生的信号放大到足够的幅度,以便于后续的处理和使用。
滤波器则可以滤除信号中的高频成分和噪声,使得信号更加稳定和准确。
二、函数信号发生器的使用方法函数信号发生器的使用方法比较简单,主要是设置频率、幅度、相位等参数,选择波形类型,连接到被测电路中。
下面将详细介绍函数信号发生器的使用步骤。
1. 首先,将函数信号发生器接通电源,打开电源开关。
2. 选择所需要的波形类型,可以是正弦波、方波、三角波等。
3. 设置信号的频率。
一般情况下,函数信号发生器的频率范围比较广,可以设置从几赫兹到几百兆赫的频率。
频率的设置可以通过旋钮、按键或者数字输入方式完成。
4. 设置信号的幅度。
幅度是指信号的电压大小,一般可以设置为几毫伏到几十伏不等。
幅度的设置也可以通过旋钮、按键或者数字输入方式完成。
5. 设置信号的相位。
相位是指信号的时间延迟或提前量,一般可以设置为0度到360度不等。
相位的设置也可以通过旋钮、按键或者数字输入方式完成。
6. 连接函数信号发生器到被测电路中。
连接方式可以使用万用表、示波器等测试仪器,也可以直接连接到被测电路的输入端。
7. 调节信号的参数,观察被测电路的响应情况。
如果需要调节信号参数,可以反复进行上述步骤。
函数发生器设计(1)一、设计任务和指标要求1、可调频率范围为10Hz~100Hz 。
2、可输出三角波、方波、正弦波。
、可输出三角波、方波、正弦波。
3、三角波、方波、正弦波信号输出的峰-峰值0~5V 可调。
可调。
4、三角波、方波、正弦波信号输出的直流电平-3V~3V 可调。
可调。
5、输出阻抗约600Ω。
二、电路构成及元件参数的选择 1、振荡器、振荡器由于指标要求的振荡频率不高,由于指标要求的振荡频率不高,对波形非线性无特殊要求。
对波形非线性无特殊要求。
对波形非线性无特殊要求。
采用图采用图1所示的电路。
所示的电路。
同时同时产生三角波和方波。
产生三角波和方波。
图1 振荡电路振荡电路振荡电路根据输出口的信号幅度要求,可得最大的信号幅度输出为:根据输出口的信号幅度要求,可得最大的信号幅度输出为:V M =5/2+3=5.5V 采用对称双电源工作(±V CC ),电源电压选择为:,电源电压选择为: V CC ≥V M +2V=7.5V 取V CC =9V选取3.3V 的稳压二极管,工作电流取5mA ,则:,则: V Z =V DZ +V D =3.3+0.7=4V 为方波输出的峰值电压。
为方波输出的峰值电压。
OM Z CC Z 3Z Z V -V V -1.5V -V 9-1.5-4R ==700ΩI I 5»=()1AR4R2R1R3DZ DZRW2AR5R7CVozVosR6Vi+取680680ΩΩ。
取8.2K 8.2KΩΩ。
R 1=R 2/3=8.2/1.5=5.47(K Ω)取5.1K Ω。
三角波输出的电压峰值为:三角波输出的电压峰值为:V OSM =V Z R 1/R 2=4×5.1/8.2=2.489(V ) R 4=R 1∥R 2=3.14 K Ω取3K Ω。
Z Z V 4RW=8K 0.1~0.2I 0.15==W ´()()取10K Ω。
R 6=RW/9=10/9=1.11(K Ω)取1K Ω。
函数信号发生器工作原理函数信号发生器是一种可以产生不同形式的波形信号的电子设备。
它通常用于测试电路或设备的响应,及验证系统的可靠性和性能。
本文将介绍函数信号发生器的工作原理及其基本组成。
1、函数信号发生器的基本原理函数信号发生器使用内部电路产生信号波形,这些波形可以是正弦波、方波、三角波等,也可以是随时间变化的任意模拟波形信号,称为任意波形(Arbitrary Waveform)。
任意波形信号可以通过数字信号处理器(DSP)和相应的算法产生,可以控制其幅值、频率、相位、周期等参数,与旋钮手动调节产生的波形相比,任意波形信号更具有可重复性和精度。
任意波形成为了近年来函数信号发生器的重要特点之一。
函数信号发生器的工作原理基于模拟电路和数字技术的结合。
如下图所示,函数信号发生器的主要部件包括信号发生器主控板、波形发生控制板、数字信号处理器(DSP)和高精度数字模拟转换器(DAC)等。
其中波形发生控制板控制信号发生器主控板的输出电压幅值、频率、相位等参数,主控板再将这些参数转换成数字信号通过DSP和DAC产生电压波形输出到信号输出端。
2、函数信号发生器的基本组成(1)信号发生器主控板信号发生器主控板是函数信号发生器的核心控制板,它负责启动、控制和调节函数信号发生器的各种功能。
主控板内包含高速时钟电路、微控制器、输出放大器等部件,通过接收波形控制板发来的指令从而产生需要的波形输出并控制其电压幅值、频率、相位等参数。
(2)波形发生控制板波形发生控制板负责产生波形控制信号,这些信号包括电压幅值、频率、相位等参数。
它和信号发生器主控板通过数字接口连接,主控板根据波形控制板的指令产生相应的波形信号输出。
(3)数字信号处理器(DSP)数字信号处理器(DSP)是函数信号发生器中的重要部件,它用于实现任意波形信号的产生和输出。
DSP通过高精度滤波器将输入的数字信号处理成需要的波形信号,再将这些信号通过DAC转换成模拟信号输出到信号输出端。
函数发生器工作原理
函数发生器的工作原理如下:
1. 创建生成器对象:当函数中包含 `yield` 关键字时,调用这
个函数将返回一个生成器对象。
生成器对象是一个特殊的迭代器,具有保存函数执行状态的能力。
2. 初始调用函数:生成器对象第一次迭代时,会执行函数中的代码,直到遇到第一个 `yield` 关键字。
函数的运行会暂停,
并将 `yield` 后面的值作为迭代器的结果返回。
3. 暂停和继续执行:每次迭代生成器对象时,都会从上次暂停的位置继续执行函数中的代码,直到当前函数中的下一个
`yield` 关键字,然后再次返回结果并暂停。
4. 赋值和恢复状态:在生成器对象的每次迭代中,可以通过赋值运算符将一个新的值传递给 `yield`,这个值将成为生成器函数的结果。
在下一次迭代时,该值可以通过赋值语句重新获得。
5. 迭代结束:当生成器函数中的代码执行完毕,或者遇到
`return` 语句时,生成器对象将引发 `StopIteration` 异常,表明
迭代已经结束。
6. 迭代器的使用:生成器对象可以像普通的迭代器一样使用,例如在循环中逐个获取结果,或者使用内置的 `next()` 函数显
示获取下一个结果。
总结起来,函数生成器通过使用 `yield` 关键字在迭代的过程中保存函数的执行状态,允许暂停和继续执行函数,以及在每次迭代中返回结果。
这种机制使得生成器能够按需生成数据,并且节省了内存空间。
二、函数发生器1的设计一、题义分析及解决方案1.1题义需求分析:需求分析:根据题意函数发生器具有将现实世界的一些数字模型转化成计算机能表示和处理的波形的一种仪器,它能控制各种波形的顺序播放和有效调节波形频率和幅度的作用。
因为波形要输出到示波器和通过开关的控制输入波形的播放,故需要输入/输出接口部件,计算机处理的是数字信号而示波器处理的是模拟信号,所以在输入/输出接口部件和示波器之间加一个数/模转换器,由于计算机处理和数模转换后的信号很弱,故还要看数/模转换器是否自带放大器,而波形的产生和相关波形的切换和控制调节频率通过相应的程序来实现。
当然还要对控制这一系列有序执行提出问题:1)函数选择开关量(输入设备接口)2)怎样描述这四个函数波形3)波形输入到输出的转换(即数/模转换)4)波形的输出,怎样观察输出的波形,四种波形的切换1.2解决问题方法及思路硬件部分:根据题意要求及分析,本程序中用到的硬件器件为:数/模转换器选用National Semiconductor的DAC0832;选择8255A作为CPU与DAC0832之间的并行接口芯片,其中A口作为开关量的输入端。
软件部分:根据题义要求及分析,本程序中硬件实现部分为:程序采用循环依次显示四组波段的方式。
首先对8255A进行初始化,方式0,A口输入,显示过程中判断开关量是否有变化。
若没有变化,则继续显示;若有改变,就重新判断要输出的波形。
相应地,在程序中编制显示正弦波段、三角波段、锯齿波段和脉冲波段,由上述的判断结果,根据条件进行跳转。
软件部分问题:波形幅度和频率问题。
二、硬件设计2.1选择芯片:8255A8255A在本设计中的作用:它是把打入的数据锁存,8255A有3个8位端口PA,PB,PC。
本设计只用到PA口中的一个8位数据输入锁存器,把通过开关装置打入的数据锁存,再由8255A通过数据总线传送到8086,由8086送到DAC0832的DI7~DI0对其进行数模转换,最后在示波器上显示波形。
的功能分析:8255A.微机原理课程设计4由I/O接口芯片,又称“可编程外设接口芯片”。
8255A它是一种通用的可编程并行组的控制电路;读写控制B;A组和位端口PA、PB、PC8部分组成:数据总线缓冲器;三个逻辑。
同系统数据总线相连8位的双向缓冲器,用作8255A 1)数据总线缓冲器:一个三态的控制/输出指令来实现对缓冲器发送或接受数据。
8255A是的缓冲部件。
CPU通过执行输入字或状态字也是通过该缓冲器传送的。
位输出锁存/缓冲器。
A中有一个8位数据输入锁存器和一个82)端口组控制部件用位,BPA口和PC口的高4 A3)、B组控制电路:A组控制部件用来控制 PC口的低四位。
来控制PB口和读写控制逻辑:用来管理数据信息,控制字和状态字的传送。
4),即基本0、方式、方式12。
本设计只用到方式 8255A的工作方式有3种:方式0A口的高四位和低四位以及下,每个口都作为基本的输入/输出口。
C输入/输出。
在方式0可以采用无条件读写方式与CPU口都可以独立地设计输入口或输出口。
在方式0下,B口、口作为数据输入。
8255A交换数据。
本设计只用到了PA的技术参数:8255A条引脚的双直插式封装,减少了系统器件数,提高了直流驱完全兼容,采用与TTL40 动能力。
规范值单位符号测试条件最小最大V 0.8 -0.5 输入低电平电压 VILV 2.0 VCC 输入高电平电压 VIHV (0.45 数据总线) VOL IOL=2.5mA 输出低电平电压V IOL=1.7mA 输出低电平电压(0.45 外围端口) VOLV ) VOH IOH=-400μA输出高电平电压 2.4 (数据总线V 200μA) VOH IOH=- 外围端口2.4输出高电平电压( REXT = 750Ω-4.0 -1.0 达林顿驱动电流 IOAR mA VEXT = 1.5V 120 电源电流 ICC mA10±μAVIN=VCC~0VIIL输入负载电流.微机原理课程设计μA输出浮动电流 IOFLVOUT=VCC~0.45V ±10)(表2-12.2选择芯片:数/模转换器DAC0832DAC0832在本设计中的作用:DAC0832是National Semiconductor生产的一款D/A(数字/模拟)转换器,其采用CMOS工艺和R-2RT形电阻解码网络, 转换结果为一对差动电流 I01和 I02输出。
在本设计中主要用来将开关打入的数字信号转换为相应的模拟信号。
DAC0832的功能分析:DAC0832是8位D/A转换器,转换周期为1μs。
它由8位输入锁存器、8位DAC寄存器、8位D/A 转换电路组成。
当ILE为高电平,CS为低电平,WR1为负脉冲时,在LE1产生正脉冲;LE1为高电平时,输入寄存器的状态随数据输入线状态变化,LE1的负跳变将输入数据线上的信息存入输入寄存器。
当Xfer为低电平,WR2输入负脉冲时,则在LE2产生正脉冲;LE2为高电平时,DAC 寄存器的输入与输出寄存器的状态一致,LE2的负跳变,输入寄存器内容存入DAC寄存器。
DAC0832的输出是电流型的。
在微机系统中,通常需要电压信号,电流信号和电压信号之间的转换可由运算放大器实现。
DAC0832的技术参数:DAC0832芯片采用CMOS工艺,四象限乘法型DAC,与微机兼容,数据输入能与双缓冲、单缓冲或直接通过三种方式工作。
是一个8位D/A转换器,输入电平与TTL、CMOS兼容,单电源+5~+15V工作,基准电压的范围为± 10V,电流建立时间为1μs,低功耗200mw,20引脚,双列直接式封装。
DAC0832芯片的内部原理图如下:)2-2(图微机原理课程设计2.3硬件总逻辑图及其说明硬件总逻辑图:微机原理课程设计2-3)(图逻辑图说明与示波器红头相连;DAC0832的IOUTI.与示波器的黑头相连,即接地;GNDII.DAC0832的相连;CS2片选与CS的DAC0832III.微机原理课程设计IV.数字信号来源于开关量,输出于LF351,显示于示波器;V.8255的CS片选与CS1相连;VI.开关与8255A的PA口相连。
三、控制程序设计3.1控制程序设计思路说明A.程序分为五个段落,分别是主程序、正弦波、三角波、锯齿波、脉冲波。
B.在每个“段落”中检查开关量是否有改变,有则切换到相应波形,无则循环显示本波段。
C.在开关中设置开关量:00h:锯齿波 01h:三角波 02h:正弦波 03h:脉冲波。
D.四个波段循环切换显示。
3.2程序流程图主控流程图微机原理课程设计开始初始化825读口的数据并赋FLAFLAG=00H调用正弦波子函FLAG=01H调用三角波子函FLAG=02H调用锯齿波子函FLAG=03H调用脉冲波子函口数FLAG=AAL=00010203HFLAG=A低两A的第四=A的第三=0延时参数加延时参数减一微机原理课程设计开始AL=-1,BX指向ZXB_DA TACX=3AL+AXLAA送数据端调用延时函CX-1=0CX=3AL-AXLAA送数据端调用延时函CX-1=0CX=3AL=3AL+AXLAA送数据端调用延时函CX-1=0CX=3AL-AXLAA送数据端调用延时函CX-1=0返微机原理课程设计锯齿波流程图脉冲波流程图开始开始CX=5AL=CX=AL=送数据端A送数据端A调用延调用延AAL+AL=0FF AL=OFFH送数据端A调用延AL=CX=CX-CX-1=0CX=0返返回微机原理课程设计图(3-7)锯齿波波形图(3-8)三角波波形3.3控制程序PA_ADD DW 00F0H ;PA口偏移量 .MODEL TINYPCIBAR3I/O空间基地PB_ADD 口偏移量 EQU 1CH ;8位DW 00F1H ;PB址(PC_ADD DW 00F2H ;PC口偏移量它就是实验仪的基地址, 也为DMA & 32BIT RAM板卡上的8237提供基地址) D_ADW 00E0H ;D_A转换的数据端口的偏移量厂商Vendor_ID EQU10EBH ;ID号zxb_data db;设备ID号 Device_ID EQU 8376128,134,141,147,153,159,165,171.STACK DB100177,183,188,194,199,204,209,214DB .DATAIO_Bit8_BaseAddress DW ? 218,223,227,231,234,238,241,244DBDB 'BIOS不支持访问PCI msg0246,248,250,252,253,255,255,255 $'PCI9052DB msg1 '找不到Star 板DB128,121,115,109,103,96,90,84 卡 $'DB 空间基地址位读DB msg2'8I/O79,73,67,62,57,51,47,42DB 37,33,29,25,21,18,15,12 时出错$'MSG310,7,5,4,2,1,0,0' 按键有误,请检查!DB ' DBBUFFER COM_ADD 10DW 控制口偏移量;00F3H DW微机原理课程设计R4: CMP FLAG,03H DB 10 BUFFER1JNZ R5BUFFER2 DB 10,标志=03BUFFER3 DB 10CALL MCB_HANSHU ;,输完后转至查看是否有则输出“脉冲波”?flag db 按键.CODE ;以下代码为查看是否有按键输入R5: START: MOV AX,@DATACALL IF_CHANGEMOV DS,AXT1: CMP AL,00H NOPJNZ T2 CALL InitPCIFLAG,AL据根MOVCALLModifyAddress ;则改PCI提供的基地址,,;若按键='00' 将偏移地址转化为实地JMP R1 并显示波形标志flag=00',址T2: CMP AL,01H MOV DX,COM_ADDJNZ T3 0MOV AL,90H ;PA输入口,MOV FLAG,AL 方式, OUT DX,AL 若按键;='01' JMPR1flag=01',并显示波形则改标志MOV DX,PA_ADDT3: CMP AL,02H AL,DX INJNZ T4 MOV flag,AL,='02若按键 R1: CMP FLAG,00h MOV FLAG,AL;JNZ R2 并显示波形则改标志flag=02',R1ZXB_HANSHUCALLJMPT4: CMP AL,03H ,则输出标志;=00 JMP R5则改“正弦波”='03',,输完后转至查看是否有按键 JNZ T5 ;若按键R2: CMP FLAG,01H flag=03',并显示波形标志MOV FLAG,AL JNZ R3R1JMPSJB_HANSHUCALLT5: and al,0fh 标志; JMP R5 =01,则输出 MOV AH,AL ,输完后转至查看是否有按键“锯齿波”AND AL,03H R3: CMP FLAG,02H MOV FLAG,AL JNZ R4MOV AL,AH JCB_HANSHUCALLAND AL,08H =02标志; JMP R5 ,则输出CMP AL,0,输完后转至查看是否有按键“三角波”微机原理课程设计JMP R1 JNZ SATJMP R1正弦波子过程 SAT: MOV AL,AH;NEARZXB_HANSHU PROC AND AL,04HJNZ SUB1 AX PUSHLEA BX,ZXB_DATA JMP ADD1MOV DX,D_A CMP FLAG,00H SUB1: mov cx,5JNZ J1cxb1: push mov al,buffer1MOV cx,32 sub al,1MOV AL,-1mov buffer1,alS1: INC AL JMP R1AXPUSH J1: CMP FLAG,01HXLAT JNZ J2OUT DX,AL SUB BUFFER2,1 DELAY3 CALLJMP R1AX POP J2: CMP FLAG,02HS1 LOOPJNZ J3MOV CX,32 SUB BUFFER3,1AX S2: PUSH JMP R1XLATJ3: SUB BUFFER,1OUT DX,AL JMP R1DELAY3 ADD1: CMP FLAG,00H CALLAXPOP JNZ JJ1DEC AL MOV AL,BUFFER1S2 LOOPADD AL,1MOV CX,32 MOV BUFFER1,ALMOV AL,32JMP R1S3: INC AL JJ1: CMP FLAG,01HAXPUSH JNZ JJ2XLAT ADD BUFFER2,1OUT DX,AL JMP R1DELAY3 CALL FLAG,02HJJ2: CMPAX JNZ JJ3 POPS3 LOOPADD BUFFER3,1MOV CX,32 JMP R1 S4: DEC ALJJ3: ADD BUFFER,1微机原理课程设计PROC NEARPUSH AX JCB_HANSHUPUSH AX XLATPUSHOUT DX,AL CXCALL DELAY3MOV DX,D_APOP AXMOV CX,5LOOP S4pop cx JJ: MOV AL,0b1 J0: loopPOP AXOUT DX,ALDELAY7RETCALLZXB_HANSHU ENDPINC ALCMP AL,0FFHJNZ J0 ; 三角波LOOP JJ PROC SJB_HANSHU NEARPOP CX AX PUSHAXPUSHCXPOPMOV DX,D_A RETENDP MOV AL,0 JCB_HANSHU MOV CX,5SJ0:OUT DX,AL ;脉冲波 PROC NEARCALLDELAY5 MCB_HANSHUINC AL AX PUSHcxCMP AL,0FFH pushJNZ SJ0 MOV DX,D_AMOV AL,0 DEC ALOUTSJ1: DX,ALMOV CX,50M1: ADD AL,0FFH CALL DELAY5 OUT DX,AL DEC ALCALLCMP AL,0 DELAY3JNZ SJ1 SUB AL,0FFHOUT DX,AL LOOP SJ0POP CX DELAY3 CALLM1 AXPOP LOOPRETpop cxPOP AX SJB_HANSHU ENDPRETendpMCB_HANSHU 锯齿波;微机原理课程设计MOV CX,2;------------------------------------DELAY6DELAY6: LOOP --------------------POP CX ;脉冲波的延时函数DEC CH NEAR DELAY1 PROCJNZ D3 PUSH CXMOV CX,BUFFERPOP CXRETD1: PUSH CXENDPDELAY5 MOV CX,300;------------------------------------ DELAY2: LOOP DELAY2 POP CX -----------------------LOOP D1 PROCNEARDELAY7PUSH CXPOP CXCH,BUFFER3MOVRETADD CH,1 DELAY1 ENDPCXD4: PUSH;------------------------------------MOV CX,2------------------------DELAY8DELAY8: LOOP ;其他波的延时函数POP CX DELAY3 PROCNEARDEC CHJNZ D4 CH,BUFFER1 MOVPOP CXRETD2: PUSH CXENDPMOV CX,20DELAY7;------------------------------------DELAY4 DELAY4: LOOP POP CX ------------------------DEC CH NEARInitPCI PROCJNZ d2 MOV AH,00HMOV AL,03H;清屏 RETINT 10HMOV AH,0B1H DELAY3 ENDPMOV AL,01H ;------------------------------------INT 1AH ---------------------------CMP AH,0NEARPROCDELAY5InitPCI2 JZ PUSH CXLEA DX,msg0CH,BUFFER2MOVMOV AH,09H ADD CH,1 InitPCI1:INT 21HCXD3: PUSH微机原理课程设计AL,DX IN JMP ExitMOV AH,0B1H InitPCI2: POP DXRETMOV AL,02HENDP MOV CX,Device_ID IF_CHANGE MOV DX,Vendor_IDMOV AH,4CH MOV SI,0 Exit:INT 21HINT 1AHJNC InitPCI3; 是否存在 END START StarPCI9052板卡LEA DX,msg1JMP InitPCI1InitPCI3: MOV DI,PCIBAR3MOV AH,0B1HMOV AL,09HINT 1AH;读取该卡PCI9052基地址JNC InitPCI4LEA DX,msg2JMP InitPCI1InitPCI4: AND CX,0FFFCHMOV IO_Bit8_BaseAddress,CXRETInitPCI ENDPModifyAddress PROC NEARADD COM_ADD,CXADD PA_ADD,CXADD PB_ADD,CXADD PC_ADD,CXADD D_A,CXRETModifyAddress ENDPIF_CHANGE PROCNEAR ;读取控制开关的值,以便进行波形切换PUSHDXMOV DX,PA_ADD微机原理课程设计四、上机调试过程4.1硬件调试本设计用到的芯片有8255、0832还有G6区的八个开关,以及STAR ES598PCI,他们之间的连线情况如下:8255的A0—A1 ----------CPU的A1—A28255的片选CS-------------片选芯片上的CS1DAC0832的CS-------------片选芯片上的CS28255的PA0--PA7----------开关1—8;DAC0832的IOUT---------示波器的红头相连DAC0832的GND----------示波器的黑头相连在基本确定了程序的框架和初步写出了源程序代码的情况下,按如上方式连线进行调试,刚开始由于程序本身的一些小问题导致无法对硬件的有效测试,后来通过逐步分解测试的方法进行测试,首先波动八个开关量的最低两位例如设置为00,在程序单步执行到语句IN AL,DX后通过观察“星研电子——工作窗口”中AX的低八位数据来验证所读数据是否正确,结果发现第一次的00H 是正确的,因为程序是循环不断读取数据的结果后来开关量设为01读取的AL数据却仍然为00,不断的测试结果都是如此。